symbian-qemu-0.9.1-12/libsdl-trunk/build-scripts/fatbuild.sh
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 #!/bin/sh
       
     2 #
       
     3 # Build a fat binary on Mac OS X, thanks Ryan!
       
     4 
       
     5 # Number of CPUs (for make -j)
       
     6 NCPU=`sysctl -n hw.ncpu`
       
     7 NJOB=$NCPU
       
     8 #NJOB=`expr $NCPU + 1`
       
     9 
       
    10 # Generic, cross-platform CFLAGS you always want go here.
       
    11 CFLAGS="-O3 -g -pipe"
       
    12 
       
    13 # Locate Xcode SDK path
       
    14 SDK_PATH=/Developer/SDKs
       
    15 if [ ! -d $SDK_PATH ]; then
       
    16     echo "Couldn't find SDK path"
       
    17     exit 1
       
    18 fi
       
    19 
       
    20 # See if we can use 10.2 or 10.3 runtime compatibility
       
    21 if [ -d "$SDK_PATH/MacOSX10.2.8.sdk" ]; then
       
    22     # PowerPC configure flags (10.2 runtime compatibility)
       
    23     # We dynamically load X11, so using the system X11 headers is fine.
       
    24     CONFIG_PPC="--build=`uname -p`-apple-darwin --host=powerpc-apple-darwin \
       
    25 --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib"
       
    26 
       
    27     # PowerPC compiler flags
       
    28     CC_PPC="gcc-3.3 -arch ppc"
       
    29     CXX_PPC="g++-3.3 -arch ppc"
       
    30     CFLAGS_PPC=""
       
    31     CPPFLAGS_PPC="-DMAC_OS_X_VERSION_MIN_REQUIRED=1020 \
       
    32 -nostdinc \
       
    33 -F$SDK_PATH/MacOSX10.2.8.sdk/System/Library/Frameworks \
       
    34 -I$SDK_PATH/MacOSX10.2.8.sdk/usr/include/gcc/darwin/3.3 \
       
    35 -isystem $SDK_PATH/MacOSX10.2.8.sdk/usr/include"
       
    36 
       
    37     # PowerPC linker flags 
       
    38     LFLAGS_PPC="-arch ppc \
       
    39 -L$SDK_PATH/MacOSX10.2.8.sdk/usr/lib/gcc/darwin/3.3 \
       
    40 -F$SDK_PATH/MacOSX10.2.8.sdk/System/Library/Frameworks \
       
    41 -Wl,-syslibroot,$SDK_PATH/MacOSX10.2.8.sdk"
       
    42 
       
    43 else # 10.2 or 10.3 SDK
       
    44 
       
    45     # PowerPC configure flags (10.3 runtime compatibility)
       
    46     # We dynamically load X11, so using the system X11 headers is fine.
       
    47     CONFIG_PPC="--build=`uname -p`-apple-darwin --host=powerpc-apple-darwin \
       
    48 --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib"
       
    49 
       
    50     # PowerPC compiler flags
       
    51     CC_PPC="gcc-4.0 -arch ppc"
       
    52     CXX_PPC="g++-4.0 -arch ppc"
       
    53     CFLAGS_PPC=""
       
    54     CPPFLAGS_PPC="-DMAC_OS_X_VERSION_MIN_REQUIRED=1030 \
       
    55 -nostdinc \
       
    56 -F$SDK_PATH/MacOSX10.3.9.sdk/System/Library/Frameworks \
       
    57 -I$SDK_PATH/MacOSX10.3.9.sdk/usr/lib/gcc/powerpc-apple-darwin9/4.0.1/include \
       
    58 -isystem $SDK_PATH/MacOSX10.3.9.sdk/usr/include"
       
    59 
       
    60     # PowerPC linker flags
       
    61     LFLAGS_PPC="-arch ppc -mmacosx-version-min=10.3 \
       
    62 -L$SDK_PATH/MacOSX10.3.9.sdk/usr/lib/gcc/powerpc-apple-darwin9/4.0.1 \
       
    63 -F$SDK_PATH/MacOSX10.3.9.sdk/System/Library/Frameworks \
       
    64 -Wl,-syslibroot,$SDK_PATH/MacOSX10.3.9.sdk"
       
    65 
       
    66 fi # 10.2 or 10.3 SDK
       
    67 
       
    68 # Intel configure flags (10.4 runtime compatibility)
       
    69 # We dynamically load X11, so using the system X11 headers is fine.
       
    70 CONFIG_X86="--build=`uname -p`-apple-darwin --host=i386-apple-darwin \
       
    71 --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib"
       
    72 
       
    73 # Intel compiler flags
       
    74 CC_X86="gcc-4.0 -arch i386"
       
    75 CXX_X86="g++-4.0 -arch i386"
       
    76 CFLAGS_X86="-mmacosx-version-min=10.4"
       
    77 CPPFLAGS_X86="-DMAC_OS_X_VERSION_MIN_REQUIRED=1040 \
       
    78 -nostdinc \
       
    79 -F$SDK_PATH/MacOSX10.4u.sdk/System/Library/Frameworks \
       
    80 -I$SDK_PATH/MacOSX10.4u.sdk/usr/lib/gcc/i686-apple-darwin9/4.0.1/include \
       
    81 -isystem $SDK_PATH/MacOSX10.4u.sdk/usr/include"
       
    82 
       
    83 # Intel linker flags
       
    84 LFLAGS_X86="-arch i386 -mmacosx-version-min=10.4 \
       
    85 -L$SDK_PATH/MacOSX10.4u.sdk/usr/lib/gcc/i686-apple-darwin9/4.0.1 \
       
    86 -Wl,-syslibroot,$SDK_PATH/MacOSX10.4u.sdk"
       
    87 
       
    88 #
       
    89 # Find the configure script
       
    90 #
       
    91 srcdir=`dirname $0`/..
       
    92 auxdir=$srcdir/build-scripts
       
    93 cd $srcdir
       
    94 
       
    95 #
       
    96 # Figure out which phase to build:
       
    97 # all,
       
    98 # configure, configure-ppc, configure-x86,
       
    99 # make, make-ppc, make-x86, merge
       
   100 # install
       
   101 # clean
       
   102 if test x"$1" = x; then
       
   103     phase=all
       
   104 else
       
   105     phase="$1"
       
   106 fi
       
   107 case $phase in
       
   108     all)
       
   109         configure_ppc="yes"
       
   110         configure_x86="yes"
       
   111         make_ppc="yes"
       
   112         make_x86="yes"
       
   113         merge="yes"
       
   114         ;;
       
   115     configure)
       
   116         configure_ppc="yes"
       
   117         configure_x86="yes"
       
   118         ;;
       
   119     configure-ppc)
       
   120         configure_ppc="yes"
       
   121         ;;
       
   122     configure-x86)
       
   123         configure_x86="yes"
       
   124         ;;
       
   125     make)
       
   126         make_ppc="yes"
       
   127         make_x86="yes"
       
   128         merge="yes"
       
   129         ;;
       
   130     make-ppc)
       
   131         make_ppc="yes"
       
   132         ;;
       
   133     make-x86)
       
   134         make_x86="yes"
       
   135         ;;
       
   136     merge)
       
   137         merge="yes"
       
   138         ;;
       
   139     install)
       
   140         install_bin="yes"
       
   141         install_hdrs="yes"
       
   142         install_lib="yes"
       
   143         install_data="yes"
       
   144         install_man="yes"
       
   145         ;;
       
   146     install-bin)
       
   147         install_bin="yes"
       
   148         ;;
       
   149     install-hdrs)
       
   150         install_hdrs="yes"
       
   151         ;;
       
   152     install-lib)
       
   153         install_lib="yes"
       
   154         ;;
       
   155     install-data)
       
   156         install_data="yes"
       
   157         ;;
       
   158     install-man)
       
   159         install_man="yes"
       
   160         ;;
       
   161     clean)
       
   162         clean_ppc="yes"
       
   163         clean_x86="yes"
       
   164         ;;
       
   165     clean-ppc)
       
   166         clean_ppc="yes"
       
   167         ;;
       
   168     clean-x86)
       
   169         clean_x86="yes"
       
   170         ;;
       
   171     *)
       
   172         echo "Usage: $0 [all|configure[-ppc|-x86]|make[-ppc|-x86]|merge|install|clean]"
       
   173         exit 1
       
   174         ;;
       
   175 esac
       
   176 case `uname -p` in
       
   177     powerpc)
       
   178         native_path=ppc
       
   179         ;;
       
   180     *86)
       
   181         native_path=x86
       
   182         ;;
       
   183     *)
       
   184         echo "Couldn't figure out native architecture path"
       
   185         exit 1
       
   186         ;;
       
   187 esac
       
   188 
       
   189 #
       
   190 # Create the build directories
       
   191 #
       
   192 for dir in build build/ppc build/x86; do
       
   193     if test -d $dir; then
       
   194         :
       
   195     else
       
   196         mkdir $dir || exit 1
       
   197     fi
       
   198 done
       
   199 
       
   200 #
       
   201 # Build the PowerPC binary
       
   202 #
       
   203 if test x$configure_ppc = xyes; then
       
   204     (cd build/ppc && \
       
   205      sh ../../configure $CONFIG_PPC CC="$CC_PPC" CXX="$CXX_PPC" CFLAGS="$CFLAGS $CFLAGS_PPC" CPPFLAGS="$CPPFLAGS_PPC" LDFLAGS="$LFLAGS_PPC") || exit 2
       
   206 fi
       
   207 if test x$make_ppc = xyes; then
       
   208     (cd build/ppc && ls include && make -j$NJOB) || exit 3
       
   209 fi
       
   210 
       
   211 #
       
   212 # Build the Intel binary
       
   213 #
       
   214 if test x$configure_x86 = xyes; then
       
   215     (cd build/x86 && \
       
   216      sh ../../configure $CONFIG_X86 CC="$CC_X86" CXX="$CXX_X86" CFLAGS="$CFLAGS $CFLAGS_X86" CPPFLAGS="$CPPFLAGS_X86" LDFLAGS="$LFLAGS_X86") || exit 2
       
   217 fi
       
   218 if test x$make_x86 = xyes; then
       
   219     (cd build/x86 && make -j$NJOB) || exit 3
       
   220 fi
       
   221 
       
   222 #
       
   223 # Combine into fat binary
       
   224 #
       
   225 if test x$merge = xyes; then
       
   226     output=.libs
       
   227     sh $auxdir/mkinstalldirs build/$output
       
   228     cd build
       
   229     target=`find . -mindepth 3 -type f -name '*.dylib' | head -1 | sed 's|.*/||'`
       
   230     (lipo -create -o $output/$target `find . -mindepth 3 -type f -name "*.dylib"` &&
       
   231      ln -sf $target $output/libSDL-1.2.0.dylib &&
       
   232      ln -sf $target $output/libSDL.dylib &&
       
   233      lipo -create -o $output/libSDL.a */build/.libs/libSDL.a &&
       
   234      cp $native_path/build/.libs/libSDL.la $output &&
       
   235      cp $native_path/build/.libs/libSDL.lai $output &&
       
   236      cp $native_path/build/libSDL.la . &&
       
   237      lipo -create -o libSDLmain.a */build/libSDLmain.a &&
       
   238      echo "Build complete!" &&
       
   239      echo "Files can be found in the build directory.") || exit 4
       
   240     cd ..
       
   241 fi
       
   242 
       
   243 #
       
   244 # Install
       
   245 #
       
   246 do_install()
       
   247 {
       
   248     echo $*
       
   249     $* || exit 5
       
   250 }
       
   251 if test x$prefix = x; then
       
   252     prefix=/usr/local
       
   253 fi
       
   254 if test x$exec_prefix = x; then
       
   255     exec_prefix=$prefix
       
   256 fi
       
   257 if test x$bindir = x; then
       
   258     bindir=$exec_prefix/bin
       
   259 fi
       
   260 if test x$libdir = x; then
       
   261     libdir=$exec_prefix/lib
       
   262 fi
       
   263 if test x$includedir = x; then
       
   264     includedir=$prefix/include
       
   265 fi
       
   266 if test x$datadir = x; then
       
   267     datadir=$prefix/share
       
   268 fi
       
   269 if test x$mandir = x; then
       
   270     mandir=$prefix/man
       
   271 fi
       
   272 if test x$install_bin = xyes; then
       
   273     do_install sh $auxdir/mkinstalldirs $bindir
       
   274     do_install /usr/bin/install -c -m 755 build/$native_path/sdl-config $bindir/sdl-config
       
   275 fi
       
   276 if test x$install_hdrs = xyes; then
       
   277     do_install sh $auxdir/mkinstalldirs $includedir/SDL
       
   278     for src in $srcdir/include/*.h; do \
       
   279         file=`echo $src | sed -e 's|^.*/||'`; \
       
   280         do_install /usr/bin/install -c -m 644 $src $includedir/SDL/$file; \
       
   281     done
       
   282     do_install /usr/bin/install -c -m 644 $srcdir/include/SDL_config_macosx.h $includedir/SDL/SDL_config.h
       
   283 fi
       
   284 if test x$install_lib = xyes; then
       
   285     do_install sh $auxdir/mkinstalldirs $libdir
       
   286     do_install sh build/$native_path/libtool --mode=install /usr/bin/install -c  build/libSDL.la $libdir/libSDL.la
       
   287     do_install /usr/bin/install -c -m 644 build/libSDLmain.a $libdir/libSDLmain.a
       
   288     do_install ranlib $libdir/libSDLmain.a
       
   289 fi
       
   290 if test x$install_data = xyes; then
       
   291     do_install sh $auxdir/mkinstalldirs $datadir/aclocal
       
   292     do_install /usr/bin/install -c -m 644 $srcdir/sdl.m4 $datadir/aclocal/sdl.m4
       
   293 fi
       
   294 if test x$install_man = xyes; then
       
   295     do_install sh $auxdir/mkinstalldirs $mandir/man3
       
   296     for src in $srcdir/docs/man3/*.3; do \
       
   297         file=`echo $src | sed -e 's|^.*/||'`; \
       
   298         do_install /usr/bin/install -c -m 644 $src $mandir/man3/$file; \
       
   299     done
       
   300 fi
       
   301 
       
   302 #
       
   303 # Clean up
       
   304 #
       
   305 do_clean()
       
   306 {
       
   307     echo $*
       
   308     $* || exit 6
       
   309 }
       
   310 if test x$clean_x86 = xyes; then
       
   311     do_clean rm -r build/x86
       
   312 fi
       
   313 if test x$clean_ppc = xyes; then
       
   314     do_clean rm -r build/ppc
       
   315 fi
       
   316