Skip to content

Commit 7cc22b8

Browse files
authored
Merge pull request #115 from stuartcarnie/appleembedded
Apple: add visionOS build support; unify build container
2 parents f8e8e20 + e7412b5 commit 7cc22b8

File tree

4 files changed

+106
-32
lines changed

4 files changed

+106
-32
lines changed

build-ios/build.sh

Lines changed: 16 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@ export OPTIONS_MONO="module_mono_enabled=yes"
1212
export TERM=xterm
1313

1414
export IOS_SDK="18.5"
15-
export IOS_LIPO="/root/ioscross/arm64/bin/arm-apple-darwin11-lipo"
15+
export IOS_DEVICE="IOS_SDK_PATH=/root/SDKs/iPhoneOS${IOS_SDK}.sdk"
16+
export IOS_SIMULATOR="IOS_SDK_PATH=/root/SDKs/iPhoneSimulator${IOS_SDK}.sdk simulator=yes"
17+
export APPLE_TARGET_ARM64="APPLE_TOOLCHAIN_PATH=/root/ioscross/arm64 apple_target_triple=arm-apple-darwin11-"
18+
export APPLE_TARGET_X86_64="APPLE_TOOLCHAIN_PATH=/root/ioscross/x86_64 apple_target_triple=x86_64-apple-darwin11-"
1619

1720
rm -rf godot
1821
mkdir godot
@@ -25,30 +28,22 @@ if [ "${CLASSICAL}" == "1" ]; then
2528
echo "Starting classical build for iOS..."
2629

2730
# arm64 device
28-
$SCONS platform=ios $OPTIONS arch=arm64 ios_simulator=no target=template_debug \
29-
IOS_SDK_PATH="/root/ioscross/arm64/SDK/iPhoneOS${IOS_SDK}.sdk" APPLE_TOOLCHAIN_PATH="/root/ioscross/arm64/" ios_triple="arm-apple-darwin11-"
30-
$SCONS platform=ios $OPTIONS arch=arm64 ios_simulator=no target=template_release \
31-
IOS_SDK_PATH="/root/ioscross/arm64/SDK/iPhoneOS${IOS_SDK}.sdk" APPLE_TOOLCHAIN_PATH="/root/ioscross/arm64/" ios_triple="arm-apple-darwin11-"
31+
$SCONS platform=ios $OPTIONS arch=arm64 target=template_debug $IOS_DEVICE $APPLE_TARGET_ARM64
32+
$SCONS platform=ios $OPTIONS arch=arm64 target=template_release $IOS_DEVICE $APPLE_TARGET_ARM64
3233

3334
# arm64 simulator
3435
# Disabled for now as it doesn't work with cctools-port and current LLVM.
3536
# See https://github.com/godotengine/build-containers/pull/85.
36-
#$SCONS platform=ios $OPTIONS arch=arm64 ios_simulator=yes target=template_debug \
37-
# IOS_SDK_PATH="/root/ioscross/arm64_sim/SDK/iPhoneSimulator${IOS_SDK}.sdk" APPLE_TOOLCHAIN_PATH="/root/ioscross/arm64_sim/" ios_triple="arm-apple-darwin11-"
38-
#$SCONS platform=ios $OPTIONS arch=arm64 ios_simulator=yes target=template_release \
39-
# IOS_SDK_PATH="/root/ioscross/arm64_sim/SDK/iPhoneSimulator${IOS_SDK}.sdk" APPLE_TOOLCHAIN_PATH="/root/ioscross/arm64_sim/" ios_triple="arm-apple-darwin11-"
37+
#$SCONS platform=ios $OPTIONS arch=arm64 target=template_debug $IOS_SIMULATOR $APPLE_TARGET_ARM64
38+
#$SCONS platform=ios $OPTIONS arch=arm64 target=template_release $IOS_SIMULATOR $APPLE_TARGET_ARM64
4039

4140
# x86_64 simulator
42-
$SCONS platform=ios $OPTIONS arch=x86_64 ios_simulator=yes target=template_debug \
43-
IOS_SDK_PATH="/root/ioscross/x86_64_sim/SDK/iPhoneSimulator${IOS_SDK}.sdk" APPLE_TOOLCHAIN_PATH="/root/ioscross/x86_64_sim/" ios_triple="x86_64-apple-darwin11-"
44-
$SCONS platform=ios $OPTIONS arch=x86_64 ios_simulator=yes target=template_release \
45-
IOS_SDK_PATH="/root/ioscross/x86_64_sim/SDK/iPhoneSimulator${IOS_SDK}.sdk" APPLE_TOOLCHAIN_PATH="/root/ioscross/x86_64_sim/" ios_triple="x86_64-apple-darwin11-"
41+
$SCONS platform=ios $OPTIONS arch=x86_64 target=template_debug $IOS_SIMULATOR $APPLE_TARGET_X86_64
42+
$SCONS platform=ios $OPTIONS arch=x86_64 target=template_release $IOS_SIMULATOR $APPLE_TARGET_X86_64
4643

