Skip to content

Commit

Permalink
Add iOS to CI
Browse files Browse the repository at this point in the history
  • Loading branch information
gudzpoz committed May 27, 2024
1 parent 6a3e1af commit 5425089
Show file tree
Hide file tree
Showing 9 changed files with 97 additions and 18 deletions.
32 changes: 27 additions & 5 deletions .github/workflows/build-natives.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,34 @@ jobs:
uses: gradle/actions/setup-gradle@v3
- name: Build natives
run: |
./gradlew jniGen jnigenBuild
./gradlew jniGen jnigenBuildMacOsX64 jnigenBuildMacOsXARM64
- name: Test
run: |
./gradlew :example:test :jsr223:test :jpms-example:run
- name: Upload macOS/iOS natives
- name: Upload macOS natives
uses: actions/upload-artifact@v4
with:
name: apple-natives
path: ./*/libs
retention-days: 5
ios-natives:
runs-on: macos-13
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- run: echo "JAVA_17=$JAVA_HOME" >> $GITHUB_ENV
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v3
- name: Build natives
run: |
./gradlew jniGen jnigenBuildIOS
- name: Upload iOS natives
uses: actions/upload-artifact@v4
with:
name: apple-natives
Expand Down Expand Up @@ -99,7 +122,8 @@ jobs:
- name: Build natives
run: |
export NDK_HOME=$ANDROID_NDK_LATEST_HOME
./gradlew jniGen jnigenBuild
./gradlew jniGen jnigenBuildLinux jnigenBuildLinux64 jnigenBuildLinuxARM jnigenBuildLinuxARM64
./gradlew jniGen jnigenBuildAndroid jnigenBuildWindows jnigenBuildWindows64
- name: Test (Desktop)
run: |
export NDK_HOME=$ANDROID_NDK_LATEST_HOME
Expand Down Expand Up @@ -209,8 +233,6 @@ jobs:
include:
- api-level: 24
android-arch: 'x86'
- api-level: 27
android-arch: 'x86_64'
- api-level: 33
android-arch: 'x86_64'
needs:
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ luajit/.tags
**/jni/*.cpp
**/jni/*.h
**/jni/*.c
**/jni/*.plist
**/libs/*.xml
**/libs/*.jar
**/libs/**/*.dylib
Expand Down
7 changes: 6 additions & 1 deletion lua51/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,13 @@ jnigen {
]
}

add(IOS) {
robovm {
forceLinkClasses "java.lang.Class", "java.lang.Throwable", "party.iroiro.luajava.JuaAPI"
}
add(IOS, x64) {
libraries = ''
xcframeworkBundleIdentifier = "party.iroiro.luajava.lua51"
minIOSVersion = "11.0"
}
}

Expand Down
7 changes: 6 additions & 1 deletion lua52/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,13 @@ jnigen {
]
}

add(IOS) {
robovm {
forceLinkClasses "java.lang.Class", "java.lang.Throwable", "party.iroiro.luajava.JuaAPI"
}
add(IOS, x64) {
libraries = ''
xcframeworkBundleIdentifier = "party.iroiro.luajava.lua52"
minIOSVersion = "11.0"
}
}

Expand Down
7 changes: 6 additions & 1 deletion lua53/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,13 @@ jnigen {
]
}

add(IOS) {
robovm {
forceLinkClasses "java.lang.Class", "java.lang.Throwable", "party.iroiro.luajava.JuaAPI"
}
add(IOS, x64) {
libraries = ''
xcframeworkBundleIdentifier = "party.iroiro.luajava.lua53"
minIOSVersion = "11.0"
}
}

Expand Down
7 changes: 6 additions & 1 deletion lua54/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,13 @@ jnigen {
]
}

add(IOS) {
robovm {
forceLinkClasses "java.lang.Class", "java.lang.Throwable", "party.iroiro.luajava.JuaAPI"
}
add(IOS, x64) {
libraries = ''
xcframeworkBundleIdentifier = "party.iroiro.luajava.lua54"
minIOSVersion = "11.0"
}
}

