Path: blob/wip/rebase_3.3.3/ci_build_android.bash
2570 views
#!/bin/bash1set -e2export LIBFFI_VERSION=3.4.63export ANDROID=1 LWJGL_BUILD_OFFLINE=14#export LWJGL_BUILD_ARCH=arm6456# Setup env7if [ "$LWJGL_BUILD_ARCH" == "arm64" ]; then8export NDK_ABI=arm64-v8a NDK_TARGET=aarch649elif [ "$LWJGL_BUILD_ARCH" == "arm32" ]; then10export NDK_ABI=armeabi-v7a NDK_TARGET=armv7a NDK_SUFFIX=eabi11elif [ "$LWJGL_BUILD_ARCH" == "x86" ]; then12export NDK_ABI=x86 NDK_TARGET=i68613# Workaround: LWJGL 3 lacks of x86 Linux libraries14mkdir -p bin/libs/native/linux/x86/org/lwjgl/{freetype,glfw}15touch bin/libs/native/linux/x86/org/lwjgl/{freetype/libfreetype.so,glfw/libglfw.so}16elif [ "$LWJGL_BUILD_ARCH" == "x64" ]; then17export NDK_ABI=x86_64 NDK_TARGET=x86_6418fi1920export TARGET=$NDK_TARGET-linux-android$NDK_SUFFIX21export PATH=$PATH:$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin2223LWJGL_NATIVE=bin/libs/native/linux/$LWJGL_BUILD_ARCH/org/lwjgl24mkdir -p $LWJGL_NATIVE2526if [ "$SKIP_LIBFFI" != "1" ]; then27# Get libffi28if [ ! -d libffi ]; then29wget https://github.com/libffi/libffi/releases/download/v$LIBFFI_VERSION/libffi-$LIBFFI_VERSION.tar.gz30tar xvf libffi-$LIBFFI_VERSION.tar.gz31mv libffi-$LIBFFI_VERSION libffi32fi33cd libffi3435# Build libffi36bash configure --host=$TARGET --prefix=$PWD/$NDK_TARGET-unknown-linux-android$NDK_SUFFIX CC=${TARGET}21-clang CXX=${TARGET}21-clang++37make -j438cd ..3940# Copy libffi41cp libffi/$NDK_TARGET-linux-android$NDK_SUFFIX/.libs/libffi.a $LWJGL_NATIVE/42fi4344if [ "$SKIP_FREETYPE" != "1" ]; then45#!/bin/bash46export BUILD_FREETYPE_VERSION=2.13.247wget https://downloads.sourceforge.net/project/freetype/freetype2/$BUILD_FREETYPE_VERSION/freetype-$BUILD_FREETYPE_VERSION.tar.gz48tar xf freetype-$BUILD_FREETYPE_VERSION.tar.gz49rm freetype-$BUILD_FREETYPE_VERSION.tar.gz50cd freetype-$BUILD_FREETYPE_VERSION5152export CC=$NDK_TARGET-linux-android${NDK_SUFFIX}21-clang5354./configure \55--host=$TARGET \56--prefix=`pwd`/build_android-$LWJGL_BUILD_ARCH \57--without-zlib \58--with-brotli=no \59--with-bzip2=no \60--with-png=no \61--with-harfbuzz=no \62--enable-static=no \63--enable-shared=yes6465make -j466make install67llvm-strip ./build_android-$LWJGL_BUILD_ARCH/lib/libfreetype.so6869cd ..70cp freetype-$BUILD_FREETYPE_VERSION/build_android-$LWJGL_BUILD_ARCH/lib/libfreetype.so $LWJGL_NATIVE/71rm -rf freetype-$BUILD_FREETYPE_VERSION72unset BUILD_FREETYPE_VERSION73unset CC74fi7576# Download libraries77POJAV_NATIVES="https://github.com/PojavLauncherTeam/PojavLauncher/raw/v3_openjdk/app_pojavlauncher/src/main/jniLibs/$NDK_ABI"78wget -nc $POJAV_NATIVES/libopenal.so -P $LWJGL_NATIVE/openal79wget -nc "https://github.com/PojavLauncherTeam/shaderc/releases/download/v2024.2-pojav/libshaderc-$NDK_ABI.zip"80unzip -o libshaderc-$NDK_ABI.zip -d $LWJGL_NATIVE/shaderc8182# HACK: Skip compiling and running the generator to save time and keep LWJGLX functions83mkdir -p bin/classes/{generator,templates/META-INF}84touch bin/classes/{generator,templates}/touch.txt bin/classes/generator/generated-touch.txt8586# Build LWJGL 387ant -version88yes | ant -Dplatform.linux=true \89-Dbinding.assimp=false \90-Dbinding.bgfx=false \91-Dbinding.cuda=false \92-Dbinding.egl=false \93-Dbinding.fmod=false \94-Dbinding.harfbuzz=false \95-Dbinding.hwloc=false \96-Dbinding.jawt=false \97-Dbinding.jemalloc=false \98-Dbinding.ktx=false \99-Dbinding.libdivide=false \100-Dbinding.llvm=false \101-Dbinding.lmdb=false \102-Dbinding.lz4=false \103-Dbinding.meow=false \104-Dbinding.meshoptimizer=false \105-Dbinding.nfd=false \106-Dbinding.nuklear=false \107-Dbinding.odbc=false \108-Dbinding.opencl=false \109-Dbinding.openvr=false \110-Dbinding.openxr=false \111-Dbinding.opus=false \112-Dbinding.par=false \113-Dbinding.remotery=false \114-Dbinding.rpmalloc=false \115-Dbinding.spvc=false \116-Dbinding.sse=false \117-Dbinding.tinyexr=false \118-Dbinding.tootle=false \119-Dbinding.xxhash=false \120-Dbinding.yoga=false \121-Dbinding.zstd=false \122-Dbuild.type=release/3.3.3 \123-Djavadoc.skip=true \124-Dnashorn.args="--no-deprecation-warning" \125compile compile-native release126127# Copy native libraries128rm -rf bin/out; mkdir bin/out129find $LWJGL_NATIVE -name 'liblwjgl*.so' -exec cp {} bin/out/ \;130cp $LWJGL_NATIVE/shaderc/libshaderc.so bin/out/131if [ -e "$LWJGL_NATIVE/libfreetype.so" ]; then132cp $LWJGL_NATIVE/libfreetype.so bin/out/133fi134135# Cleanup unused output jar files136find bin/RELEASE \( -name '*-natives-*' -o -name '*-sources.jar' \) -delete137138139