cscg22-gearboy

CSCG 2022 Challenge 'Gearboy'
git clone https://git.sinitax.com/sinitax/cscg22-gearboy
Log | Files | Refs | sfeed.txt

gcc-fat.sh (2966B)


      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)
      8GCC_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
     15GCC_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)
     21GCC_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
     28GCC_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
     33args="$*"
     34compile=yes
     35link=yes
     36while 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
     51done
     52if 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"
     55fi
     56if 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
     62fi
     63
     64if 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
     71fi
     72set -- $args
     73while 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
     80done
     81$GCC_COMPILE_PPC $ppc_args || exit $?
     82if test x"$output" != x; then
     83    cp $output ppc/$output
     84fi
     85
     86if 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
     93fi
     94set -- $args
     95while 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
    102done
    103$GCC_COMPILE_X86 $x86_args || exit $?
    104if test x"$output" != x; then
    105    cp $output x86/$output
    106fi
    107
    108if test x"$output" != x; then
    109    lipo -create -o $output ppc/$output x86/$output
    110fi