From 8a02c3d2b93a55e5a9a56de4e64e7c971881d8b2 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 24 Mar 2006 05:11:51 +0000 Subject: [PATCH] Fixed bug #177 The attached patch changes configure.in to use "-framework FOO" instead of "-Wl,-framework,FOO". This avoid some issues with certain versions of libtool that do not handle -framework properly. Some versions of libtool will try to reorder the two parts of the option, or render the 2nd part of the argument to the relative path of a non-existent library. Note: It is not enough if SDL uses a version of libtool that does this correctly, because these -framework options show up in "sdl-config --libs". Hence, some 3rd party apps which still ship with an old libtool have troubles compiling under Mac OS X. --- build-scripts/ltmain.sh | 56 +---------------------------------------- configure.in | 20 +++++++-------- 2 files changed, 11 insertions(+), 65 deletions(-) diff --git a/build-scripts/ltmain.sh b/build-scripts/ltmain.sh index 9bcba50fd..e582d66f2 100644 --- a/build-scripts/ltmain.sh +++ b/build-scripts/ltmain.sh @@ -1413,19 +1413,6 @@ EOF finalize_command="$finalize_command $qarg" continue ;; - framework) - case $host in - *-*-darwin*) - case "$deplibs " in - *" $qarg.framework "*) ;; - *) deplibs="$deplibs $qarg.framework" # this is fixed later - ;; - esac - ;; - esac - prev= - continue - ;; shrext) shrext_cmds="$arg" prev= @@ -1802,11 +1789,6 @@ EOF continue ;; - -framework) - prev=framework - continue - ;; - # Some other compiler flag. -* | +*) # Unknown arguments in both finalize_command and compile_command need @@ -2190,18 +2172,6 @@ EOF fi fi ;; # -l - *.framework) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - if test "$linkmode" = lib ; then - newdependency_libs="$deplib $newdependency_libs" - fi - fi - continue - ;; -L*) case $linkmode in lib) @@ -2347,13 +2317,6 @@ EOF *) . ./$lib ;; esac - case $host in - *-*-darwin*) - # Convert "-framework foo" to "foo.framework" in dependency_libs - test -n "$dependency_libs" && dependency_libs=`$echo "X$dependency_libs" | $Xsed -e 's/-framework \([^ $]*\)/\1.framework/g'` - ;; - esac - if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then @@ -2974,13 +2937,6 @@ EOF done path="" ;; - *.framework) - case $host in - *-*-darwin*) - depdepl="$deplib" - ;; - esac - ;; *) continue ;; esac ;; @@ -3848,13 +3804,6 @@ EOF fi fi fi - # Time to change all our "foo.framework" stuff back to "-framework foo" - case $host in - *-*-darwin*) - newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).framework% -framework \1%g'` - dependency_libs=`$echo "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).framework%%g'` - ;; - esac # Done checking deplibs! deplibs=$newdeplibs fi @@ -4394,15 +4343,12 @@ EOF esac case $host in - *-*-darwin*) + *darwin*) # Don't allow lazy linking, it breaks C++ global constructors if test "$tagname" = CXX ; then compile_command="$compile_command ${wl}-bind_at_load" finalize_command="$finalize_command ${wl}-bind_at_load" fi - # Time to change all our "foo.framework" stuff back to "-framework foo" - compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).framework% -framework \1%g'` - finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).framework% -framework \1%g'` ;; esac diff --git a/configure.in b/configure.in index 19b6e8de8..891ebac8d 100644 --- a/configure.in +++ b/configure.in @@ -1444,9 +1444,9 @@ CheckMacGL() AC_DEFINE(SDL_VIDEO_OPENGL) case "$host" in *-*-darwin*) - EXTRA_LDFLAGS="$EXTRA_LDFLAGS -framework OpenGL" + EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,OpenGL" # The following is probably not available in Darwin: - EXTRA_LDFLAGS="$EXTRA_LDFLAGS -framework AGL" + EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,AGL" esac fi } @@ -2342,7 +2342,7 @@ case "$host" in if test x$enable_joystick = xyes; then AC_DEFINE(SDL_JOYSTICK_IOKIT) SOURCES="$SOURCES $srcdir/src/joystick/darwin/*.c" - EXTRA_LDFLAGS="$EXTRA_LDFLAGS -framework IOKit" + EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,IOKit" have_joystick=yes fi # Set up files for the cdrom library @@ -2368,16 +2368,16 @@ case "$host" in EXTRA_CFLAGS="$EXTRA_CFLAGS -fpascal-strings" SDL_LIBS="-lSDLmain $SDL_LIBS" if test x$enable_video_cocoa = xyes; then - EXTRA_LDFLAGS="$EXTRA_LDFLAGS -framework Cocoa" + EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,Cocoa" fi if test x$enable_video_carbon = xyes -o x$enable_video_cocoa = xyes; then # The Cocoa backend still needs Carbon, and the YUV code QuickTime - EXTRA_LDFLAGS="$EXTRA_LDFLAGS -framework QuickTime -framework ApplicationServices" - EXTRA_LDFLAGS="$EXTRA_LDFLAGS -framework Carbon" + EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,QuickTime -Wl,-framework,ApplicationServices" + EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,Carbon" fi # If either the audio or CD driver is used, add the AudioUnit framework if test x$enable_audio = xyes -o x$enable_cdrom = xyes; then - EXTRA_LDFLAGS="$EXTRA_LDFLAGS -framework AudioToolbox -framework AudioUnit" + EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,AudioToolbox -Wl,-framework,AudioUnit" fi ;; *-*-mint*) @@ -2519,13 +2519,13 @@ fi case "$ARCH" in macosx) if test x$enable_video = xyes -a x$enable_video_cocoa = xyes; then - SDL_LIBS="$SDL_LIBS -framework Cocoa" + SDL_LIBS="$SDL_LIBS -Wl,-framework,Cocoa" fi if test x$enable_video = xyes -a x$enable_video_carbon = xyes; then - SDL_LIBS="$SDL_LIBS -framework Carbon" + SDL_LIBS="$SDL_LIBS -Wl,-framework,Carbon" fi if test x$enable_video = xyes -a x$enable_video_opengl = xyes; then - SDL_LIBS="$SDL_LIBS -framework OpenGL" + SDL_LIBS="$SDL_LIBS -Wl,-framework,OpenGL" fi # Evil hack to allow static linking on Mac OS X SDL_STATIC_LIBS="\${exec_prefix}/lib/libSDLmain.a \${exec_prefix}/lib/libSDL.a"