Mercurial > pub > dyncall > dyncall
diff configure @ 0:3e629dc19168
initial from svn dyncall-1745
author | Daniel Adler |
---|---|
date | Thu, 19 Mar 2015 22:24:28 +0100 |
parents | |
children | 52deacbdd2b1 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configure Thu Mar 19 22:24:28 2015 +0100 @@ -0,0 +1,203 @@ +#!/bin/sh +C=Makefile.config + +# get full path +case $0 in + /*) + FULL=$0 + ;; + *) + FULL=$PWD/$0 + ;; +esac + +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 --<option>=<value> <var>=<value> .. + + --prefix=<dir> + --target=<platform> uname/special targets: MacOSX,iOS,iPhoneSimulator + --sdk=<version> Mac OS X/iOS SDK version (e.g. '6.1' or '10.9.3') + Tested iOS SDK versions: 4.3, 6.1, 8.1 + --sdkroot=<dir> + +Useful variables CC, CXX, CFLAGS, CXXFLAGS, etc.. + +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-` + ;; + --sdkroot=*) + SDKROOT=`printf -- "${X}" | cut -c 11-` + ;; +# 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:=`uname`} in + Linux) + if [ -z "${CFLAGS}" ]; then + printf "CFLAGS=-fPIC\n" >>$C + fi + printf "LDLIBS=-lm -ldl\n" >>$C + ;; + OpenBSD) + printf "LDLIBS=-lm\n" >>$C + ;; + DragonFly|NetBSD) + if [ -z "${CFLAGS}" ]; then + printf "CFLAGS=-fPIC\n" >>$C + fi + printf "LDLIBS=-lm\n" >>$C + ;; + FreeBSD) + if [ -z "${CFLAGS}" ]; then + printf "CFLAGS=-fPIC\n" >>$C + fi + printf "LDLIBS=-lm\n" >>$C + printf "RM=rm -f\n" >>$C + ;; + MacOSX|Darwin) + # if Apple's libtool (not to be confused with GNU's) is available, which is according to libtool(1) "with -static [...] intended + # to replace ar(5) and ranlib", use it - if it is shadowed by some install of GNU's libtool assume that a foreign environment is + # intentionally used, and fall back to using 'ar rs' (the equivalent to 'libtool -static'), for compatibility: + if libtool -V >/dev/null 2>/dev/null; then # Apple's libtool has -V for version, which GNU does not. + printf "AR=libtool\n" >>$C + printf "ARFLAGS=-static -o\n" >>$C + else + printf "AR=ar\n" >>$C + printf "ARFLAGS=rs\n" >>$C # 's' is crucial for universal binary archives + fi + 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.10.*) + ARCHS="-arch x86_64 -arch i386" + ;; + 10.[789].*) + ARCHS="-arch x86_64 -arch i386" + ;; + esac + printf "ASFLAGS=${ARCHS}\n" >>$C + printf "CFLAGS=${ARCHS}\n" >>$C + printf "CXXFLAGS=${ARCHS}\n" >>$C + else + if [ -z ${SDKROOT} ]; then + SDKROOT="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${SDK}.sdk" + fi + printf "CFLAGS=-isysroot ${SDKROOT}\n" >>$C + printf "CXXFLAGS=-isysroot ${SDKROOT}\n" >>$C + fi + ;; + iPhoneOS|iOS) + if [ -z ${SDKROOT} ]; then + SDKROOT="`xcode-select -print-path`/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS${SDK}.sdk" + fi + if [ -z "${ARCHS}" ]; then + case "${SDK}" in + [45].*) + ARCHS="-arch armv6" + ;; + [67].*) + ARCHS="-arch armv7" + ;; + 8.*) + ARCHS="-arch armv7 -arch arm64" + ;; + esac + fi + printf "ARFLAGS=rs\n" >>$C # 's' is crucial for universal binary archives + 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) + if [ -z ${SDKROOT} ]; then + SDKROOT="`xcode-select -print-path`/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator${SDK}.sdk" + fi + 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) + # open distributions often don't come with default cc and CC, check for common alternatives. + printf "CC=` (which cc || which gcc || which clang ) | grep -v '^no '`\n" >>$C + printf "CXX=`(which CC || which g++ || which clang++) | grep -v '^no '`\n" >>$C # C++ compiler traditionally named CC + printf "CCC=${CXX}\n" >>$C # Sun make's rules use CCC for c++ compiler + printf "LDLIBS=-lm\n" >>$C + ;; + Minix) + printf "CC=gcc\n" >>$C + printf "CXX=g++\n">>$C + printf "AR=ar\n" >>$C + ;; + PSP) + SDKROOT="`psp-config --pspsdk-path`" + printf "CC=psp-gcc\n" >>$C + printf "CXX=psp-gcc\n">>$C # don't use psp-g++, buggy + printf "AR=psp-ar\n" >>$C + printf "CFLAGS=-I${SDKROOT}/include/\n" >>$C + printf "CXXFLAGS=-I${SDKROOT}/include/\n" >>$C + # Pulling in dyncall libs below is a hack, for some reason psp-ld is super-picky about order. + # Use your C lib of choice, from the PSPSDK, or... + #printf "LDLIBS=-L${SDKROOT}/lib/ -L`dirname ${FULL}`/dyncall -L`dirname ${FULL}`/dyncallback -ldyncall_s -ldyncallback_s -lm -lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk -lstdc++ -lpsplibc -lpspnet -lpspnet_inet -lpspnet_apctl -lpspnet_resolver -lpsputility -lpspuser \n" >>$C + # ... newlib. + printf "LDLIBS=-L${SDKROOT}/lib/ -L`dirname ${FULL}`/dyncall -L`dirname ${FULL}`/dyncallback -ldyncall_s -ldyncallback_s -lm -lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk -lstdc++ -lc -lpspnet -lpspnet_inet -lpspnet_apctl -lpspnet_resolver -lpsputility -lpspuser \n" >>$C + ;; +esac + +BLDTOP="$PWD" +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