-
-
Notifications
You must be signed in to change notification settings - Fork 75
Add commands to make ARM64 Windows engine builds, update Mesa/NIR and ANGLE downloads to the latest releases. #96
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
akien-mga
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good.
akien-mga
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code looks good. I'll give it a try.
|
Tested only classic build so far, clang LTO is extremely slow. Probably will check .NET builds on Monday. |
|
Oh right I'm not looking forward to 6 new Clang LTO builds :| We should evaluate whether Clang LTO is really worth it compared to Clang ThinLTO for each Clang target platform, and switch the ones where the size/performance difference is negligible. ThinLTO can be multithreaded but not full LTO with Clang sadly. |
I think it's reasonable to drop x86_32 Windows builds once we have Windows ARM64 builds. This could also be done for Linux (especially for Linux in fact) to further reduce the build matrix. That said, ThinLTO should be worth trying as it'll likely perform closer to full LTO than no LTO at all while being easily 3× faster to link. |
|
Tested .NET builds as well, seem to work fine. Thin LTO build is fast (and unlike full LTO do not use 30GB of RAM), size difference is about 2MB for templates and 3MB for editor:
So size difference is not critical, will test performance later. |
| rm -rf bin | ||
|
|
||
| $SCONS platform=windows arch=arm64 $OPTIONS $OPTIONS_MONO $OPTIONS_LLVM target=editor | ||
| ./modules/mono/build_scripts/build_assemblies.py --godot-output-dir=./bin --godot-platform=windows |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unrelated to the PR, but do we need to build .NET assemblies for each architecture, it seems to contain only managed code, and scripts aren't even taking arch as argument, so it probably can be done once.
|
Tested both full and thin LTO builds with benchmarks, seems like for most of the tests thin LTO is either faster by (2-3%) or the same, with the exception of GDScript Array and String tests (which are 1-2% slower). Results are similar for both release and debug builds. So I guess it is a reasonable option, at least for ARM64 builds. |
|
I would keep full LTO for now for 4.3 as that's what we've tested most. But for 4.4 I think we could try using ThinLTO for all LLVM builds (Windows arm64, macOS, Android, Web). |
|
Some more changes are needed:
diff --git a/build-release.sh b/build-release.sh
index dba9ccd..b84826d 100755
--- a/build-release.sh
+++ b/build-release.sh
@@ -274,10 +274,8 @@ if [ "${build_classical}" == "1" ]; then
binname="${godot_basename}_win64.exe"
wrpname="${godot_basename}_win64_console.exe"
cp out/windows/x86_64/tools/godot.windows.editor.x86_64.exe ${binname}
- strip ${binname}
sign_windows ${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}
@@ -285,21 +283,17 @@ if [ "${build_classical}" == "1" ]; then
binname="${godot_basename}_win32.exe"
wrpname="${godot_basename}_win32_console.exe"
cp out/windows/x86_32/tools/godot.windows.editor.x86_32.exe ${binname}
- strip ${binname}
sign_windows ${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}
binname="${godot_basename}_arm64.exe"
wrpname="${godot_basename}_arm64_console.exe"
- cp out/windows/arm64/tools/godot.windows.editor.arm64.exe ${binname}
- strip ${binname}
+ cp out/windows/arm64/tools/godot.windows.editor.arm64.llvm.exe ${binname}
sign_windows ${binname}
- cp out/windows/arm64/tools/godot.windows.editor.arm64.console.exe ${wrpname}
- strip ${wrpname}
+ cp out/windows/arm64/tools/godot.windows.editor.arm64.llvm.console.exe ${wrpname}
sign_windows ${wrpname}
zip -q -9 "${reldir}/${binname}.zip" ${binname} ${wrpname}
rm ${binname} ${wrpname}
@@ -309,15 +303,14 @@ if [ "${build_classical}" == "1" ]; then
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/arm64/templates/godot.windows.template_release.arm64.exe ${templatesdir}/windows_release_arm64.exe
- cp out/windows/arm64/templates/godot.windows.template_debug.arm64.exe ${templatesdir}/windows_debug_arm64.exe
+ cp out/windows/arm64/templates/godot.windows.template_release.arm64.llvm.exe ${templatesdir}/windows_release_arm64.exe
+ cp out/windows/arm64/templates/godot.windows.template_debug.arm64.llvm.exe ${templatesdir}/windows_debug_arm64.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
- cp out/windows/arm64/templates/godot.windows.template_release.arm64.console.exe ${templatesdir}/windows_release_arm64_console.exe
- cp out/windows/arm64/templates/godot.windows.template_debug.arm64.console.exe ${templatesdir}/windows_debug_arm64_console.exe
- strip ${templatesdir}/windows*.exe
+ cp out/windows/arm64/templates/godot.windows.template_release.arm64.llvm.console.exe ${templatesdir}/windows_release_arm64_console.exe
+ cp out/windows/arm64/templates/godot.windows.template_debug.arm64.llvm.console.exe ${templatesdir}/windows_debug_arm64_console.exe
## macOS (Classical) ##
@@ -464,11 +457,9 @@ if [ "${build_mono}" == "1" ]; then
wrpname="${godot_basename}_mono_win64_console"
mkdir -p ${binname}
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/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}
@@ -477,11 +468,9 @@ if [ "${build_mono}" == "1" ]; then
wrpname="${godot_basename}_mono_win32_console"
mkdir -p ${binname}
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_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}
@@ -489,12 +478,10 @@ if [ "${build_mono}" == "1" ]; then
binname="${godot_basename}_mono_arm64"
wrpname="${godot_basename}_mono_arm64_console"
mkdir -p ${binname}
- cp out/windows/arm64/tools-mono/godot.windows.editor.arm64.mono.exe ${binname}/${binname}.exe
- strip ${binname}/${binname}.exe
+ cp out/windows/arm64/tools-mono/godot.windows.editor.arm64.llvm.mono.exe ${binname}/${binname}.exe
sign_windows ${binname}/${binname}.exe
cp -rp out/windows/arm64/tools-mono/GodotSharp ${binname}/
- cp out/windows/arm64/tools-mono/godot.windows.editor.arm64.mono.console.exe ${binname}/${wrpname}.exe
- strip ${binname}/${wrpname}.exe
+ cp out/windows/arm64/tools-mono/godot.windows.editor.arm64.llvm.mono.console.exe ${binname}/${wrpname}.exe
sign_windows ${binname}/${wrpname}.exe
zip -r -q -9 "${reldir_mono}/${binname}.zip" ${binname}
rm -rf ${binname}
@@ -504,15 +491,14 @@ if [ "${build_mono}" == "1" ]; then
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/arm64/templates-mono/godot.windows.template_debug.arm64.mono.exe ${templatesdir_mono}/windows_debug_arm64.exe
- cp out/windows/arm64/templates-mono/godot.windows.template_release.arm64.mono.exe ${templatesdir_mono}/windows_release_arm64.exe
+ cp out/windows/arm64/templates-mono/godot.windows.template_debug.arm64.llvm.mono.exe ${templatesdir_mono}/windows_debug_arm64.exe
+ cp out/windows/arm64/templates-mono/godot.windows.template_release.arm64.llvm.mono.exe ${templatesdir_mono}/windows_release_arm64.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
- cp out/windows/arm64/templates-mono/godot.windows.template_debug.arm64.mono.console.exe ${templatesdir_mono}/windows_debug_arm64_console.exe
- cp out/windows/arm64/templates-mono/godot.windows.template_release.arm64.mono.console.exe ${templatesdir_mono}/windows_release_arm64_console.exe
- strip ${templatesdir_mono}/windows*.exe
+ cp out/windows/arm64/templates-mono/godot.windows.template_debug.arm64.llvm.mono.console.exe ${templatesdir_mono}/windows_debug_arm64_console.exe
+ cp out/windows/arm64/templates-mono/godot.windows.template_release.arm64.llvm.mono.console.exe ${templatesdir_mono}/windows_release_arm64_console.exe
## macOS (Mono) ##
|
I guess it depends on |
… ANGLE downloads to the latest releases.
|
Thanks! |
Depends on godotengine/build-containers#144
Depends on godotengine/godot#94533