Coder Social home page Coder Social logo

Comments (14)

ChaosMarc avatar ChaosMarc commented on April 27, 2024 1

I have the package libsdl2-image-dev installed too. to let MAKE know where to find the libs I modified the Makefile:

CXXFLAGS=-fpermissive -Wno-write-strings `pkg-config --cflags sdl2 SDL2_image`

to deal with the missing "iconv.h" error I installed the package libc6-dev and added the path to it manually:

CXXFLAGS=-fpermissive -Wno-write-strings `pkg-config --cflags sdl2 SDL2_image` -I/usr/include

With this I get the following error:

i686-w64-mingw32-g++ -fpermissive -Wno-write-strings `pkg-config --cflags sdl2 SDL2_image` -I/usr/include -MMD -MF Source/mainmenu.d  -c -o Source/mainmenu.o Source/mainmenu.cpp
Source/mainmenu.cpp:93:16: warning: multi-character character constant [-Wmultichar]
   if ( mode == 'BNET' )
                ^
In file included from /usr/include/sys/select.h:45:0,
                 from /usr/include/sys/types.h:219,
                 from /usr/include/stdlib.h:314,
                 from /usr/share/mingw-w64/include/combaseapi.h:129,
                 from /usr/share/mingw-w64/include/objbase.h:14,
                 from /usr/share/mingw-w64/include/ole2.h:17,
                 from /usr/share/mingw-w64/include/wtypes.h:12,
                 from /usr/share/mingw-w64/include/winscard.h:10,
                 from /usr/share/mingw-w64/include/windows.h:97,
                 from Source/../types.h:8,
                 from Source/mainmenu.cpp:3:
/usr/include/bits/time.h:30:8: error: redefinition of ‘struct timeval’
 struct timeval
        ^
In file included from /usr/share/mingw-w64/include/winsock.h:32:0,
                 from /usr/share/mingw-w64/include/windows.h:92,
                 from Source/../types.h:8,
                 from Source/mainmenu.cpp:3:
/usr/share/mingw-w64/include/_timeval.h:10:8: error: previous definition of ‘struct timeval’
 struct timeval
        ^
In file included from /usr/include/sys/types.h:219:0,
                 from /usr/include/stdlib.h:314,
                 from /usr/share/mingw-w64/include/combaseapi.h:129,
                 from /usr/share/mingw-w64/include/objbase.h:14,
                 from /usr/share/mingw-w64/include/ole2.h:17,
                 from /usr/share/mingw-w64/include/wtypes.h:12,
                 from /usr/share/mingw-w64/include/winscard.h:10,
                 from /usr/share/mingw-w64/include/windows.h:97,
                 from Source/../types.h:8,
                 from Source/mainmenu.cpp:3:
/usr/include/sys/select.h:75:5: error: conflicting declaration ‘typedef struct fd_set fd_set’
   } fd_set;
     ^
In file included from /usr/share/mingw-w64/include/winsock.h:36:0,
                 from /usr/share/mingw-w64/include/windows.h:92,
                 from Source/../types.h:8,
                 from Source/mainmenu.cpp:3:
/usr/share/mingw-w64/include/psdk_inc/_fd_types.h:25:3: note: previous declaration as ‘typedef struct fd_set fd_set’
 } fd_set;
   ^
In file included from Source/../types.h:13:0,
                 from Source/mainmenu.cpp:3:
/usr/share/mingw-w64/include/io.h:201:43: error: declaration of ‘int remove(const char*)’ has a different exception specifier
   int __cdecl remove(const char *_Filename);
                                           ^
In file included from Source/../types.h:10:0,
                 from Source/mainmenu.cpp:3:
/usr/include/stdio.h:178:12: error: from previous declaration ‘int remove(const char*) throw ()’
 extern int remove (const char *__filename) __THROW;
            ^
In file included from Source/../types.h:13:0,
                 from Source/mainmenu.cpp:3:
/usr/share/mingw-w64/include/io.h:202:71: error: declaration of ‘int rename(const char*, const char*)’ has a different exception specifier
   int __cdecl rename(const char *_OldFilename,const char *_NewFilename);
                                                                       ^
In file included from Source/../types.h:10:0,
                 from Source/mainmenu.cpp:3:
/usr/include/stdio.h:180:12: error: from previous declaration ‘int rename(const char*, const char*) throw ()’
 extern int rename (const char *__old, const char *__new) __THROW;
            ^
In file included from /usr/include/SDL2/SDL_cpuinfo.h:44:0,
                 from /usr/include/SDL2/SDL.h:38,
                 from /usr/include/SDL2/SDL_image.h:27,
                 from Source/../types.h:20,
                 from Source/mainmenu.cpp:3:
/usr/share/mingw-w64/include/intrin.h:522:5: error: conflicting declaration of C function ‘int _setjmp(__jmp_buf_tag*, void*)’
     __MACHINE(int __cdecl __attribute__ ((__nothrow__,__returns_twice__)) _setjmp(jmp_buf,void *))
     ^
In file included from /usr/share/mingw-w64/include/intrin.h:38:0,
                 from /usr/include/SDL2/SDL_cpuinfo.h:44,
                 from /usr/include/SDL2/SDL.h:38,
                 from /usr/include/SDL2/SDL_image.h:27,
                 from Source/../types.h:20,
                 from Source/mainmenu.cpp:3:
/usr/include/setjmp.h:63:12: note: previous declaration ‘int _setjmp(__jmp_buf_tag*)’
 extern int _setjmp (struct __jmp_buf_tag __env[1]) __THROWNL;
            ^
Source/mainmenu.cpp: In function ‘int mainmenu_select_hero_dialog(int, int, int, int, int, char*, int, char*, int, int*)’:
Source/mainmenu.cpp:64:20: warning: invalid conversion from ‘bool (__attribute__((__stdcall__)) *)(void (__attribute__((__stdcall__)) *)(_uiheroinfo*))’ to ‘void*’ [-fpermissive]
       &gnDifficulty) )
                    ^
In file included from Source/../types.h:51:0,
                 from Source/mainmenu.cpp:3:
Source/../DiabloUI/diabloui.h:23:15: note:   initializing argument 1 of ‘int UiSelHeroSingDialog(void*, void*, void*, void*, int*, char*, int*)’
 int __stdcall UiSelHeroSingDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, char *name, int *difficulty); // { return 0; }
               ^
Source/mainmenu.cpp:64:20: warning: invalid conversion from ‘bool (__attribute__((__stdcall__)) *)(_uiheroinfo*)’ to ‘void*’ [-fpermissive]
       &gnDifficulty) )
                    ^
In file included from Source/../types.h:51:0,
                 from Source/mainmenu.cpp:3:
Source/../DiabloUI/diabloui.h:23:15: note:   initializing argument 2 of ‘int UiSelHeroSingDialog(void*, void*, void*, void*, int*, char*, int*)’
 int __stdcall UiSelHeroSingDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, char *name, int *difficulty); // { return 0; }
               ^
Source/mainmenu.cpp:64:20: warning: invalid conversion from ‘bool (__attribute__((__stdcall__)) *)(_uiheroinfo*)’ to ‘void*’ [-fpermissive]
       &gnDifficulty) )
                    ^
In file included from Source/../types.h:51:0,
                 from Source/mainmenu.cpp:3:
Source/../DiabloUI/diabloui.h:23:15: note:   initializing argument 3 of ‘int UiSelHeroSingDialog(void*, void*, void*, void*, int*, char*, int*)’
 int __stdcall UiSelHeroSingDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, char *name, int *difficulty); // { return 0; }
               ^
Source/mainmenu.cpp:64:20: warning: invalid conversion from ‘bool (__attribute__((__stdcall__)) *)(int, _uidefaultstats*)’ to ‘void*’ [-fpermissive]
       &gnDifficulty) )
                    ^
In file included from Source/../types.h:51:0,
                 from Source/mainmenu.cpp:3:
Source/../DiabloUI/diabloui.h:23:15: note:   initializing argument 4 of ‘int UiSelHeroSingDialog(void*, void*, void*, void*, int*, char*, int*)’
 int __stdcall UiSelHeroSingDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, char *name, int *difficulty); // { return 0; }
               ^
Source/mainmenu.cpp:80:20: warning: invalid conversion from ‘bool (__attribute__((__stdcall__)) *)(void (__attribute__((__stdcall__)) *)(_uiheroinfo*))’ to ‘void*’ [-fpermissive]
        chr_name_str) )
                    ^
In file included from Source/../types.h:51:0,
                 from Source/mainmenu.cpp:3:
Source/../DiabloUI/diabloui.h:22:15: note:   initializing argument 1 of ‘int UiSelHeroMultDialog(void*, void*, void*, void*, int*, int*, char*)’
 int __stdcall UiSelHeroMultDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, int *a6, char *name); // { return 0; }
               ^
Source/mainmenu.cpp:80:20: warning: invalid conversion from ‘bool (__attribute__((__stdcall__)) *)(_uiheroinfo*)’ to ‘void*’ [-fpermissive]
        chr_name_str) )
                    ^
In file included from Source/../types.h:51:0,
                 from Source/mainmenu.cpp:3:
Source/../DiabloUI/diabloui.h:22:15: note:   initializing argument 2 of ‘int UiSelHeroMultDialog(void*, void*, void*, void*, int*, int*, char*)’
 int __stdcall UiSelHeroMultDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, int *a6, char *name); // { return 0; }
               ^
Source/mainmenu.cpp:80:20: warning: invalid conversion from ‘bool (__attribute__((__stdcall__)) *)(_uiheroinfo*)’ to ‘void*’ [-fpermissive]
        chr_name_str) )
                    ^
In file included from Source/../types.h:51:0,
                 from Source/mainmenu.cpp:3:
Source/../DiabloUI/diabloui.h:22:15: note:   initializing argument 3 of ‘int UiSelHeroMultDialog(void*, void*, void*, void*, int*, int*, char*)’
 int __stdcall UiSelHeroMultDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, int *a6, char *name); // { return 0; }
               ^
Source/mainmenu.cpp:80:20: warning: invalid conversion from ‘bool (__attribute__((__stdcall__)) *)(int, _uidefaultstats*)’ to ‘void*’ [-fpermissive]
        chr_name_str) )
                    ^
