|
| 1 | +#!/bin/bash |
| 2 | + |
| 3 | +. $(dirname $0)/environment.sh |
| 4 | + |
| 5 | +# credit to: |
| 6 | +# http://randomsplat.com/id5-cross-compiling-python-for-embedded-linux.html |
| 7 | +# http://latenitesoft.blogspot.com/2008/10/iphone-programming-tips-building-unix.html |
| 8 | + |
| 9 | +# download python and patch if they aren't there |
| 10 | +if [ ! -f $CACHEROOT/Python-$PYTHON_VERSION.tar.bz2 ]; then |
| 11 | + curl -L https://www.python.org/ftp//python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tar.bz2 > $CACHEROOT/Python-$PYTHON_VERSION.tar.bz2 |
| 12 | +fi |
| 13 | + |
| 14 | +# get rid of old build |
| 15 | +rm -rf $SRCROOT/Python-$PYTHON_VERSION |
| 16 | +try tar -xjf $CACHEROOT/Python-$PYTHON_VERSION.tar.bz2 |
| 17 | +try mv Python-$PYTHON_VERSION $SRCROOT |
| 18 | +try pushd $SRCROOT/Python-$PYTHON_VERSION |
| 19 | + |
| 20 | +# Patch Python for temporary reduce PY_SSIZE_T_MAX otherzise, splitting string doesnet work |
| 21 | +try patch -p1 < $PROJECTROOT/src/python_files/Python-$PYTHON_VERSION-ssize-t-max.patch |
| 22 | +try patch -p1 < $PROJECTROOT/src/python_files/Python-$PYTHON_VERSION-dynload.patch |
| 23 | +try patch -p1 < $PROJECTROOT/src/python_files/Python-$PYTHON_VERSION-static-_sqlite3.patch |
| 24 | + |
| 25 | +# Copy our setup for modules |
| 26 | +try cp $PROJECTROOT/src/python_files/ModulesSetup Modules/Setup.local |
| 27 | +try cp $PROJECTROOT/src/python_files/_scproxy.py Lib/_scproxy.py |
| 28 | + |
| 29 | +echo "Building for native machine ============================================" |
| 30 | + |
| 31 | +OSX_SDK_ROOT=`xcrun --sdk macosx --show-sdk-path` |
| 32 | +try ./configure CC="clang -Qunused-arguments -fcolor-diagnostics" LDFLAGS="-lsqlite3" CFLAGS="--sysroot=$OSX_SDK_ROOT" |
| 33 | +try make -j4 python.exe Parser/pgen |
| 34 | +try mv python.exe hostpython |
| 35 | +try mv Parser/pgen Parser/hostpgen |
| 36 | +try make distclean |
| 37 | + |
| 38 | +echo "Building for iOS =======================================================" |
| 39 | + |
| 40 | +# patch python to cross-compile |
| 41 | +try patch -p1 < $PROJECTROOT/src/python_files/Python-$PYTHON_VERSION-xcompile.patch |
| 42 | +try patch -p1 < $PROJECTROOT/src/python_files/Python-$PYTHON_VERSION-setuppath.patch |
| 43 | + |
| 44 | +# set up environment variables for cross compilation |
| 45 | +#export CPPFLAGS="-I$IOSSDKROOT/usr/lib/gcc/arm-apple-darwin11/4.2.1/include/ -I$IOSSDKROOT/usr/include/" |
| 46 | +export CPP="$CCACHE /usr/bin/cpp $CPPFLAGS" |
| 47 | +export MACOSX_DEPLOYMENT_TARGET= |
| 48 | + |
| 49 | +# make a link to a differently named library for who knows what reason |
| 50 | +#mkdir extralibs||echo "foo" |
| 51 | +#ln -s "$IOSSDKROOT/usr/lib/libgcc_s.1.dylib" extralibs/libgcc_s.10.4.dylib || echo "sdf" |
| 52 | + |
| 53 | +# Copy our setup for modules |
| 54 | +try cp $PROJECTROOT/src/python_files/ModulesSetup Modules/Setup.local |
| 55 | +try cat $PROJECTROOT/src/python_files/ModulesSetup.mobile >> Modules/Setup.local |
| 56 | +try cp $PROJECTROOT/src/python_files/_scproxy.py Lib/_scproxy.py |
| 57 | + |
| 58 | +try ./configure CC="$ARM_CC" LD="$ARM_LD" \ |
| 59 | + CFLAGS="$ARM_CFLAGS" \ |
| 60 | + LDFLAGS="$ARM_LDFLAGS -Lextralibs/ -lsqlite3 -L$BUILDROOT/lib -undefined dynamic_lookup" \ |
| 61 | + --without-pymalloc \ |
| 62 | + --disable-toolbox-glue \ |
| 63 | + --host=armv7-apple-darwin \ |
| 64 | + --prefix=/python \ |
| 65 | + --without-doc-strings |
| 66 | + |
| 67 | +# with undefined lookup, checks in configure just failed :( |
| 68 | +try patch -p1 < $PROJECTROOT/src/python_files/Python-$PYTHON_VERSION-pyconfig.patch |
| 69 | +try patch -p1 < $PROJECTROOT/src/python_files/Python-$PYTHON_VERSION-ctypes_duplicate.patch |
| 70 | + |
| 71 | +try make -j4 HOSTPYTHON=./hostpython HOSTPGEN=./Parser/hostpgen \ |
| 72 | + CROSS_COMPILE_TARGET=yes |
| 73 | + |
| 74 | +try make install HOSTPYTHON=./hostpython CROSS_COMPILE_TARGET=yes \ |
| 75 | + prefix="$BUILDROOT/python" |
| 76 | + |
| 77 | +try mv -f $BUILDROOT/python/lib/libpython2.7.a $BUILDROOT/lib/ |
| 78 | + |
| 79 | +deduplicate $BUILDROOT/lib/libpython2.7.a |
0 commit comments