|
| 1 | +#!/bin/sh |
| 2 | + |
| 3 | +IFS=' |
| 4 | +' |
| 5 | + |
| 6 | +MYARCH=linux-x86_64 |
| 7 | +if uname -s | grep -i "linux" > /dev/null ; then |
| 8 | + MYARCH=linux-x86_64 |
| 9 | +fi |
| 10 | +if uname -s | grep -i "darwin" > /dev/null ; then |
| 11 | + MYARCH=darwin-x86_64 |
| 12 | +fi |
| 13 | +if uname -s | grep -i "windows" > /dev/null ; then |
| 14 | + MYARCH=windows-x86_64 |
| 15 | +fi |
| 16 | + |
| 17 | +NDK=`which ndk-build` |
| 18 | +NDK=`dirname $NDK` |
| 19 | +NDK=`readlink -f $NDK` |
| 20 | + |
| 21 | +#echo NDK $NDK |
| 22 | +GCCPREFIX=arm-linux-androideabi |
| 23 | +[ -z "$NDK_TOOLCHAIN_VERSION" ] && NDK_TOOLCHAIN_VERSION=4.9 |
| 24 | +[ -z "$PLATFORMVER" ] && PLATFORMVER=android-14 |
| 25 | +LOCAL_PATH=`dirname $0` |
| 26 | +if which realpath > /dev/null ; then |
| 27 | + LOCAL_PATH=`realpath $LOCAL_PATH` |
| 28 | +else |
| 29 | + LOCAL_PATH=`cd $LOCAL_PATH && pwd` |
| 30 | +fi |
| 31 | +ARCH=armeabi |
| 32 | + |
| 33 | + |
| 34 | +APP_MODULES= |
| 35 | +APP_SHARED_LIBS= |
| 36 | +MISSING_INCLUDE= |
| 37 | +MISSING_LIB= |
| 38 | + |
| 39 | +CFLAGS="\ |
| 40 | +-fpic -ffunction-sections -funwind-tables -fstack-protector-strong \ |
| 41 | +-no-canonical-prefixes -march=armv5te -mtune=xscale -msoft-float \ |
| 42 | +-mthumb -O2 -g -DNDEBUG \ |
| 43 | +-fomit-frame-pointer -fno-strict-aliasing -finline-limit=300 \ |
| 44 | +-DANDROID -Wall -Wno-unused -Wa,--noexecstack -Wformat -Werror=format-security \ |
| 45 | +-isystem$NDK/platforms/$PLATFORMVER/arch-arm/usr/include \ |
| 46 | +-isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/include \ |
| 47 | +-isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/libs/$ARCH/include \ |
| 48 | +-isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/include/backward \ |
| 49 | +-isystem$LOCAL_PATH/../sdl-1.2/include \ |
| 50 | +`echo $APP_MODULES | sed \"s@\([-a-zA-Z0-9_.]\+\)@-isystem$LOCAL_PATH/../\1/include@g\"` \ |
| 51 | +$MISSING_INCLUDE $CFLAGS" |
| 52 | + |
| 53 | +UNRESOLVED="-Wl,--no-undefined" |
| 54 | +if [ -n "$BUILD_EXECUTABLE" ]; then |
| 55 | + SHARED="-Wl,--gc-sections -Wl,-z,nocopyreloc -pie" |
| 56 | +fi |
| 57 | +if [ -n "$NO_SHARED_LIBS" ]; then |
| 58 | + APP_SHARED_LIBS= |
| 59 | +fi |
| 60 | +if [ -n "$ALLOW_UNRESOLVED_SYMBOLS" ]; then |
| 61 | + UNRESOLVED= |
| 62 | +fi |
| 63 | + |
| 64 | +LDFLAGS="\ |
| 65 | +$SHARED \ |
| 66 | +--sysroot=$NDK/platforms/$PLATFORMVER/arch-arm \ |
| 67 | +-L$LOCAL_PATH/../../obj/local/$ARCH \ |
| 68 | +`echo $APP_SHARED_LIBS | sed \"s@\([-a-zA-Z0-9_.]\+\)@$LOCAL_PATH/../../obj/local/$ARCH/lib\1.so@g\"` \ |
| 69 | +-L$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib \ |
| 70 | +-lc -lm -ldl -llog -lz \ |
| 71 | +-L$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/libs/$ARCH \ |
| 72 | +-lgnustl_static \ |
| 73 | +-no-canonical-prefixes $UNRESOLVED -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now \ |
| 74 | +-Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings \ |
| 75 | +-lsupc++ \ |
| 76 | +$MISSING_LIB $LDFLAGS" |
| 77 | + |
| 78 | +CC="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-gcc" |
| 79 | +CXX="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" |
| 80 | +CPP="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-cpp $CFLAGS" |
| 81 | + |
| 82 | +if [ -n "$CLANG" ]; then |
| 83 | + |
| 84 | +CFLAGS="\ |
| 85 | +-gcc-toolchain $NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH \ |
| 86 | +-target armv5te-none-linux-androideabi -Wno-invalid-command-line-argument -Wno-unused-command-line-argument \ |
| 87 | +$CFLAGS" |
| 88 | + |
| 89 | +LDFLAGS="$LDFLAGS \ |
| 90 | +-lgcc \ |
| 91 | +-latomic \ |
| 92 | +-gcc-toolchain $NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH \ |
| 93 | +-target armv5te-none-linux-androideabi" |
| 94 | + |
| 95 | +CC="$NDK/toolchains/llvm/prebuilt/$MYARCH/bin/clang" |
| 96 | +CXX="$NDK/toolchains/llvm/prebuilt/$MYARCH/bin/clang++" |
| 97 | +CPP="$CC -E $CFLAGS" |
| 98 | + |
| 99 | +fi |
| 100 | + |
| 101 | +env PATH=$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin:$LOCAL_PATH:$PATH \ |
| 102 | +CFLAGS="$CFLAGS" \ |
| 103 | +CXXFLAGS="$CXXFLAGS $CFLAGS -frtti -fexceptions" \ |
| 104 | +LDFLAGS="$LDFLAGS" \ |
| 105 | +CC="$CC" \ |
| 106 | +CXX="$CXX" \ |
| 107 | +RANLIB="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-ranlib" \ |
| 108 | +LD="$CC" \ |
| 109 | +AR="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-ar" \ |
| 110 | +CPP="$CPP" \ |
| 111 | +NM="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-nm" \ |
| 112 | +AS="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-as" \ |
| 113 | +STRIP="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-strip" \ |
| 114 | +"$@" |
0 commit comments