|
Rockbox mail archiveSubject: Should the sim compile cleanly in Cygwin using i686-w64-mingw32-gcc?Should the sim compile cleanly in Cygwin using i686-w64-mingw32-gcc?
From: Boris Gjenero <boris.gjenero_at_gmail.com>
Date: Mon, 05 Dec 2011 12:37:20 -0500 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()). Regards, Boris Received on 2011-12-05 Page template was last modified "Tue Sep 7 00:00:02 2021" The Rockbox Crew -- Privacy Policy |