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:
parent
5672b93007
commit
803870e0d2
28 changed files with 568 additions and 36 deletions
49
util/ci/build_ios.sh
Executable file
49
util/ci/build_ios.sh
Executable 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
|
||||
|
|
@ -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
36
util/ci/run_ios.sh
Executable 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
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue