Rockbox.org home
release
dev builds
extras
themes manual
wiki
device status forums
mailing lists
IRC bugs
patches
dev guide



Rockbox mail archive

Subject: Re: Should the sim compile cleanly in Cygwin using i686-w64-mingw32-gcc?

Re: Should the sim compile cleanly in Cygwin using i686-w64-mingw32-gcc?

From: Rafaël Carré <funman_at_videolan.org>
Date: Mon, 5 Dec 2011 12:53:30 -0500

Le Mon, 05 Dec 2011 12:37:20 -0500,
Boris Gjenero <boris.gjenero_at_gmail.com> a écrit :

> 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()).

if you define __USE_MINGW_ANSI_STDIO then the unix format specifiers
should be used instead of incompatible microsoft format (and %zu should work)

> Regards,
>
> Boris

-- 
Rafaël Carré
Received on 2011-12-05

Page was last modified "Jan 10 2012" The Rockbox Crew
aaa