In file included from Source/../types.h:51:0,
                 from Source/mainmenu.cpp:3:
Source/../DiabloUI/diabloui.h:22:15: note:   initializing argument 4 of ‘int UiSelHeroMultDialog(void*, void*, void*, void*, int*, int*, char*)’
 int __stdcall UiSelHeroMultDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, int *a6, char *name); // { return 0; }
               ^
<builtin>: recipe for target 'Source/mainmenu.o' failed
make: *** [Source/mainmenu.o] Error 1

which seems to be a known error:
https://stackoverflow.com/questions/43255796/redefinition-of-struct-timeval-in-several-headers
adding -D_POSIX_C_SOURCE=200809L (or any date > 2001) to CXXFLAGS leads to the following errors

i686-w64-mingw32-g++ -fpermissive -Wno-write-strings `pkg-config --cflags sdl2 SDL2_image` -I/usr/include -D_POSIX_C_SOURCE=200809L -MMD -MF Source/mainmenu.d  -c -o Source/mainmenu.o Source/mainmenu.cpp
Source/mainmenu.cpp:93:16: warning: multi-character character constant [-Wmultichar]
   if ( mode == 'BNET' )
                ^
In file included from Source/../types.h:13:0,
                 from Source/mainmenu.cpp:3:
/usr/share/mingw-w64/include/io.h:201:43: error: declaration of ‘int remove(const char*)’ has a different exception specifier
   int __cdecl remove(const char *_Filename);
                                           ^
In file included from Source/../types.h:10:0,
                 from Source/mainmenu.cpp:3:
/usr/include/stdio.h:178:12: error: from previous declaration ‘int remove(const char*) throw ()’
 extern int remove (const char *__filename) __THROW;
            ^
In file included from Source/../types.h:13:0,
                 from Source/mainmenu.cpp:3:
/usr/share/mingw-w64/include/io.h:202:71: error: declaration of ‘int rename(const char*, const char*)’ has a different exception specifier
   int __cdecl rename(const char *_OldFilename,const char *_NewFilename);
                                                                       ^
In file included from Source/../types.h:10:0,
                 from Source/mainmenu.cpp:3:
/usr/include/stdio.h:180:12: error: from previous declaration ‘int rename(const char*, const char*) throw ()’
 extern int rename (const char *__old, const char *__new) __THROW;
            ^
In file included from /usr/include/SDL2/SDL_cpuinfo.h:44:0,
                 from /usr/include/SDL2/SDL.h:38,
                 from /usr/include/SDL2/SDL_image.h:27,
                 from Source/../types.h:20,
                 from Source/mainmenu.cpp:3:
/usr/share/mingw-w64/include/intrin.h:522:5: error: conflicting declaration of C function ‘int _setjmp(__jmp_buf_tag*, void*)’
     __MACHINE(int __cdecl __attribute__ ((__nothrow__,__returns_twice__)) _setjmp(jmp_buf,void *))
     ^
In file included from /usr/share/mingw-w64/include/intrin.h:38:0,
                 from /usr/include/SDL2/SDL_cpuinfo.h:44,
                 from /usr/include/SDL2/SDL.h:38,
                 from /usr/include/SDL2/SDL_image.h:27,
                 from Source/../types.h:20,
                 from Source/mainmenu.cpp:3:
/usr/include/setjmp.h:63:12: note: previous declaration ‘int _setjmp(__jmp_buf_tag*)’
 extern int _setjmp (struct __jmp_buf_tag __env[1]) __THROWNL;
            ^
Source/mainmenu.cpp: In function ‘int mainmenu_select_hero_dialog(int, int, int, int, int, char*, int, char*, int, int*)’:
Source/mainmenu.cpp:64:20: warning: invalid conversion from ‘bool (__attribute__((__stdcall__)) *)(void (__attribute__((__stdcall__)) *)(_uiheroinfo*))’ to ‘void*’ [-fpermissive]
       &gnDifficulty) )
                    ^
In file included from Source/../types.h:51:0,
                 from Source/mainmenu.cpp:3:
Source/../DiabloUI/diabloui.h:23:15: note:   initializing argument 1 of ‘int UiSelHeroSingDialog(void*, void*, void*, void*, int*, char*, int*)’
 int __stdcall UiSelHeroSingDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, char *name, int *difficulty); // { return 0; }
               ^
Source/mainmenu.cpp:64:20: warning: invalid conversion from ‘bool (__attribute__((__stdcall__)) *)(_uiheroinfo*)’ to ‘void*’ [-fpermissive]
       &gnDifficulty) )
                    ^
In file included from Source/../types.h:51:0,
                 from Source/mainmenu.cpp:3:
Source/../DiabloUI/diabloui.h:23:15: note:   initializing argument 2 of ‘int UiSelHeroSingDialog(void*, void*, void*, void*, int*, char*, int*)’
 int __stdcall UiSelHeroSingDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, char *name, int *difficulty); // { return 0; }
               ^
Source/mainmenu.cpp:64:20: warning: invalid conversion from ‘bool (__attribute__((__stdcall__)) *)(_uiheroinfo*)’ to ‘void*’ [-fpermissive]
       &gnDifficulty) )
                    ^
