Martin Storsjö <[email protected]> writes: > On Wed, 28 Mar 2012, Måns Rullgård wrote: > >> Martin Storsjö <[email protected]> writes: >> >>> On Wed, 28 Mar 2012, Måns Rullgård wrote: >>> >>>> Martin Storsjö <[email protected]> writes: >>>> >>>>> SDL 1.3 (which is the current version available e.g. in >>>>> macports) doesn't contain SDL_Linked_Version. >>>>> >>>>> The current check for SDL_Linked_Version (available since SDL >>>>> 1.2.13) was added 8f1b06c8, because including the headers for >>>>> SDL_Init redirects the main function, requiring linking the >>>>> SDLmain library for linking to work. When using the normal >>>>> function checks in configure, we don't link to any extra >>>>> libraries. >>>>> --- >>>>> configure | 3 ++- >>>>> 1 files changed, 2 insertions(+), 1 deletions(-) >>>>> >>>>> diff --git a/configure b/configure >>>>> index 7418bca..3e24f00 100755 >>>>> --- a/configure >>>>> +++ b/configure >>>>> @@ -2983,7 +2983,8 @@ if enabled libdc1394; then >>>>> die "ERROR: No version of libdc1394 found " >>>>> fi >>>>> >>>>> -if check_pkg_config sdl SDL_version.h SDL_Linked_Version; then >>>>> +if check_pkg_config sdl SDL_version.h SDL_Linked_Version || >>>>> + check_pkg_config sdl SDL.h SDL_Init; then >>>> >>>> If checking for SDL_Init works at all, then there should be no need to >>>> check for SDL_Linked_Version. >>> >>> It doesn't, on the platforms where SDL redirects the main >>> function. Thankfully, the new ones that lack SDL_Linked_Version don't >>> do any such redirection afaik. >>> >>> That is - the headers that define SDL_Init also redefine main, to >>> redirect initialization via their main wrapper. If this header is >>> included, one has to link with the SDLmain library, otherwise one ends >>> up with undefined references to main. >> >> Why does so much as thinking about SDL make me angry? >> >>> We could either link to this library while checking for SDL_Init - >> >> Wouldn't that break on systems that don't have the wrapper? > > I think all systems (with SDL 1.2) have the wrapper, but on the ones > where it doesn't redirect main, it might be an empty library. But on > SDL 1.3, it might of course not exist... > > After rechecking closer, the issue isn't so much about linking to the > wrapper, check_pkg_config actually does that correctly already, since > the pc file incidates the library to add. > > The problem is that the main redirection is defined like this: > > #define main SDL_main > extern C_LINKAGE int SDL_main(int argc, char *argv[]); > > And the function check tests compiling this: > > 1 #include <SDL.h> > 2 long check_SDL_Init(void) { return (long) SDL_Init; } > 3 int main(void) { return 0; } > > ending up with this error: > > ffconf.UGdDwiYR.c:3: error: conflicting types for 'SDL_main' > SDL_main.h:57: error: previous declaration of 'SDL_main' was here > > So sorry, I misremembered the details.
Is there some other function which doesn't pull in the main() redirection and exists in all versions? -- Måns Rullgård [email protected] _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
