From cdf1c7347d2e645535186766d05008ff1ec4eac1 Mon Sep 17 00:00:00 2001 From: Sergii Pylypenko Date: Tue, 26 Dec 2017 17:34:46 +0200 Subject: [PATCH] SDL: updated setEnvironment.sh build scriots with CLANG and NDK r16b support, ARMv5 and MIPS will be deprecated in NDK r17 so not updated --- changeAppSettings.sh | 1 + project/jni/application/hid-pc-keyboard/src | 2 +- .../application/setEnvironment-arm64-v8a.sh | 105 ++++++++++++----- .../application/setEnvironment-armeabi-v7a.sh | 111 +++++++++++++----- project/jni/application/setEnvironment-x86.sh | 105 ++++++++++++----- .../jni/application/setEnvironment-x86_64.sh | 104 +++++++++++----- 6 files changed, 305 insertions(+), 123 deletions(-) diff --git a/changeAppSettings.sh b/changeAppSettings.sh index 44f868616..2ac399071 100755 --- a/changeAppSettings.sh +++ b/changeAppSettings.sh @@ -1048,6 +1048,7 @@ else $SEDI "s/==GOOGLEPLAYGAMESERVICES_APP_ID==/$GooglePlayGameServicesId/g" project/res/values/strings.xml PROGUARD=`which android` + [ -z "$PROGUARD" ] && PROGUARD=$ANDROID_SDK_ROOT/tools/android PROGUARD=`dirname $PROGUARD`/proguard/lib/proguard.jar java -jar $PROGUARD | grep 'ProGuard, version 5.3' || { echo "Error: ProGuard is too old" diff --git a/project/jni/application/hid-pc-keyboard/src b/project/jni/application/hid-pc-keyboard/src index 4232ede3d..d7347f2af 160000 --- a/project/jni/application/hid-pc-keyboard/src +++ b/project/jni/application/hid-pc-keyboard/src @@ -1 +1 @@ -Subproject commit 4232ede3d0c1cc065fa0ef5297ee684e85e3aa35 +Subproject commit d7347f2af8afe812a673eb858da030f32fbc3e85 diff --git a/project/jni/application/setEnvironment-arm64-v8a.sh b/project/jni/application/setEnvironment-arm64-v8a.sh index 3b627a320..8ad256938 100755 --- a/project/jni/application/setEnvironment-arm64-v8a.sh +++ b/project/jni/application/setEnvironment-arm64-v8a.sh @@ -31,7 +31,11 @@ fi ARCH=arm64-v8a APP_MODULES=`grep 'APP_MODULES [:][=]' $LOCAL_PATH/../Settings.mk | sed 's@.*[=]\(.*\)@\1@'` -APP_AVAILABLE_STATIC_LIBS=`grep 'APP_AVAILABLE_STATIC_LIBS [:][=]' $LOCAL_PATH/../Settings.mk | sed 's@.*[=]\(.*\)@\1@'` +APP_AVAILABLE_STATIC_LIBS="`echo ' +include $LOCAL_PATH/../Settings.mk +all: + @echo $(APP_AVAILABLE_STATIC_LIBS) +.PHONY: all' | make -s -f -`" APP_SHARED_LIBS=$( echo $APP_MODULES | xargs -n 1 echo | while read LIB ; do STATIC=`echo $APP_AVAILABLE_STATIC_LIBS application sdl_main stlport stdout-test | grep "\\\\b$LIB\\\\b"` @@ -47,24 +51,6 @@ echo $APP_MODULES | xargs -n 1 echo | while read LIB ; do done ) - -MISSING_INCLUDE= -MISSING_LIB= - -CFLAGS="\ --fpic -ffunction-sections -funwind-tables -fstack-protector-strong \ --no-canonical-prefixes \ --O2 -g -DNDEBUG \ --fomit-frame-pointer -fno-strict-aliasing -finline-limit=300 \ --DANDROID -Wall -Wno-unused -Wa,--noexecstack -Wformat -Werror=format-security \ --isystem$NDK/platforms/$PLATFORMVER/arch-arm64/usr/include \ --isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/include \ --isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/libs/$ARCH/include \ --isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/include/backward \ --isystem$LOCAL_PATH/../sdl-1.2/include \ -`echo $APP_MODULES | sed \"s@\([-a-zA-Z0-9_.]\+\)@-isystem$LOCAL_PATH/../\1/include@g\"` \ -$MISSING_INCLUDE $CFLAGS" - if [ -z "$SHARED_LIBRARY_NAME" ]; then SHARED_LIBRARY_NAME=libapplication.so fi @@ -80,11 +66,30 @@ if [ -n "$ALLOW_UNRESOLVED_SYMBOLS" ]; then UNRESOLVED= fi +APP_SHARED_LIBS="`echo $APP_SHARED_LIBS | sed \"s@\([-a-zA-Z0-9_.]\+\)@$LOCAL_PATH/../../obj/local/$ARCH/lib\1.so@g\"`" +APP_MODULES_INCLUDE="`echo $APP_MODULES | sed \"s@\([-a-zA-Z0-9_.]\+\)@-isystem$LOCAL_PATH/../\1/include@g\"`" + +if [ -z "$CLANG" ]; then + +CFLAGS="\ +-fpic -ffunction-sections -funwind-tables -fstack-protector-strong \ +-no-canonical-prefixes \ +-O2 -g -DNDEBUG \ +-fomit-frame-pointer -fno-strict-aliasing -finline-limit=300 \ +-DANDROID -Wall -Wno-unused -Wa,--noexecstack -Wformat -Werror=format-security \ +-isystem$NDK/platforms/$PLATFORMVER/arch-arm64/usr/include \ +-isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/include \ +-isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/libs/$ARCH/include \ +-isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/include/backward \ +-isystem$LOCAL_PATH/../sdl-1.2/include \ +$APP_MODULES_INCLUDE \ +$CFLAGS" + LDFLAGS="\ $SHARED \ --sysroot=$NDK/platforms/$PLATFORMVER/arch-arm64 \ -L$LOCAL_PATH/../../obj/local/$ARCH \ -`echo $APP_SHARED_LIBS | sed \"s@\([-a-zA-Z0-9_.]\+\)@$LOCAL_PATH/../../obj/local/$ARCH/lib\1.so@g\"` \ +$APP_SHARED_LIBS \ -L$NDK/platforms/$PLATFORMVER/arch-arm64/usr/lib \ -lc -lm -lGLESv1_CM -ldl -llog -lz \ -L$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/libs/$ARCH \ @@ -92,30 +97,68 @@ $SHARED \ -no-canonical-prefixes $UNRESOLVED -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now \ -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings \ -lsupc++ \ -$MISSING_LIB $LDFLAGS" +$LDFLAGS" CC="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-gcc" CXX="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" CPP="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-cpp $CFLAGS" -if [ -n "$CLANG" ]; then +else # CLANG -CFLAGS="\ --gcc-toolchain $NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH \ --target aarch64-none-linux-android -Wno-invalid-command-line-argument -Wno-unused-command-line-argument \ +CFLAGS=" +-ffunction-sections +-funwind-tables +-fstack-protector-strong +-Wno-invalid-command-line-argument +-Wno-unused-command-line-argument +-no-canonical-prefixes +-I$NDK/sources/cxx-stl/llvm-libc++/include +-I$NDK/sources/cxx-stl/llvm-libc++abi/include +-I$NDK/sources/android/support/include +-DANDROID +-Wa,--noexecstack +-Wformat +-Werror=format-security +-DNDEBUG +-O2 +-g +-gcc-toolchain +$NDK/toolchains/aarch64-linux-android-4.9/prebuilt/$MYARCH +-target +aarch64-none-linux-android +-fpic +--sysroot $NDK/platforms/android-21/arch-arm64 +-isystem $NDK/sysroot/usr/include +-isystem $NDK/sysroot/usr/include/aarch64-linux-android +-D__ANDROID_API__=21 +$APP_MODULES_INCLUDE $CFLAGS" -LDFLAGS="$LDFLAGS \ --lgcc \ --latomic \ --gcc-toolchain $NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH \ --target aarch64-none-linux-android" +CFLAGS="`echo $CFLAGS | tr '\n' ' '`" + +LDFLAGS=" +--sysroot $NDK/platforms/android-21/arch-arm64 +$SHARED $UNRESOLVED +-L$LOCAL_PATH/../../obj/local/$ARCH +$APP_SHARED_LIBS +$NDK/sources/cxx-stl/llvm-libc++/libs/$ARCH/libc++_static.a +$NDK/sources/cxx-stl/llvm-libc++abi/../llvm-libc++/libs/$ARCH/libc++abi.a +$NDK/sources/android/support/../../cxx-stl/llvm-libc++/libs/$ARCH/libandroid_support.a +-latomic -Wl,--exclude-libs,libatomic.a +-gcc-toolchain +$NDK/toolchains/aarch64-linux-android-4.9/prebuilt/$MYARCH +-target aarch64-none-linux-android -no-canonical-prefixes +-Wl,--build-id -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,--warn-shared-textrel -Wl,--fatal-warnings +-lc -lm -lstdc++ -ldl -llog -lz +$LDFLAGS" + +LDFLAGS="`echo $LDFLAGS | tr '\n' ' '`" CC="$NDK/toolchains/llvm/prebuilt/$MYARCH/bin/clang" CXX="$NDK/toolchains/llvm/prebuilt/$MYARCH/bin/clang++" CPP="$CC -E $CFLAGS" -fi +fi # CLANG env PATH=$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin:$LOCAL_PATH:$PATH \ CFLAGS="$CFLAGS" \ diff --git a/project/jni/application/setEnvironment-armeabi-v7a.sh b/project/jni/application/setEnvironment-armeabi-v7a.sh index f0c0e02c1..dc917c845 100755 --- a/project/jni/application/setEnvironment-armeabi-v7a.sh +++ b/project/jni/application/setEnvironment-armeabi-v7a.sh @@ -31,7 +31,11 @@ fi ARCH=armeabi-v7a APP_MODULES=`grep 'APP_MODULES [:][=]' $LOCAL_PATH/../Settings.mk | sed 's@.*[=]\(.*\)@\1@'` -APP_AVAILABLE_STATIC_LIBS=`grep 'APP_AVAILABLE_STATIC_LIBS [:][=]' $LOCAL_PATH/../Settings.mk | sed 's@.*[=]\(.*\)@\1@'` +APP_AVAILABLE_STATIC_LIBS="`echo ' +include $LOCAL_PATH/../Settings.mk +all: + @echo $(APP_AVAILABLE_STATIC_LIBS) +.PHONY: all' | make -s -f -`" APP_SHARED_LIBS=$( echo $APP_MODULES | xargs -n 1 echo | while read LIB ; do STATIC=`echo $APP_AVAILABLE_STATIC_LIBS application sdl_main stlport stdout-test | grep "\\\\b$LIB\\\\b"` @@ -47,24 +51,6 @@ echo $APP_MODULES | xargs -n 1 echo | while read LIB ; do done ) - -MISSING_INCLUDE= -MISSING_LIB= - -CFLAGS="\ --fpic -ffunction-sections -funwind-tables -fstack-protector-strong \ --no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp \ --mfpu=vfpv3-d16 -mthumb -O2 -g -DNDEBUG \ --fomit-frame-pointer -fno-strict-aliasing -finline-limit=300 \ --DANDROID -Wall -Wno-unused -Wa,--noexecstack -Wformat -Werror=format-security \ --isystem$NDK/platforms/$PLATFORMVER/arch-arm/usr/include \ --isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/include \ --isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/libs/$ARCH/include \ --isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/include/backward \ --isystem$LOCAL_PATH/../sdl-1.2/include \ -`echo $APP_MODULES | sed \"s@\([-a-zA-Z0-9_.]\+\)@-isystem$LOCAL_PATH/../\1/include@g\"` \ -$MISSING_INCLUDE $CFLAGS" - if [ -z "$SHARED_LIBRARY_NAME" ]; then SHARED_LIBRARY_NAME=libapplication.so fi @@ -80,11 +66,30 @@ if [ -n "$ALLOW_UNRESOLVED_SYMBOLS" ]; then UNRESOLVED= fi +APP_SHARED_LIBS="`echo $APP_SHARED_LIBS | sed \"s@\([-a-zA-Z0-9_.]\+\)@$LOCAL_PATH/../../obj/local/$ARCH/lib\1.so@g\"`" +APP_MODULES_INCLUDE="`echo $APP_MODULES | sed \"s@\([-a-zA-Z0-9_.]\+\)@-isystem$LOCAL_PATH/../\1/include@g\"`" + +if [ -z "$CLANG" ]; then + +CFLAGS="\ +-fpic -ffunction-sections -funwind-tables -fstack-protector-strong \ +-no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp \ +-mfpu=vfpv3-d16 -mthumb -O2 -g -DNDEBUG \ +-fomit-frame-pointer -fno-strict-aliasing -finline-limit=300 \ +-DANDROID -Wall -Wno-unused -Wa,--noexecstack -Wformat -Werror=format-security \ +-isystem$NDK/platforms/$PLATFORMVER/arch-arm/usr/include \ +-isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/include \ +-isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/libs/$ARCH/include \ +-isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/include/backward \ +-isystem$LOCAL_PATH/../sdl-1.2/include \ +$APP_MODULES_INCLUDE \ +$CFLAGS" + LDFLAGS="\ $SHARED \ --sysroot=$NDK/platforms/$PLATFORMVER/arch-arm \ -L$LOCAL_PATH/../../obj/local/$ARCH \ -`echo $APP_SHARED_LIBS | sed \"s@\([-a-zA-Z0-9_.]\+\)@$LOCAL_PATH/../../obj/local/$ARCH/lib\1.so@g\"` \ +$APP_SHARED_LIBS \ -L$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib \ -lc -lm -lGLESv1_CM -ldl -llog -lz \ -L$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/libs/$ARCH \ @@ -92,30 +97,74 @@ $SHARED \ -no-canonical-prefixes -march=armv7-a -Wl,--fix-cortex-a8 $UNRESOLVED -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now \ -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings \ -lsupc++ \ -$MISSING_LIB $LDFLAGS" +$LDFLAGS" CC="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-gcc" CXX="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" CPP="$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-cpp $CFLAGS" -if [ -n "$CLANG" ]; then +else # CLANG -CFLAGS="\ --gcc-toolchain $NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH \ --fno-integrated-as -target armv7-none-linux-androideabi -Wno-invalid-command-line-argument -Wno-unused-command-line-argument \ +CFLAGS=" +-ffunction-sections +-funwind-tables +-fstack-protector-strong +-Wno-invalid-command-line-argument +-Wno-unused-command-line-argument +-no-canonical-prefixes +-I$NDK/sources/cxx-stl/llvm-libc++/include +-I$NDK/sources/cxx-stl/llvm-libc++abi/include +-I$NDK/sources/android/support/include +-DANDROID +-Wa,--noexecstack +-Wformat +-Werror=format-security +-DNDEBUG +-O2 +-g +-gcc-toolchain +$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/$MYARCH +-target +armv7-none-linux-androideabi15 +-march=armv7-a +-mfloat-abi=softfp +-mfpu=vfpv3-d16 +-mthumb +-fpic +-fno-integrated-as +--sysroot $NDK/platforms/android-14/arch-arm +-isystem $NDK/sysroot/usr/include +-isystem $NDK/sysroot/usr/include/arm-linux-androideabi +-D__ANDROID_API__=15 +$APP_MODULES_INCLUDE $CFLAGS" -LDFLAGS="$LDFLAGS \ --lgcc \ --latomic \ --gcc-toolchain $NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH \ --target armv7-none-linux-androideabi" +CFLAGS="`echo $CFLAGS | tr '\n' ' '`" + +LDFLAGS=" +--sysroot $NDK/platforms/android-14/arch-arm +$SHARED $UNRESOLVED +-L$LOCAL_PATH/../../obj/local/$ARCH +$APP_SHARED_LIBS +$NDK/sources/cxx-stl/llvm-libc++/libs/$ARCH/libc++_static.a +$NDK/sources/cxx-stl/llvm-libc++abi/../llvm-libc++/libs/$ARCH/libc++abi.a +$NDK/sources/android/support/../../cxx-stl/llvm-libc++/libs/$ARCH/libandroid_support.a +$NDK/sources/cxx-stl/llvm-libc++/libs/$ARCH/libunwind.a +-latomic -Wl,--exclude-libs,libatomic.a +-gcc-toolchain +$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/$MYARCH +-no-canonical-prefixes -target armv7-none-linux-androideabi14 +-Wl,--fix-cortex-a8 -Wl,--exclude-libs,libunwind.a -Wl,--build-id -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,--warn-shared-textrel -Wl,--fatal-warnings +-lc -lm -lstdc++ -ldl -llog -lz +$LDFLAGS" + +LDFLAGS="`echo $LDFLAGS | tr '\n' ' '`" CC="$NDK/toolchains/llvm/prebuilt/$MYARCH/bin/clang" CXX="$NDK/toolchains/llvm/prebuilt/$MYARCH/bin/clang++" CPP="$CC -E $CFLAGS" -fi +fi # CLANG env PATH=$NDK/toolchains/$GCCPREFIX-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin:$LOCAL_PATH:$PATH \ CFLAGS="$CFLAGS" \ diff --git a/project/jni/application/setEnvironment-x86.sh b/project/jni/application/setEnvironment-x86.sh index 87bac31dc..b2e1a46e0 100755 --- a/project/jni/application/setEnvironment-x86.sh +++ b/project/jni/application/setEnvironment-x86.sh @@ -31,7 +31,11 @@ fi ARCH=x86 APP_MODULES=`grep 'APP_MODULES [:][=]' $LOCAL_PATH/../Settings.mk | sed 's@.*[=]\(.*\)@\1@'` -APP_AVAILABLE_STATIC_LIBS=`grep 'APP_AVAILABLE_STATIC_LIBS [:][=]' $LOCAL_PATH/../Settings.mk | sed 's@.*[=]\(.*\)@\1@'` +APP_AVAILABLE_STATIC_LIBS="`echo ' +include $LOCAL_PATH/../Settings.mk +all: + @echo $(APP_AVAILABLE_STATIC_LIBS) +.PHONY: all' | make -s -f -`" APP_SHARED_LIBS=$( echo $APP_MODULES | xargs -n 1 echo | while read LIB ; do STATIC=`echo $APP_AVAILABLE_STATIC_LIBS application sdl_main stlport stdout-test | grep "\\\\b$LIB\\\\b"` @@ -47,24 +51,6 @@ echo $APP_MODULES | xargs -n 1 echo | while read LIB ; do done ) - -MISSING_INCLUDE= -MISSING_LIB= - -CFLAGS="\ --fpic -ffunction-sections -funwind-tables -no-canonical-prefixes \ --fstack-protector-strong -O2 -g -DNDEBUG \ --fomit-frame-pointer -fstrict-aliasing -funswitch-loops \ --finline-limit=300 \ --DANDROID -Wall -Wno-unused -Wa,--noexecstack -Wformat -Werror=format-security \ --isystem$NDK/platforms/$PLATFORMVER/arch-x86/usr/include \ --isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/include \ --isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/libs/$ARCH/include \ --isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/include/backward \ --isystem$LOCAL_PATH/../sdl-1.2/include \ -`echo $APP_MODULES | sed \"s@\([-a-zA-Z0-9_.]\+\)@-isystem$LOCAL_PATH/../\1/include@g\"` \ -$MISSING_INCLUDE $CFLAGS" - if [ -z "$SHARED_LIBRARY_NAME" ]; then SHARED_LIBRARY_NAME=libapplication.so fi @@ -80,11 +66,30 @@ if [ -n "$ALLOW_UNRESOLVED_SYMBOLS" ]; then UNRESOLVED= fi +APP_SHARED_LIBS="`echo $APP_SHARED_LIBS | sed \"s@\([-a-zA-Z0-9_.]\+\)@$LOCAL_PATH/../../obj/local/$ARCH/lib\1.so@g\"`" +APP_MODULES_INCLUDE="`echo $APP_MODULES | sed \"s@\([-a-zA-Z0-9_.]\+\)@-isystem$LOCAL_PATH/../\1/include@g\"`" + +if [ -z "$CLANG" ]; then + +CFLAGS="\ +-fpic -ffunction-sections -funwind-tables -no-canonical-prefixes \ +-fstack-protector-strong -O2 -g -DNDEBUG \ +-fomit-frame-pointer -fstrict-aliasing -funswitch-loops \ +-finline-limit=300 \ +-DANDROID -Wall -Wno-unused -Wa,--noexecstack -Wformat -Werror=format-security \ +-isystem$NDK/platforms/$PLATFORMVER/arch-x86/usr/include \ +-isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/include \ +-isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/libs/$ARCH/include \ +-isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/include/backward \ +-isystem$LOCAL_PATH/../sdl-1.2/include \ +$APP_MODULES_INCLUDE \ +$CFLAGS" + LDFLAGS="\ $SHARED \ --sysroot=$NDK/platforms/$PLATFORMVER/arch-x86 \ -L$LOCAL_PATH/../../obj/local/$ARCH \ -`echo $APP_SHARED_LIBS | sed \"s@\([-a-zA-Z0-9_.]\+\)@$LOCAL_PATH/../../obj/local/$ARCH/lib\1.so@g\"` \ +$APP_SHARED_LIBS \ -L$NDK/platforms/$PLATFORMVER/arch-x86/usr/lib \ -lc -lm -lGLESv1_CM -ldl -llog -lz \ -L$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/libs/$ARCH \ @@ -92,29 +97,69 @@ $SHARED \ -no-canonical-prefixes $UNRESOLVED -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now \ -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings \ -lsupc++ \ -$MISSING_LIB $LDFLAGS" +$LDFLAGS" CC="$NDK/toolchains/$ARCH-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-gcc" CXX="$NDK/toolchains/$ARCH-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" CPP="$NDK/toolchains/$ARCH-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-cpp $CFLAGS" -if [ -n "$CLANG" ]; then +else # CLANG -CFLAGS="\ --gcc-toolchain $NDK/toolchains/$ARCH-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH \ --target i686-none-linux-android -Wno-invalid-command-line-argument -Wno-unused-command-line-argument \ +CFLAGS=" +-ffunction-sections +-funwind-tables +-fstack-protector-strong +-Wno-invalid-command-line-argument +-Wno-unused-command-line-argument +-no-canonical-prefixes +-I$NDK/sources/cxx-stl/llvm-libc++/include +-I$NDK/sources/cxx-stl/llvm-libc++abi/include +-I$NDK/sources/android/support/include +-DANDROID +-Wa,--noexecstack +-Wformat +-Werror=format-security +-DNDEBUG +-O2 +-g +-gcc-toolchain +$NDK/toolchains/x86-4.9/prebuilt/$MYARCH +-target +i686-none-linux-android +-fPIC +-mstackrealign +--sysroot $NDK/platforms/android-14/arch-x86 +-isystem $NDK/sysroot/usr/include +-isystem $NDK/sysroot/usr/include/i686-linux-android +-D__ANDROID_API__=15 +$APP_MODULES_INCLUDE $CFLAGS" -LDFLAGS="$LDFLAGS \ --lgcc \ --gcc-toolchain $NDK/toolchains/$ARCH-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH \ --target i686-none-linux-android" +CFLAGS="`echo $CFLAGS | tr '\n' ' '`" + +LDFLAGS=" +--sysroot $NDK/platforms/android-14/arch-x86 +$SHARED $UNRESOLVED +-L$LOCAL_PATH/../../obj/local/$ARCH +$APP_SHARED_LIBS +$NDK/sources/cxx-stl/llvm-libc++/libs/$ARCH/libc++_static.a +$NDK/sources/cxx-stl/llvm-libc++abi/../llvm-libc++/libs/$ARCH/libc++abi.a +$NDK/sources/android/support/../../cxx-stl/llvm-libc++/libs/$ARCH/libandroid_support.a +-latomic -Wl,--exclude-libs,libatomic.a +-gcc-toolchain +$NDK/toolchains/x86-4.9/prebuilt/$MYARCH +-target i686-none-linux-android -no-canonical-prefixes +-Wl,--build-id -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,--warn-shared-textrel -Wl,--fatal-warnings +-lc -lm -lstdc++ -ldl -llog -lz +$LDFLAGS" + +LDFLAGS="`echo $LDFLAGS | tr '\n' ' '`" CC="$NDK/toolchains/llvm/prebuilt/$MYARCH/bin/clang" CXX="$NDK/toolchains/llvm/prebuilt/$MYARCH/bin/clang++" CPP="$CC -E $CFLAGS" -fi +fi # CLANG env PATH=$NDK/toolchains/$ARCH-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin:$LOCAL_PATH:$PATH \ CFLAGS="$CFLAGS" \ diff --git a/project/jni/application/setEnvironment-x86_64.sh b/project/jni/application/setEnvironment-x86_64.sh index 6e8c996b6..6f857754a 100755 --- a/project/jni/application/setEnvironment-x86_64.sh +++ b/project/jni/application/setEnvironment-x86_64.sh @@ -31,7 +31,11 @@ fi ARCH=x86_64 APP_MODULES=`grep 'APP_MODULES [:][=]' $LOCAL_PATH/../Settings.mk | sed 's@.*[=]\(.*\)@\1@'` -APP_AVAILABLE_STATIC_LIBS=`grep 'APP_AVAILABLE_STATIC_LIBS [:][=]' $LOCAL_PATH/../Settings.mk | sed 's@.*[=]\(.*\)@\1@'` +APP_AVAILABLE_STATIC_LIBS="`echo ' +include $LOCAL_PATH/../Settings.mk +all: + @echo $(APP_AVAILABLE_STATIC_LIBS) +.PHONY: all' | make -s -f -`" APP_SHARED_LIBS=$( echo $APP_MODULES | xargs -n 1 echo | while read LIB ; do STATIC=`echo $APP_AVAILABLE_STATIC_LIBS application sdl_main stlport stdout-test | grep "\\\\b$LIB\\\\b"` @@ -47,24 +51,6 @@ echo $APP_MODULES | xargs -n 1 echo | while read LIB ; do done ) - -MISSING_INCLUDE= -MISSING_LIB= - -CFLAGS="\ --fpic -ffunction-sections -funwind-tables -no-canonical-prefixes \ --fstack-protector-strong -O2 -g -DNDEBUG \ --fomit-frame-pointer -fstrict-aliasing -funswitch-loops \ --finline-limit=300 \ --DANDROID -Wall -Wno-unused -Wa,--noexecstack -Wformat -Werror=format-security \ --isystem$NDK/platforms/$PLATFORMVER/arch-x86_64/usr/include \ --isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/include \ --isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/libs/$ARCH/include \ --isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/include/backward \ --isystem$LOCAL_PATH/../sdl-1.2/include \ -`echo $APP_MODULES | sed \"s@\([-a-zA-Z0-9_.]\+\)@-isystem$LOCAL_PATH/../\1/include@g\"` \ -$MISSING_INCLUDE $CFLAGS" - if [ -z "$SHARED_LIBRARY_NAME" ]; then SHARED_LIBRARY_NAME=libapplication.so fi @@ -80,11 +66,30 @@ if [ -n "$ALLOW_UNRESOLVED_SYMBOLS" ]; then UNRESOLVED= fi +APP_SHARED_LIBS="`echo $APP_SHARED_LIBS | sed \"s@\([-a-zA-Z0-9_.]\+\)@$LOCAL_PATH/../../obj/local/$ARCH/lib\1.so@g\"`" +APP_MODULES_INCLUDE="`echo $APP_MODULES | sed \"s@\([-a-zA-Z0-9_.]\+\)@-isystem$LOCAL_PATH/../\1/include@g\"`" + +if [ -z "$CLANG" ]; then + +CFLAGS="\ +-fpic -ffunction-sections -funwind-tables -no-canonical-prefixes \ +-fstack-protector-strong -O2 -g -DNDEBUG \ +-fomit-frame-pointer -fstrict-aliasing -funswitch-loops \ +-finline-limit=300 \ +-DANDROID -Wall -Wno-unused -Wa,--noexecstack -Wformat -Werror=format-security \ +-isystem$NDK/platforms/$PLATFORMVER/arch-x86_64/usr/include \ +-isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/include \ +-isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/libs/$ARCH/include \ +-isystem$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/include/backward \ +-isystem$LOCAL_PATH/../sdl-1.2/include \ +$APP_MODULES_INCLUDE \ +$CFLAGS" + LDFLAGS="\ $SHARED \ --sysroot=$NDK/platforms/$PLATFORMVER/arch-x86_64 \ -L$LOCAL_PATH/../../obj/local/$ARCH \ -`echo $APP_SHARED_LIBS | sed \"s@\([-a-zA-Z0-9_.]\+\)@$LOCAL_PATH/../../obj/local/$ARCH/lib\1.so@g\"` \ +$APP_SHARED_LIBS \ -L$NDK/platforms/$PLATFORMVER/arch-x86_64/usr/lib64 \ -lc -lm -lGLESv1_CM -ldl -llog -lz \ -L$NDK/sources/cxx-stl/gnu-libstdc++/$NDK_TOOLCHAIN_VERSION/libs/$ARCH \ @@ -92,29 +97,68 @@ $SHARED \ -no-canonical-prefixes $UNRESOLVED -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now \ -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings \ -lsupc++ \ -$MISSING_LIB $LDFLAGS" +$LDFLAGS" CC="$NDK/toolchains/$ARCH-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-gcc" CXX="$NDK/toolchains/$ARCH-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" CPP="$NDK/toolchains/$ARCH-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin/$GCCPREFIX-cpp $CFLAGS" -if [ -n "$CLANG" ]; then +else # CLANG -CFLAGS="\ --gcc-toolchain $NDK/toolchains/$ARCH-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH \ --target x86_64-none-linux-android -Wno-invalid-command-line-argument -Wno-unused-command-line-argument \ +CFLAGS=" +-ffunction-sections +-funwind-tables +-fstack-protector-strong +-Wno-invalid-command-line-argument +-Wno-unused-command-line-argument +-no-canonical-prefixes +-I$NDK/sources/cxx-stl/llvm-libc++/include +-I$NDK/sources/cxx-stl/llvm-libc++abi/include +-I$NDK/sources/android/support/include +-DANDROID +-Wa,--noexecstack +-Wformat +-Werror=format-security +-DNDEBUG +-O2 +-g +-gcc-toolchain +$NDK/toolchains/x86_64-4.9/prebuilt/$MYARCH +-target +x86_64-none-linux-android +-fPIC +--sysroot $NDK/platforms/android-21/arch-x86_64 +-isystem $NDK/sysroot/usr/include +-isystem $NDK/sysroot/usr/include/x86_64-linux-android +-D__ANDROID_API__=21 +$APP_MODULES_INCLUDE $CFLAGS" -LDFLAGS="$LDFLAGS \ --lgcc \ --gcc-toolchain $NDK/toolchains/$ARCH-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH \ --target x86_64-none-linux-android" +CFLAGS="`echo $CFLAGS | tr '\n' ' '`" + +LDFLAGS=" +--sysroot $NDK/platforms/android-21/arch-x86_64 +$SHARED $UNRESOLVED +-L$LOCAL_PATH/../../obj/local/$ARCH +$APP_SHARED_LIBS +$NDK/sources/cxx-stl/llvm-libc++/libs/$ARCH/libc++_static.a +$NDK/sources/cxx-stl/llvm-libc++abi/../llvm-libc++/libs/$ARCH/libc++abi.a +$NDK/sources/android/support/../../cxx-stl/llvm-libc++/libs/$ARCH/libandroid_support.a +-latomic -Wl,--exclude-libs,libatomic.a +-gcc-toolchain +$NDK/toolchains/x86_64-4.9/prebuilt/$MYARCH +-target x86_64-none-linux-android -no-canonical-prefixes +-Wl,--build-id -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,--warn-shared-textrel -Wl,--fatal-warnings +-lc -lm -lstdc++ -ldl -llog -lz +$LDFLAGS" + +LDFLAGS="`echo $LDFLAGS | tr '\n' ' '`" CC="$NDK/toolchains/llvm/prebuilt/$MYARCH/bin/clang" CXX="$NDK/toolchains/llvm/prebuilt/$MYARCH/bin/clang++" CPP="$CC -E $CFLAGS" -fi +fi # CLANG env PATH=$NDK/toolchains/$ARCH-$NDK_TOOLCHAIN_VERSION/prebuilt/$MYARCH/bin:$LOCAL_PATH:$PATH \ CFLAGS="$CFLAGS" \