In file included from Source/../types.h:51:0,
                 from Source/mainmenu.cpp:3:
Source/../DiabloUI/diabloui.h:23:15: note:   initializing argument 3 of ‘int UiSelHeroSingDialog(void*, void*, void*, void*, int*, char*, int*)’
 int __stdcall UiSelHeroSingDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, char *name, int *difficulty); // { return 0; }
               ^
Source/mainmenu.cpp:64:20: warning: invalid conversion from ‘bool (__attribute__((__stdcall__)) *)(int, _uidefaultstats*)’ to ‘void*’ [-fpermissive]
       &gnDifficulty) )
                    ^
In file included from Source/../types.h:51:0,
                 from Source/mainmenu.cpp:3:
Source/../DiabloUI/diabloui.h:23:15: note:   initializing argument 4 of ‘int UiSelHeroSingDialog(void*, void*, void*, void*, int*, char*, int*)’
 int __stdcall UiSelHeroSingDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, char *name, int *difficulty); // { return 0; }
               ^
Source/mainmenu.cpp:80:20: warning: invalid conversion from ‘bool (__attribute__((__stdcall__)) *)(void (__attribute__((__stdcall__)) *)(_uiheroinfo*))’ to ‘void*’ [-fpermissive]
        chr_name_str) )
                    ^
In file included from Source/../types.h:51:0,
                 from Source/mainmenu.cpp:3:
Source/../DiabloUI/diabloui.h:22:15: note:   initializing argument 1 of ‘int UiSelHeroMultDialog(void*, void*, void*, void*, int*, int*, char*)’
 int __stdcall UiSelHeroMultDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, int *a6, char *name); // { return 0; }
               ^
Source/mainmenu.cpp:80:20: warning: invalid conversion from ‘bool (__attribute__((__stdcall__)) *)(_uiheroinfo*)’ to ‘void*’ [-fpermissive]
        chr_name_str) )
                    ^
In file included from Source/../types.h:51:0,
                 from Source/mainmenu.cpp:3:
Source/../DiabloUI/diabloui.h:22:15: note:   initializing argument 2 of ‘int UiSelHeroMultDialog(void*, void*, void*, void*, int*, int*, char*)’
 int __stdcall UiSelHeroMultDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, int *a6, char *name); // { return 0; }
               ^
Source/mainmenu.cpp:80:20: warning: invalid conversion from ‘bool (__attribute__((__stdcall__)) *)(_uiheroinfo*)’ to ‘void*’ [-fpermissive]
        chr_name_str) )
                    ^
In file included from Source/../types.h:51:0,
                 from Source/mainmenu.cpp:3:
Source/../DiabloUI/diabloui.h:22:15: note:   initializing argument 3 of ‘int UiSelHeroMultDialog(void*, void*, void*, void*, int*, int*, char*)’
 int __stdcall UiSelHeroMultDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, int *a6, char *name); // { return 0; }
               ^
Source/mainmenu.cpp:80:20: warning: invalid conversion from ‘bool (__attribute__((__stdcall__)) *)(int, _uidefaultstats*)’ to ‘void*’ [-fpermissive]
        chr_name_str) )
                    ^
In file included from Source/../types.h:51:0,
                 from Source/mainmenu.cpp:3:
Source/../DiabloUI/diabloui.h:22:15: note:   initializing argument 4 of ‘int UiSelHeroMultDialog(void*, void*, void*, void*, int*, int*, char*)’
 int __stdcall UiSelHeroMultDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, int *a6, char *name); // { return 0; }
               ^
<builtin>: recipe for target 'Source/mainmenu.o' failed
make: *** [Source/mainmenu.o] Error 1

setting -D_POSIX_C_SOURCE to a date <= 2001 leads to the following errors

i686-w64-mingw32-g++ -fpermissive -Wno-write-strings `pkg-config --cflags sdl2 SDL2_image` -I/usr/include -D_POSIX_C_SOURCE=200109L -MMD -MF Source/mainmenu.d  -c -o Source/mainmenu.o Source/mainmenu.cpp
Source/mainmenu.cpp:93:16: warning: multi-character character constant [-Wmultichar]
   if ( mode == 'BNET' )
                ^
In file included from /usr/lib/gcc/i686-w64-mingw32/5.3-win32/include/c++/bits/postypes.h:40:0,
                 from /usr/lib/gcc/i686-w64-mingw32/5.3-win32/include/c++/bits/char_traits.h:40,
                 from /usr/lib/gcc/i686-w64-mingw32/5.3-win32/include/c++/string:40,
                 from Source/../types.h:9,
                 from Source/mainmenu.cpp:3:
/usr/lib/gcc/i686-w64-mingw32/5.3-win32/include/c++/cwchar:146:11: error: ‘::fwide’ has not been declared
   using ::fwide;
           ^
/usr/lib/gcc/i686-w64-mingw32/5.3-win32/include/c++/cwchar:147:11: error: ‘::fwprintf’ has not been declared
   using ::fwprintf;
           ^
/usr/lib/gcc/i686-w64-mingw32/5.3-win32/include/c++/cwchar:148:11: error: ‘::fwscanf’ has not been declared
   using ::fwscanf;
           ^
/usr/lib/gcc/i686-w64-mingw32/5.3-win32/include/c++/cwchar:158:11: error: ‘::swprintf’ has not been declared
   using ::swprintf;
           ^
/usr/lib/gcc/i686-w64-mingw32/5.3-win32/include/c++/cwchar:160:11: error: ‘::swscanf’ has not been declared
   using ::swscanf;
           ^
/usr/lib/gcc/i686-w64-mingw32/5.3-win32/include/c++/cwchar:162:11: error: ‘::vfwprintf’ has not been declared
   using ::vfwprintf;
           ^
/usr/lib/gcc/i686-w64-mingw32/5.3-win32/include/c++/cwchar:164:11: error: ‘::vfwscanf’ has not been declared
   using ::vfwscanf;
           ^
/usr/lib/gcc/i686-w64-mingw32/5.3-win32/include/c++/cwchar:167:11: error: ‘::vswprintf’ has not been declared
   using ::vswprintf;
           ^
/usr/lib/gcc/i686-w64-mingw32/5.3-win32/include/c++/cwchar:170:11: error: ‘::vswscanf’ has not been declared
   using ::vswscanf;
           ^
/usr/lib/gcc/i686-w64-mingw32/5.3-win32/include/c++/cwchar:172:11: error: ‘::vwprintf’ has not been declared
   using ::vwprintf;
           ^
/usr/lib/gcc/i686-w64-mingw32/5.3-win32/include/c++/cwchar:174:11: error: ‘::vwscanf’ has not been declared
   using ::vwscanf;
           ^
/usr/lib/gcc/i686-w64-mingw32/5.3-win32/include/c++/cwchar:191:11: error: ‘::wcstof’ has not been declared
   using ::wcstof;
           ^
/usr/lib/gcc/i686-w64-mingw32/5.3-win32/include/c++/cwchar:202:11: error: ‘::wprintf’ has not been declared
   using ::wprintf;
           ^
/usr/lib/gcc/i686-w64-mingw32/5.3-win32/include/c++/cwchar:203:11: error: ‘::wscanf’ has not been declared
   using ::wscanf;
           ^
/usr/lib/gcc/i686-w64-mingw32/5.3-win32/include/c++/cwchar:248:11: error: ‘::wcstold’ has not been declared
   using ::wcstold;
           ^
/usr/lib/gcc/i686-w64-mingw32/5.3-win32/include/c++/cwchar:257:11: error: ‘::wcstoll’ has not been declared
   using ::wcstoll;
           ^
/usr/lib/gcc/i686-w64-mingw32/5.3-win32/include/c++/cwchar:258:11: error: ‘::wcstoull’ has not been declared
   using ::wcstoull;
           ^
/usr/lib/gcc/i686-w64-mingw32/5.3-win32/include/c++/cwchar:264:22: error: ‘__gnu_cxx::wcstold’ has not been declared
   using ::__gnu_cxx::wcstold;
                      ^
/usr/lib/gcc/i686-w64-mingw32/5.3-win32/include/c++/cwchar:265:22: error: ‘__gnu_cxx::wcstoll’ has not been declared
   using ::__gnu_cxx::wcstoll;
                      ^
/usr/lib/gcc/i686-w64-mingw32/5.3-win32/include/c++/cwchar:266:22: error: ‘__gnu_cxx::wcstoull’ has not been declared
   using ::__gnu_cxx::wcstoull;
                      ^
In file included from Source/../types.h:13:0,
                 from Source/mainmenu.cpp:3:
/usr/share/mingw-w64/include/io.h:201:43: error: declaration of ‘int remove(const char*)’ has a different exception specifier
   int __cdecl remove(const char *_Filename);
                                           ^
In file included from Source/../types.h:10:0,
                 from Source/mainmenu.cpp:3:
/usr/include/stdio.h:178:12: error: from previous declaration ‘int remove(const char*) throw ()’
 extern int remove (const char *__filename) __THROW;
            ^
In file included from Source/../types.h:13:0,
                 from Source/mainmenu.cpp:3:
/usr/share/mingw-w64/include/io.h:202:71: error: declaration of ‘int rename(const char*, const char*)’ has a different exception specifier
   int __cdecl rename(const char *_OldFilename,const char *_NewFilename);
                                                                       ^
In file included from Source/../types.h:10:0,
                 from Source/mainmenu.cpp:3:
/usr/include/stdio.h:180:12: error: from previous declaration ‘int rename(const char*, const char*) throw ()’
 extern int rename (const char *__old, const char *__new) __THROW;
            ^
In file included from /usr/include/SDL2/SDL_cpuinfo.h:44:0,
                 from /usr/include/SDL2/SDL.h:38,
                 from /usr/include/SDL2/SDL_image.h:27,
                 from Source/../types.h:20,
                 from Source/mainmenu.cpp:3:
/usr/share/mingw-w64/include/intrin.h:522:5: error: conflicting declaration of C function ‘int _setjmp(__jmp_buf_tag*, void*)’
     __MACHINE(int __cdecl __attribute__ ((__nothrow__,__returns_twice__)) _setjmp(jmp_buf,void *))
     ^
