60 Commits
3.4 ... 4.1

Author SHA1 Message Date
bruvzg
7496561a7c [macOS] Use notarytool instead of deprecated altool.
(cherry picked from commit 7b9e4271f4)
2023-10-31 18:51:52 +01:00
Yuri Sizov
65a4849ca4 Publish Android library from the main build-release script
(cherry picked from commit 9d40b39c01)
2023-10-27 12:31:13 +02:00
Rémi Verschelde
115b7f7f8c Drop UWP build scripts since it was removed upstream
(cherry picked from commit 79967d5bb9)
2023-09-21 20:10:31 +02:00
Rémi Verschelde
21af2c7666 Add clean-release.sh script to remove only release artifacts 2023-07-11 16:05:45 +02:00
Rémi Verschelde
360fa39095 Add clean.sh script to removed past build artifacts 2023-06-26 19:42:46 +02:00
Rémi Verschelde
80ea8aadde Merge pull request #78 from m4gr3d/add_logic_to_upload_to_maven_central
Add logic to upload the Godot Android library to MavenCentral
2023-05-25 09:29:51 +02:00
Fredia Huya-Kouadio
0780ea4a4f Add logic to upload the Godot Android library to MavenCentral
Add environment variables to sign the release build for the Godot
Android editor and to publish the library to MavenCentral.
If the environment vars are not defined, we do a simple unsigned
`release_debug` build for the Android editor.

Change `config.sh.in` template to use single quotes by default, to
prevent expanding special characters in environment variables.

To publish to MavenCentral, a new `build-android/upload-mavencentral.sh`
script is added. It needs to run after the build using gradle, but we
still want it to be optional and used only when making an official
release, so we copy the compiled sources in the first step.

Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2023-05-25 09:28:43 +02:00
Rémi Verschelde
72cb40ffad Install gettext in all editor build containers
This enables compiling the PO files to smaller binary MO files,
reducing the size of the editor binary which embeds them.

gettext will be added to the base container but I haven't done it
yet, so for now adding it manually here.
2023-02-14 11:20:33 +01:00
Rémi Verschelde
e3827e123c build-release: Rename --publish-nuget option to -n
I can never remember the long form.
2022-11-16 13:44:30 +01:00
Rémi Verschelde
1dcd8b7985 Merge pull request #74 from bruvzg/win_wrapper 2022-11-04 11:07:37 +01:00
Rémi Verschelde
ef964dc2a3 Merge pull request #75 from godotengine/xcode-14.1 2022-11-04 10:10:42 +01:00
Rémi Verschelde
9ad27f9f92 Xcode: Update macOS and iOS scripts for to Xcode 14.1 (macOS 13.0, iOS 16.1) 2022-11-03 13:44:56 +01:00
bruvzg
b5240cd977 Add console wrapper app to handle console i/o redirection on Windows. 2022-10-17 11:20:16 +03:00
Rémi Verschelde
631c5d216e Merge pull request #73 from godotengine/build-release-publish-nuget-only 2022-10-13 15:29:11 +02:00
Rémi Verschelde
6d25f64f31 Merge pull request #72 from godotengine/unify-target-tools 2022-10-13 15:29:04 +02:00
Rémi Verschelde
eecf436ac7 build_release: Allow -b none --publish-nuget --no-cleanup --no-tarball
Useful when I forget to add `--publish-nuget` the first time and want to
bypass the builds already packaged, and only publish the nupkgs.
2022-10-13 15:26:42 +02:00
Rémi Verschelde
f95a42611b Unify target/tools arguments after upstream change 2022-10-13 14:10:59 +02:00
Rémi Verschelde
872c9bfe0e Fix wildcard expansion for bash in --publish-nuget
Apparently this worked under zsh but not under bash.
2022-09-14 15:54:40 +02:00
Rémi Verschelde
4e9ee976b2 Merge pull request #70 from raulsntos/publish-nuget 2022-09-14 12:00:29 +02:00
Raul Santos
e244d6f9e3 Add support for publishing NuGet packages 2022-09-10 03:45:12 +02:00
Rémi Verschelde
9080ead63c Merge pull request #69 from godotengine/dotnet-working-desktop-builds 2022-09-09 12:55:25 +02:00
Rémi Verschelde
c996282abe .NET 6: Further update build scripts for 4.0, works for desktop releases
Does not attempt to build Android, iOS and Web since it's not supported
currently.
2022-09-08 15:45:39 +02:00
Rémi Verschelde
4a37b8e5cb Merge pull request #68 from godotengine/android-fix-arch 2022-09-07 11:56:16 +02:00
Rémi Verschelde
46773439b7 Android: Fix still using android_arch over arch
Needed after https://github.com/godotengine/godot/pull/55778.
Not sure how alpha15 built properly without this :O
2022-09-07 11:52:57 +02:00
Rémi Verschelde
41f2a836cf Merge pull request #66 from godotengine/web-parallel-builds-full-lto 2022-09-07 11:12:45 +02:00
Rémi Verschelde
f37caa728a Web: Refactor build script to run in parallel with full LTO
Fabio found that full LTO produces smaller binaries than ThinLTO,
and that's quite important for the Web platform.

But for an obscure reason LLVM's full LTO cannot linking with multiple
threads, and so it's slow as heck (10-15 min per build).

So we work it around by starting all builds in parallel so that they
can all link at the same time.

The code to do so is pretty ugly, could be refactored further.
2022-09-07 11:07:21 +02:00
Rémi Verschelde
9aa0cb9d3b Merge pull request #67 from godotengine/web-templates-rename 2022-09-07 11:05:43 +02:00
Rémi Verschelde
0bd0362372 Web: Handle new template names and dlink_enabled=yes
Follow-up to https://github.com/godotengine/godot/pull/65094.

Also reverts LTO change from #62, we found that while it's much slower
to link, full LTO still produces smaller binaries and that's quite
important for the Web platform.
2022-09-07 10:28:28 +02:00
Rémi Verschelde
12627036d2 Merge pull request #64 from godotengine/godot4-dotnet 2022-08-30 10:14:49 +02:00
Rémi Verschelde
23187596fb .NET 6: Initial port of build scripts for 4.0
Not working yet but cleans up a lot of the Mono stuff we won't need anymore.
2022-08-30 10:12:58 +02:00
Rémi Verschelde
36fc7fca83 Merge pull request #65 from godotengine/js-is-web 2022-08-30 09:57:42 +02:00
Rémi Verschelde
2c6469a904 Web: Rename javascript to web 2022-08-29 15:09:39 +02:00
Rémi Verschelde
ccb6b90e0b Merge pull request #62 from godotengine/godot4-enable-web 2022-08-29 09:14:20 +02:00
Rémi Verschelde
dd1128fea0 JavaScript: Re-enable build for 4.0 now that WebGL 2 works 2022-08-26 14:44:05 +02:00
Rémi Verschelde
409efd043a Merge pull request #38 from godotengine/godot4 2022-08-26 14:43:47 +02:00
Rémi Verschelde
0bcbc8fca2 Merge pull request #60 from aaronfranke/use-arch-btw 2022-08-25 17:09:35 +02:00
Aaron Franke
d68cf1a26e CPU architecture name changes for Windows/Linux outputs from SCons 2022-08-25 09:28:45 -05:00
Rémi Verschelde
83b71cbf8b macOS: Change option for Vulkan SDK 2022-07-26 12:06:23 +02:00
Aaron Franke
9973556e65 CPU architecture name changes for Windows, Mac, and Linux templates 2022-07-26 12:05:43 +02:00
Aaron Franke
e544bb91dc CPU architecture folder name changes 2022-07-22 18:30:56 -05:00
bruvzg
0dc9509c1f Rename OSX to macOS and iPhoneOS to iOS. 2022-07-21 12:23:09 +02:00
Rémi Verschelde
0fe855cc72 macOS: Disable volk to link MoltenVK statically 2022-07-21 12:23:09 +02:00
Rémi Verschelde
edd1194d3f macOS and iOS: Link MoltenVK statically
Also move angle to a 'deps' folder for all downloaded or manually copied
deps used by the builds.
2022-07-21 12:23:09 +02:00
Rémi Verschelde
6463e8b60a Port scripts to Godot 4.0.dev, remove server build
The `server` platform has now been replaced by the "headless" `DisplayServer`
which is registered on all desktop platforms.

Disable JavaScript and UWP builds which are not currently supported in 4.0.
2022-07-21 12:23:09 +02:00
Rémi Verschelde
8405945b79 Android: Fix mono_prefix after godot-mono-builds NDK r23 support
The target options were renamed in https://github.com/godotengine/godot-mono-builds/pull/69.

Also removes the commented out code for Mono Android editor because it will
likely never be meaningful to build. There's no MSBuild on Android to compile C#.
2022-07-19 23:04:11 +02:00
Rémi Verschelde
b2aef95606 Merge pull request #56 from godotengine/img-update 2022-06-27 12:22:12 +02:00
Rémi Verschelde
4c9e58d98f Use new containers with Mono 6.12.0.182, Android NDK r23, Emscripten 3.1.14 2022-06-27 12:19:24 +02:00
Rémi Verschelde
135ad22e07 Merge pull request #55 from godotengine/windows-mono-bat-console
Windows: Add .cmd script to run Mono editor with console
2022-06-10 12:19:07 +02:00
Rémi Verschelde
26bb927614 Windows: Add .cmd script to run Mono editor with console
Same as done for non-Mono builds already.
Fixes https://github.com/godotengine/godot/issues/61672.
2022-06-10 12:17:13 +02:00
Rémi Verschelde
81c1fa10ef Merge pull request #54 from godotengine/img-f36-xcode13
Use new containers with Fedora 36, Mono 6.12.0.179, Xcode 13.3.1
2022-05-24 10:41:18 +02:00
Rémi Verschelde
a0675bb238 Use new containers with Fedora 36, Mono 6.12.0.179, Xcode 13.3.1
Remove ad-hoc java install from Android build script, it's now included
in the build container.
2022-05-24 10:38:22 +02:00
Rémi Verschelde
6ebf52fda5 Merge pull request #53 from godotengine/osslsigncode-from-PATH 2022-05-10 13:41:13 +02:00
Rémi Verschelde
8adfdd068e Windows: Use osslsigncode from PATH for signing
We were shipping a pre-built version but it only works on specific distros
as it's tightly coupled to openssl. When upgrading from F34 to F35 it started
segfaulting.

We now rely on the version packaged by Fedora which should be installed on the
host, or compiled and installed manually in PATH by users.
2022-05-10 10:39:42 +02:00
Rémi Verschelde
720b0fe6c0 Android: Also build editor for armv7/x86
It makes the APK twice as big but there's been some demand for it,
so let's give it a try for now.
2022-05-03 11:40:13 +02:00
Rémi Verschelde
d5ba16cc46 Merge pull request #51 from godotengine/android-editor 2022-03-30 17:56:42 +02:00
Rémi Verschelde
59559971b5 Android: Add editor build for arm64v8/x86_64 (no Mono for now) 2022-03-30 15:44:10 +02:00
Rémi Verschelde
45abfae75f Add check to prevent mistakes with templates version
Also switched web release dir to use templates version as it's what we
use online.
2022-03-15 10:43:43 +01:00
Rémi Verschelde
7ac3b65e39 Windows: Delete bat files after zipping 2022-01-31 23:42:25 +01:00
Rémi Verschelde
a679b94dfc Merge pull request #49 from bruvzg/gen_win_cmd
[Windows] Generate "cmd" file to run Godot with open console.
2022-01-13 20:33:39 +01:00
bruvzg
0d2393cf02 [Windows] Generate "cmd" file to run Godot with open console. 2022-01-13 19:05:03 +02:00
22 changed files with 715 additions and 831 deletions

3
.gitignore vendored
View File

@@ -1,5 +1,6 @@
# User-specific configuration and signing key
# User-specific configuration and signing keys
config.sh
*.jks
*.pfx
*.pkcs12

View File

@@ -6,7 +6,7 @@ set -e
export SCONS="scons -j${NUM_CORES} verbose=yes warnings=no progress=no"
export OPTIONS="production=yes"
export OPTIONS_MONO="module_mono_enabled=yes mono_static=no"
export OPTIONS_MONO="module_mono_enabled=yes"
export TERM=xterm
rm -rf godot
@@ -14,70 +14,108 @@ mkdir godot
cd godot
tar xf /root/godot.tar.gz --strip-components=1
dnf install -y java-11-openjdk-devel
java --version
# Environment variables and keystore needed for signing store editor build,
# as well as signing and publishing to MavenCentral.
source /root/keystore/config.sh
store_release="yes"
if [ -z "${GODOT_ANDROID_SIGN_KEYSTORE}" ]; then
echo "No keystore provided to sign the Android release editor build, using debug build instead."
store_release="no"
fi
# Classical
dnf -y install gettext
if [ "${CLASSICAL}" == "1" ]; then
echo "Starting classical build for Android..."
$SCONS platform=android android_arch=armv7 $OPTIONS tools=no target=release_debug
$SCONS platform=android android_arch=armv7 $OPTIONS tools=no target=release
$SCONS platform=android arch=arm32 $OPTIONS target=editor store_release=${store_release}
$SCONS platform=android arch=arm64 $OPTIONS target=editor store_release=${store_release}
$SCONS platform=android arch=x86_32 $OPTIONS target=editor store_release=${store_release}
$SCONS platform=android arch=x86_64 $OPTIONS target=editor store_release=${store_release}
$SCONS platform=android android_arch=arm64v8 $OPTIONS tools=no target=release_debug
$SCONS platform=android android_arch=arm64v8 $OPTIONS tools=no target=release
pushd platform/android/java
./gradlew generateGodotEditor
popd
$SCONS platform=android android_arch=x86 $OPTIONS tools=no target=release_debug
$SCONS platform=android android_arch=x86 $OPTIONS tools=no target=release
mkdir -p /root/out/tools
# Copy the generated Android editor binaries (apk & aab).
if [ "$store_release" == "yes" ]; then
cp bin/android_editor_builds/android_editor-release.apk /root/out/tools/android_editor.apk
cp bin/android_editor_builds/android_editor-release.aab /root/out/tools/android_editor.aab
else
cp bin/android_editor_builds/android_editor-debug.apk /root/out/tools/android_editor.apk
cp bin/android_editor_builds/android_editor-debug.aab /root/out/tools/android_editor.aab
fi
$SCONS platform=android android_arch=x86_64 $OPTIONS tools=no target=release_debug
$SCONS platform=android android_arch=x86_64 $OPTIONS tools=no target=release
# Restart from a clean tarball, as we'll copy all the contents
# outside the container for the MavenCentral upload.
rm -rf /root/godot/*
tar xf /root/godot.tar.gz --strip-components=1
$SCONS platform=android arch=arm32 $OPTIONS target=template_debug
$SCONS platform=android arch=arm32 $OPTIONS target=template_release
$SCONS platform=android arch=arm64 $OPTIONS target=template_debug
$SCONS platform=android arch=arm64 $OPTIONS target=template_release
$SCONS platform=android arch=x86_32 $OPTIONS target=template_debug
$SCONS platform=android arch=x86_32 $OPTIONS target=template_release
$SCONS platform=android arch=x86_64 $OPTIONS target=template_debug
$SCONS platform=android arch=x86_64 $OPTIONS target=template_release
pushd platform/android/java
./gradlew generateGodotTemplates
if [ "$store_release" == "yes" ]; then
# Copy source folder with compiled libs so we can optionally use it
# in a separate script to upload the templates to MavenCentral.
cp -r /root/godot /root/out/source/
# Backup ~/.gradle too so we can reuse all the downloaded stuff.
cp -r /root/.gradle /root/out/source/.gradle
fi
popd
mkdir -p /root/out/templates
cp bin/android_source.zip /root/out/templates
cp bin/android_debug.apk /root/out/templates/android_debug.apk
cp bin/android_release.apk /root/out/templates/android_release.apk
cp bin/godot-lib.release.aar /root/out/templates/godot-lib.release.aar
cp bin/android_source.zip /root/out/templates/
cp bin/android_debug.apk /root/out/templates/
cp bin/android_release.apk /root/out/templates/
cp bin/godot-lib.template_release.aar /root/out/templates/
fi
# Mono
if [ "${MONO}" == "1" ]; then
# No Android support with .NET 6 yet.
#if [ "${MONO}" == "1" ]; then
if false; then
echo "Starting Mono build for Android..."
cp /root/mono-glue/*.cpp modules/mono/glue/
cp -r /root/mono-glue/GodotSharp/GodotSharp/Generated modules/mono/glue/GodotSharp/GodotSharp/
cp -r /root/mono-glue/GodotSharp/GodotSharpEditor/Generated modules/mono/glue/GodotSharp/GodotSharpEditor/
$SCONS platform=android android_arch=armv7 $OPTIONS $OPTIONS_MONO mono_prefix=/root/mono-installs/android-armeabi-v7a-release tools=no target=release_debug
$SCONS platform=android android_arch=armv7 $OPTIONS $OPTIONS_MONO mono_prefix=/root/mono-installs/android-armeabi-v7a-release tools=no target=release
$SCONS platform=android arch=arm32 $OPTIONS $OPTIONS_MONO target=template_debug
$SCONS platform=android arch=arm32 $OPTIONS $OPTIONS_MONO target=template_release
$SCONS platform=android android_arch=arm64v8 $OPTIONS $OPTIONS_MONO mono_prefix=/root/mono-installs/android-arm64-v8a-release tools=no target=release_debug
$SCONS platform=android android_arch=arm64v8 $OPTIONS $OPTIONS_MONO mono_prefix=/root/mono-installs/android-arm64-v8a-release tools=no target=release
$SCONS platform=android arch=arm64 $OPTIONS $OPTIONS_MONO target=template_debug
$SCONS platform=android arch=arm64 $OPTIONS $OPTIONS_MONO target=template_release
$SCONS platform=android android_arch=x86 $OPTIONS $OPTIONS_MONO mono_prefix=/root/mono-installs/android-x86-release tools=no target=release_debug
$SCONS platform=android android_arch=x86 $OPTIONS $OPTIONS_MONO mono_prefix=/root/mono-installs/android-x86-release tools=no target=release
$SCONS platform=android arch=x86_32 $OPTIONS $OPTIONS_MONO target=template_debug
$SCONS platform=android arch=x86_32 $OPTIONS $OPTIONS_MONO target=template_release
$SCONS platform=android android_arch=x86_64 $OPTIONS $OPTIONS_MONO mono_prefix=/root/mono-installs/android-x86_64-release tools=no target=release_debug
$SCONS platform=android android_arch=x86_64 $OPTIONS $OPTIONS_MONO mono_prefix=/root/mono-installs/android-x86_64-release tools=no target=release
$SCONS platform=android arch=x86_64 $OPTIONS $OPTIONS_MONO target=template_debug
$SCONS platform=android arch=x86_64 $OPTIONS $OPTIONS_MONO target=template_release
pushd platform/android/java
./gradlew generateGodotTemplates
popd
mkdir -p /root/out/templates-mono
cp bin/android_source.zip /root/out/templates-mono
cp bin/android_debug.apk /root/out/templates-mono/android_debug.apk
cp bin/android_release.apk /root/out/templates-mono/android_release.apk
cp bin/godot-lib.release.aar /root/out/templates-mono/godot-lib.release.aar
mkdir -p /root/out/templates-mono/bcl
cp -r /root/mono-installs/android-bcl/* /root/out/templates-mono/bcl/
cp bin/android_source.zip /root/out/templates-mono/
cp bin/android_debug.apk /root/out/templates-mono/
cp bin/android_release.apk /root/out/templates-mono/
cp bin/godot-lib.release.aar /root/out/templates-mono/
fi
echo "Android build successful"

View File

@@ -0,0 +1,18 @@
#/bin/bash
basedir="$(pwd)"
if [ ! -d "${basedir}/deps/keystore" ]; then
echo "Couldn't find ${basedir}/deps/keystore. Make sure to run this from the root folder of the Git repository."
fi
source ${basedir}/deps/keystore/config.sh
# Release the Godot Android library to MavenCentral
${PODMAN} run -it --rm \
-v ${basedir}/out/android/source:/root/godot -v ${basedir}/deps/keystore:/root/keystore \
localhost/godot-android:${IMAGE_VERSION} bash -c \
"source /root/keystore/config.sh && \
cp -r /root/godot/.gradle /root && \
cd /root/godot/platform/android/java && \
./gradlew publishTemplateReleasePublicationToSonatypeRepository --max-workers 1 closeAndReleaseSonatypeStagingRepository"

View File

@@ -8,10 +8,10 @@ export SCONS="scons -j${NUM_CORES} verbose=yes warnings=no progress=no"
# Keep LTO disabled for iOS - it works but it makes linking apps on deploy very slow,
# which is seen as a regression in the current workflow.
export OPTIONS="production=yes use_lto=no"
export OPTIONS_MONO="module_mono_enabled=yes mono_static=yes"
export OPTIONS_MONO="module_mono_enabled=yes"
export TERM=xterm
export IOS_SDK="14.4"
export IOS_SDK="16.1"
export IOS_LIPO="/root/ioscross/arm64/bin/arm-apple-darwin11-lipo"
rm -rf godot
@@ -21,96 +21,77 @@ tar xf /root/godot.tar.gz --strip-components=1
# Classical
dnf -y install gettext
if [ "${CLASSICAL}" == "1" ]; then
echo "Starting classical build for iOS..."
# arm64 device
$SCONS platform=iphone $OPTIONS arch=arm64 tools=no ios_simulator=no target=release_debug \
IPHONESDK="/root/ioscross/arm64/SDK/iPhoneOS${IOS_SDK}.sdk" IPHONEPATH="/root/ioscross/arm64/" ios_triple="arm-apple-darwin11-"
$SCONS platform=iphone $OPTIONS arch=arm64 tools=no ios_simulator=no target=release \
IPHONESDK="/root/ioscross/arm64/SDK/iPhoneOS${IOS_SDK}.sdk" IPHONEPATH="/root/ioscross/arm64/" ios_triple="arm-apple-darwin11-"
$SCONS platform=ios $OPTIONS arch=arm64 ios_simulator=no target=template_debug \
IOS_SDK_PATH="/root/ioscross/arm64/SDK/iPhoneOS${IOS_SDK}.sdk" IOS_TOOLCHAIN_PATH="/root/ioscross/arm64/" ios_triple="arm-apple-darwin11-"
$SCONS platform=ios $OPTIONS arch=arm64 ios_simulator=no target=template_release \
IOS_SDK_PATH="/root/ioscross/arm64/SDK/iPhoneOS${IOS_SDK}.sdk" IOS_TOOLCHAIN_PATH="/root/ioscross/arm64/" ios_triple="arm-apple-darwin11-"
# arm64 simulator
# Disabled for now as it doesn't work with cctools-port and current LLVM.
# See https://github.com/godotengine/build-containers/pull/85.
#$SCONS platform=iphone $OPTIONS arch=arm64 tools=no ios_simulator=yes target=release_debug \
# IPHONESDK="/root/ioscross/arm64_sim/SDK/iPhoneOS${IOS_SDK}.sdk" IPHONEPATH="/root/ioscross/arm64_sim/" ios_triple="arm-apple-darwin11-"
#$SCONS platform=iphone $OPTIONS arch=arm64 tools=no ios_simulator=no target=release \
# IPHONESDK="/root/ioscross/arm64_sim/SDK/iPhoneOS${IOS_SDK}.sdk" IPHONEPATH="/root/ioscross/arm64_sim/" ios_triple="arm-apple-darwin11-"
#$SCONS platform=ios $OPTIONS arch=arm64 ios_simulator=yes target=template_debug \
# IOS_SDK_PATH="/root/ioscross/arm64_sim/SDK/iPhoneOS${IOS_SDK}.sdk" IOS_TOOLCHAIN_PATH="/root/ioscross/arm64_sim/" ios_triple="arm-apple-darwin11-"
#$SCONS platform=ios $OPTIONS arch=arm64 ios_simulator=no target=template_release \
# IOS_SDK_PATH="/root/ioscross/arm64_sim/SDK/iPhoneOS${IOS_SDK}.sdk" IOS_TOOLCHAIN_PATH="/root/ioscross/arm64_sim/" ios_triple="arm-apple-darwin11-"
# x86_64 simulator
$SCONS platform=iphone $OPTIONS arch=x86_64 tools=no ios_simulator=yes target=release_debug \
IPHONESDK="/root/ioscross/x86_64_sim/SDK/iPhoneOS${IOS_SDK}.sdk" IPHONEPATH="/root/ioscross/x86_64_sim/" ios_triple="x86_64-apple-darwin11-"
$SCONS platform=iphone $OPTIONS arch=x86_64 tools=no ios_simulator=yes target=release \
IPHONESDK="/root/ioscross/x86_64_sim/SDK/iPhoneOS${IOS_SDK}.sdk" IPHONEPATH="/root/ioscross/x86_64_sim/" ios_triple="x86_64-apple-darwin11-"
$SCONS platform=ios $OPTIONS arch=x86_64 ios_simulator=yes target=template_debug \
IOS_SDK_PATH="/root/ioscross/x86_64_sim/SDK/iPhoneOS${IOS_SDK}.sdk" IOS_TOOLCHAIN_PATH="/root/ioscross/x86_64_sim/" ios_triple="x86_64-apple-darwin11-"
$SCONS platform=ios $OPTIONS arch=x86_64 ios_simulator=yes target=template_release \
IOS_SDK_PATH="/root/ioscross/x86_64_sim/SDK/iPhoneOS${IOS_SDK}.sdk" IOS_TOOLCHAIN_PATH="/root/ioscross/x86_64_sim/" ios_triple="x86_64-apple-darwin11-"
mkdir -p /root/out/templates
cp bin/libgodot.iphone.opt.arm64.a /root/out/templates/libgodot.iphone.a
cp bin/libgodot.iphone.opt.debug.arm64.a /root/out/templates/libgodot.iphone.debug.a
#$IOS_LIPO -create bin/libgodot.iphone.opt.arm64.simulator.a bin/libgodot.iphone.opt.x86_64.simulator.a -output /root/out/templates/libgodot.iphone.simulator.a
#$IOS_LIPO -create bin/libgodot.iphone.opt.debug.arm64.simulator.a bin/libgodot.iphone.opt.debug.x86_64.simulator.a -output /root/out/templates/libgodot.iphone.debug.simulator.a
cp bin/libgodot.iphone.opt.x86_64.simulator.a /root/out/templates/libgodot.iphone.simulator.a
cp bin/libgodot.iphone.opt.debug.x86_64.simulator.a /root/out/templates/libgodot.iphone.debug.simulator.a
cp bin/libgodot.ios.template_release.arm64.a /root/out/templates/libgodot.ios.a
cp bin/libgodot.ios.template_debug.arm64.a /root/out/templates/libgodot.ios.debug.a
#$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
#$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
cp bin/libgodot.ios.template_release.x86_64.simulator.a /root/out/templates/libgodot.ios.simulator.a
cp bin/libgodot.ios.template_debug.x86_64.simulator.a /root/out/templates/libgodot.ios.debug.simulator.a
fi
# Mono
if [ "${MONO}" == "1" ]; then
# No iOS support with .NET 6 yet.
#if [ "${MONO}" == "1" ]; then
if false; then
echo "Starting Mono build for iOS..."
cp /root/mono-glue/*.cpp modules/mono/glue/
cp -r /root/mono-glue/GodotSharp/GodotSharp/Generated modules/mono/glue/GodotSharp/GodotSharp/
cp -r /root/mono-glue/GodotSharp/GodotSharpEditor/Generated modules/mono/glue/GodotSharp/GodotSharpEditor/
# arm64 device
$SCONS platform=iphone $OPTIONS $OPTIONS_MONO arch=arm64 ios_simulator=no mono_prefix=/root/mono-installs/ios-arm64-release tools=no target=release_debug \
IPHONESDK="/root/ioscross/arm64/SDK/iPhoneOS${IOS_SDK}.sdk" IPHONEPATH="/root/ioscross/arm64/" ios_triple="arm-apple-darwin11-"
$SCONS platform=iphone $OPTIONS $OPTIONS_MONO arch=arm64 ios_simulator=no mono_prefix=/root/mono-installs/ios-arm64-release tools=no target=release \
IPHONESDK="/root/ioscross/arm64/SDK/iPhoneOS${IOS_SDK}.sdk" IPHONEPATH="/root/ioscross/arm64/" ios_triple="arm-apple-darwin11-"
$SCONS platform=ios $OPTIONS $OPTIONS_MONO arch=arm64 ios_simulator=no target=template_debug \
IOS_SDK_PATH="/root/ioscross/arm64/SDK/iPhoneOS${IOS_SDK}.sdk" IOS_TOOLCHAIN_PATH="/root/ioscross/arm64/" ios_triple="arm-apple-darwin11-"
$SCONS platform=ios $OPTIONS $OPTIONS_MONO arch=arm64 ios_simulator=no target=template_release \
IOS_SDK_PATH="/root/ioscross/arm64/SDK/iPhoneOS${IOS_SDK}.sdk" IOS_TOOLCHAIN_PATH="/root/ioscross/arm64/" ios_triple="arm-apple-darwin11-"
# arm64 simulator
# Disabled for now as it doesn't work with cctools-port and current LLVM.
# See https://github.com/godotengine/build-containers/pull/85.
#$SCONS platform=iphone $OPTIONS $OPTIONS_MONO arch=arm64 ios_simulator=yes mono_prefix=/root/mono-installs/ios-arm64-sim-release tools=no target=release_debug \
# IPHONESDK="/root/ioscross/arm64_sim/SDK/iPhoneOS${IOS_SDK}.sdk" IPHONEPATH="/root/ioscross/arm64_sim/" ios_triple="arm-apple-darwin11-"
#$SCONS platform=iphone $OPTIONS $OPTIONS_MONO arch=arm64 ios_simulator=yes mono_prefix=/root/mono-installs/ios-arm64-sim-release tools=no target=release \
# IPHONESDK="/root/ioscross/arm64_sim/SDK/iPhoneOS${IOS_SDK}.sdk" IPHONEPATH="/root/ioscross/arm64_sim/" ios_triple="arm-apple-darwin11-"
#$SCONS platform=ios $OPTIONS $OPTIONS_MONO arch=arm64 ios_simulator=yes target=template_debug \
# IOS_SDK_PATH="/root/ioscross/arm64_sim/SDK/iPhoneOS${IOS_SDK}.sdk" IOS_TOOLCHAIN_PATH="/root/ioscross/arm64_sim/" ios_triple="arm-apple-darwin11-"
#$SCONS platform=ios $OPTIONS $OPTIONS_MONO arch=arm64 ios_simulator=yes target=template_release \
# IOS_SDK_PATH="/root/ioscross/arm64_sim/SDK/iPhoneOS${IOS_SDK}.sdk" IOS_TOOLCHAIN_PATH="/root/ioscross/arm64_sim/" ios_triple="arm-apple-darwin11-"
# x86_64 simulator
$SCONS platform=iphone $OPTIONS $OPTIONS_MONO arch=x86_64 ios_simulator=yes mono_prefix=/root/mono-installs/ios-x86_64-release tools=no target=release_debug \
IPHONESDK="/root/ioscross/x86_64_sim/SDK/iPhoneOS${IOS_SDK}.sdk" IPHONEPATH="/root/ioscross/x86_64_sim/" ios_triple="x86_64-apple-darwin11-"
$SCONS platform=iphone $OPTIONS $OPTIONS_MONO arch=x86_64 ios_simulator=yes mono_prefix=/root/mono-installs/ios-x86_64-release tools=no target=release \
IPHONESDK="/root/ioscross/x86_64_sim/SDK/iPhoneOS${IOS_SDK}.sdk" IPHONEPATH="/root/ioscross/x86_64_sim/" ios_triple="x86_64-apple-darwin11-"
$SCONS platform=ios $OPTIONS $OPTIONS_MONO arch=x86_64 ios_simulator=yes target=template_debug \
IOS_SDK_PATH="/root/ioscross/x86_64_sim/SDK/iPhoneOS${IOS_SDK}.sdk" IOS_TOOLCHAIN_PATH="/root/ioscross/x86_64_sim/" ios_triple="x86_64-apple-darwin11-"
$SCONS platform=ios $OPTIONS $OPTIONS_MONO arch=x86_64 ios_simulator=yes target=template_release \
IOS_SDK_PATH="/root/ioscross/x86_64_sim/SDK/iPhoneOS${IOS_SDK}.sdk" IOS_TOOLCHAIN_PATH="/root/ioscross/x86_64_sim/" ios_triple="x86_64-apple-darwin11-"
mkdir -p /root/out/templates-mono
cp bin/libgodot.iphone.opt.arm64.a /root/out/templates-mono/libgodot.iphone.a
cp bin/libgodot.iphone.opt.debug.arm64.a /root/out/templates-mono/libgodot.iphone.debug.a
#$IOS_LIPO -create bin/libgodot.iphone.opt.arm64.simulator.a bin/libgodot.iphone.opt.x86_64.simulator.a -output /root/out/templates-mono/libgodot.iphone.simulator.a
#$IOS_LIPO -create bin/libgodot.iphone.opt.debug.arm64.simulator.a bin/libgodot.iphone.opt.debug.x86_64.simulator.a -output /root/out/templates-mono/libgodot.iphone.debug.simulator.a
cp bin/libgodot.iphone.opt.x86_64.simulator.a /root/out/templates-mono/libgodot.iphone.simulator.a
cp bin/libgodot.iphone.opt.debug.x86_64.simulator.a /root/out/templates-mono/libgodot.iphone.debug.simulator.a
cp -r misc/dist/iphone-mono-libs /root/out/templates-mono/iphone-mono-libs
cp bin/libmonosgen-2.0.iphone.arm64.a /root/out/templates-mono/iphone-mono-libs/libmonosgen-2.0.xcframework/ios-arm64/libmonosgen.a
cp bin/libmono-native.iphone.arm64.a /root/out/templates-mono/iphone-mono-libs/libmono-native.xcframework/ios-arm64/libmono-native.a
cp bin/libmono-profiler-log.iphone.arm64.a /root/out/templates-mono/iphone-mono-libs/libmono-profiler-log.xcframework/ios-arm64/libmono-profiler-log.a
#$IOS_LIPO -create bin/libmonosgen-2.0.iphone.arm64.simulator.a bin/libmonosgen-2.0.iphone.x86_64.simulator.a -output /root/out/templates-mono/iphone-mono-libs/libmonosgen-2.0.xcframework/ios-arm64_x86_64-simulator/libmonosgen.a
#$IOS_LIPO -create bin/libmono-native.iphone.arm64.simulator.a bin/libmono-native.iphone.x86_64.simulator.a -output /root/out/templates-mono/iphone-mono-libs/libmono-native.xcframework/ios-arm64_x86_64-simulator/libmono-native.a
#$IOS_LIPO -create bin/libmono-profiler-log.iphone.arm64.simulator.a bin/libmono-profiler-log.iphone.x86_64.simulator.a -output /root/out/templates-mono/iphone-mono-libs/libmono-profiler-log.xcframework/ios-arm64_x86_64-simulator/libmono-profiler-log.a
cp bin/libmonosgen-2.0.iphone.x86_64.simulator.a /root/out/templates-mono/iphone-mono-libs/libmonosgen-2.0.xcframework/ios-arm64_x86_64-simulator/libmonosgen.a
cp bin/libmono-native.iphone.x86_64.simulator.a /root/out/templates-mono/iphone-mono-libs/libmono-native.xcframework/ios-arm64_x86_64-simulator/libmono-native.a
cp bin/libmono-profiler-log.iphone.x86_64.simulator.a /root/out/templates-mono/iphone-mono-libs/libmono-profiler-log.xcframework/ios-arm64_x86_64-simulator/libmono-profiler-log.a
# The Mono libraries for the interpreter are not available for simulator builds
cp bin/libmono-ee-interp.iphone.arm64.a /root/out/templates-mono/iphone-mono-libs/libmono-ee-interp.xcframework/ios-arm64/libmono-ee-interp.a
cp bin/libmono-icall-table.iphone.arm64.a /root/out/templates-mono/iphone-mono-libs/libmono-icall-table.xcframework/ios-arm64/libmono-icall-table.a
cp bin/libmono-ilgen.iphone.arm64.a /root/out/templates-mono/iphone-mono-libs/libmono-ilgen.xcframework/ios-arm64/libmono-ilgen.a
mkdir -p /root/out/templates-mono/bcl
cp -r /root/mono-installs/ios-bcl/* /root/out/templates-mono/bcl
cp bin/libgodot.ios.template_release.arm64.a /root/out/templates-mono/libgodot.ios.a
cp bin/libgodot.ios.template_debug.arm64.a /root/out/templates-mono/libgodot.ios.debug.a
#$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
#$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
cp bin/libgodot.ios.template_release.x86_64.simulator.a /root/out/templates-mono/libgodot.ios.simulator.a
cp bin/libgodot.ios.template_debug.x86_64.simulator.a /root/out/templates-mono/libgodot.ios.debug.simulator.a
fi
echo "iOS build successful"

View File

@@ -1,67 +0,0 @@
#!/bin/bash
set -e
# Config
export SCONS="scons -j${NUM_CORES} verbose=yes warnings=no progress=no"
export OPTIONS="production=yes"
export OPTIONS_MONO="module_mono_enabled=yes mono_static=yes mono_prefix=/root/mono-installs/wasm-runtime-release use_lto=no"
export TERM=xterm
rm -rf godot
mkdir godot
cd godot
tar xf /root/godot.tar.gz --strip-components=1
# Classical
if [ "${CLASSICAL}" == "1" ]; then
echo "Starting classical build for JavaScript..."
source /root/emsdk_${EMSCRIPTEN_CLASSICAL}/emsdk_env.sh
$SCONS platform=javascript ${OPTIONS} target=release_debug tools=no
$SCONS platform=javascript ${OPTIONS} target=release tools=no
$SCONS platform=javascript ${OPTIONS} target=release_debug tools=no threads_enabled=yes
$SCONS platform=javascript ${OPTIONS} target=release tools=no threads_enabled=yes
$SCONS platform=javascript ${OPTIONS} target=release_debug tools=no gdnative_enabled=yes
$SCONS platform=javascript ${OPTIONS} target=release tools=no gdnative_enabled=yes
mkdir -p /root/out/templates
cp -rvp bin/*.zip /root/out/templates
rm -f bin/*.zip
$SCONS platform=javascript ${OPTIONS} target=release_debug tools=yes threads_enabled=yes use_closure_compiler=yes
mkdir -p /root/out/tools
cp -rvp bin/*.zip /root/out/tools
rm -f bin/*.zip
fi
# Mono
if [ "${MONO}" == "1" ]; then
echo "Starting Mono build for JavaScript..."
source /root/emsdk_${EMSCRIPTEN_MONO}/emsdk_env.sh
cp /root/mono-glue/*.cpp modules/mono/glue/
cp -r /root/mono-glue/GodotSharp/GodotSharp/Generated modules/mono/glue/GodotSharp/GodotSharp/
cp -r /root/mono-glue/GodotSharp/GodotSharpEditor/Generated modules/mono/glue/GodotSharp/GodotSharpEditor/
$SCONS platform=javascript ${OPTIONS} ${OPTIONS_MONO} target=release_debug tools=no
$SCONS platform=javascript ${OPTIONS} ${OPTIONS_MONO} target=release tools=no
mkdir -p /root/out/templates-mono
cp -rvp bin/*.zip /root/out/templates-mono
rm -f bin/*.zip
mkdir -p /root/out/templates-mono/bcl
cp -r /root/mono-installs/wasm-bcl/wasm /root/out/templates-mono/bcl/
fi
echo "JavaScript build successful"

View File

@@ -6,9 +6,7 @@ set -e
export SCONS="scons -j${NUM_CORES} verbose=yes warnings=no progress=no"
export OPTIONS="production=yes"
export OPTIONS_MONO="module_mono_enabled=yes mono_static=yes"
export MONO_PREFIX_X86_64="/root/mono-installs/desktop-linux-x86_64-release"
export MONO_PREFIX_X86="/root/mono-installs/desktop-linux-x86-release"
export OPTIONS_MONO="module_mono_enabled=yes"
export TERM=xterm
rm -rf godot
@@ -16,6 +14,11 @@ mkdir godot
cd godot
tar xf /root/godot.tar.gz --strip-components=1
# pkg-config wrongly points to lib instead of lib64 for arch-dependent header.
sed -i ${GODOT_SDK_LINUX_X86_64}/x86_64-godot-linux-gnu/sysroot/usr/lib/pkgconfig/dbus-1.pc -e "s@/lib@/lib64@g"
dnf -y install gettext
# Classical
if [ "${CLASSICAL}" == "1" ]; then
@@ -23,28 +26,28 @@ if [ "${CLASSICAL}" == "1" ]; then
export PATH="${GODOT_SDK_LINUX_X86_64}/bin:${BASE_PATH}"
$SCONS platform=x11 $OPTIONS tools=yes target=release_debug
mkdir -p /root/out/x64/tools
cp -rvp bin/* /root/out/x64/tools
$SCONS platform=linuxbsd arch=x86_64 $OPTIONS target=editor
mkdir -p /root/out/x86_64/tools
cp -rvp bin/* /root/out/x86_64/tools
rm -rf bin
$SCONS platform=x11 $OPTIONS tools=no target=release_debug
$SCONS platform=x11 $OPTIONS tools=no target=release
mkdir -p /root/out/x64/templates
cp -rvp bin/* /root/out/x64/templates
$SCONS platform=linuxbsd arch=x86_64 $OPTIONS target=template_debug
$SCONS platform=linuxbsd arch=x86_64 $OPTIONS target=template_release
mkdir -p /root/out/x86_64/templates
cp -rvp bin/* /root/out/x86_64/templates
rm -rf bin
export PATH="${GODOT_SDK_LINUX_X86}/bin:${BASE_PATH}"
$SCONS platform=x11 $OPTIONS tools=yes target=release_debug bits=32
mkdir -p /root/out/x86/tools
cp -rvp bin/* /root/out/x86/tools
$SCONS platform=linuxbsd arch=x86_32 $OPTIONS target=editor
mkdir -p /root/out/x86_32/tools
cp -rvp bin/* /root/out/x86_32/tools
rm -rf bin
$SCONS platform=x11 $OPTIONS tools=no target=release_debug bits=32
$SCONS platform=x11 $OPTIONS tools=no target=release bits=32
mkdir -p /root/out/x86/templates
cp -rvp bin/* /root/out/x86/templates
$SCONS platform=linuxbsd arch=x86_32 $OPTIONS target=template_debug
$SCONS platform=linuxbsd arch=x86_32 $OPTIONS target=template_release
mkdir -p /root/out/x86_32/templates
cp -rvp bin/* /root/out/x86_32/templates
rm -rf bin
fi
@@ -53,36 +56,35 @@ fi
if [ "${MONO}" == "1" ]; then
echo "Starting Mono build for Linux..."
cp /root/mono-glue/*.cpp modules/mono/glue/
cp -r /root/mono-glue/GodotSharp/GodotSharp/Generated modules/mono/glue/GodotSharp/GodotSharp/
cp -r /root/mono-glue/GodotSharp/GodotSharpEditor/Generated modules/mono/glue/GodotSharp/GodotSharpEditor/
export PATH="${GODOT_SDK_LINUX_X86_64}/bin:${BASE_PATH}"
export OPTIONS_MONO_PREFIX="${OPTIONS} ${OPTIONS_MONO} mono_prefix=${MONO_PREFIX_X86_64}"
$SCONS platform=x11 $OPTIONS_MONO_PREFIX tools=yes target=release_debug copy_mono_root=yes
mkdir -p /root/out/x64/tools-mono
cp -rvp bin/* /root/out/x64/tools-mono
$SCONS platform=linuxbsd arch=x86_64 $OPTIONS $OPTIONS_MONO target=editor
./modules/mono/build_scripts/build_assemblies.py --godot-output-dir=./bin --godot-platform=linuxbsd
mkdir -p /root/out/x86_64/tools-mono
cp -rvp bin/* /root/out/x86_64/tools-mono
rm -rf bin
$SCONS platform=x11 $OPTIONS_MONO_PREFIX tools=no target=release_debug
$SCONS platform=x11 $OPTIONS_MONO_PREFIX tools=no target=release
mkdir -p /root/out/x64/templates-mono
cp -rvp bin/* /root/out/x64/templates-mono
$SCONS platform=linuxbsd arch=x86_64 $OPTIONS $OPTIONS_MONO target=template_debug
$SCONS platform=linuxbsd arch=x86_64 $OPTIONS $OPTIONS_MONO target=template_release
mkdir -p /root/out/x86_64/templates-mono
cp -rvp bin/* /root/out/x86_64/templates-mono
rm -rf bin
export PATH="${GODOT_SDK_LINUX_X86}/bin:${BASE_PATH}"
export OPTIONS_MONO_PREFIX="${OPTIONS} ${OPTIONS_MONO} mono_prefix=${MONO_PREFIX_X86}"
$SCONS platform=x11 $OPTIONS_MONO_PREFIX tools=yes target=release_debug copy_mono_root=yes bits=32
mkdir -p /root/out/x86/tools-mono
cp -rvp bin/* /root/out/x86/tools-mono
$SCONS platform=linuxbsd arch=x86_32 $OPTIONS $OPTIONS_MONO target=editor
./modules/mono/build_scripts/build_assemblies.py --godot-output-dir=./bin --godot-platform=linuxbsd
mkdir -p /root/out/x86_32/tools-mono
cp -rvp bin/* /root/out/x86_32/tools-mono
rm -rf bin
$SCONS platform=x11 $OPTIONS_MONO_PREFIX tools=no target=release_debug bits=32
$SCONS platform=x11 $OPTIONS_MONO_PREFIX tools=no target=release bits=32
mkdir -p /root/out/x86/templates-mono
cp -rvp bin/* /root/out/x86/templates-mono
$SCONS platform=linuxbsd arch=x86_32 $OPTIONS $OPTIONS_MONO target=template_debug
$SCONS platform=linuxbsd arch=x86_32 $OPTIONS $OPTIONS_MONO target=template_release
mkdir -p /root/out/x86_32/templates-mono
cp -rvp bin/* /root/out/x86_32/templates-mono
rm -rf bin
fi

80
build-macos/build.sh Executable file
View File

@@ -0,0 +1,80 @@
#!/bin/bash
set -e
# Config
export SCONS="scons -j${NUM_CORES} verbose=yes warnings=no progress=no"
export OPTIONS="osxcross_sdk=darwin22 production=yes use_volk=no vulkan_sdk_path=/root/vulkansdk"
export OPTIONS_MONO="module_mono_enabled=yes"
export STRIP="x86_64-apple-darwin22-strip -u -r"
export TERM=xterm
rm -rf godot
mkdir godot
cd godot
tar xf /root/godot.tar.gz --strip-components=1
# Classical
dnf -y install gettext
if [ "${CLASSICAL}" == "1" ]; then
echo "Starting classical build for macOS..."
$SCONS platform=macos $OPTIONS arch=x86_64 target=editor
$SCONS platform=macos $OPTIONS arch=arm64 target=editor
lipo -create bin/godot.macos.editor.x86_64 bin/godot.macos.editor.arm64 -output bin/godot.macos.editor.universal
$STRIP bin/godot.macos.editor.universal
mkdir -p /root/out/tools
cp -rvp bin/* /root/out/tools
rm -rf bin
$SCONS platform=macos $OPTIONS arch=x86_64 target=template_debug
$SCONS platform=macos $OPTIONS arch=arm64 target=template_debug
lipo -create bin/godot.macos.template_debug.x86_64 bin/godot.macos.template_debug.arm64 -output bin/godot.macos.template_debug.universal
$STRIP bin/godot.macos.template_debug.universal
$SCONS platform=macos $OPTIONS arch=x86_64 target=template_release
$SCONS platform=macos $OPTIONS arch=arm64 target=template_release
lipo -create bin/godot.macos.template_release.x86_64 bin/godot.macos.template_release.arm64 -output bin/godot.macos.template_release.universal
$STRIP bin/godot.macos.template_release.universal
mkdir -p /root/out/templates
cp -rvp bin/* /root/out/templates
rm -rf bin
fi
# Mono
if [ "${MONO}" == "1" ]; then
echo "Starting Mono build for macOS..."
cp -r /root/mono-glue/GodotSharp/GodotSharp/Generated modules/mono/glue/GodotSharp/GodotSharp/
cp -r /root/mono-glue/GodotSharp/GodotSharpEditor/Generated modules/mono/glue/GodotSharp/GodotSharpEditor/
$SCONS platform=macos $OPTIONS $OPTIONS_MONO arch=x86_64 target=editor
$SCONS platform=macos $OPTIONS $OPTIONS_MONO arch=arm64 target=editor
lipo -create bin/godot.macos.editor.x86_64.mono bin/godot.macos.editor.arm64.mono -output bin/godot.macos.editor.universal.mono
$STRIP bin/godot.macos.editor.universal.mono
./modules/mono/build_scripts/build_assemblies.py --godot-output-dir=./bin --godot-platform=macos
mkdir -p /root/out/tools-mono
cp -rvp bin/* /root/out/tools-mono
rm -rf bin
$SCONS platform=macos $OPTIONS $OPTIONS_MONO arch=x86_64 target=template_debug
$SCONS platform=macos $OPTIONS $OPTIONS_MONO arch=arm64 target=template_debug
lipo -create bin/godot.macos.template_debug.x86_64.mono bin/godot.macos.template_debug.arm64.mono -output bin/godot.macos.template_debug.universal.mono
$STRIP bin/godot.macos.template_debug.universal.mono
$SCONS platform=macos $OPTIONS $OPTIONS_MONO arch=x86_64 target=template_release
$SCONS platform=macos $OPTIONS $OPTIONS_MONO arch=arm64 target=template_release
lipo -create bin/godot.macos.template_release.x86_64.mono bin/godot.macos.template_release.arm64.mono -output bin/godot.macos.template_release.universal.mono
$STRIP bin/godot.macos.template_release.universal.mono
mkdir -p /root/out/templates-mono
cp -rvp bin/* /root/out/templates-mono
rm -rf bin
fi
echo "macOS build successful"

View File

@@ -1,100 +0,0 @@
#!/bin/bash
set -e
# Config
export SCONS="scons -j${NUM_CORES} verbose=yes warnings=no progress=no"
export OPTIONS="osxcross_sdk=darwin20.2 production=yes"
export OPTIONS_MONO="module_mono_enabled=yes mono_static=yes"
export MONO_PREFIX_X86_64="/root/mono-installs/desktop-osx-x86_64-release"
export MONO_PREFIX_ARM64="/root/mono-installs/desktop-osx-arm64-release"
export STRIP="x86_64-apple-darwin20.2-strip -u -r"
export TERM=xterm
rm -rf godot
mkdir godot
cd godot
tar xf /root/godot.tar.gz --strip-components=1
# Classical
if [ "${CLASSICAL}" == "1" ]; then
echo "Starting classical build for macOS..."
$SCONS platform=osx $OPTIONS arch=x86_64 tools=yes target=release_debug
$SCONS platform=osx $OPTIONS arch=arm64 tools=yes target=release_debug
lipo -create bin/godot.osx.opt.tools.x86_64 bin/godot.osx.opt.tools.arm64 -output bin/godot.osx.opt.tools.universal
$STRIP bin/godot.osx.opt.tools.universal
mkdir -p /root/out/tools
cp -rvp bin/* /root/out/tools
rm -rf bin
$SCONS platform=osx $OPTIONS arch=x86_64 tools=no target=release_debug
$SCONS platform=osx $OPTIONS arch=arm64 tools=no target=release_debug
lipo -create bin/godot.osx.opt.debug.x86_64 bin/godot.osx.opt.debug.arm64 -output bin/godot.osx.opt.debug.universal
$STRIP bin/godot.osx.opt.debug.universal
$SCONS platform=osx $OPTIONS arch=x86_64 tools=no target=release
$SCONS platform=osx $OPTIONS arch=arm64 tools=no target=release
lipo -create bin/godot.osx.opt.x86_64 bin/godot.osx.opt.arm64 -output bin/godot.osx.opt.universal
$STRIP bin/godot.osx.opt.universal
mkdir -p /root/out/templates
cp -rvp bin/* /root/out/templates
rm -rf bin
fi
# Mono
if [ "${MONO}" == "1" ]; then
echo "Starting Mono build for macOS..."
cp /root/mono-glue/*.cpp modules/mono/glue/
cp -r /root/mono-glue/GodotSharp/GodotSharp/Generated modules/mono/glue/GodotSharp/GodotSharp/
cp -r /root/mono-glue/GodotSharp/GodotSharpEditor/Generated modules/mono/glue/GodotSharp/GodotSharpEditor/
# Note: A bit of dylib wrangling involved as x86_64 and arm64 builds both generate GodotSharp
# so the second build overrides the first, but we need to lipo the libs to make them universal.
# We also need to ensure that /etc/mono/config has the proper filenames (keep arm64 as the last
# build so that we rely on its config, which has libmono-native.dylib instead of
# libmono-native-compat.dylib).
mkdir -p tmp-lib/{x86_64,arm64}
$SCONS platform=osx $OPTIONS $OPTIONS_MONO mono_prefix=$MONO_PREFIX_X86_64 arch=x86_64 tools=yes target=release_debug copy_mono_root=yes
cp bin/GodotSharp/Mono/lib/*.dylib tmp-lib/x86_64/
$SCONS platform=osx $OPTIONS $OPTIONS_MONO mono_prefix=$MONO_PREFIX_ARM64 arch=arm64 tools=yes target=release_debug copy_mono_root=yes
cp bin/GodotSharp/Mono/lib/*.dylib tmp-lib/arm64/
lipo -create bin/godot.osx.opt.tools.x86_64.mono bin/godot.osx.opt.tools.arm64.mono -output bin/godot.osx.opt.tools.universal.mono
$STRIP bin/godot.osx.opt.tools.universal.mono
# Make universal versions of the dylibs we use.
lipo -create tmp-lib/x86_64/libmono-native-compat.dylib tmp-lib/arm64/libmono-native.dylib -output tmp-lib/libmono-native.dylib
lipo -create tmp-lib/x86_64/libMonoPosixHelper.dylib tmp-lib/arm64/libMonoPosixHelper.dylib -output tmp-lib/libMonoPosixHelper.dylib
# Somehow only included in x86_64 build.
cp tmp-lib/x86_64/libmono-btls-shared.dylib tmp-lib/
cp -f tmp-lib/*.dylib bin/GodotSharp/Mono/lib/
mkdir -p /root/out/tools-mono
cp -rvp bin/* /root/out/tools-mono
rm -rf bin
$SCONS platform=osx $OPTIONS $OPTIONS_MONO mono_prefix=$MONO_PREFIX_X86_64 arch=x86_64 tools=no target=release_debug
$SCONS platform=osx $OPTIONS $OPTIONS_MONO mono_prefix=$MONO_PREFIX_ARM64 arch=arm64 tools=no target=release_debug
lipo -create bin/godot.osx.opt.debug.x86_64.mono bin/godot.osx.opt.debug.arm64.mono -output bin/godot.osx.opt.debug.universal.mono
$STRIP bin/godot.osx.opt.debug.universal.mono
$SCONS platform=osx $OPTIONS $OPTIONS_MONO mono_prefix=$MONO_PREFIX_X86_64 arch=x86_64 tools=no target=release
$SCONS platform=osx $OPTIONS $OPTIONS_MONO mono_prefix=$MONO_PREFIX_ARM64 arch=arm64 tools=no target=release
lipo -create bin/godot.osx.opt.x86_64.mono bin/godot.osx.opt.arm64.mono -output bin/godot.osx.opt.universal.mono
$STRIP bin/godot.osx.opt.universal.mono
cp -f tmp-lib/*.dylib bin/data.mono.osx.64.release/Mono/lib/
cp -f tmp-lib/*.dylib bin/data.mono.osx.64.release_debug/Mono/lib/
mkdir -p /root/out/templates-mono
cp -rvp bin/* /root/out/templates-mono
rm -rf bin
fi
echo "macOS build successful"

View File

@@ -8,24 +8,32 @@ export SCONS="scons -j${NUM_CORES} verbose=yes warnings=no progress=no"
export OPTIONS="debug_symbols=no use_static_cpp=no"
export TERM=xterm
export DISPLAY=:0
export PATH="${GODOT_SDK_LINUX_X86_64}/bin:${BASE_PATH}"
rm -rf godot
mkdir godot
cd godot
tar xf ../godot.tar.gz --strip-components=1
# pkg-config wrongly points to lib instead of lib64 for arch-dependent header.
sed -i ${GODOT_SDK_LINUX_X86_64}/x86_64-godot-linux-gnu/sysroot/usr/lib/pkgconfig/dbus-1.pc -e "s@/lib@/lib64@g"
# Temporarily until we make --headless mode actually skip X11.
dnf install -y libX11 libXcursor libXrandr libXinerama libXi mesa-libGL
dnf -y install gettext
# Mono
if [ "${MONO}" == "1" ]; then
echo "Building and generating Mono glue..."
mono --version
dotnet --info
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/pkgconfig/
${SCONS} platform=x11 bits=64 ${OPTIONS} target=release_debug tools=yes module_mono_enabled=yes mono_glue=no
${SCONS} platform=linuxbsd ${OPTIONS} target=editor module_mono_enabled=yes
rm -rf /root/mono-glue/*
xvfb-run bin/godot.x11.opt.tools.64.mono --audio-driver Dummy --generate-mono-glue /root/mono-glue || /bin/true
bin/godot.linuxbsd.editor.x86_64.mono --headless --generate-mono-glue /root/mono-glue
fi
echo "Mono glue generated successfully"

View File

@@ -1,6 +1,7 @@
#!/bin/bash
set -e
export basedir=$(pwd)
# Config
@@ -26,7 +27,7 @@ sign_macos() {
if [ -z "${OSX_HOST}" ]; then
return
fi
_osx_tmpdir=$(ssh "${OSX_HOST}" "mktemp -d")
_macos_tmpdir=$(ssh "${OSX_HOST}" "mktemp -d")
_reldir="$1"
_binname="$2"
_is_mono="$3"
@@ -34,37 +35,35 @@ sign_macos() {
if [[ "${_is_mono}" == "1" ]]; then
_appname="Godot_mono.app"
_sharpdir="${_appname}/Contents/Resources/GodotSharp"
_extra_files="${_sharpdir}/Mono/lib/*.dylib ${_sharpdir}/Tools/aot-compilers/*/*"
else
_appname="Godot.app"
fi
scp "${_reldir}/${_binname}.zip" "${OSX_HOST}:${_osx_tmpdir}"
scp "${basedir}/git/misc/dist/osx/editor.entitlements" "${OSX_HOST}:${_osx_tmpdir}"
scp "${_reldir}/${_binname}.zip" "${OSX_HOST}:${_macos_tmpdir}"
scp "${basedir}/git/misc/dist/macos/editor.entitlements" "${OSX_HOST}:${_macos_tmpdir}"
ssh "${OSX_HOST}" "
cd ${_osx_tmpdir} && \
cd ${_macos_tmpdir} && \
unzip ${_binname}.zip && \
codesign --force --timestamp \
--options=runtime --entitlements editor.entitlements \
-s ${OSX_KEY_ID} -v ${_extra_files} ${_appname} && \
-s ${OSX_KEY_ID} -v ${_appname} && \
zip -r ${_binname}_signed.zip ${_appname}"
_request_uuid=$(ssh "${OSX_HOST}" "xcrun altool --notarize-app --primary-bundle-id \"${OSX_BUNDLE_ID}\" --username \"${APPLE_ID}\" --password \"${APPLE_ID_PASSWORD}\" --file ${_osx_tmpdir}/${_binname}_signed.zip")
_request_uuid=$(echo ${_request_uuid} | sed -e 's/.*RequestUUID = //')
ssh "${OSX_HOST}" "while xcrun altool --notarization-info ${_request_uuid} -u \"${APPLE_ID}\" -p \"${APPLE_ID_PASSWORD}\" | grep -q Status:\ in\ progress; do echo Waiting on Apple notarization...; sleep 30s; done"
if ! ssh "${OSX_HOST}" "xcrun altool --notarization-info ${_request_uuid} -u \"${APPLE_ID}\" -p \"${APPLE_ID_PASSWORD}\" | grep -q Status:\ success"; then
_request_uuid=$(ssh "${OSX_HOST}" "xcrun notarytool submit ${_macos_tmpdir}/${_binname}_signed.zip --team-id \"${APPLE_TEAM}\" --apple-id \"${APPLE_ID}\" --password \"${APPLE_ID_PASSWORD}\" --no-progress --output-format json")
_request_uuid=$(echo ${_request_uuid} | sed -e 's/.*"id":"\([^"]*\)".*/\1/')
if ! ssh "${OSX_HOST}" "xcrun notarytool wait ${_request_uuid} --team-id \"${APPLE_TEAM}\" --apple-id \"${APPLE_ID}\" --password \"${APPLE_ID_PASSWORD}\" | grep -q status:\ Accepted"; then
echo "Notarization failed."
_notarization_log=$(ssh "${OSX_HOST}" "xcrun altool --notarization-info ${_request_uuid} -u \"${APPLE_ID}\" -p \"${APPLE_ID_PASSWORD}\"")
_notarization_log=$(ssh "${OSX_HOST}" "xcrun notarytool log ${_request_uuid} --team-id \"${APPLE_TEAM}\" --apple-id \"${APPLE_ID}\" --password \"${APPLE_ID_PASSWORD}\"")
echo "${_notarization_log}"
ssh "${OSX_HOST}" "rm -rf ${_osx_tmpdir}"
ssh "${OSX_HOST}" "rm -rf ${_macos_tmpdir}"
exit 1
else
ssh "${OSX_HOST}" "
cd ${_osx_tmpdir} && \
cd ${_macos_tmpdir} && \
xcrun stapler staple ${_appname} && \
zip -r ${_binname}_stapled.zip ${_appname}"
scp "${OSX_HOST}:${_osx_tmpdir}/${_binname}_stapled.zip" "${_reldir}/${_binname}.zip"
ssh "${OSX_HOST}" "rm -rf ${_osx_tmpdir}"
scp "${OSX_HOST}:${_macos_tmpdir}/${_binname}_stapled.zip" "${_reldir}/${_binname}.zip"
ssh "${OSX_HOST}" "rm -rf ${_macos_tmpdir}"
fi
}
@@ -72,40 +71,74 @@ sign_macos_template() {
if [ -z "${OSX_HOST}" ]; then
return
fi
_osx_tmpdir=$(ssh "${OSX_HOST}" "mktemp -d")
_macos_tmpdir=$(ssh "${OSX_HOST}" "mktemp -d")
_reldir="$1"
_is_mono="$2"
if [[ "${_is_mono}" == "1" ]]; then
_extra_files="osx_template.app/Contents/Resources/data.mono.*/Mono/lib/*.dylib"
fi
scp "${_reldir}/osx.zip" "${OSX_HOST}:${_osx_tmpdir}"
scp "${_reldir}/macos.zip" "${OSX_HOST}:${_macos_tmpdir}"
ssh "${OSX_HOST}" "
cd ${_osx_tmpdir} && \
unzip osx.zip && \
cd ${_macos_tmpdir} && \
unzip macos.zip && \
codesign --force -s - \
--options=linker-signed \
-v ${_extra_files} osx_template.app/Contents/MacOS/* && \
zip -r osx_signed.zip osx_template.app"
-v macos_template.app/Contents/MacOS/* && \
zip -r macos_signed.zip macos_template.app"
scp "${OSX_HOST}:${_osx_tmpdir}/osx_signed.zip" "${_reldir}/osx.zip"
ssh "${OSX_HOST}" "rm -rf ${_osx_tmpdir}"
scp "${OSX_HOST}:${_macos_tmpdir}/macos_signed.zip" "${_reldir}/macos.zip"
ssh "${OSX_HOST}" "rm -rf ${_macos_tmpdir}"
}
can_publish_nuget=0
if [ ! -z "${NUGET_SOURCE}" ] && [ ! -z "${NUGET_API_KEY}" ] && [[ $(type -P "dotnet") ]]; then
can_publish_nuget=1
else
echo "Disabling NuGet package publishing as config.sh does not define the required data (NUGET_SOURCE, NUGET_API_KEY), or dotnet can't be found in PATH."
fi
publish_nuget_packages() {
if [ $can_publish_nuget == 0 ]; then
return
fi
for pkg in "$@"; do
dotnet nuget push $pkg --source "${NUGET_SOURCE}" --api-key "${NUGET_API_KEY}" --skip-duplicate
done
}
can_publish_maven=0
if [ ! -d "${basedir}/deps/keystore" ]; then
echo "Disabling Android library publishing as ${basedir}/deps/keystore doesn't exist."
else
can_publish_maven=1
fi
publish_maven_library() {
if [ $can_publish_maven == 0 ]; then
return
fi
# FIXME: Might be worth reworking the script to make it all sudo-safe and use appropriate users throughout.
sudo sh build-android/upload-mavencentral.sh
}
godot_version=""
templates_version=""
do_cleanup=1
make_tarball=1
build_classical=1
build_mono=1
publish_nuget=0
publish_maven=0
while getopts "h?v:t:b:" opt; do
while getopts "h?v:t:b:p:n-:" opt; do
case "$opt" in
h|\?)
echo "Usage: $0 [OPTIONS...]"
echo
echo " -v godot version (e.g: 3.2-stable) [mandatory]"
echo " -t templates version (e.g. 3.2.stable) [mandatory]"
echo " -b all|classical|mono (default: all)"
echo " -b build target: all|classical|mono|none (default: all)"
echo " -p publish target: all|nuget|maven|none (default: none)"
echo " --no-cleanup disable deleting pre-existing output folders (default: false)"
echo " --no-tarball disable generating source tarball (default: false)"
echo
exit 1
;;
@@ -120,8 +153,37 @@ while getopts "h?v:t:b:" opt; do
build_mono=0
elif [ "$OPTARG" == "mono" ]; then
build_classical=0
elif [ "$OPTARG" == "none" ]; then
build_classical=0
build_mono=0
fi
;;
p)
if [ "$OPTARG" == "nuget" ]; then
publish_nuget=1
elif [ "$OPTARG" == "maven" ]; then
publish_maven=1
elif [ "$OPTARG" == "all" ]; then
publish_nuget=1
publish_maven=1
fi
;;
-)
case "${OPTARG}" in
no-cleanup)
do_cleanup=0
;;
no-tarball)
make_tarball=0
;;
*)
if [ "$OPTERR" == 1 ] && [ "${optspec:0:1}" != ":" ]; then
echo "Unknown option --${OPTARG}."
exit 1
fi
;;
esac
;;
esac
done
@@ -133,7 +195,6 @@ elif [[ "{$templates_version}" == *"-"* ]]; then
exit 1
fi
export basedir=$(pwd)
export webdir="${basedir}/web/${templates_version}"
export reldir="${basedir}/releases/${godot_version}"
export reldir_mono="${reldir}/mono"
@@ -145,22 +206,30 @@ export godot_basename="Godot_v${godot_version}"
# Cleanup and setup
rm -rf ${webdir}
rm -rf ${reldir}
rm -rf ${tmpdir}
if [ "${do_cleanup}" == "1" ]; then
mkdir -p ${webdir}
mkdir -p ${reldir}
mkdir -p ${reldir_mono}
mkdir -p ${templatesdir}
mkdir -p ${templatesdir_mono}
rm -rf ${webdir}
rm -rf ${reldir}
rm -rf ${tmpdir}
mkdir -p ${webdir}
mkdir -p ${reldir}
mkdir -p ${reldir_mono}
mkdir -p ${templatesdir}
mkdir -p ${templatesdir_mono}
fi
# Tarball
zcat godot-${godot_version}.tar.gz | xz -c > ${reldir}/godot-${godot_version}.tar.xz
pushd ${reldir}
sha256sum godot-${godot_version}.tar.xz > godot-${godot_version}.tar.xz.sha256
popd
if [ "${make_tarball}" == "1" ]; then
zcat godot-${godot_version}.tar.gz | xz -c > ${reldir}/godot-${godot_version}.tar.xz
pushd ${reldir}
sha256sum godot-${godot_version}.tar.xz > godot-${godot_version}.tar.xz.sha256
popd
fi
# Classical
@@ -169,112 +238,111 @@ if [ "${build_classical}" == "1" ]; then
## Linux (Classical) ##
# Editor
binname="${godot_basename}_x11.64"
cp out/linux/x64/tools/godot.x11.opt.tools.64 ${binname}
binname="${godot_basename}_linux.x86_64"
cp out/linux/x86_64/tools/godot.linuxbsd.editor.x86_64 ${binname}
strip ${binname}
zip -q -9 "${reldir}/${binname}.zip" ${binname}
rm ${binname}
binname="${godot_basename}_x11.32"
cp out/linux/x86/tools/godot.x11.opt.tools.32 ${binname}
binname="${godot_basename}_linux.x86_32"
cp out/linux/x86_32/tools/godot.linuxbsd.editor.x86_32 ${binname}
strip ${binname}
zip -q -9 "${reldir}/${binname}.zip" ${binname}
rm ${binname}
# Templates
cp out/linux/x64/templates/godot.x11.opt.64 ${templatesdir}/linux_x11_64_release
cp out/linux/x64/templates/godot.x11.opt.debug.64 ${templatesdir}/linux_x11_64_debug
cp out/linux/x86/templates/godot.x11.opt.32 ${templatesdir}/linux_x11_32_release
cp out/linux/x86/templates/godot.x11.opt.debug.32 ${templatesdir}/linux_x11_32_debug
strip ${templatesdir}/linux_x11_*
cp out/linux/x86_64/templates/godot.linuxbsd.template_release.x86_64 ${templatesdir}/linux_release.x86_64
cp out/linux/x86_64/templates/godot.linuxbsd.template_debug.x86_64 ${templatesdir}/linux_debug.x86_64
cp out/linux/x86_32/templates/godot.linuxbsd.template_release.x86_32 ${templatesdir}/linux_release.x86_32
cp out/linux/x86_32/templates/godot.linuxbsd.template_debug.x86_32 ${templatesdir}/linux_debug.x86_32
strip ${templatesdir}/linux*
## Windows (Classical) ##
# Editor
binname="${godot_basename}_win64.exe"
cp out/windows/x64/tools/godot.windows.opt.tools.64.exe ${binname}
wrpname="${godot_basename}_win64_console.exe"
cp out/windows/x86_64/tools/godot.windows.editor.x86_64.exe ${binname}
strip ${binname}
sign_windows ${binname}
zip -q -9 "${reldir}/${binname}.zip" ${binname}
rm ${binname}
cp out/windows/x86_64/tools/godot.windows.editor.x86_64.console.exe ${wrpname}
strip ${wrpname}
sign_windows ${wrpname}
zip -q -9 "${reldir}/${binname}.zip" ${binname} ${wrpname}
rm ${binname} ${wrpname}
binname="${godot_basename}_win32.exe"
cp out/windows/x86/tools/godot.windows.opt.tools.32.exe ${binname}
wrpname="${godot_basename}_win32_console.exe"
cp out/windows/x86_32/tools/godot.windows.editor.x86_32.exe ${binname}
strip ${binname}
sign_windows ${binname}
zip -q -9 "${reldir}/${binname}.zip" ${binname}
rm ${binname}
cp out/windows/x86_32/tools/godot.windows.editor.x86_32.console.exe ${wrpname}
strip ${wrpname}
sign_windows ${wrpname}
zip -q -9 "${reldir}/${binname}.zip" ${binname} ${wrpname}
rm ${binname} ${wrpname}
# Templates
cp out/windows/x64/templates/godot.windows.opt.64.exe ${templatesdir}/windows_64_release.exe
cp out/windows/x64/templates/godot.windows.opt.debug.64.exe ${templatesdir}/windows_64_debug.exe
cp out/windows/x86/templates/godot.windows.opt.32.exe ${templatesdir}/windows_32_release.exe
cp out/windows/x86/templates/godot.windows.opt.debug.32.exe ${templatesdir}/windows_32_debug.exe
cp out/windows/x86_64/templates/godot.windows.template_release.x86_64.exe ${templatesdir}/windows_release_x86_64.exe
cp out/windows/x86_64/templates/godot.windows.template_debug.x86_64.exe ${templatesdir}/windows_debug_x86_64.exe
cp out/windows/x86_32/templates/godot.windows.template_release.x86_32.exe ${templatesdir}/windows_release_x86_32.exe
cp out/windows/x86_32/templates/godot.windows.template_debug.x86_32.exe ${templatesdir}/windows_debug_x86_32.exe
cp out/windows/x86_64/templates/godot.windows.template_release.x86_64.console.exe ${templatesdir}/windows_release_x86_64_console.exe
cp out/windows/x86_64/templates/godot.windows.template_debug.x86_64.console.exe ${templatesdir}/windows_debug_x86_64_console.exe
cp out/windows/x86_32/templates/godot.windows.template_release.x86_32.console.exe ${templatesdir}/windows_release_x86_32_console.exe
cp out/windows/x86_32/templates/godot.windows.template_debug.x86_32.console.exe ${templatesdir}/windows_debug_x86_32_console.exe
strip ${templatesdir}/windows*.exe
## OSX (Classical) ##
## macOS (Classical) ##
# Editor
binname="${godot_basename}_osx.universal"
binname="${godot_basename}_macos.universal"
rm -rf Godot.app
cp -r git/misc/dist/osx_tools.app Godot.app
cp -r git/misc/dist/macos_tools.app Godot.app
mkdir -p Godot.app/Contents/MacOS
cp out/macosx/tools/godot.osx.opt.tools.universal Godot.app/Contents/MacOS/Godot
cp out/macos/tools/godot.macos.editor.universal Godot.app/Contents/MacOS/Godot
chmod +x Godot.app/Contents/MacOS/Godot
zip -q -9 -r "${reldir}/${binname}.zip" Godot.app
rm -rf Godot.app
sign_macos ${reldir} ${binname} 0
# Templates
rm -rf osx_template.app
cp -r git/misc/dist/osx_template.app .
mkdir -p osx_template.app/Contents/MacOS
rm -rf macos_template.app
cp -r git/misc/dist/macos_template.app .
mkdir -p macos_template.app/Contents/MacOS
cp out/macosx/templates/godot.osx.opt.universal osx_template.app/Contents/MacOS/godot_osx_release.64
cp out/macosx/templates/godot.osx.opt.debug.universal osx_template.app/Contents/MacOS/godot_osx_debug.64
chmod +x osx_template.app/Contents/MacOS/godot_osx*
zip -q -9 -r "${templatesdir}/osx.zip" osx_template.app
rm -rf osx_template.app
cp out/macos/templates/godot.macos.template_release.universal macos_template.app/Contents/MacOS/godot_macos_release.universal
cp out/macos/templates/godot.macos.template_debug.universal macos_template.app/Contents/MacOS/godot_macos_debug.universal
chmod +x macos_template.app/Contents/MacOS/godot_macos*
zip -q -9 -r "${templatesdir}/macos.zip" macos_template.app
rm -rf macos_template.app
sign_macos_template ${templatesdir} 0
## Server (Classical) ##
# Headless (editor)
binname="${godot_basename}_linux_headless.64"
cp out/server/x64/tools/godot_server.x11.opt.tools.64 ${binname}
strip ${binname}
zip -q -9 "${reldir}/${binname}.zip" ${binname}
rm ${binname}
# Server (template)
binname="${godot_basename}_linux_server.64"
cp out/server/x64/templates/godot_server.x11.opt.64 ${binname}
strip ${binname}
zip -q -9 "${reldir}/${binname}.zip" ${binname}
rm ${binname}
## Javascript (Classical) ##
## Web (Classical) ##
# Editor
unzip out/javascript/tools/godot.javascript.opt.tools.threads.zip -d ${webdir}/
unzip out/web/tools/godot.web.editor.wasm32.zip -d ${webdir}/
brotli --keep --force --quality=11 ${webdir}/*
binname="${godot_basename}_web_editor.zip"
cp out/javascript/tools/godot.javascript.opt.tools.threads.zip ${reldir}/${binname}
cp out/web/tools/godot.web.editor.wasm32.zip ${reldir}/${binname}
# Templates
cp out/javascript/templates/godot.javascript.opt.zip ${templatesdir}/webassembly_release.zip
cp out/javascript/templates/godot.javascript.opt.debug.zip ${templatesdir}/webassembly_debug.zip
cp out/web/templates/godot.web.template_release.wasm32.zip ${templatesdir}/web_release.zip
cp out/web/templates/godot.web.template_debug.wasm32.zip ${templatesdir}/web_debug.zip
cp out/javascript/templates/godot.javascript.opt.threads.zip ${templatesdir}/webassembly_threads_release.zip
cp out/javascript/templates/godot.javascript.opt.debug.threads.zip ${templatesdir}/webassembly_threads_debug.zip
cp out/javascript/templates/godot.javascript.opt.gdnative.zip ${templatesdir}/webassembly_gdnative_release.zip
cp out/javascript/templates/godot.javascript.opt.debug.gdnative.zip ${templatesdir}/webassembly_gdnative_debug.zip
cp out/web/templates/godot.web.template_release.wasm32.dlink.zip ${templatesdir}/web_dlink_release.zip
cp out/web/templates/godot.web.template_debug.wasm32.dlink.zip ${templatesdir}/web_dlink_debug.zip
## Android (Classical) ##
# Lib for direct download
cp out/android/templates/godot-lib.release.aar ${reldir}/godot-lib.${templates_version}.release.aar
cp out/android/templates/godot-lib.template_release.aar ${reldir}/godot-lib.${templates_version}.template_release.aar
# Editor
binname="${godot_basename}_android_editor.apk"
cp out/android/tools/android_editor.apk ${reldir}/${binname}
binname="${godot_basename}_android_editor.aab"
cp out/android/tools/android_editor.aab ${reldir}/${binname}
# Templates
cp out/android/templates/*.apk ${templatesdir}/
@@ -284,52 +352,17 @@ if [ "${build_classical}" == "1" ]; then
rm -rf ios_xcode
cp -r git/misc/dist/ios_xcode ios_xcode
cp out/ios/templates/libgodot.iphone.simulator.a ios_xcode/libgodot.iphone.release.xcframework/ios-arm64_x86_64-simulator/libgodot.a
cp out/ios/templates/libgodot.iphone.debug.simulator.a ios_xcode/libgodot.iphone.debug.xcframework/ios-arm64_x86_64-simulator/libgodot.a
cp out/ios/templates/libgodot.iphone.a ios_xcode/libgodot.iphone.release.xcframework/ios-arm64/libgodot.a
cp out/ios/templates/libgodot.iphone.debug.a ios_xcode/libgodot.iphone.debug.xcframework/ios-arm64/libgodot.a
cp out/ios/templates/libgodot.ios.simulator.a ios_xcode/libgodot.ios.release.xcframework/ios-arm64_x86_64-simulator/libgodot.a
cp out/ios/templates/libgodot.ios.debug.simulator.a ios_xcode/libgodot.ios.debug.xcframework/ios-arm64_x86_64-simulator/libgodot.a
cp out/ios/templates/libgodot.ios.a ios_xcode/libgodot.ios.release.xcframework/ios-arm64/libgodot.a
cp out/ios/templates/libgodot.ios.debug.a ios_xcode/libgodot.ios.debug.xcframework/ios-arm64/libgodot.a
cp -r deps/vulkansdk-macos/MoltenVK/MoltenVK.xcframework ios_xcode/
rm -rf ios_xcode/MoltenVK.xcframework/{macos,tvos}*
cd ios_xcode
zip -q -9 -r "${templatesdir}/iphone.zip" *
zip -q -9 -r "${templatesdir}/ios.zip" *
cd ..
rm -rf ios_xcode
## UWP (Classical) ##
if [ ! -d "deps/angle" ]; then
echo "Downloading ANGLE binaries from https://github.com/GodotBuilder/godot-builds/releases/tag/_tools"
mkdir -p deps && cd deps
curl -LO https://github.com/GodotBuilder/godot-builds/releases/download/_tools/angle.7z
7z x angle.7z && rm -f angle.7z
cd ..
fi
rm -rf uwp_template_*
for arch in ARM Win32 x64; do
cp -r git/misc/dist/uwp_template uwp_template_${arch}
cp deps/angle/winrt/10/src/Release_${arch}/libEGL.dll \
deps/angle/winrt/10/src/Release_${arch}/libGLESv2.dll \
uwp_template_${arch}/
cp -r uwp_template_${arch} uwp_template_${arch}_debug
done
cp out/uwp/arm/godot.uwp.opt.32.arm.exe uwp_template_ARM/godot.uwp.exe
cp out/uwp/arm/godot.uwp.opt.debug.32.arm.exe uwp_template_ARM_debug/godot.uwp.exe
cd uwp_template_ARM && zip -q -9 -r "${templatesdir}/uwp_arm_release.zip" * && cd ..
cd uwp_template_ARM_debug && zip -q -9 -r "${templatesdir}/uwp_arm_debug.zip" * && cd ..
rm -rf uwp_template_ARM*
cp out/uwp/x86/godot.uwp.opt.32.x86.exe uwp_template_Win32/godot.uwp.exe
cp out/uwp/x86/godot.uwp.opt.debug.32.x86.exe uwp_template_Win32_debug/godot.uwp.exe
cd uwp_template_Win32 && zip -q -9 -r "${templatesdir}/uwp_x86_release.zip" * && cd ..
cd uwp_template_Win32_debug && zip -q -9 -r "${templatesdir}/uwp_x86_debug.zip" * && cd ..
rm -rf uwp_template_Win32*
cp out/uwp/x64/godot.uwp.opt.64.x64.exe uwp_template_x64/godot.uwp.exe
cp out/uwp/x64/godot.uwp.opt.debug.64.x64.exe uwp_template_x64_debug/godot.uwp.exe
cd uwp_template_x64 && zip -q -9 -r "${templatesdir}/uwp_x64_release.zip" * && cd ..
cd uwp_template_x64_debug && zip -q -9 -r "${templatesdir}/uwp_x64_debug.zip" * && cd ..
rm -rf uwp_template_x64*
## Templates TPZ (Classical) ##
echo "${templates_version}" > ${templatesdir}/version.txt
@@ -354,161 +387,129 @@ if [ "${build_mono}" == "1" ]; then
## Linux (Mono) ##
# Editor
binbasename="${godot_basename}_mono_x11"
mkdir -p ${binbasename}_64
cp out/linux/x64/tools-mono/godot.x11.opt.tools.64.mono ${binbasename}_64/${binbasename}.64
strip ${binbasename}_64/${binbasename}.64
cp -rp out/linux/x64/tools-mono/GodotSharp ${binbasename}_64/
cp -rp out/aot-compilers ${binbasename}_64/GodotSharp/Tools/
zip -r -q -9 "${reldir_mono}/${binbasename}_64.zip" ${binbasename}_64
rm -rf ${binbasename}_64
binbasename="${godot_basename}_mono_linux"
mkdir -p ${binbasename}_x86_64
cp out/linux/x86_64/tools-mono/godot.linuxbsd.editor.x86_64.mono ${binbasename}_x86_64/${binbasename}.x86_64
strip ${binbasename}_x86_64/${binbasename}.x86_64
cp -rp out/linux/x86_64/tools-mono/GodotSharp ${binbasename}_x86_64/
zip -r -q -9 "${reldir_mono}/${binbasename}_x86_64.zip" ${binbasename}_x86_64
rm -rf ${binbasename}_x86_64
binbasename="${godot_basename}_mono_x11"
mkdir -p ${binbasename}_32
cp out/linux/x86/tools-mono/godot.x11.opt.tools.32.mono ${binbasename}_32/${binbasename}.32
strip ${binbasename}_32/${binbasename}.32
cp -rp out/linux/x86/tools-mono/GodotSharp/ ${binbasename}_32/
cp -rp out/aot-compilers ${binbasename}_32/GodotSharp/Tools/
zip -r -q -9 "${reldir_mono}/${binbasename}_32.zip" ${binbasename}_32
rm -rf ${binbasename}_32
binbasename="${godot_basename}_mono_linux"
mkdir -p ${binbasename}_x86_32
cp out/linux/x86_32/tools-mono/godot.linuxbsd.editor.x86_32.mono ${binbasename}_x86_32/${binbasename}.x86_32
strip ${binbasename}_x86_32/${binbasename}.x86_32
cp -rp out/linux/x86_32/tools-mono/GodotSharp/ ${binbasename}_x86_32/
zip -r -q -9 "${reldir_mono}/${binbasename}_x86_32.zip" ${binbasename}_x86_32
rm -rf ${binbasename}_x86_32
# Templates
cp -rp out/linux/x64/templates-mono/data.mono.x11.64.* ${templatesdir_mono}/
cp out/linux/x64/templates-mono/godot.x11.opt.debug.64.mono ${templatesdir_mono}/linux_x11_64_debug
cp out/linux/x64/templates-mono/godot.x11.opt.64.mono ${templatesdir_mono}/linux_x11_64_release
cp -rp out/linux/x86/templates-mono/data.mono.x11.32.* ${templatesdir_mono}/
cp out/linux/x86/templates-mono/godot.x11.opt.debug.32.mono ${templatesdir_mono}/linux_x11_32_debug
cp out/linux/x86/templates-mono/godot.x11.opt.32.mono ${templatesdir_mono}/linux_x11_32_release
strip ${templatesdir_mono}/linux_x11*
mkdir -p ${templatesdir_mono}/bcl
cp -r out/linux/x64/tools-mono/GodotSharp/Mono/lib/mono/4.5/ ${templatesdir_mono}/bcl/net_4_x
cp out/linux/x86_64/templates-mono/godot.linuxbsd.template_debug.x86_64.mono ${templatesdir_mono}/linux_debug.x86_64
cp out/linux/x86_64/templates-mono/godot.linuxbsd.template_release.x86_64.mono ${templatesdir_mono}/linux_release.x86_64
cp out/linux/x86_32/templates-mono/godot.linuxbsd.template_debug.x86_32.mono ${templatesdir_mono}/linux_debug.x86_32
cp out/linux/x86_32/templates-mono/godot.linuxbsd.template_release.x86_32.mono ${templatesdir_mono}/linux_release.x86_32
strip ${templatesdir_mono}/linux*
## Windows (Mono) ##
# Editor
binname="${godot_basename}_mono_win64"
wrpname="${godot_basename}_mono_win64_console"
mkdir -p ${binname}
cp out/windows/x64/tools-mono/godot.windows.opt.tools.64.mono.exe ${binname}/${binname}.exe
cp out/windows/x86_64/tools-mono/godot.windows.editor.x86_64.mono.exe ${binname}/${binname}.exe
strip ${binname}/${binname}.exe
sign_windows ${binname}/${binname}.exe
cp -rp out/windows/x64/tools-mono/GodotSharp ${binname}/
cp -rp out/aot-compilers ${binname}/GodotSharp/Tools/
cp -rp out/windows/x86_64/tools-mono/GodotSharp ${binname}/
cp out/windows/x86_64/tools-mono/godot.windows.editor.x86_64.mono.console.exe ${binname}/${wrpname}.exe
strip ${binname}/${wrpname}.exe
sign_windows ${binname}/${wrpname}.exe
zip -r -q -9 "${reldir_mono}/${binname}.zip" ${binname}
rm -rf ${binname}
binname="${godot_basename}_mono_win32"
wrpname="${godot_basename}_mono_win32_console"
mkdir -p ${binname}
cp out/windows/x86/tools-mono/godot.windows.opt.tools.32.mono.exe ${binname}/${binname}.exe
cp out/windows/x86_32/tools-mono/godot.windows.editor.x86_32.mono.exe ${binname}/${binname}.exe
strip ${binname}/${binname}.exe
sign_windows ${binname}/${binname}.exe
cp -rp out/windows/x86/tools-mono/GodotSharp ${binname}/
cp -rp out/aot-compilers ${binname}/GodotSharp/Tools/
cp -rp out/windows/x86_32/tools-mono/GodotSharp ${binname}/
cp out/windows/x86_32/tools-mono/godot.windows.editor.x86_32.mono.console.exe ${binname}/${wrpname}.exe
strip ${binname}/${wrpname}.exe
sign_windows ${binname}/${wrpname}.exe
zip -r -q -9 "${reldir_mono}/${binname}.zip" ${binname}
rm -rf ${binname}
# Templates
cp -rp out/windows/x64/templates-mono/data.mono.windows.64.* ${templatesdir_mono}/
cp out/windows/x64/templates-mono/godot.windows.opt.debug.64.mono.exe ${templatesdir_mono}/windows_64_debug.exe
cp out/windows/x64/templates-mono/godot.windows.opt.64.mono.exe ${templatesdir_mono}/windows_64_release.exe
cp -rp out/windows/x86/templates-mono/data.mono.windows.32.* ${templatesdir_mono}/
cp out/windows/x86/templates-mono/godot.windows.opt.debug.32.mono.exe ${templatesdir_mono}/windows_32_debug.exe
cp out/windows/x86/templates-mono/godot.windows.opt.32.mono.exe ${templatesdir_mono}/windows_32_release.exe
cp out/windows/x86_64/templates-mono/godot.windows.template_debug.x86_64.mono.exe ${templatesdir_mono}/windows_debug_x86_64.exe
cp out/windows/x86_64/templates-mono/godot.windows.template_release.x86_64.mono.exe ${templatesdir_mono}/windows_release_x86_64.exe
cp out/windows/x86_32/templates-mono/godot.windows.template_debug.x86_32.mono.exe ${templatesdir_mono}/windows_debug_x86_32.exe
cp out/windows/x86_32/templates-mono/godot.windows.template_release.x86_32.mono.exe ${templatesdir_mono}/windows_release_x86_32.exe
cp out/windows/x86_64/templates-mono/godot.windows.template_debug.x86_64.mono.console.exe ${templatesdir_mono}/windows_debug_x86_64_console.exe
cp out/windows/x86_64/templates-mono/godot.windows.template_release.x86_64.mono.console.exe ${templatesdir_mono}/windows_release_x86_64_console.exe
cp out/windows/x86_32/templates-mono/godot.windows.template_debug.x86_32.mono.console.exe ${templatesdir_mono}/windows_debug_x86_32_console.exe
cp out/windows/x86_32/templates-mono/godot.windows.template_release.x86_32.mono.console.exe ${templatesdir_mono}/windows_release_x86_32_console.exe
strip ${templatesdir_mono}/windows*.exe
mkdir -p ${templatesdir_mono}/bcl
cp -r out/windows/x64/tools-mono/GodotSharp/Mono/lib/mono/4.5/ ${templatesdir_mono}/bcl/net_4_x_win
## OSX (Mono) ##
## macOS (Mono) ##
# Editor
binname="${godot_basename}_mono_osx.universal"
binname="${godot_basename}_mono_macos.universal"
rm -rf Godot_mono.app
cp -r git/misc/dist/osx_tools.app Godot_mono.app
cp -r git/misc/dist/macos_tools.app Godot_mono.app
mkdir -p Godot_mono.app/Contents/{MacOS,Resources}
cp out/macosx/tools-mono/godot.osx.opt.tools.universal.mono Godot_mono.app/Contents/MacOS/Godot
cp -rp out/macosx/tools-mono/GodotSharp Godot_mono.app/Contents/Resources/GodotSharp
cp -rp out/aot-compilers Godot_mono.app/Contents/Resources/GodotSharp/Tools/
cp out/macos/tools-mono/godot.macos.editor.universal.mono Godot_mono.app/Contents/MacOS/Godot
cp -rp out/macos/tools-mono/GodotSharp Godot_mono.app/Contents/Resources/GodotSharp
chmod +x Godot_mono.app/Contents/MacOS/Godot
zip -q -9 -r "${reldir_mono}/${binname}.zip" Godot_mono.app
rm -rf Godot_mono.app
sign_macos ${reldir_mono} ${binname} 1
# Templates
rm -rf osx_template.app
cp -r git/misc/dist/osx_template.app .
mkdir -p osx_template.app/Contents/{MacOS,Resources}
cp out/macosx/templates-mono/godot.osx.opt.debug.universal.mono osx_template.app/Contents/MacOS/godot_osx_debug.64
cp out/macosx/templates-mono/godot.osx.opt.universal.mono osx_template.app/Contents/MacOS/godot_osx_release.64
cp -rp out/macosx/templates-mono/data.mono.osx.64.* osx_template.app/Contents/Resources/
chmod +x osx_template.app/Contents/MacOS/godot_osx*
zip -q -9 -r "${templatesdir_mono}/osx.zip" osx_template.app
rm -rf osx_template.app
rm -rf macos_template.app
cp -r git/misc/dist/macos_template.app .
mkdir -p macos_template.app/Contents/{MacOS,Resources}
cp out/macos/templates-mono/godot.macos.template_debug.universal.mono macos_template.app/Contents/MacOS/godot_macos_debug.universal
cp out/macos/templates-mono/godot.macos.template_release.universal.mono macos_template.app/Contents/MacOS/godot_macos_release.universal
chmod +x macos_template.app/Contents/MacOS/godot_macos*
zip -q -9 -r "${templatesdir_mono}/macos.zip" macos_template.app
rm -rf macos_template.app
sign_macos_template ${templatesdir_mono} 1
## Server (Mono) ##
# No .NET support for those platforms yet.
# Headless (editor)
binbasename="${godot_basename}_mono_linux_headless"
mkdir -p ${binbasename}_64
cp out/server/x64/tools-mono/godot_server.x11.opt.tools.64.mono ${binbasename}_64/${binbasename}.64
strip ${binbasename}_64/${binbasename}.64
cp -rp out/server/x64/tools-mono/GodotSharp ${binbasename}_64/
cp -rp out/aot-compilers ${binbasename}_64/GodotSharp/Tools/
zip -r -q -9 "${reldir_mono}/${binbasename}_64.zip" ${binbasename}_64
rm -rf ${binbasename}_64
if false; then
# Server (template)
binbasename="${godot_basename}_mono_linux_server"
mkdir -p ${binbasename}_64
cp out/server/x64/templates-mono/godot_server.x11.opt.64.mono ${binbasename}_64/${binbasename}.64
strip ${binbasename}_64/${binbasename}.64
cp -rp out/server/x64/templates-mono/data.mono.server.64.release ${binbasename}_64/data_${binbasename}_64
zip -r -q -9 "${reldir_mono}/${binbasename}_64.zip" ${binbasename}_64
rm -rf ${binbasename}_64
## Javascript (Mono) ##
## Web (Mono) ##
# Templates
cp out/javascript/templates-mono/godot.javascript.opt.debug.mono.zip ${templatesdir_mono}/webassembly_debug.zip
cp out/javascript/templates-mono/godot.javascript.opt.mono.zip ${templatesdir_mono}/webassembly_release.zip
mkdir -p ${templatesdir_mono}/bcl
cp -r out/javascript/templates-mono/bcl/wasm ${templatesdir_mono}/bcl/
cp out/web/templates-mono/godot.web.template_debug.wasm32.mono.zip ${templatesdir_mono}/web_debug.zip
cp out/web/templates-mono/godot.web.template_release.wasm32.mono.zip ${templatesdir_mono}/web_release.zip
## Android (Mono) ##
# Lib for direct download
cp out/android/templates-mono/godot-lib.release.aar ${reldir_mono}/godot-lib.${templates_version}.mono.release.aar
cp out/android/templates-mono/godot-lib.template_release.aar ${reldir_mono}/godot-lib.${templates_version}.mono.template_release.aar
# Templates
cp out/android/templates-mono/*.apk ${templatesdir_mono}/
cp out/android/templates-mono/android_source.zip ${templatesdir_mono}/
mkdir -p ${templatesdir_mono}/bcl
cp -r out/android/templates-mono/bcl/godot_android_ext ${templatesdir_mono}/bcl/
cp -r out/android/templates-mono/bcl/monodroid ${templatesdir_mono}/bcl/
## iOS (Mono) ##
rm -rf ios_xcode
cp -r git/misc/dist/ios_xcode ios_xcode
cp out/ios/templates-mono/libgodot.iphone.simulator.a ios_xcode/libgodot.iphone.release.xcframework/ios-arm64_x86_64-simulator/libgodot.a
cp out/ios/templates-mono/libgodot.iphone.debug.simulator.a ios_xcode/libgodot.iphone.debug.xcframework/ios-arm64_x86_64-simulator/libgodot.a
cp out/ios/templates-mono/libgodot.iphone.a ios_xcode/libgodot.iphone.release.xcframework/ios-arm64/libgodot.a
cp out/ios/templates-mono/libgodot.iphone.debug.a ios_xcode/libgodot.iphone.debug.xcframework/ios-arm64/libgodot.a
cp out/ios/templates-mono/libgodot.ios.simulator.a ios_xcode/libgodot.ios.release.xcframework/ios-arm64_x86_64-simulator/libgodot.a
cp out/ios/templates-mono/libgodot.ios.debug.simulator.a ios_xcode/libgodot.ios.debug.xcframework/ios-arm64_x86_64-simulator/libgodot.a
cp out/ios/templates-mono/libgodot.ios.a ios_xcode/libgodot.ios.release.xcframework/ios-arm64/libgodot.a
cp out/ios/templates-mono/libgodot.ios.debug.a ios_xcode/libgodot.ios.debug.xcframework/ios-arm64/libgodot.a
cp -r deps/vulkansdk-macos/MoltenVK/MoltenVK.xcframework ios_xcode/
rm -rf ios_xcode/MoltenVK.xcframework/{macos,tvos}*
cd ios_xcode
zip -q -9 -r "${templatesdir_mono}/iphone.zip" *
zip -q -9 -r "${templatesdir_mono}/ios.zip" *
cd ..
rm -rf ios_xcode
mkdir -p ${templatesdir_mono}/bcl
cp -r out/ios/templates-mono/bcl/monotouch* ${templatesdir_mono}/bcl/
cp -r out/ios/templates-mono/iphone-mono-libs ${templatesdir_mono}
## UWP (Mono) ##
# Not supported yet.
fi
## Templates TPZ (Mono) ##
@@ -527,4 +528,22 @@ if [ "${build_mono}" == "1" ]; then
fi
# NuGet packages
if [ "${publish_nuget}" == "1" ]; then
echo "Publishing NuGet packages..."
publish_nuget_packages out/linux/x86_64/tools-mono/GodotSharp/Tools/nupkgs/*.nupkg
fi
# Godot Android library
if [ "${publish_maven}" == "1" ]; then
echo "Publishing Android library to MavenCentral..."
publish_maven_library
fi
echo "All editor binaries and templates prepared successfully for release"

View File

@@ -1,54 +0,0 @@
#!/bin/bash
set -e
# Config
export SCONS="scons -j${NUM_CORES} verbose=yes warnings=no progress=no"
export OPTIONS="production=yes"
export OPTIONS_MONO="module_mono_enabled=yes mono_static=yes mono_prefix=/root/mono-installs/desktop-linux-x86_64-release"
export TERM=xterm
export PATH="${GODOT_SDK_LINUX_X86_64}/bin:${BASE_PATH}"
rm -rf godot
mkdir godot
cd godot
tar xf /root/godot.tar.gz --strip-components=1
# Classical
if [ "${CLASSICAL}" == "1" ]; then
echo "Starting classical build for Server..."
$SCONS platform=server $OPTIONS tools=yes target=release_debug
mkdir -p /root/out/x64/tools
cp -rvp bin/* /root/out/x64/tools
rm -rf bin
$SCONS platform=server $OPTIONS tools=no target=release
mkdir -p /root/out/x64/templates
cp -rvp bin/* /root/out/x64/templates
rm -rf bin
fi
# Mono
if [ "${MONO}" == "1" ]; then
echo "Starting Mono build for Server..."
cp /root/mono-glue/*.cpp modules/mono/glue/
cp -r /root/mono-glue/GodotSharp/GodotSharp/Generated modules/mono/glue/GodotSharp/GodotSharp/
cp -r /root/mono-glue/GodotSharp/GodotSharpEditor/Generated modules/mono/glue/GodotSharp/GodotSharpEditor/
$SCONS platform=server $OPTIONS $OPTIONS_MONO tools=yes target=release_debug copy_mono_root=yes
mkdir -p /root/out/x64/tools-mono
cp -rvp bin/* /root/out/x64/tools-mono
rm -rf bin
$SCONS platform=server $OPTIONS $OPTIONS_MONO tools=no target=release
mkdir -p /root/out/x64/templates-mono
cp -rvp bin/* /root/out/x64/templates-mono
rm -rf bin
fi
echo "Server build successful"

View File

@@ -1,3 +0,0 @@
call z:\root\build\env-%1.bat
%SCONS% platform=uwp %OPTIONS% tools=no target=%2 LINK="\"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\bin\HostX64\%1\link.exe\""

View File

@@ -1,43 +0,0 @@
#!/bin/bash
set -e
# Config
export SCONS="call scons -j${NUM_CORES} verbose=yes warnings=no progress=no"
export OPTIONS="production=yes"
export BUILD_ARCHES="x86 x64 arm"
export ANGLE_SRC_PATH='c:\angle'
rm -rf godot
mkdir godot
cd godot
tar xf /root/godot.tar.gz --strip-components=1
# Classical
if [ "${CLASSICAL}" == "1" ]; then
echo "Starting classical build for UWP..."
for arch in ${BUILD_ARCHES}; do
for release in release release_debug; do
wine cmd /c /root/build/build.bat $arch $release
sync
wineserver -kw
mkdir -p /root/out/$arch
mv bin/* /root/out/$arch
done
done
fi
# Mono
if [ "${MONO}" == "1" ]; then
echo "No Mono support for UWP yet."
#cp /root/mono-glue/*.cpp modules/mono/glue/
#cp -r /root/mono-glue/Managed/Generated modules/mono/glue/Managed/
fi
echo "UWP build successful"

View File

@@ -1,36 +0,0 @@
set ALLUSERSPROFILE=C:\ProgramData
set CommandPromptType=Native
set CommonProgramFiles=C:\Program Files\Common Files
set CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
set CommonProgramW6432=C:\Program Files\Common Files
set DevEnvDir=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\
set ExtensionSdkDir=C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs
set Framework40Version=v4.0
set FrameworkDir=C:\Windows\Microsoft.NET\Framework64\
set FrameworkDir64=C:\Windows\Microsoft.NET\Framework64\
set FrameworkVersion=v4.0.30319
set FrameworkVersion64=v4.0.30319
set VCIDEInstallDir=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\
set VCINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\
set VCToolsInstallDir=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\
set VCToolsRedistDir=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Redist\MSVC\14.16.27012\
set VCToolsVersion=14.16.27023
set VisualStudioVersion=15.0
set VS150COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\Tools\
set VSCMD_ARG_app_plat=UWP
set Platform=arm
set VSCMD_ARG_HOST_ARCH=x86
set VSCMD_ARG_TGT_ARCH=arm
set VSCMD_ARG_winsdk=10.0.16299.0
set VSCMD_VER=15.0
set VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\
set Path=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\bin\HostX86\arm;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCPackages;C:\Program Files (x86)\Microsoft Visual Studio\2017\Build Tools\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\bin\Roslyn;C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\arm;C:\Program Files (x86)\Windows Kits\10\bin\arm;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\\MSBuild\15.0\bin;C:\Windows\Microsoft.NET\Framework\ v4.0.30319;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\Tools\;C:\Program Files\Python37\Scripts\;C:\Program Files\Python37\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;C:\Program Files\OpenSSH-Win64;C:\Program Files\Git\cmd;C:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\WindowsApps;C:\Users\user\AppData\Local\Microsoft\WindowsApps;
set INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\include;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\ucrt;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\shared;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\um;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\winrt;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\cppwinrt
set LIB=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\lib\arm\store\;C:\Program Files (x86)\Windows Kits\10\lib\10.0.16299.0\ucrt\arm;C:\Program Files (x86)\Windows Kits\10\lib\10.0.16299.0\um\arm;
set LIBPATH=C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs\14.0\References\CommonConfiguration\neutral;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\lib\arm\store\references;C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.16299.0;C:\Program Files (x86)\Windows Kits\10\References\10.0.16299.0;C:\Windows\Microsoft.NET\Framework\v4.0.30319;
set WindowsLibPath=C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.16299.0;C:\Program Files (x86)\Windows Kits\10\References\10.0.16299.0
set WindowsSdkBinPath=C:\Program Files (x86)\Windows Kits\10\bin\
set WindowsSdkDir=C:\Program Files (x86)\Windows Kits\10\
set WindowsSDKLibVersion=10.0.16299.0\
set WindowsSdkVerBinPath=C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\
set WindowsSDKVersion=10.0.16299.0\

View File

@@ -1,35 +0,0 @@
set ALLUSERSPROFILE=C:\ProgramData
set CommandPromptType=Native
set CommonProgramFiles=C:\Program Files\Common Files
set CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
set CommonProgramW6432=C:\Program Files\Common Files
set DevEnvDir=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\
set ExtensionSdkDir=C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs
set Framework40Version=v4.0
set FrameworkDir=C:\Windows\Microsoft.NET\Framework64\
set FrameworkDir64=C:\Windows\Microsoft.NET\Framework64\
set FrameworkVersion=v4.0.30319
set FrameworkVersion64=v4.0.30319
set VCIDEInstallDir=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\
set VCINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\
set VCToolsInstallDir=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\
set VCToolsRedistDir=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Redist\MSVC\14.16.27012\
set VCToolsVersion=14.16.27023
set VisualStudioVersion=15.0
set VS150COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\Tools\
set VSCMD_ARG_app_plat=UWP
set VSCMD_ARG_HOST_ARCH=x86
set VSCMD_ARG_TGT_ARCH=x64
set VSCMD_ARG_winsdk=10.0.16299.0
set VSCMD_VER=15.0
set VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\
set Path=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCPackages;C:\Program Files (x86)\Microsoft Visual Studio\2017\Build Tools\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\bin\Roslyn;C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x64;C:\Program Files (x86)\Windows Kits\10\bin\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\\MSBuild\15.0\bin;C:\Windows\Microsoft.NET\Framework\ v4.0.30319;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\Tools\;C:\Program Files\Python37\Scripts\;C:\Program Files\Python37\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;C:\Program Files\OpenSSH-Win64;C:\Program Files\Git\cmd;C:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\WindowsApps;C:\Users\user\AppData\Local\Microsoft\WindowsApps;
set INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\include;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\ucrt;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\shared;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\um;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\winrt;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\cppwinrt
set LIB=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\lib\x64\store\;C:\Program Files (x86)\Windows Kits\10\lib\10.0.16299.0\ucrt\x64;C:\Program Files (x86)\Windows Kits\10\lib\10.0.16299.0\um\x64;
set LIBPATH=C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs\14.0\References\CommonConfiguration\neutral;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\lib\x64\store\references;C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.16299.0;C:\Program Files (x86)\Windows Kits\10\References\10.0.16299.0;C:\Windows\Microsoft.NET\Framework\v4.0.30319;
set WindowsLibPath=C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.16299.0;C:\Program Files (x86)\Windows Kits\10\References\10.0.16299.0
set WindowsSdkBinPath=C:\Program Files (x86)\Windows Kits\10\bin\
set WindowsSdkDir=C:\Program Files (x86)\Windows Kits\10\
set WindowsSDKLibVersion=10.0.16299.0\
set WindowsSdkVerBinPath=C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\
set WindowsSDKVersion=10.0.16299.0\

View File

@@ -1,36 +0,0 @@
set ALLUSERSPROFILE=C:\ProgramData
set CommandPromptType=Native
set CommonProgramFiles=C:\Program Files\Common Files
set CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
set CommonProgramW6432=C:\Program Files\Common Files
set DevEnvDir=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\
set ExtensionSdkDir=C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs
set Framework40Version=v4.0
set FrameworkDir=C:\Windows\Microsoft.NET\Framework64\
set FrameworkDir64=C:\Windows\Microsoft.NET\Framework64\
set FrameworkVersion=v4.0.30319
set FrameworkVersion64=v4.0.30319
set VCIDEInstallDir=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\
set VCINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\
set VCToolsInstallDir=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\
set VCToolsRedistDir=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Redist\MSVC\14.16.27012\
set VCToolsVersion=14.16.27023
set VisualStudioVersion=15.0
set VS150COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\Tools\
set VSCMD_ARG_app_plat=UWP
set VSCMD_ARG_HOST_ARCH=x86
set VSCMD_ARG_TGT_ARCH=x86
set VSCMD_ARG_winsdk=10.0.16299.0
set VSCMD_VER=15.0
set VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\
set Path=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\bin\HostX86\x86;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCPackages;C:\Program Files (x86)\Microsoft Visual Studio\2017\Build Tools\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\bin\Roslyn;C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x86;C:\Program Files (x86)\Windows Kits\10\bin\x86;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\\MSBuild\15.0\bin;C:\Windows\Microsoft.NET\Framework\ v4.0.30319;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\Tools\;C:\Program Files\Python37\Scripts\;C:\Program Files\Python37\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;C:\Program Files\OpenSSH-Win64;C:\Program Files\Git\cmd;C:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\WindowsApps;C:\Users\user\AppData\Local\Microsoft\WindowsApps;
set INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\include;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\ucrt;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\shared;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\um;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\winrt;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\cppwinrt
set LIB=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\lib\x86\store\;C:\Program Files (x86)\Windows Kits\10\lib\10.0.16299.0\ucrt\x86;C:\Program Files (x86)\Windows Kits\10\lib\10.0.16299.0\um\x86;
set LIBPATH=C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs\14.0\References\CommonConfiguration\neutral;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\lib\x86\store\references;C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.16299.0;C:\Program Files (x86)\Windows Kits\10\References\10.0.16299.0;C:\Windows\Microsoft.NET\Framework\v4.0.30319;
set WindowsLibPath=C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.16299.0;C:\Program Files (x86)\Windows Kits\10\References\10.0.16299.0
set WindowsSdkBinPath=C:\Program Files (x86)\Windows Kits\10\bin\
set WindowsSdkDir=C:\Program Files (x86)\Windows Kits\10\
set WindowsSDKLibVersion=10.0.16299.0\
set WindowsSdkVerBinPath=C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\
set WindowsSDKVersion=10.0.16299.0\

75
build-web/build.sh Executable file
View File

@@ -0,0 +1,75 @@
#!/bin/bash
set -e
# Config
# To speed up builds with single-threaded full LTO linking,
# we run all builds in parallel each from their own folder.
export NUM_JOBS=5
declare -a JOBS=(
"target=editor use_closure_compiler=yes"
"target=template_debug"
"target=template_release"
"target=template_debug dlink_enabled=yes"
"target=template_release dlink_enabled=yes"
)
export SCONS="scons -j$(expr ${NUM_CORES} / ${NUM_JOBS}) verbose=yes warnings=no progress=no"
export OPTIONS="production=yes"
export OPTIONS_MONO="module_mono_enabled=yes -j${NUM_CORES}"
export TERM=xterm
source /root/emsdk/emsdk_env.sh
rm -rf godot
mkdir godot
cd godot
tar xf /root/godot.tar.gz --strip-components=1
# Classical
dnf -y install gettext
if [ "${CLASSICAL}" == "1" ]; then
echo "Starting classical build for Web..."
for i in {0..4}; do
cp -r /root/godot /root/godot$i
cd /root/godot$i
echo "$SCONS platform=web ${OPTIONS} ${JOBS[$i]}"
$SCONS platform=web ${OPTIONS} ${JOBS[$i]} &
pids[$i]=$!
done
for pid in ${pids[*]}; do
wait $pid
done
mkdir -p /root/out/tools
cp -rvp /root/godot0/bin/*.editor*.zip /root/out/tools
mkdir -p /root/out/templates
for i in {1..4}; do
cp -rvp /root/godot$i/bin/*.zip /root/out/templates
done
fi
# Mono
# No Web support with .NET 6 yet.
#if [ "${MONO}" == "1" ]; then
if false; then
echo "Starting Mono build for Web..."
cp -r /root/mono-glue/GodotSharp/GodotSharp/Generated modules/mono/glue/GodotSharp/GodotSharp/
$SCONS platform=web ${OPTIONS} ${OPTIONS_MONO} target=template_debug
$SCONS platform=web ${OPTIONS} ${OPTIONS_MONO} target=template_release
mkdir -p /root/out/templates-mono
cp -rvp bin/*.zip /root/out/templates-mono
rm -f bin/*.zip
fi
echo "Web build successful"

View File

@@ -6,9 +6,7 @@ set -e
export SCONS="scons -j${NUM_CORES} verbose=yes warnings=no progress=no"
export OPTIONS="production=yes"
export OPTIONS_MONO="module_mono_enabled=yes mono_static=yes"
export MONO_PREFIX_X86_64="/root/mono-installs/desktop-windows-x86_64-release"
export MONO_PREFIX_X86="/root/mono-installs/desktop-windows-x86-release"
export OPTIONS_MONO="module_mono_enabled=yes"
export TERM=xterm
rm -rf godot
@@ -18,29 +16,31 @@ tar xf /root/godot.tar.gz --strip-components=1
# Classical
dnf -y install gettext
if [ "${CLASSICAL}" == "1" ]; then
echo "Starting classical build for Windows..."
$SCONS platform=windows bits=64 $OPTIONS tools=yes target=release_debug
mkdir -p /root/out/x64/tools
cp -rvp bin/* /root/out/x64/tools
$SCONS platform=windows arch=x86_64 $OPTIONS target=editor
mkdir -p /root/out/x86_64/tools
cp -rvp bin/* /root/out/x86_64/tools
rm -rf bin
$SCONS platform=windows bits=64 $OPTIONS tools=no target=release_debug
$SCONS platform=windows bits=64 $OPTIONS tools=no target=release
mkdir -p /root/out/x64/templates
cp -rvp bin/* /root/out/x64/templates
$SCONS platform=windows arch=x86_64 $OPTIONS target=template_debug
$SCONS platform=windows arch=x86_64 $OPTIONS target=template_release
mkdir -p /root/out/x86_64/templates
cp -rvp bin/* /root/out/x86_64/templates
rm -rf bin
$SCONS platform=windows bits=32 $OPTIONS tools=yes target=release_debug
mkdir -p /root/out/x86/tools
cp -rvp bin/* /root/out/x86/tools
$SCONS platform=windows arch=x86_32 $OPTIONS target=editor
mkdir -p /root/out/x86_32/tools
cp -rvp bin/* /root/out/x86_32/tools
rm -rf bin
$SCONS platform=windows bits=32 $OPTIONS tools=no target=release_debug
$SCONS platform=windows bits=32 $OPTIONS tools=no target=release
mkdir -p /root/out/x86/templates
cp -rvp bin/* /root/out/x86/templates
$SCONS platform=windows arch=x86_32 $OPTIONS target=template_debug
$SCONS platform=windows arch=x86_32 $OPTIONS target=template_release
mkdir -p /root/out/x86_32/templates
cp -rvp bin/* /root/out/x86_32/templates
rm -rf bin
fi
@@ -49,34 +49,31 @@ fi
if [ "${MONO}" == "1" ]; then
echo "Starting Mono build for Windows..."
cp /root/mono-glue/*.cpp modules/mono/glue/
cp -r /root/mono-glue/GodotSharp/GodotSharp/Generated modules/mono/glue/GodotSharp/GodotSharp/
cp -r /root/mono-glue/GodotSharp/GodotSharpEditor/Generated modules/mono/glue/GodotSharp/GodotSharpEditor/
export OPTIONS_MONO_PREFIX="${OPTIONS} ${OPTIONS_MONO} mono_prefix=${MONO_PREFIX_X86_64}"
$SCONS platform=windows bits=64 $OPTIONS_MONO_PREFIX tools=yes target=release_debug copy_mono_root=yes
mkdir -p /root/out/x64/tools-mono
cp -rvp bin/* /root/out/x64/tools-mono
$SCONS platform=windows arch=x86_64 $OPTIONS $OPTIONS_MONO target=editor
./modules/mono/build_scripts/build_assemblies.py --godot-output-dir=./bin --godot-platform=windows
mkdir -p /root/out/x86_64/tools-mono
cp -rvp bin/* /root/out/x86_64/tools-mono
rm -rf bin
$SCONS platform=windows bits=64 $OPTIONS_MONO_PREFIX tools=no target=release_debug
$SCONS platform=windows bits=64 $OPTIONS_MONO_PREFIX tools=no target=release
mkdir -p /root/out/x64/templates-mono
cp -rvp bin/* /root/out/x64/templates-mono
$SCONS platform=windows arch=x86_64 $OPTIONS $OPTIONS_MONO target=template_debug
$SCONS platform=windows arch=x86_64 $OPTIONS $OPTIONS_MONO target=template_release
mkdir -p /root/out/x86_64/templates-mono
cp -rvp bin/* /root/out/x86_64/templates-mono
rm -rf bin
export OPTIONS_MONO_PREFIX="${OPTIONS} ${OPTIONS_MONO} mono_prefix=${MONO_PREFIX_X86}"
$SCONS platform=windows bits=32 $OPTIONS_MONO_PREFIX tools=yes target=release_debug copy_mono_root=yes
mkdir -p /root/out/x86/tools-mono
cp -rvp bin/* /root/out/x86/tools-mono
$SCONS platform=windows arch=x86_32 $OPTIONS $OPTIONS_MONO target=editor
./modules/mono/build_scripts/build_assemblies.py --godot-output-dir=./bin --godot-platform=windows
mkdir -p /root/out/x86_32/tools-mono
cp -rvp bin/* /root/out/x86_32/tools-mono
rm -rf bin
$SCONS platform=windows bits=32 $OPTIONS_MONO_PREFIX tools=no target=release_debug
$SCONS platform=windows bits=32 $OPTIONS_MONO_PREFIX tools=no target=release
mkdir -p /root/out/x86/templates-mono
cp -rvp bin/* /root/out/x86/templates-mono
$SCONS platform=windows arch=x86_32 $OPTIONS $OPTIONS_MONO target=template_debug
$SCONS platform=windows arch=x86_32 $OPTIONS $OPTIONS_MONO target=template_release
mkdir -p /root/out/x86_32/templates-mono
cp -rvp bin/* /root/out/x86_32/templates-mono
rm -rf bin
fi

View File

@@ -83,21 +83,7 @@ while getopts "h?r:u:p:v:g:b:fsc" opt; do
esac
done
export podman=none
if which podman > /dev/null; then
export podman=podman
elif which docker > /dev/null; then
export podman=docker
fi
if [ "${podman}" == "none" ]; then
echo "Either podman or docker needs to be installed"
exit 1
fi
if [ $UID != 0 ]; then
echo "WARNING: Running as non-root may cause problems for the uwp build"
fi
export podman=${PODMAN}
if [ -z "${godot_version}" ]; then
echo "-v <version> is mandatory!"
@@ -122,7 +108,7 @@ fi
if [ $skip_download == 0 ]; then
echo "Fetching images"
for image in mono-glue windows linux javascript; do
for image in windows linux web; do
if [ ${force_download} == 1 ] || ! ${podman} image exists godot/$image; then
if ! ${podman} pull ${registry}/godot/${image}; then
echo "ERROR: image $image does not exist and can't be downloaded"
@@ -134,7 +120,7 @@ if [ $skip_download == 0 ]; then
if [ ! -z "${logged_in}" ]; then
echo "Fetching private images"
for image in macosx android ios uwp; do
for image in macosx android ios; do
if [ ${force_download} == 1 ] || ! ${podman} image exists godot-private/$image; then
if ! ${podman} pull ${registry}/godot-private/${image}; then
echo "ERROR: image $image does not exist and can't be downloaded"
@@ -145,6 +131,23 @@ if [ $skip_download == 0 ]; then
fi
fi
# macOS and iOS need the Vulkan SDK
if [ ! -d "deps/vulkansdk-macos" ]; then
echo "Missing Vulkan SDK for macOS, we're going to run into issues!"
fi
# Keystore for Android editor signing
# Optional - the config.sh will be copied but if it's not filled in,
# it will do an unsigned build.
if [ ! -d "deps/keystore" ]; then
mkdir -p deps/keystore
cp config.sh deps/keystore/
if [ ! -z "$GODOT_ANDROID_SIGN_KEYSTORE" ]; then
cp "$GODOT_ANDROID_SIGN_KEYSTORE" deps/keystore/
sed -i deps/keystore/config.sh -e "s@$GODOT_ANDROID_SIGN_KEYSTORE@/root/keystore/$GODOT_ANDROID_SIGN_KEYSTORE@"
fi
fi
if [ "${skip_git_checkout}" == 0 ]; then
git clone https://github.com/godotengine/godot git || /bin/true
pushd git
@@ -175,17 +178,13 @@ fi
export basedir="$(pwd)"
mkdir -p ${basedir}/out
mkdir -p ${basedir}/out/logs
mkdir -p ${basedir}/mono-glue
export podman_run="${podman} run -it --rm --env BUILD_NAME --env GODOT_VERSION_STATUS --env NUM_CORES --env CLASSICAL=${build_classical} --env MONO=${build_mono} -v ${basedir}/godot-${godot_version}.tar.gz:/root/godot.tar.gz -v ${basedir}/mono-glue:/root/mono-glue -w /root/"
export img_version=3.x-mono-6.12.0.158
# Get AOT compilers from their containers.
mkdir -p ${basedir}/out/aot-compilers
${podman} run -it --rm -w /root -v ${basedir}/out/aot-compilers:/root/out localhost/godot-ios:${img_version} bash -c "cp -r /root/aot-compilers/* /root/out"
chmod +x ${basedir}/out/aot-compilers/*/*
export img_version=$IMAGE_VERSION
mkdir -p ${basedir}/mono-glue
${podman_run} -v ${basedir}/build-mono-glue:/root/build localhost/godot-mono-glue:${img_version} bash build/build.sh 2>&1 | tee ${basedir}/out/logs/mono-glue
${podman_run} -v ${basedir}/build-mono-glue:/root/build localhost/godot-linux:${img_version} bash build/build.sh 2>&1 | tee ${basedir}/out/logs/mono-glue
mkdir -p ${basedir}/out/windows
${podman_run} -v ${basedir}/build-windows:/root/build -v ${basedir}/out/windows:/root/out localhost/godot-windows:${img_version} bash build/build.sh 2>&1 | tee ${basedir}/out/logs/windows
@@ -193,24 +192,18 @@ ${podman_run} -v ${basedir}/build-windows:/root/build -v ${basedir}/out/windows:
mkdir -p ${basedir}/out/linux
${podman_run} -v ${basedir}/build-linux:/root/build -v ${basedir}/out/linux:/root/out localhost/godot-linux:${img_version} bash build/build.sh 2>&1 | tee ${basedir}/out/logs/linux
mkdir -p ${basedir}/out/javascript
${podman_run} -v ${basedir}/build-javascript:/root/build -v ${basedir}/out/javascript:/root/out localhost/godot-javascript:${img_version} bash build/build.sh 2>&1 | tee ${basedir}/out/logs/javascript
mkdir -p ${basedir}/out/web
${podman_run} -v ${basedir}/build-web:/root/build -v ${basedir}/out/web:/root/out localhost/godot-web:${img_version} bash build/build.sh 2>&1 | tee ${basedir}/out/logs/web
mkdir -p ${basedir}/out/macosx
${podman_run} -v ${basedir}/build-macosx:/root/build -v ${basedir}/out/macosx:/root/out localhost/godot-osx:${img_version} bash build/build.sh 2>&1 | tee ${basedir}/out/logs/macosx
mkdir -p ${basedir}/out/macos
${podman_run} -v ${basedir}/build-macos:/root/build -v ${basedir}/out/macos:/root/out -v ${basedir}/deps/vulkansdk-macos:/root/vulkansdk localhost/godot-osx:${img_version} bash build/build.sh 2>&1 | tee ${basedir}/out/logs/macos
mkdir -p ${basedir}/out/android
${podman_run} -v ${basedir}/build-android:/root/build -v ${basedir}/out/android:/root/out localhost/godot-android:${img_version} bash build/build.sh 2>&1 | tee ${basedir}/out/logs/android
${podman_run} -v ${basedir}/build-android:/root/build -v ${basedir}/out/android:/root/out -v ${basedir}/deps/keystore:/root/keystore localhost/godot-android:${img_version} bash build/build.sh 2>&1 | tee ${basedir}/out/logs/android
mkdir -p ${basedir}/out/ios
${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
mkdir -p ${basedir}/out/server
${podman_run} -v ${basedir}/build-server:/root/build -v ${basedir}/out/server:/root/out localhost/godot-linux:${img_version} bash build/build.sh 2>&1 | tee ${basedir}/out/logs/server
mkdir -p ${basedir}/out/uwp
${podman_run} --ulimit nofile=32768:32768 -v ${basedir}/build-uwp:/root/build -v ${basedir}/out/uwp:/root/out ${registry}/godot-private/uwp:latest bash build/build.sh 2>&1 | tee ${basedir}/out/logs/uwp
if [ ! -z "$SUDO_UID" ]; then
chown -R "${SUDO_UID}":"${SUDO_GID}" ${basedir}/git ${basedir}/out ${basedir}/mono-glue ${basedir}/godot*.tar.gz
fi

3
clean-release.sh Executable file
View File

@@ -0,0 +1,3 @@
#!/bin/bash
rm -rf releases tmp web

4
clean.sh Executable file
View File

@@ -0,0 +1,4 @@
#!/bin/bash
rm -rf godot*.tar.gz mono-glue out releases tmp web
git status

View File

@@ -3,16 +3,28 @@
# Configuration file for user-specific details.
# This file is gitignore'd and will be sourced by build scripts.
# Note: For passwords or GPG keys, make sure that special characters such
# as $ won't be expanded, by using single quotes to enclose the string,
# or escaping with \$.
# These scripts are designed and tested against podman. They may also work
# with docker, but it's not guaranteed. You can set this variable to the
# relevant tool in your PATH or an absolute path to run it from.
export PODMAN='podman'
# Registry for build containers.
# The default registry is the one used for official Godot builds.
# Note that some of its images are private and only accessible to selected
# contributors.
# You can build your own registry with scripts at
# https://github.com/godotengine/build-containers
export REGISTRY="registry.prehensile-tales.com"
export REGISTRY='registry.prehensile-tales.com'
# Version string of the images to use in build.sh.
export IMAGE_VERSION='4.x-f36'
# Default build name used to distinguish between official and custom builds.
export BUILD_NAME="custom_build"
export BUILD_NAME='custom_build'
# Default number of parallel cores for each build.
export NUM_CORES=16
@@ -21,24 +33,51 @@ export NUM_CORES=16
# If you do not fill all SIGN_* fields, signing will be skipped.
# Path to pkcs12 archive.
export SIGN_KEYSTORE=""
export SIGN_KEYSTORE=''
# Password for the private key.
export SIGN_PASSWORD=""
export SIGN_PASSWORD=''
# Name and URL of the signed application.
# Use your own when making a thirdparty build.
export SIGN_NAME=""
export SIGN_URL=""
export SIGN_NAME=''
export SIGN_URL=''
# Hostname or IP address of an OSX host (Needed for signing)
# eg "user@10.1.0.10"
export OSX_HOST=""
# eg 'user@10.1.0.10'
export OSX_HOST=''
# ID of the Apple certificate used to sign
export OSX_KEY_ID=""
export OSX_KEY_ID=''
# Bundle id for the signed app
export OSX_BUNDLE_ID=""
# Username/password for Apple's signing APIs (used for atltool)
export APPLE_ID=""
export APPLE_ID_PASSWORD=""
export OSX_BUNDLE_ID=''
# Username/password for Apple's signing APIs (used for notarytool)
export APPLE_TEAM=''
export APPLE_ID=''
export APPLE_ID_PASSWORD=''
# NuGet source for publishing .NET packages
export NUGET_SOURCE='nuget.org'
# API key for publishing NuGet packages to nuget.org
export NUGET_API_KEY=''
# MavenCentral (sonatype) credentials
export OSSRH_GROUP_ID=''
export OSSRH_USERNAME=''
export OSSRH_PASSWORD=''
# Sonatype assigned ID used to upload the generated artifacts
export SONATYPE_STAGING_PROFILE_ID=''
# Used to sign the artifacts after they're built
# ID of the GPG key pair, the last eight characters of its fingerprint
export SIGNING_KEY_ID=''
# Passphrase of the key pair
export SIGNING_PASSWORD=''
# Base64 encoded private GPG key
export SIGNING_KEY=''
# Android signing configs
# Path to the Android keystore file used to sign the release build
export GODOT_ANDROID_SIGN_KEYSTORE=''
# Key alias used for signing the release build
export GODOT_ANDROID_KEYSTORE_ALIAS=''
# Password for the key used for signing the release build
export GODOT_ANDROID_SIGN_PASSWORD=''