Skip to content
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

Add scons with_x86_64h option on macOS #1642

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

Ivorforce
Copy link
Contributor

@Ivorforce Ivorforce commented Nov 17, 2024

This adds an x86_64h slice, which can lead to improved performance (at the cost of binary size).
It will be selected automatically on all post-2013 macs, if compiled. Pre 2013 macs will use the current x86_64 slice.

See godotengine/godot-proposals#11150 for details about this feature.

The x86_64h slice is compiled alongside the x86_64 slice and is fully and transparently compatible with x86_64 godot. Therefore, we don't need to wait for any progress on the godot front to add this feature.

❯ scons arch=x86_64 dev_build=yes with_x86_64h=yes
...

❯ lipo -info project/bin/libgdexample.macos.template_debug.framework/libgdexample.macos.template_debug
Architectures in the fat file: project/bin/libgdexample.macos.template_debug.framework/libgdexample.macos.template_debug are: x86_64 x86_64h

godot-cpp/test x86_64h-slice-option ≡
❯ GODOT=/Applications/Godot4.4-dev4.app/Contents/MacOS/Godot  ./run-tests.sh
Godot Engine v4.4.dev4.official.36e6207bb - https://godotengine.org


 ==== TESTS FINISHED ====

   PASSES: 124
   FAILURES: 0

 ******** PASSED ********

grep: repetition-operator operand invalid

Removing the slice to see if x86_64h can be selected:

godot-cpp/test x86_64h-slice-option ≡
❯ lipo -remove x86_64 project/bin/libgdexample.macos.template_debug.framework/libgdexample.macos.template_debug -output project/bin/libgdexample.macos.template_debug.framework/libgdexample.macos.template_debug

❯ lipo -info project/bin/libgdexample.macos.template_debug.framework/libgdexample.macos.template_debug
Architectures in the fat file: project/bin/libgdexample.macos.template_debug.framework/libgdexample.macos.template_debug are: x86_64h

godot-cpp/test x86_64h-slice-option ≡
❯ GODOT=/Applications/Godot4.4-dev4.app/Contents/MacOS/Godot  ./run-tests.sh
Godot Engine v4.4.dev4.official.36e6207bb - https://godotengine.org


 ==== TESTS FINISHED ====

   PASSES: 124
   FAILURES: 0

 ******** PASSED ********

grep: repetition-operator operand invalid

godot-cpp/test x86_64h-slice-option ≡

@Ivorforce Ivorforce requested a review from a team as a code owner November 17, 2024 12:20
@Ivorforce
Copy link
Contributor Author

It may be nice to have an option to build only for x86_64h (instead of x86_64), to kill compatibility to older macs by choice. I opted not to add that because gdextensions should probably be fully compatible to everything godot is compatible with.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement This is an enhancement on the current functionality
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants