1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-10-05 19:31:04 +00:00

Make Luanti buildable for iOS (iPhoneSimulator) with ANGLE and basic CI.

This commit is contained in:
SFENCE 2024-11-18 13:21:02 +01:00
parent 5672b93007
commit 803870e0d2
28 changed files with 568 additions and 36 deletions

49
util/ci/build_ios.sh Executable file
View file

@ -0,0 +1,49 @@
#!/bin/bash -e
sudo xcode-select -s /Applications/Xcode_${xcodever}.app/Contents/Developer
sdkroot="$(realpath $(xcrun --sdk iphonesimulator --show-sdk-path)/../iPhoneSimulator${osver}.sdk)"
export CMAKE_PREFIX_PATH=${DEPS_DIR}
export SDKROOT="$sdkroot"
cmake .. -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_DEPLOYMENT_TARGET=$osver -DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_OSX_ARCHITECTURES=arm64 \
-DCMAKE_INSTALL_PREFIX=../build/ios/ -DRUN_IN_PLACE=FALSE -DENABLE_GETTEXT=TRUE -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH=${DEPS_DIR} \
-DENABLE_OPENGL=OFF \
-DENABLE_OPENGL3=OFF \
-DENABLE_GLES2=ON \
-DUSE_SDL2=ON \
-DSDL2_LIBRARIES="${DEPS_DIR}/lib/libSDL2.a;${DEPS_DIR}/lib/libSDL2main.a" \
-DSDL2_INCLUDE_DIRS=${DEPS_DIR}/include/SDL2 \
-DOPENGLES2_LIBRARY=${DEPS_DIR}/lib/libGLESv2_static.a \
-DOPENGLES2_INCLUDE_DIR=${DEPS_DIR}/include/ANGLE \
-DCURL_LIBRARY=${DEPS_DIR}/lib/libcurl.a \
-DCURL_INCLUDE_DIR=${DEPS_DIR}/include \
-DFREETYPE_LIBRARY=${DEPS_DIR}/lib/libfreetype.a \
-DFREETYPE_INCLUDE_DIRS=${DEPS_DIR}/include/freetype2 \
-DGETTEXT_INCLUDE_DIR=${DEPS_DIR}/include \
-DGETTEXT_LIBRARY=${DEPS_DIR}/lib/libintl.a \
-DLUA_LIBRARY=${DEPS_DIR}/lib/libluajit-5.1.a \
-DLUA_INCLUDE_DIR=${DEPS_DIR}/include/luajit-2.1 \
-DOGG_LIBRARY=${DEPS_DIR}/lib/libogg.a \
-DOGG_INCLUDE_DIR=${DEPS_DIR}/include \
-DVORBIS_LIBRARY=${DEPS_DIR}/lib/libvorbis.a \
-DVORBISFILE_LIBRARY=${DEPS_DIR}/lib/libvorbisfile.a \
-DVORBIS_INCLUDE_DIR=${DEPS_DIR}/include \
-DZSTD_LIBRARY=${DEPS_DIR}/lib/libzstd.a \
-DZSTD_INCLUDE_DIR=${DEPS_DIR}/include \
-DGMP_LIBRARY=${DEPS_DIR}/lib/libgmp.a \
-DGMP_INCLUDE_DIR=${DEPS_DIR}/include \
-DJSON_LIBRARY=${DEPS_DIR}/lib/libjsoncpp.a \
-DJSON_INCLUDE_DIR=${DEPS_DIR}/include \
-DENABLE_LEVELDB=OFF \
-DENABLE_POSTGRESQL=OFF \
-DENABLE_REDIS=OFF \
-DJPEG_LIBRARY=${DEPS_DIR}/lib/libjpeg.a \
-DJPEG_INCLUDE_DIR=${DEPS_DIR}/include \
-DPNG_LIBRARY=${DEPS_DIR}/lib/libpng.a \
-DPNG_PNG_INCLUDE_DIR=${DEPS_DIR}/include \
-DCMAKE_EXE_LINKER_FLAGS="-lbz2 ${DEPS_DIR}/lib/libANGLE_static.a ${DEPS_DIR}/lib/libEGL_static.a" \
-DXCODE_CODE_SIGN_ENTITLEMENTS=${REPDIR}/misc/ios/entitlements/release.entitlements \
-GXcode
xcodebuild -project luanti.xcodeproj -scheme luanti -configuration Release build

View file

@ -49,3 +49,22 @@ install_macos_deps() {
brew unlink $(brew ls --formula)
brew link "${pkgs[@]}"
}
# iOS build only
install_ios_deps() {
osver=$1
local pkgs=(
cmake gettext wget
)
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
export HOMEBREW_NO_INSTALL_CLEANUP=1
# contrary to how it may look --auto-update makes brew do *less*
brew update --auto-update
brew install --display-times "${pkgs[@]}"
brew unlink $(brew ls --formula)
brew link "${pkgs[@]}"
wget ios${osver}_deps.tar.gz https://github.com/luanti-org/luanti_ios_deps/releases/download/latest/ios${osver}_deps.tar.gz || echo "Ignore stupid error number 4: $?"
tar -xf ios${osver}_deps.tar.gz
}

36
util/ci/run_ios.sh Executable file
View file

@ -0,0 +1,36 @@
#!/bin/sh
DEVICE_NAME=$1
TIMEOUT=$2
xcrun simctl boot "$DEVICE_NAME"
xcrun simctl install booted build/build/Release-iphonesimulator/luanti.app
# Run the iOS app in the background
xcrun simctl launch --console booted org.luanti.luanti --run-unittests 2> log.txt &
APP_PID=$!
# Initialize variables
CHECK_INTERVAL=15
ELAPSED_TIME=0
FOUND_RESULT=false
# Monitor the log file
while [ $ELAPSED_TIME -lt $TIMEOUT ]; do
if grep -q "Unit Test Results:" log.txt; then
FOUND_RESULT=true
break
fi
sleep $CHECK_INTERVAL
ELAPSED_TIME=$((ELAPSED_TIME + CHECK_INTERVAL))
done
# Terminate the app
if $FOUND_RESULT; then
echo "Unit test results found. Terminating the app."
else
echo "Timeout reached. Terminating the app."
fi
xcrun simctl terminate booted org.luanti.luanti
xcrun simctl shutdown booted