Originally, in Windows the sim was supposed to compile via old Cygwin
gcc-3, with the -mno-cygwin switch supplied by sdl-config. I'm now using
Cygwin gcc-4 which doesn't support -mno-cygwin, and SDL from libsdl.org,
which doesn't supply -mno-cygwin. Instead, I can cross compile from
Cygwin using i686-w64-mingw32-gcc.
Is this something that should work, and compile without warnings? If it
should be considered unsupported, is there another alternative method
that is supposed to work without warnings?
There used to be a multiple definition error requiring
-Wl,--allow-multiple-definition, but that was fixed in r31147.
The only remaining error is FS#12427 due to __attribute__(weak) being
different on Windows.
Besides that, there are lots of warnings.
Most warnings are due to MinGW prototypes having __declspec(dllimport)
and Rockbox prototypes not having it. It's possible to use #ifndef to
remove prototypes in firmware/include/strcasecmp.h when the function
names are defined by the preprocessor. However
apps/plugins/lib/pluginlib_exit.h intentionally includes <stdlib.h> to
"make sure we are in sync with the real definitions, especially on
hosted systems". It's possible to remove the __declspec(dllimport) via
"-D_CRTIMP=". This just means imported functions will be called via
stubs which jump to the location stored in a pointer, instead of the
call directly using the pointer.
Some other warnings are due to use of z in format specifiers, for
printing size_t data. This warning is false for things displayed on the
simulated device (eg. panicf()), but z really does not work when
printing directly to standard output (eg. DEBUGF()).
Received on 2011-12-05