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