test/gcc-fat.sh
author Sam Lantinga <slouken@libsdl.org>
Thu, 07 Dec 2017 16:08:09 -0800
changeset 11730 ac6c607e065c
parent 1797 783b9409baa0
child 4127 6cb18cf1777e
permissions -rwxr-xr-x
Enable building the Metal renderer by default, and weak link the Metal framework so the SDL library is safe to use on older Macs
Also generate iOS versions of the Metal shaders
     1 #!/bin/sh
     2 #
     3 # Build Universal binaries on Mac OS X, thanks Ryan!
     4 #
     5 # Usage: ./configure CC="sh gcc-fat.sh" && make && rm -rf ppc x86
     6 
     7 # PowerPC compiler flags (10.2 runtime compatibility)
     8 GCC_COMPILE_PPC="gcc-3.3 -arch ppc \
     9 -DMAC_OS_X_VERSION_MIN_REQUIRED=1020 \
    10 -nostdinc \
    11 -F/Developer/SDKs/MacOSX10.2.8.sdk/System/Library/Frameworks \
    12 -I/Developer/SDKs/MacOSX10.2.8.sdk/usr/include/gcc/darwin/3.3 \
    13 -isystem /Developer/SDKs/MacOSX10.2.8.sdk/usr/include"
    14 
    15 GCC_LINK_PPC="\
    16 -L/Developer/SDKs/MacOSX10.2.8.sdk/usr/lib/gcc/darwin/3.3 \
    17 -F/Developer/SDKs/MacOSX10.2.8.sdk/System/Library/Frameworks \
    18 -Wl,-syslibroot,/Developer/SDKs/MacOSX10.2.8.sdk"
    19 
    20 # Intel compiler flags (10.4 runtime compatibility)
    21 GCC_COMPILE_X86="gcc-4.0 -arch i386 -mmacosx-version-min=10.4 \
    22 -DMAC_OS_X_VERSION_MIN_REQUIRED=1040 \
    23 -nostdinc \
    24 -F/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks \
    25 -I/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/gcc/i686-apple-darwin8/4.0.1/include \
    26 -isystem /Developer/SDKs/MacOSX10.4u.sdk/usr/include"
    27 
    28 GCC_LINK_X86="\
    29 -L/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/gcc/i686-apple-darwin8/4.0.0 \
    30 -Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk"
    31 
    32 # Output both PowerPC and Intel object files
    33 args="$*"
    34 compile=yes
    35 link=yes
    36 while test x$1 != x; do
    37     case $1 in
    38         --version) exec gcc $1;;
    39         -v) exec gcc $1;;
    40         -V) exec gcc $1;;
    41         -print-prog-name=*) exec gcc $1;;
    42         -print-search-dirs) exec gcc $1;;
    43         -E) GCC_COMPILE_PPC="$GCC_COMPILE_PPC -E"
    44             GCC_COMPILE_X86="$GCC_COMPILE_X86 -E"
    45             compile=no; link=no;;
    46         -c) link=no;;
    47         -o) output=$2;;
    48         *.c|*.cc|*.cpp|*.S) source=$1;;
    49     esac
    50     shift
    51 done
    52 if test x$link = xyes; then
    53     GCC_COMPILE_PPC="$GCC_COMPILE_PPC $GCC_LINK_PPC"
    54     GCC_COMPILE_X86="$GCC_COMPILE_X86 $GCC_LINK_X86"
    55 fi
    56 if test x"$output" = x; then
    57     if test x$link = xyes; then
    58         output=a.out
    59     elif test x$compile = xyes; then
    60         output=`echo $source | sed -e 's|.*/||' -e 's|\(.*\)\.[^\.]*|\1|'`.o
    61     fi
    62 fi
    63 
    64 if test x"$output" != x; then
    65     dir=ppc/`dirname $output`
    66     if test -d $dir; then
    67         :
    68     else
    69         mkdir -p $dir
    70     fi
    71 fi
    72 set -- $args
    73 while test x$1 != x; do
    74     if test -f "ppc/$1" && test "$1" != "$output"; then
    75         ppc_args="$ppc_args ppc/$1"
    76     else
    77         ppc_args="$ppc_args $1"
    78     fi
    79     shift
    80 done
    81 $GCC_COMPILE_PPC $ppc_args || exit $?
    82 if test x"$output" != x; then
    83     cp $output ppc/$output
    84 fi
    85 
    86 if test x"$output" != x; then
    87     dir=x86/`dirname $output`
    88     if test -d $dir; then
    89         :
    90     else
    91         mkdir -p $dir
    92     fi
    93 fi
    94 set -- $args
    95 while test x$1 != x; do
    96     if test -f "x86/$1" && test "$1" != "$output"; then
    97         x86_args="$x86_args x86/$1"
    98     else
    99         x86_args="$x86_args $1"
   100     fi
   101     shift
   102 done
   103 $GCC_COMPILE_X86 $x86_args || exit $?
   104 if test x"$output" != x; then
   105     cp $output x86/$output
   106 fi
   107 
   108 if test x"$output" != x; then
   109     lipo -create -o $output ppc/$output x86/$output
   110 fi