Expand Down
17 changes: 12 additions & 5 deletions luajit/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -177,10 +177,16 @@ jnigen {
add(MacOsX, x64, ARM, {
linkerConfig(it, 'macosxaarch')
})
// // Until jnigen allows 64-bit-only iOS builds
// add(IOS, x64) {
// linkerConfig(it, 'iosa')
// }

robovm {
forceLinkClasses "java.lang.Class", "java.lang.Throwable", "party.iroiro.luajava.JuaAPI"
}
add(IOS, x64) {
linkerConfig(it, 'iosa')
xcframeworkBundleIdentifier = "party.iroiro.luajava.luajit"
minIOSVersion = "11.0"
}

add(Android) {
cFlags += ' -D_FORTIFY_SOURCE=1 '
cppFlags += ' -D_FORTIFY_SOURCE=1 '
Expand Down Expand Up @@ -217,7 +223,8 @@ tasks.jnigenBuildWindows.dependsOn(tasks.buildLuaWin32)
tasks.jnigenBuildWindows64.dependsOn(tasks.buildLuaWin64)
tasks.jnigenBuildMacOsX64.dependsOn(tasks.buildLuaMacOsXMerge)
tasks.jnigenBuildAndroid.dependsOn(tasks.buildLuaAndroid)
// tasks.jnigenBuildIOS.dependsOn(tasks.buildLuaIOS)
tasks.jnigenBuildIOS64.dependsOn(tasks.buildLuaIOS)
tasks.buildLuaIOS.dependsOn(tasks.jnigen)

void addPatchElfTask(String platform) {
String target = "patchElf${platform}"
Expand Down
30 changes: 27 additions & 3 deletions luajit/jni/scripts/build-ios.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
LUAJIT=.
DEVDIR=`xcode-select -print-path`
IOSSDKVER=8.0
SIMVER=8.1
IOSDIR=$DEVDIR/Platforms
IOSBIN=$DEVDIR/Toolchains/XcodeDefault.xctoolchain/usr/bin/

Expand All @@ -19,12 +20,35 @@ echo "########## Building for arm64 (iOS) ##########"
ISDKF="-arch arm64 -isysroot $IOSDIR/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk -miphoneos-version-min=$IOSSDKVER"
make -j -C $LUAJIT HOST_CC="xcrun clang -m64 -arch x86_64" CC="clang" CFLAGS=-fPIC CROSS=$IOSBIN TARGET_FLAGS="$ISDKF" TARGET_CFLAGS="-DLJ_NO_SYSTEM=1" TARGET_SYS=iOS clean
make -j -C $LUAJIT HOST_CC="xcrun clang -m64 -arch x86_64" CC="clang" CFLAGS=-fPIC CROSS=$IOSBIN TARGET_FLAGS="$ISDKF" TARGET_CFLAGS="-DLJ_NO_SYSTEM=1" TARGET_SYS=iOS amalg
mv $LUAJIT/src/libluajit.a $BUILD_DIR/libluajitA64.a
mkdir -p $BUILD_DIR/arm64
mv $LUAJIT/src/libluajit.a $BUILD_DIR/arm64/libluajit.a

echo "########## Building for arm64 (iOS simulator) ##########"
ISDKF="-arch arm64 -isysroot $IOSDIR/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk -mios-simulator-version-min=$SIMVER"
make -j -C $LUAJIT HOST_CC="xcrun clang -m64 -arch x86_64" CC="clang" CFLAGS=-fPIC CROSS=$IOSBIN TARGET_FLAGS="$ISDKF" TARGET_CFLAGS="-DLJ_NO_SYSTEM=1" TARGET_SYS=iOS clean
make -j -C $LUAJIT HOST_CC="xcrun clang -m64 -arch x86_64" CC="clang" CFLAGS=-fPIC CROSS=$IOSBIN TARGET_FLAGS="$ISDKF" TARGET_CFLAGS="-DLJ_NO_SYSTEM=1" TARGET_SYS=iOS amalg
mkdir -p $BUILD_DIR/arm64-sim
mv $LUAJIT/src/libluajit.a $BUILD_DIR/arm64-sim/libluajit.a

echo "########## Building for x86_64 (iOS simulator) ##########"
ISDKF="-arch x86_64 -isysroot $IOSDIR/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk -miphoneos-version-min=$IOSSDKVER"
make -j -C $LUAJIT HOST_CC="clang -m64" CC="clang" CFLAGS=-fPIC CROSS=$IOSBIN TARGET_FLAGS="$ISDKF" TARGET_CFLAGS="-DLJ_NO_SYSTEM=1" TARGET_SYS=iOS clean
make -j -C $LUAJIT HOST_CC="clang -m64" CC="clang" CFLAGS=-fPIC CROSS=$IOSBIN TARGET_FLAGS="$ISDKF" TARGET_CFLAGS="-DLJ_NO_SYSTEM=1" TARGET_SYS=iOS amalg
mv $LUAJIT/src/libluajit.a $BUILD_DIR/libluajitx86_64.a
mkdir -p $BUILD_DIR/x86_64
mv $LUAJIT/src/libluajit.a $BUILD_DIR/x86_64/libluajit.a

# Tweaks
LIB_DIR="$(realpath $BUILD_DIR)"
# BSD Sed...
sed -i '' \
"s#x86_64 .\{1,\} \${linker-opts}#x86_64 -mios-simulator-version-min=\${minIOSVersion} -L\"$LIB_DIR/x86_64\" \${linker-opts}#" \
../build-ios32.xml
sed -i '' \
"s#arm64 .\{1,\}simulator.\{1,\} \${linker-opts}#arm64 -mios-simulator-version-min=\${minIOSVersion} -L\"$LIB_DIR/arm64-sim\" \${linker-opts}#" \
../build-ios32.xml
sed -i '' \
"s#arm64 .\{1,\}miphoneos.\{1,\} \${linker-opts}#arm64 -miphoneos-version-min=\${minIOSVersion} -L\"$LIB_DIR/arm64\" \${linker-opts}#" \
../build-ios32.xml

libtool -o $OUTPUT_DIR/libluajit.a $BUILD_DIR/libluajit*.a
cat ../build-ios32.xml
ls $BUILD_DIR/*/
7 changes: 6 additions & 1 deletion scripts/jnigen-gradle.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,13 @@
]
}}
add(IOS) {{
robovm {{
forceLinkClasses "java.lang.Class", "java.lang.Throwable", "party.iroiro.luajava.JuaAPI"
}}
add(IOS, x64) {{
libraries = ''
xcframeworkBundleIdentifier = "party.iroiro.luajava.{lua_version}"
minIOSVersion = "11.0"
}}
}}
Expand Down

0 comments on commit 5425089

Please sign in to comment.