Add support for Windows on aarch64 #14911
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Adds ARM64-specific stack unwinding so that the prelude now compiles for Windows on ARM64.
This is tested in a UTM virtual machine only. To set up:
CRYSTAL_LIBRARY_PATH
environment variable so that it points at thelibs
directory created from the previous step;bin\crystal build --target=aarch64-pc-windows-msvc --target -Dwithout_iconv
to build something; (we don't need to supply--cross-compile
or build a local compiler here)dlls
directory created above to the current directory manually, since the ones placed by the compiler are the x86-64 ones;For convenience, the x86-64 and ARM64 Windows bindings share the same directory using a symbolic link.
The context switch reuses the existing one for AArch64 Linux, since it seems the ABIs are identical; most
Fiber
andselect
specs work, except ones that deal with closedChannel
s for some reason.