In file included from /usr/share/mingw-w64/include/intrin.h:38:0,
                 from /usr/include/SDL2/SDL_cpuinfo.h:44,
                 from /usr/include/SDL2/SDL.h:38,
                 from /usr/include/SDL2/SDL_image.h:27,
                 from Source/../types.h:20,
                 from Source/mainmenu.cpp:3:
/usr/include/setjmp.h:63:12: note: previous declaration ‘int _setjmp(__jmp_buf_tag*)’
 extern int _setjmp (struct __jmp_buf_tag __env[1]) __THROWNL;
            ^
Source/mainmenu.cpp: In function ‘int mainmenu_select_hero_dialog(int, int, int, int, int, char*, int, char*, int, int*)’:
Source/mainmenu.cpp:64:20: warning: invalid conversion from ‘bool (__attribute__((__stdcall__)) *)(void (__attribute__((__stdcall__)) *)(_uiheroinfo*))’ to ‘void*’ [-fpermissive]
       &gnDifficulty) )
                    ^
In file included from Source/../types.h:51:0,
                 from Source/mainmenu.cpp:3:
Source/../DiabloUI/diabloui.h:23:15: note:   initializing argument 1 of ‘int UiSelHeroSingDialog(void*, void*, void*, void*, int*, char*, int*)’
 int __stdcall UiSelHeroSingDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, char *name, int *difficulty); // { return 0; }
               ^
Source/mainmenu.cpp:64:20: warning: invalid conversion from ‘bool (__attribute__((__stdcall__)) *)(_uiheroinfo*)’ to ‘void*’ [-fpermissive]
       &gnDifficulty) )
                    ^
In file included from Source/../types.h:51:0,
                 from Source/mainmenu.cpp:3:
Source/../DiabloUI/diabloui.h:23:15: note:   initializing argument 2 of ‘int UiSelHeroSingDialog(void*, void*, void*, void*, int*, char*, int*)’
 int __stdcall UiSelHeroSingDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, char *name, int *difficulty); // { return 0; }
               ^
Source/mainmenu.cpp:64:20: warning: invalid conversion from ‘bool (__attribute__((__stdcall__)) *)(_uiheroinfo*)’ to ‘void*’ [-fpermissive]
       &gnDifficulty) )
                    ^
In file included from Source/../types.h:51:0,
                 from Source/mainmenu.cpp:3:
Source/../DiabloUI/diabloui.h:23:15: note:   initializing argument 3 of ‘int UiSelHeroSingDialog(void*, void*, void*, void*, int*, char*, int*)’
 int __stdcall UiSelHeroSingDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, char *name, int *difficulty); // { return 0; }
               ^
Source/mainmenu.cpp:64:20: warning: invalid conversion from ‘bool (__attribute__((__stdcall__)) *)(int, _uidefaultstats*)’ to ‘void*’ [-fpermissive]
       &gnDifficulty) )
                    ^
In file included from Source/../types.h:51:0,
                 from Source/mainmenu.cpp:3:
Source/../DiabloUI/diabloui.h:23:15: note:   initializing argument 4 of ‘int UiSelHeroSingDialog(void*, void*, void*, void*, int*, char*, int*)’
 int __stdcall UiSelHeroSingDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, char *name, int *difficulty); // { return 0; }
               ^
Source/mainmenu.cpp:80:20: warning: invalid conversion from ‘bool (__attribute__((__stdcall__)) *)(void (__attribute__((__stdcall__)) *)(_uiheroinfo*))’ to ‘void*’ [-fpermissive]
        chr_name_str) )
                    ^
In file included from Source/../types.h:51:0,
                 from Source/mainmenu.cpp:3:
Source/../DiabloUI/diabloui.h:22:15: note:   initializing argument 1 of ‘int UiSelHeroMultDialog(void*, void*, void*, void*, int*, int*, char*)’
 int __stdcall UiSelHeroMultDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, int *a6, char *name); // { return 0; }
               ^
Source/mainmenu.cpp:80:20: warning: invalid conversion from ‘bool (__attribute__((__stdcall__)) *)(_uiheroinfo*)’ to ‘void*’ [-fpermissive]
        chr_name_str) )
                    ^
In file included from Source/../types.h:51:0,
                 from Source/mainmenu.cpp:3:
Source/../DiabloUI/diabloui.h:22:15: note:   initializing argument 2 of ‘int UiSelHeroMultDialog(void*, void*, void*, void*, int*, int*, char*)’
 int __stdcall UiSelHeroMultDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, int *a6, char *name); // { return 0; }
               ^
Source/mainmenu.cpp:80:20: warning: invalid conversion from ‘bool (__attribute__((__stdcall__)) *)(_uiheroinfo*)’ to ‘void*’ [-fpermissive]
        chr_name_str) )
                    ^
In file included from Source/../types.h:51:0,
                 from Source/mainmenu.cpp:3:
Source/../DiabloUI/diabloui.h:22:15: note:   initializing argument 3 of ‘int UiSelHeroMultDialog(void*, void*, void*, void*, int*, int*, char*)’
 int __stdcall UiSelHeroMultDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, int *a6, char *name); // { return 0; }
               ^
Source/mainmenu.cpp:80:20: warning: invalid conversion from ‘bool (__attribute__((__stdcall__)) *)(int, _uidefaultstats*)’ to ‘void*’ [-fpermissive]
        chr_name_str) )
                    ^
In file included from Source/../types.h:51:0,
                 from Source/mainmenu.cpp:3:
Source/../DiabloUI/diabloui.h:22:15: note:   initializing argument 4 of ‘int UiSelHeroMultDialog(void*, void*, void*, void*, int*, int*, char*)’
 int __stdcall UiSelHeroMultDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, int *a6, char *name); // { return 0; }
               ^
<builtin>: recipe for target 'Source/mainmenu.o' failed
make: *** [Source/mainmenu.o] Error 1

from devilutionx.

mewmew avatar mewmew commented on April 27, 2024

Run the MAC equivalent of:

apt-get install SDL_image

Then the Makefile probably has to be updated with pkg-config --cflags SDL_image and pkg-config --libs SDL_image @ApertureSecurity would you take a look? :)

from devilutionx.

 avatar commented on April 27, 2024

Good day , Yes I can take a look.I will try today to look, but It might be on Monday.

from devilutionx.

ChaosMarc avatar ChaosMarc commented on April 27, 2024

I guess the appropriate package should be: sudo apt install libsdl2-image-dev (or are we using sdl 1. than it should be libsdl-image1.2-dev)
I had some problem with unmet dependencies but could resolve them in the end.

I'm looking forward for you Makefile update :)

from devilutionx.

mewmew avatar mewmew commented on April 27, 2024

I guess the appropriate package should be: sudo apt install libsdl2-image-dev (or are we using sdl 1. than it should be libsdl-image1.2-dev)

Should be SDL2 as far as I know.

from devilutionx.

ChaosMarc avatar ChaosMarc commented on April 27, 2024

By adding the parameter pkg-config --cflags sdl2 SDL2_image to CXXFLAGS in Makefile I successfully (I hope that's correct. I have no clue what I'm doing :D) linked the SDL_image but receive another error message which I couldn't get rid of yet:

make
i686-w64-mingw32-g++ -fpermissive -Wno-write-strings `pkg-config --cflags sdl2 SDL2_image` -MMD -MF Source/mainmenu.d  -c -o Source/mainmenu.o Source/mainmenu.cpp
In file included from /usr/include/SDL2/SDL_main.h:25:0,
                 from /usr/include/SDL2/SDL.h:32,
                 from /usr/include/SDL2/SDL_image.h:27,
                 from Source/../types.h:20,
                 from Source/mainmenu.cpp:3:
/usr/include/SDL2/SDL_stdinc.h:87:20: fatal error: iconv.h: No such file or directory
compilation terminated.
<builtin>: recipe for target 'Source/mainmenu.o' failed
make: *** [Source/mainmenu.o] Error 1

The missing header in question is included in the package libc6-dev which I have installed correctly:

dpkg -S /usr/include/iconv.h
libc6-dev:amd64: /usr/include/iconv.h

sudo find / -name "iconv.h"
/usr/include/iconv.h

from devilutionx.

 avatar commented on April 27, 2024

Sorry I have been busy with work...

looking at this now. I have the SDL libs installed on my linux machine

from devilutionx.

 avatar commented on April 27, 2024

Oh I have a demo project working...

I had to install the libs.

sudo apt install libsdl2-image-dev
sudo apt install libsdl2-image-dev

I took code from here

http://lazyfoo.net/tutorials/SDL/42_texture_streaming/index.php

g++ foo.cpp -w -lSDL2main -lSDL2 -l SDL2_image -o 01_hello_SDL

To be honest, I haven't been able to compile using ming32 at all . I just used visual studio.

the problem is that i686-w64-mingw32-g++ doesn't know where your headers and stuff are.

from devilutionx.

 avatar commented on April 27, 2024

well, this is remarkably nasty...

from devilutionx.

 avatar commented on April 27, 2024

Ok There is a docker container that was made for this . It might need some SDL stuff added.

from devilutionx.

ChaosMarc avatar ChaosMarc commented on April 27, 2024

you mean the riivaaja docker?

The output looks like this:

C:\Games\Devilution\devilutionX>docker run -v C:\Games\Devilution\devilutionX:/root/devilution -e MAKE_BUILD=pdb diasurgical/riivaaja
wine /root/VS6/VC98/Bin/CL.EXE /nologo /c /GX /W3 /O1 /I /root/VS6/VC98/Include /FD /MT /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /Fp"Diablo.pch" /YX /Gm /Zi /FoSource/ Source/SDL_FontCache.cpp Source/appfat.cpp Source/automap.cpp Source/capture.cpp Source/codec.cpp Source/control.cpp Source/cursor.cpp Source/dead.cpp Source/debug.cpp Source/diablo.cpp Source/doom.cpp Source/drlg_l1.cpp Source/drlg_l2.cpp Source/drlg_l3.cpp Source/drlg_l4.cpp Source/dthread.cpp Source/dx.cpp Source/effects.cpp Source/encrypt.cpp Source/engine.cpp Source/error.cpp Source/fault.cpp Source/gamemenu.cpp Source/gendung.cpp Source/gmenu.cpp Source/help.cpp Source/init.cpp Source/interfac.cpp Source/inv.cpp Source/items.cpp Source/lighting.cpp Source/loadsave.cpp Source/logging.cpp Source/mainmenu.cpp Source/minitext.cpp Source/missiles.cpp Source/monster.cpp Source/movie.cpp Source/mpqapi.cpp Source/msg.cpp Source/msgcmd.cpp Source/multi.cpp Source/nthread.cpp Source/objects.cpp Source/pack.cpp Source/palette.cpp Source/path.cpp Source/pfile.cpp Source/player.cpp Source/plrmsg.cpp Source/portal.cpp Source/quests.cpp Source/restrict.cpp Source/scrollrt.cpp Source/sdlrender.cpp Source/setmaps.cpp Source/sha.cpp Source/sound.cpp Source/spells.cpp Source/stores.cpp Source/sync.cpp Source/textdat.cpp Source/themes.cpp Source/tmsg.cpp Source/town.cpp Source/towners.cpp Source/track.cpp Source/trigs.cpp Source/wave.cpp Source/render.cpp
wine: created the configuration directory '/root/.wine'
Application tried to create a window, but no driver could be loaded.
Make sure that your X server is running and that $DISPLAY is set correctly.
err:ole:marshal_object couldn't get IPSFactory buffer for interface {00000131-0000-0000-c000-000000000046}
err:ole:marshal_object couldn't get IPSFactory buffer for interface {6d5140c1-7436-11ce-8034-00aa006009fa}
err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hres=0x80040155
err:ole:CoMarshalInterface Failed to marshal the interface {6d5140c1-7436-11ce-8034-00aa006009fa}, 80040155
err:ole:get_local_server_stream Failed: 80040155
Application tried to create a window, but no driver could be loaded.
Make sure that your X server is running and that $DISPLAY is set correctly.
Application tried to create a window, but no driver could be loaded.
Make sure that your X server is running and that $DISPLAY is set correctly.
err:module:import_dll Loading library urlmon.dll (which is needed by L"C:\\windows\\system32\\mshtml.dll") failed (error c000007b).
wine: configuration in '/root/.wine' has been updated.
SDL_FontCache.cpp
Source/SDL_FontCache.cpp(8) : fatal error C1083: Cannot open include file: 'SDL_FontCache.h': No such file or directory
appfat.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
automap.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
capture.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
codec.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
control.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
cursor.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
dead.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
debug.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
diablo.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
doom.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
drlg_l1.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
drlg_l2.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
drlg_l3.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
drlg_l4.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
dthread.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
dx.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
effects.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
encrypt.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
engine.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
error.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
fault.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
gamemenu.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
gendung.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
gmenu.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
help.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
init.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
interfac.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
inv.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
items.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
lighting.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
loadsave.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
logging.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
mainmenu.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
minitext.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
missiles.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
monster.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
movie.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
mpqapi.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
msg.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
msgcmd.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
multi.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
nthread.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
objects.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
pack.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
palette.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
path.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
pfile.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
player.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
plrmsg.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
portal.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
quests.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
restrict.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
scrollrt.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
sdlrender.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
setmaps.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
sha.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
sound.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
spells.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
stores.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
sync.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
textdat.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
themes.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
tmsg.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
town.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
towners.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
track.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
trigs.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
wave.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
render.cpp
Source/../types.h(9) : fatal error C1083: Cannot open include file: 'string': No such file or directory
make: *** [main_files] Error 2
MakefileVC:73: recipe for target 'main_files' failed

from devilutionx.

nomdenom avatar nomdenom commented on April 27, 2024

This is due to trying to use Linux SDL (and system) headers while compiling with mingw, which can not work (same way you can't use Linux headers on Windows...).
This needs a mingw cross-compiled version of SDL to work, using either distribution packages or eg. https://mxe.cc/

from devilutionx.

 avatar commented on April 27, 2024

I will have a push soon that should be better than what we have now here.

from devilutionx.

 avatar commented on April 27, 2024

Building XDiablo (For Linux)
Install the following libs on your machine.

apt-get install g++-multilib libc6-dev-i386
apt-get install libsdl2-dev:i386
apt-get install libsdl2-ttf-dev:i386
apt-get install libsdl2-image-dev:i386
apt-get install libsdl2-mixer-dev:i386
apt-get install cmake
Edit File that is linking all the LIBS for CMAKE. For me it was located in... /usr/lib/i386-linux-gnu/cmake/SDL2/sdl2-config.cmake

The last line will have something like... set(SDL2_LIBRARIES "-L${SDL2_LIBDIR} -lSDL2 Change it to ... set(SDL2_LIBRARIES "-L${SDL2_LIBDIR} -lSDL2 -lSDL2_image -lSDL2_mixer -lSDL2_ttf ")

Copy the "diablodat.mpq" from your Diablo CD to the Diablo Directory and make sure it is LOWERCASE. Copy the Xresources and fonts file to your Diablo Directory.

There is a cmake config there so a simple
mkdir build ; cd build ; cmake .. ; make

should suffice.

from devilutionx.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.