# HG changeset patch # User Sam Lantinga # Date 1022957293 0 # Node ID 469d5c0da01dfd152ac1bfe8ca569ade45e0b67d # Parent 2c5d4c22a2ac5d103abe032b4938fff071497a66 Fixed shared library building on MacOS X (thanks Max!) diff -r 2c5d4c22a2ac -r 469d5c0da01d configure.in --- a/configure.in Sat Jun 01 18:43:51 2002 +0000 +++ b/configure.in Sat Jun 01 18:48:13 2002 +0000 @@ -1050,7 +1050,7 @@ CFLAGS="$CFLAGS -DHAVE_OPENGL" case "$target" in *-*-darwin*) - SDL_LIBS="$SDL_LIBS -framework OpenGL -framework AGL" + SYSTEM_LIBS="$SYSTEM_LIBS -framework OpenGL -framework AGL" esac fi } @@ -1247,7 +1247,6 @@ ;; esac fi - AM_CONDITIONAL(USE_CLONE, test x$use_clone = xyes) } dnl See if we can use GNU pth library for threads @@ -1322,7 +1321,6 @@ ]) AC_MSG_RESULT($use_directx) fi - AM_CONDITIONAL(USE_DIRECTX, test x$use_directx = xyes) CFLAGS="$CFLAGS -I\$(top_srcdir)/src/video/wincommon" SYSTEM_LIBS="$SYSTEM_LIBS -luser32 -lgdi32 -lwinmm" @@ -2344,7 +2342,7 @@ if test x$enable_joystick = xyes; then JOYSTICK_SUBDIRS="$JOYSTICK_SUBDIRS darwin" JOYSTICK_DRIVERS="$JOYSTICK_DRIVERS darwin/libjoystick_darwin.la" - SDL_LIBS="$SDL_LIBS -framework IOKit" + SYSTEM_LIBS="$SYSTEM_LIBS -framework IOKit" fi # Set up files for the cdrom library if test x$enable_cdrom = xyes; then @@ -2370,9 +2368,10 @@ if test x$enable_timers = xyes; then COPY_ARCH_SRC(src/timer, linux, SDL_systimer.c) fi - # The MacOS X platform requires special setup - SDL_CFLAGS="$SDL_CFLAGS -F/System/Library/Frameworks/Carbon.framework -F/System/Library/Frameworks/Cocoa.framework" - SDL_LIBS="-lSDLmain $SDL_LIBS -framework Carbon -framework Cocoa" + # The MacOS X platform requires special setup. + SDL_LIBS="-lSDLmain $SDL_LIBS" + # The Cocoa backend still needs Carbon, and the YUV code QuickTime + SYSTEM_LIBS="$SYSTEM_LIBS -framework Cocoa -framework Carbon -framework QuickTime" ;; *-*-mint*) ARCH=mint @@ -2451,6 +2450,10 @@ AM_CONDITIONAL(TARGET_QNX, test $ARCH = qnx) AM_CONDITIONAL(TARGET_MINT, test $ARCH = mint) +# More automake conditionals +AM_CONDITIONAL(USE_DIRECTX, test x$use_directx = xyes) +AM_CONDITIONAL(USE_CLONE, test x$use_clone = xyes) + # Set conditional variables for shared and static library selection. # These are not used in any Makefile.am but in sdl-config.in. AM_CONDITIONAL([ENABLE_SHARED], [test "$enable_shared" = yes]) @@ -2464,11 +2467,22 @@ if test $ARCH = solaris; then SDL_RLD_FLAGS="-R\${exec_prefix}/lib" fi -if test $ARCH = openbsd -o $ARCH = bsdi; then + +case "$ARCH" in + openbsd | bsdi) SHARED_SYSTEM_LIBS="$SYSTEM_LIBS" -else + ;; + macosx) + SHARED_SYSTEM_LIBS="-framework Cocoa" + if test x$enable_video = xyes -a x$enable_video_opengl = xyes; then + SHARED_SYSTEM_LIBS="$SHARED_SYSTEM_LIBS -framework OpenGL" + fi + ;; + *) SHARED_SYSTEM_LIBS="" -fi + ;; +esac + STATIC_SYSTEM_LIBS="$SYSTEM_LIBS" dnl Output the video drivers we use diff -r 2c5d4c22a2ac -r 469d5c0da01d ltconfig --- a/ltconfig Sat Jun 01 18:43:51 2002 +0000 +++ b/ltconfig Sat Jun 01 18:48:13 2002 +0000 @@ -685,6 +685,11 @@ cygwin* | mingw* | os2*) # We can build DLLs from non-PIC. ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + pic_flag='-fno-common' + ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, @@ -1414,6 +1419,23 @@ hardcode_shlibpath_var=no ;; + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag='-undefined suppress' + ;; + *) # Darwin 1.3 on + allow_undefined_flag='-undefined error' + ;; + esac + archive_cmds='$nonopt $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs $linkopts -install_name $rpath/$soname $verstring' + # We need to add '_' to the symbols in $export_symbols first + #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols $lib' + hardcode_direct=yes + hardcode_shlibpath_var=no + whole_archive_flag_spec='-all_load $convenience' + ;; + hpux9* | hpux10* | hpux11*) case "$host_os" in hpux9*) archive_cmds='$rm $objdir/$soname~$LD -b +b $install_libdir -o $objdir/$soname $libobjs $deplibs $linkopts~test $objdir/$soname = $lib || mv $objdir/$soname $lib' ;; @@ -1501,12 +1523,6 @@ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; - rhapsody*) - archive_cmds='$CC -bundle -undefined suppress -o $lib $libobjs $deplibs $linkopts' - hardcode_libdir_flags_spec='-L$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; sco3.2v5*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' @@ -1984,6 +2000,27 @@ esac ;; +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + deplibs_check_method='file_magic Mach-O dynamically linked shared library' + file_magic_cmd='/usr/bin/file -L' + case "$host_os" in + rhapsody* | darwin1.[012]) + file_magic_test_file='/System/Library/Frameworks/System.framework/System' + ;; + *) # Darwin 1.3 on + file_magic_test_file='/usr/lib/libSystem.dylib' + ;; + esac + library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' + soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + ;; + gnu*) version_type=linux need_lib_prefix=no @@ -2141,14 +2178,6 @@ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; -rhapsody*) - version_type=sunos - library_names_spec='${libname}.so' - soname_spec='${libname}.so' - shlibpath_var=DYLD_LIBRARY_PATH - deplibs_check_method=pass_all - ;; - sco3.2v5*) version_type=osf soname_spec='${libname}${release}.so$major' diff -r 2c5d4c22a2ac -r 469d5c0da01d ltmain.sh --- a/ltmain.sh Sat Jun 01 18:43:51 2002 +0000 +++ b/ltmain.sh Sat Jun 01 18:48:13 2002 +0000 @@ -951,6 +951,11 @@ prev= continue ;; + framework) + deplibs="$deplibs -framework $arg" + prev= + continue + ;; release) release="-$arg" prev= @@ -1037,6 +1042,11 @@ continue ;; + -framework) + prev=framework + continue + ;; + -L*) dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` # We need an absolute path. @@ -1768,6 +1778,16 @@ versuffix="-$major-$age-$revision" ;; + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + minor_current=`expr $current + 1` + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + *) $echo "$modename: unknown library version type \`$version_type'" 1>&2 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 @@ -1778,7 +1798,16 @@ # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= + case "$version_type" in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring="" + ;; + *) verstring="0.0" + ;; + esac if test "$need_version" = no; then versuffix= else