From d51d2aaad01d1c8188193a7913c6ef0fc38ea798 Mon Sep 17 00:00:00 2001 From: Edwin Vane Date: Mon, 30 Jan 2012 15:26:35 -0500 Subject: Changes to make gluegen build with NDK r7 - A bug in cpptasks was getting in the way of a working build with NDK r7. A local patch to cpptasks fixed the bug. - The patch is added as make/lib/cpptasks_gcclinker.patch and applies cleanly to cpptasts @ revision 177. - The result of building cpptasks r177 with this patch is part of the commit as well. - Cleaned up and simplified the android cross-compile script in make/scripts. - Cleaned up arguments passed to gcc for compiling and linking to look more like the command lines used for building NDK samples. - Some differences are necessary as cpptasks won't let us specify any binary other than 'gcc' for building. See gluegen-cpptasks-android-armv7.xml for comments on the matter. - Thinking forward to x86 support, generalized jogamp-androidtasks.xml to install the gluegen shared library in a subdirectory of image/lib named for the targetted ABI for packaging with aapt. This file is no-longer ARM-specific. --- .../make.gluegen.all.android-armv7-cross.sh | 75 ++++------------------ 1 file changed, 12 insertions(+), 63 deletions(-) (limited to 'make/scripts/make.gluegen.all.android-armv7-cross.sh') diff --git a/make/scripts/make.gluegen.all.android-armv7-cross.sh b/make/scripts/make.gluegen.all.android-armv7-cross.sh index 9f54348..31b544d 100755 --- a/make/scripts/make.gluegen.all.android-armv7-cross.sh +++ b/make/scripts/make.gluegen.all.android-armv7-cross.sh @@ -15,12 +15,12 @@ echo ANDROID_SDK_HOME $ANDROID_SDK_HOME echo NDK_ROOT $NDK_ROOT if [ -z "$NDK_ROOT" ] ; then - if [ -e /usr/local/android-ndk-r6 ] ; then - NDK_ROOT=/usr/local/android-ndk-r6 - elif [ -e /opt-linux-x86/android-ndk-r6 ] ; then - NDK_ROOT=/opt-linux-x86/android-ndk-r6 - elif [ -e /opt/android-ndk-r6 ] ; then - NDK_ROOT=/opt/android-ndk-r6 + if [ -e /usr/local/android-ndk-r7 ] ; then + NDK_ROOT=/usr/local/android-ndk-r7 + elif [ -e /opt-linux-x86/android-ndk-r7 ] ; then + NDK_ROOT=/opt-linux-x86/android-ndk-r7 + elif [ -e /opt/android-ndk-r7 ] ; then + NDK_ROOT=/opt/android-ndk-r7 else echo NDK_ROOT is not specified and does not exist in default locations exit 1 @@ -30,7 +30,6 @@ elif [ ! -e $NDK_ROOT ] ; then exit 1 fi export NDK_ROOT -NDK_TOOLCHAIN=$NDK_ROOT/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/arm-linux-androideabi if [ -z "$ANDROID_SDK_HOME" ] ; then if [ -e /usr/local/android-sdk-linux_x86 ] ; then @@ -49,58 +48,16 @@ elif [ ! -e $ANDROID_SDK_HOME ] ; then fi export ANDROID_SDK_HOME -export PATH="$NDK_TOOLCHAIN/bin:$ANDROID_SDK_HOME/platform-tools:$PATH" - export GCC_VERSION=4.4.3 HOST_ARCH=linux-x86 export TARGET_ARCH=arm-linux-androideabi -# mcpu: cortex-a8', `cortex-a9', `cortex-r4', `cortex-r4f', `cortex-m3', `cortex-m1', `xscale', `iwmmxt', `iwmmxt2', `ep9312'. -export TARGET_CPU_NAME=armv7-a -TARGET_CPU_TUNE=armv7-a -# mfpu: `vfp', `vfpv3', `vfpv3-d16' and `neon' -TARGET_FPU_NAME=vfpv3 -TARGET_FPU_ABI=softfp - -export TARGET_TOOL_PATH=${NDK_ROOT}/toolchains/${TARGET_ARCH}-${GCC_VERSION}/prebuilt/${HOST_ARCH} - -export TARGET_OS_PATH=${NDK_ROOT}/platforms/android-${ANDROID_VERSION}/arch-arm/usr -export HOST_OS_PATH=${NDK_ROOT}/platforms/android-${ANDROID_VERSION}/arch-x86/usr - -export NDK_XBIN_PATH=${TARGET_TOOL_PATH}/bin -export NDK_BIN_PATH=${TARGET_TOOL_PATH}/${TARGET_ARCH}/bin - -export NDK_GCC=${NDK_XBIN_PATH}/${TARGET_ARCH}-gcc -export NDK_AR=${NDK_XBIN_PATH}/${TARGET_ARCH}-ar -export NDK_STRIP=${NDK_XBIN_PATH}/${TARGET_ARCH}-strip -export NDK_READELF=${NDK_XBIN_PATH}/${TARGET_ARCH}-readelf - -export PATH=${NDK_XBIN_PATH}:$PATH - +export TARGET_TRIPLE=arm-linux-androideabi -export NDK_CFLAGS="\ --march=${TARGET_CPU_NAME} \ --fpic \ --DANDROID \ -" +export NDK_TOOLCHAIN_ROOT=$NDK_ROOT/toolchains/${TARGET_ARCH}-${GCC_VERSION}/prebuilt/${HOST_ARCH} +export TARGET_PLATFORM_ROOT=${NDK_ROOT}/platforms/android-${ANDROID_VERSION}/arch-arm -export NDK_LDFLAGS="\ --Wl,--demangle \ --nostdlib -Bdynamic -Wl,-dynamic-linker,/system/bin/linker -Wl,--gc-sections -Wl,-z,nocopyreloc \ -${TARGET_OS_PATH}/lib/libc.so \ -${TARGET_OS_PATH}/lib/libstdc++.so \ -${TARGET_OS_PATH}/lib/libm.so \ -${TARGET_OS_PATH}/lib/crtbegin_dynamic.o \ --Wl,--no-undefined -Wl,-rpath-link=${TARGET_OS_PATH}/lib \ -${TARGET_TOOL_PATH}/lib/gcc/${TARGET_ARCH}/${GCC_VERSION}/${TARGET_CPU_NAME}/libgcc.a \ -${TARGET_OS_PATH}/lib/crtend_android.o \ -" - - -# directory for cc1 ${TARGET_TOOL_PATH}/libexec/gcc/${TARGET_ARCH}/${GCC_VERSION} \ - -#arm-eabi-gcc -o hello hello.c -Wl,-rpath-link=/Users/nirnimesh/NIR/android/mydroid/cupcake/out/target/product/generic/obj/lib -#-L/Users/nirnimesh/NIR/android/mydroid/cupcake/out/target/product/generic/obj/lib -#-nostdlib /Users/nirnimesh/NIR/android/mydroid/cupcake/out/target/product/generic/obj/lib/crtbegin_dynamic.o -lc +# Need to add toolchain bins to the PATH. +export PATH="$NDK_TOOLCHAIN_ROOT/$TARGET_TRIPLE/bin:$ANDROID_SDK_HOME/platform-tools:$PATH" which gcc 2>&1 | tee make.gluegen.all.android-armv7-cross.log @@ -116,13 +73,5 @@ ant \ -DisAndroidARMv7=true \ -DjvmDataModel.arg="-Djnlp.no.jvm.data.model.set=true" \ -DisCrosscompilation=true \ - \ + -Dandroid.abi=armeabi-v7a \ $* 2>&1 | tee -a make.gluegen.all.android-armv7-cross.log - -#$NDK_GCC -march=armv7-a -fpic -DANDROID -I/usr/local/android-ndk-r6/platforms/android-9/arch-arm/usr/include -Wl,--demangle -nostdlib -Bdynamic -Wl,-dynamic-linker,/system/bin/linker -Wl,--gc-sections -Wl,-z,nocopyreloc /usr/local/android-ndk-r6/platforms/android-9/arch-arm/usr/lib/libc.so /usr/local/android-ndk-r6/platforms/android-9/arch-arm/usr/lib/libstdc++.so /usr/local/android-ndk-r6/platforms/android-9/arch-arm/usr/lib/libm.so /usr/local/android-ndk-r6/platforms/android-9/arch-arm/usr/lib/crtbegin_dynamic.o -Wl,--no-undefined -Wl,-rpath-link=/usr/local/android-ndk-r6/platforms/android-9/arch-arm/usr/lib /usr/local/android-ndk-r6/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/lib/gcc/arm-linux-androideabi/4.4.3/armv7-a/libgcc.a /usr/local/android-ndk-r6/platforms/android-9/arch-arm/usr/lib/crtend_android.o -c -fno-rtti -fPIC -DANDROID -I/home/rsantina/projects/jogamp/gluegen/build-android-arm/gensrc/native -I/home/rsantina/projects/jogamp/gluegen/build-android-arm/gensrc/native/Unix -I/opt/x86_64/jdk1.6.0_25/include -I/opt/x86_64/jdk1.6.0_25/include/linux -I/home/rsantina/projects/jogamp/gluegen/make/stub_includes/platform /home/rsantina/projects/jogamp/gluegen/src/native/unix/UnixDynamicLinkerImpl_JNI.c /home/rsantina/projects/jogamp/gluegen/src/native/common/PointerBuffer.c /home/rsantina/projects/jogamp/gluegen/src/native/common/MachineDescriptionRuntime.c /home/rsantina/projects/jogamp/gluegen/src/native/common/JVM_Tool.c - -#which gcc -#echo $TARGET_TOOL_PATH - -#$NDK_GCC $NDK_INCLUDE $NDK_CFLAGS $NDK_LDFLAGS -o /home/rsantina/projects/jogamp/gluegen/src/native/unix/UnixDynamicLinkerImpl_JNI.c /home/rsantina/projects/jogamp/gluegen/src/native/common/PointerBuffer.c /home/rsantina/projects/jogamp/gluegen/src/native/common/MachineDescriptionRuntime.c /home/rsantina/projects/jogamp/gluegen/src/native/common/JVM_Tool.c - -- cgit v1.2.3