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.
--- a/build-scripts/ltmain.sh Fri Mar 24 03:49:37 2006 +0000
+++ b/build-scripts/ltmain.sh Fri Mar 24 05:11:51 2006 +0000
@@ -1413,19 +1413,6 @@
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 @@
continue
;;
- -framework)
- prev=framework
- continue
- ;;
-
# Some other compiler flag.
-* | +*)
# Unknown arguments in both finalize_command and compile_command need
@@ -2190,18 +2172,6 @@
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 @@
*) . ./$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 @@
done
path=""
;;
- *.framework)
- case $host in
- *-*-darwin*)
- depdepl="$deplib"
- ;;
- esac
- ;;
*) continue ;;
esac
;;
@@ -3848,13 +3804,6 @@
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 @@
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
--- a/configure.in Fri Mar 24 03:49:37 2006 +0000
+++ b/configure.in Fri Mar 24 05:11:51 2006 +0000
@@ -1444,9 +1444,9 @@
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 @@
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 @@
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 @@
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"