4744
mkdir -p /root/out/templates
4845
cp bin/libgodot.ios.template_release.arm64.a /root/out/templates/libgodot.ios.a
4946
cp bin/libgodot.ios.template_debug.arm64.a /root/out/templates/libgodot.ios.debug.a
50-
#$IOS_LIPO -create bin/libgodot.ios.template_release.arm64.simulator.a bin/libgodot.ios.template_release.x86_64.simulator.a -output /root/out/templates/libgodot.ios.simulator.a
51-
#$IOS_LIPO -create bin/libgodot.ios.template_debug.arm64.simulator.a bin/libgodot.ios.template_debug.x86_64.simulator.a -output /root/out/templates/libgodot.ios.debug.simulator.a
5247
cp bin/libgodot.ios.template_release.x86_64.simulator.a /root/out/templates/libgodot.ios.simulator.a
5348
cp bin/libgodot.ios.template_debug.x86_64.simulator.a /root/out/templates/libgodot.ios.debug.simulator.a
5449
fi
@@ -61,31 +56,22 @@ if [ "${MONO}" == "1" ]; then
6156
cp -r /root/mono-glue/GodotSharp/GodotSharp/Generated modules/mono/glue/GodotSharp/GodotSharp/
6257

6358
# arm64 device
64-
$SCONS platform=ios $OPTIONS $OPTIONS_MONO arch=arm64 ios_simulator=no target=template_debug \
65-
IOS_SDK_PATH="/root/ioscross/arm64/SDK/iPhoneOS${IOS_SDK}.sdk" APPLE_TOOLCHAIN_PATH="/root/ioscross/arm64/" ios_triple="arm-apple-darwin11-"
66-
$SCONS platform=ios $OPTIONS $OPTIONS_MONO arch=arm64 ios_simulator=no target=template_release \
67-
IOS_SDK_PATH="/root/ioscross/arm64/SDK/iPhoneOS${IOS_SDK}.sdk" APPLE_TOOLCHAIN_PATH="/root/ioscross/arm64/" ios_triple="arm-apple-darwin11-"
59+
$SCONS platform=ios $OPTIONS $OPTIONS_MONO arch=arm64 target=template_debug $IOS_DEVICE $APPLE_TARGET_ARM64
60+
$SCONS platform=ios $OPTIONS $OPTIONS_MONO arch=arm64 target=template_release $IOS_DEVICE $APPLE_TARGET_ARM64
6861

6962
# arm64 simulator
7063
# Disabled for now as it doesn't work with cctools-port and current LLVM.
7164
# See https://github.com/godotengine/build-containers/pull/85.
72-
#$SCONS platform=ios $OPTIONS $OPTIONS_MONO arch=arm64 ios_simulator=yes target=template_debug \
73-
# IOS_SDK_PATH="/root/ioscross/arm64_sim/SDK/iPhoneSimulator${IOS_SDK}.sdk" APPLE_TOOLCHAIN_PATH="/root/ioscross/arm64_sim/" ios_triple="arm-apple-darwin11-"
74-
#$SCONS platform=ios $OPTIONS $OPTIONS_MONO arch=arm64 ios_simulator=yes target=template_release \
75-
# IOS_SDK_PATH="/root/ioscross/arm64_sim/SDK/iPhoneSimulator${IOS_SDK}.sdk" APPLE_TOOLCHAIN_PATH="/root/ioscross/arm64_sim/" ios_triple="arm-apple-darwin11-"
65+
#$SCONS platform=ios $OPTIONS $OPTIONS_MONO arch=arm64 target=template_debug $IOS_SIMULATOR $APPLE_TARGET_ARM64
66+
#$SCONS platform=ios $OPTIONS $OPTIONS_MONO arch=arm64 target=template_release $IOS_SIMULATOR $APPLE_TARGET_ARM64
7667

7768
# x86_64 simulator
78-
$SCONS platform=ios $OPTIONS $OPTIONS_MONO arch=x86_64 ios_simulator=yes target=template_debug \
79-
IOS_SDK_PATH="/root/ioscross/x86_64_sim/SDK/iPhoneSimulator${IOS_SDK}.sdk" APPLE_TOOLCHAIN_PATH="/root/ioscross/x86_64_sim/" ios_triple="x86_64-apple-darwin11-"
80-
$SCONS platform=ios $OPTIONS $OPTIONS_MONO arch=x86_64 ios_simulator=yes target=template_release \
81-
IOS_SDK_PATH="/root/ioscross/x86_64_sim/SDK/iPhoneSimulator${IOS_SDK}.sdk" APPLE_TOOLCHAIN_PATH="/root/ioscross/x86_64_sim/" ios_triple="x86_64-apple-darwin11-"
69+
$SCONS platform=ios $OPTIONS $OPTIONS_MONO arch=x86_64 target=template_debug $IOS_SIMULATOR $APPLE_TARGET_X86_64
70+
$SCONS platform=ios $OPTIONS $OPTIONS_MONO arch=x86_64 target=template_release $IOS_SIMULATOR $APPLE_TARGET_X86_64
8271

8372
mkdir -p /root/out/templates-mono
84-
8573
cp bin/libgodot.ios.template_release.arm64.a /root/out/templates-mono/libgodot.ios.a
8674
cp bin/libgodot.ios.template_debug.arm64.a /root/out/templates-mono/libgodot.ios.debug.a
87-
#$IOS_LIPO -create bin/libgodot.ios.template_release.arm64.simulator.a bin/libgodot.ios.template_release.x86_64.simulator.a -output /root/out/templates-mono/libgodot.ios.simulator.a
88-
#$IOS_LIPO -create bin/libgodot.ios.template_debug.arm64.simulator.a bin/libgodot.ios.template_debug.x86_64.simulator.a -output /root/out/templates-mono/libgodot.ios.debug.simulator.a
8975
cp bin/libgodot.ios.template_release.x86_64.simulator.a /root/out/templates-mono/libgodot.ios.simulator.a
9076
cp bin/libgodot.ios.template_debug.x86_64.simulator.a /root/out/templates-mono/libgodot.ios.debug.simulator.a
9177
fi

build-release.sh

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -377,6 +377,17 @@ if [ "${build_classical}" == "1" ]; then
377377
cd ..
378378
rm -rf ios_xcode
379379

380+
## visionOS (Classical) ##
381+
382+
rm -rf visionos_xcode
383+
cp -r git/misc/dist/visionos_xcode visionos_xcode
384+
cp out/visionos/templates/libgodot.visionos.a visionos_xcode/libgodot.visionos.release.xcframework/xros-arm64/libgodot.a
385+
cp out/visionos/templates/libgodot.visionos.debug.a visionos_xcode/libgodot.visionos.debug.xcframework/xros-arm64/libgodot.a
386+
cd visionos_xcode
387+
zip -q -9 -r "${templatesdir}/visionos.zip" *
388+
cd ..
389+
rm -rf visionos_xcode
390+
380391
## Templates TPZ (Classical) ##
381392

382393
echo "${templates_version}" > ${templatesdir}/version.txt
@@ -545,6 +556,17 @@ if [ "${build_mono}" == "1" ]; then
545556
cd ..
546557
rm -rf ios_xcode
547558

559+
## visionOS (Mono) ##
560+
561+
rm -rf visionos_xcode
562+
cp -r git/misc/dist/visionos_xcode visionos_xcode
563+
cp out/visionos/templates-mono/libgodot.visionos.a visionos_xcode/libgodot.visionos.release.xcframework/xros-arm64/libgodot.a
564+
cp out/visionos/templates-mono/libgodot.visionos.debug.a visionos_xcode/libgodot.visionos.debug.xcframework/xros-arm64/libgodot.a
565+
cd visionos_xcode
566+
zip -q -9 -r "${templatesdir_mono}/visionos.zip" *
567+
cd ..
568+
rm -rf visionos_xcode
569+
548570
# No .NET support for those platforms yet.
549571

550572
if false; then

build-visionos/build.sh

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
# Config
6+
7+
export SCONS="scons -j${NUM_CORES} verbose=yes warnings=no progress=no redirect_build_objects=no"
8+
# Keep LTO disabled for visionOS - it works but it makes linking apps on deploy very slow,
9+
# which is seen as a regression in the current workflow.
10+
# Disable Vulkan and MoltenVK for visionOS - visionOS doesn't support MoltenVK.
11+
export OPTIONS="production=yes use_lto=no vulkan=no"
12+
export OPTIONS_MONO="module_mono_enabled=yes"
13+
export TERM=xterm
14+
15+
export VISIONOS_SDK="2.5"
16+
export VISIONOS_DEVICE="VISIONOS_SDK_PATH=/root/SDKs/XROS${VISIONOS_SDK}.sdk"
17+
export VISIONOS_SIMULATOR="VISIONOS_SDK_PATH=/root/SDKs/XRSimulator${VISIONOS_SDK}.sdk simulator=yes"
18+
export APPLE_TARGET_ARM64="APPLE_TOOLCHAIN_PATH=/root/ioscross/arm64 apple_target_triple=arm-apple-darwin11-"
19+
20+
rm -rf godot
21+
mkdir godot
22+
cd godot
23+
tar xf /root/godot.tar.gz --strip-components=1
24+
25+
# Classical
26+
27+
if [ "${CLASSICAL}" == "1" ]; then
28+
echo "Starting classical build for visionOS..."
29+
30+
# arm64 device
31+
$SCONS platform=visionos $OPTIONS arch=arm64 target=template_debug $VISIONOS_DEVICE $APPLE_TARGET_ARM64
32+
$SCONS platform=visionos $OPTIONS arch=arm64 target=template_release $VISIONOS_DEVICE $APPLE_TARGET_ARM64
33+
34+
# arm64 simulator (disabled for now, see build-ios)
35+
#$SCONS platform=visionos $OPTIONS arch=arm64 target=template_debug $VISIONOS_SIMULATOR $APPLE_TARGET_ARM64
36+
#$SCONS platform=visionos $OPTIONS arch=arm64 target=template_release $VISIONOS_SIMULATOR $APPLE_TARGET_ARM64
37+
38+
mkdir -p /root/out/templates
39+
cp bin/libgodot.visionos.template_release.arm64.a /root/out/templates/libgodot.visionos.a
40+
cp bin/libgodot.visionos.template_debug.arm64.a /root/out/templates/libgodot.visionos.debug.a
41+
fi
42+
43+
# Mono
44+
45+
if [ "${MONO}" == "1" ]; then
46+
echo "Starting Mono build for visionOS..."
47+
48+
cp -r /root/mono-glue/GodotSharp/GodotSharp/Generated modules/mono/glue/GodotSharp/GodotSharp/
49+
50+
# arm64 device
51+
$SCONS platform=visionos $OPTIONS $OPTIONS_MONO arch=arm64 target=template_debug $VISIONOS_DEVICE $APPLE_TARGET_ARM64
52+
$SCONS platform=visionos $OPTIONS $OPTIONS_MONO arch=arm64 target=template_release $VISIONOS_DEVICE $APPLE_TARGET_ARM64
53+
54+
# arm64 simulator (disabled for now, see build-ios)
55+
#$SCONS platform=visionos $OPTIONS $OPTIONS_MONO arch=arm64 target=template_debug $VISIONOS_SIMULATOR $APPLE_TARGET_ARM64
56+
#$SCONS platform=visionos $OPTIONS $OPTIONS_MONO arch=arm64 target=template_release $VISIONOS_SIMULATOR $APPLE_TARGET_ARM64
57+
58+
mkdir -p /root/out/templates-mono
59+
cp bin/libgodot.visionos.template_release.arm64.a /root/out/templates-mono/libgodot.visionos.a
60+
cp bin/libgodot.visionos.template_debug.arm64.a /root/out/templates-mono/libgodot.visionos.debug.a
61+
fi
62+
63+
echo "visionOS build successful"

build.sh

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ if [ $skip_download == 0 ]; then
133133
if [ ! -z "${logged_in}" ]; then
134134
echo "Fetching private images"
135135

136-
for image in macosx android ios; do
136+
for image in macosx android appleembedded; do
137137
if [ ${force_download} == 1 ] || ! ${podman} image exists godot-private/$image; then
138138
if ! ${podman} pull ${registry}/godot-private/${image}; then
139139
echo "ERROR: image $image does not exist and can't be downloaded"
@@ -269,7 +269,10 @@ mkdir -p ${basedir}/out/android
269269
${podman_run} -v ${basedir}/build-android:/root/build -v ${basedir}/out/android:/root/out -v ${basedir}/deps/swappy:/root/swappy -v ${basedir}/deps/keystore:/root/keystore localhost/godot-android:${img_version} bash build/build.sh 2>&1 | tee ${basedir}/out/logs/android
270270

271271
mkdir -p ${basedir}/out/ios
272-
${podman_run} -v ${basedir}/build-ios:/root/build -v ${basedir}/out/ios:/root/out localhost/godot-ios:${img_version} bash build/build.sh 2>&1 | tee ${basedir}/out/logs/ios
272+
${podman_run} -v ${basedir}/build-ios:/root/build -v ${basedir}/out/ios:/root/out localhost/godot-appleembedded:${img_version} bash build/build.sh 2>&1 | tee ${basedir}/out/logs/ios
273+
274+
mkdir -p ${basedir}/out/visionos
275+
${podman_run} -v ${basedir}/build-visionos:/root/build -v ${basedir}/out/visionos:/root/out localhost/godot-appleembedded:${img_version} bash build/build.sh 2>&1 | tee ${basedir}/out/logs/visionos
273276

274277
uid=$(id -un)
275278
gid=$(id -gn)

0 commit comments

Comments
 (0)