1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
|
#!/bin/sh
C=Makefile.config
printf "# auto-generated by $0\n" >$C
while [ $# -gt 0 ]; do
X=$1
shift 1
# Shell common:
case $X in
--help|-h)
cat <<EOF
usage: $0 --prefix=<dir> var1=name1..
--prefix=<dir>
--target=<platform> MacOSX,iOS,iPhoneSimulator
--sdk=<version>
EOF
exit 1
;;
# GNU Compatibility:
--prefix=*)
PREFIX=`printf -- "${X}" | cut -c 10-`
;;
--target=*)
TARGET=`printf -- "${X}" | cut -c 10-`
;;
--sdk=*)
SDK=`printf -- "${X}" | cut -c 7-`
;;
# Environment variables:
[A-Za-z_]*=*)
printf "${X}\n" >>$C
k=`printf "${X}" | cut -d = -f 1`
v=`printf "${X}" | cut -d = -f 2`
export $k=$v
;;
# Others fail:
*)
printf "error: invalid option ${X}\n" >&2
exit 1
;;
esac
done
printf "PREFIX=${PREFIX:=/usr/local}\n" >>$C
case ${TARGET:=`dpkg-architecture -qDEB_BUILD_ARCH_OS`} in
Linux|linux)
printf 'CFLAGS=%s -fPIC\n' "`dpkg-buildflags --get CFLAGS`" >>$C
printf 'LDFLAGS=-lm -ldl %s\n' "`dpkg-buildflags --get LDFLAGS`" >>$C
;;
OpenBSD|NetBSD)
printf "LDFLAGS=-lm\n" >>$C
;;
FreeBSD|kfreebsd)
printf 'CFLAGS=%s -fPIC\n' "`dpkg-buildflags --get CFLAGS`" >>$C
printf 'LDFLAGS=-lm -ldl %s\n' "`dpkg-buildflags --get LDFLAGS`" >>$C
printf "RM=rm -f\n" >>$C
;;
MacOSX|Darwin)
printf "AR=libtool\n" >>$C
printf "ARFLAGS=-static -o\n" >>$C
if [ `uname -n` = 'iPhone' ]; then # building on iPhone itself, uname yields Darwin (gcc setup for current/correct arch)
printf "CC=gcc\n" >>$C
elif [ -z ${SDK} ]; then
case `sw_vers -productVersion` in
10.4.*)
ARCHS="-arch ppc -arch i386 -arch x86_64"
;;
10.[56].*)
ARCHS="-arch i386 -arch x86_64 -arch ppc"
;;
10.6.*)
ARCHS="-arch i386 -arch x86_64"
;;
10.[78].*)
ARCHS="-arch x86_64 -arch i386"
;;
esac
printf "ASFLAGS=${ARCHS}\n" >>$C
printf "CFLAGS=${ARCHS}\n" >>$C
printf "CXXFLAGS=${ARCHS}\n" >>$C
else
SDKROOT="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${SDK}.sdk"
printf "CFLAGS=-isysroot ${SDKROOT}\n" >>$C
printf "CXXFLAGS=-isysroot ${SDKROOT}\n" >>$C
fi
;;
iPhoneOS|iOS)
SDKROOT="`xcode-select -print-path`/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS${SDK}.sdk"
case "${SDK}" in
4.3)
ARCHS="-arch armv6"
;;
6.1)
ARCHS="-arch armv7"
;;
esac
printf "ASFLAGS=${ARCHS} -isysroot ${SDKROOT}\n" >>$C
printf "CFLAGS=${ARCHS} -isysroot ${SDKROOT}\n" >>$C
printf "CXXFLAGS=${ARCHS} -isysroot ${SDKROOT}\n" >>$C
printf "LDFLAGS=-Wl,-syslibroot ${SDKROOT}\n" >>$C
;;
iPhoneSimulator)
SDKROOT="`xcode-select -print-path`/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator${SDK}.sdk"
ARCHS="-arch i386"
printf "ASFLAGS=${ARCHS} -isysroot ${SDKROOT}\n" >>$C
printf "CFLAGS=${ARCHS} -isysroot ${SDKROOT}\n" >>$C
printf "CXXFLAGS=${ARCHS} -isysroot ${SDKROOT}\n" >>$C
printf "LDFLAGS=-Wl,-syslibroot ${SDKROOT}\n" >>$C
;;
SunOS)
X=`type CC`
if [ $? -eq 0 ]; then
printf "CXX=CC\n" >>$C
fi
printf "LDLIBS=-lm\n" >>$C
;;
Minix)
printf "CC=gcc\n" >>$C
printf "CXX=g++\n">>$C
printf "AR=ar\n" >>$C
;;
PSP)
printf "CC=psp-gcc\n" >>$C
printf "CXX=psp-g++\n">>$C
printf "AR=psp-ar\n" >>$C
;;
esac
BLDTOP="$PWD"
# get full path
case $0 in
/*)
FULL=$0
;;
*)
FULL=$PWD/$0
;;
esac
SRCTOP=`dirname ${FULL}`
FILES=`( cd $SRCTOP ; find . -name "Makefile.generic" )`
for FILE in $FILES ; do
SRCFILE="$SRCTOP/$FILE"
BLDFILE="$BLDTOP/$FILE"
SRCDIR=`dirname $SRCFILE`
BLDDIR=`dirname $BLDFILE`
mkdir -p "$BLDDIR"
cat <<EOF >$BLDDIR/Makefile
VPATH = $SRCDIR
include $BLDTOP/Makefile.config
include \${VPATH}/Makefile.generic
EOF
done
|