1+ #! /bin/sh
2+
3+ set -xe
4+
5+ ABIS=" arm64-v8a"
6+ API=33
7+
8+ BUILD_TOOLS=$ANDROID_HOME /Sdk/build-tools/34.0.0
9+ TOOLCHAIN=$CLANG_R475365B_CUSTOM
10+ ANDROID_NDK=$ANDROID_HOME /Sdk/ndk/26.1.10909125
11+ NATIVE_APP_GLUE=$ANDROID_NDK /sources/android/native_app_glue
12+ LLVM_GNAT_BIN=$LLVM_GNAT /llvm-interface/bin
13+
14+ SYSROOTS=$CLANG_R475365B_CUSTOM /../../../sysroots
15+
16+ FLAGS=" -ffunction-sections -funwind-tables -fstack-protector-strong -fPIC -Wall \
17+ -Wformat -Werror=format-security -no-canonical-prefixes \
18+ -DANDROID -DPLATFORM_ANDROID -D__ANDROID_API__=$API "
19+
20+ mkdir -p android/res/drawable-hdpi
21+ mkdir -p android/lib/arm64-v8a
22+ mkdir -p android/build
23+
24+ SRC=" eepers.adb raylib.adb raymath.ads"
25+ OBJ=" raylib raymath eepers"
26+
27+ for ABI in $ABIS ; do
28+ case " $ABI " in
29+ " armeabi-v7a" )
30+ CCTYPE=" armv7a-linux-androideabi"
31+ ARCH=" arm"
32+ ARCH_SYSROOT=" arm"
33+ LIBPATH=" arm-linux-androideabi"
34+ ABI_FLAGS=" -std=c99 -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16"
35+ ;;
36+
37+ " arm64-v8a" )
38+ CCTYPE=" aarch64-linux-android"
39+ ARCH=" aarch64"
40+ ARCH_SYSROOT=" arm64"
41+ LIBPATH=" aarch64-linux-android"
42+ ABI_FLAGS=" -std=c99 -target aarch64"
43+ ;;
44+ esac
45+ CC=" $TOOLCHAIN /bin/clang"
46+ SYSROOT=$SYSROOTS /ndk/$ARCH_SYSROOT
47+ LLD=$CLANG_R475365B_CUSTOM /bin/ld.lld
48+ INCLUDES=" -I$NATIVE_APP_GLUE -I$SYSROOT /usr/include/$CCTYPE -I$SYSROOT /usr/include"
49+
50+ # Compile native app glue
51+ # $CC $INCLUDES --target=$CCTYPE$API -c $NATIVE_APP_GLUE/android_native_app_glue.c -o android/build/native_app_glue.o $FLAGS $ABI_FLAGS
52+ $CC $INCLUDES --target=$CCTYPE$API -c android/main.c -o android/build/main.o $FLAGS $ABI_FLAGS
53+
54+ # Compile project
55+
56+ for file in $SRC ; do
57+ $LLVM_GNAT_BIN /llvm-gcc -g --target=aarch64-linux-android$API -fPIC -gnat2022 $file -c
58+ done
59+
60+ $LLVM_GNAT /llvm-interface/bin/llvm-gnatbind -Leepers eepers.ali
61+ $LLVM_GNAT /llvm-interface/bin/llvm-gnatlink eepers.ali -o android/lib/$ABI /libeepers.so --LINK=" $LLD " android/build/* .o -shared \
62+ --exclude-libs libatomic.a --build-id -z noexecstack -z relro -z now --warn-shared-textrel -u ANativeActivity_onCreate \
63+ --sysroot=$SYSROOT -L$CLANG_R475365B_CUSTOM /lib/clang/16.0.2/lib/linux -L$CLANG_R475365B_CUSTOM /lib/clang/16.0.2/lib/linux/$ARCH \
64+ -L$SYSROOT /usr/lib/$LIBPATH /$API -L$SYSROOT /usr/lib/$LIBPATH -Landroid/build -Lraylib/raylib-5.0_android_$ABI \
65+ -lraylib -llog -landroid -lEGL -lGLESv2 -lOpenSLES -lc -lm -ldl -l:libclang_rt.builtins-$ARCH -android.a -lunwind
66+ done
67+
68+ # ______________________________________________________________________________
69+ #
70+ # Build APK
71+ # ______________________________________________________________________________
72+ #
73+ $BUILD_TOOLS /aapt package -f -m \
74+ -S android/res -J android/build -M android/AndroidManifest.xml \
75+ -I $ANDROID_HOME /Sdk/platforms/android-$API /android.jar
76+
77+ # Add resources and assets to APK
78+ $BUILD_TOOLS /aapt package -f \
79+ -M android/AndroidManifest.xml -S android/res -A assets \
80+ -I $ANDROID_HOME /Sdk/platforms/android-$API /android.jar -F eepers.apk
81+
82+ # Add libraries to APK
83+ cd android
84+ for ABI in $ABIS ; do
85+ $BUILD_TOOLS /aapt add ../eepers.apk lib/$ABI /libeepers.so
86+ done
87+ cd ..
88+
89+ $BUILD_TOOLS /zipalign -f 4 eepers.apk eepers.4.apk
90+ $BUILD_TOOLS /apksigner sign --ks ~ /.android/debug.keystore --ks-pass pass:android eepers.4.apk
91+ mv -f eepers.4.apk eepers.apk
0 commit comments