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