Support llvm-mingw ARM/ARM64 targets in Rust #15
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.
This PR adds support for building librsvg for the llvm-mingw ARM/ARM64 targets by compiling the nightly version of Rust and using the
build-std
feature to compile the standard library itself. This approach makes us independent of the prebuilt binaries provided by Rust and allows us to safely use UCRT as default CRT library (instead than MSVCRT).A small amount of patches against Rust makes this possible, some of them are incompatible with the GCC targets that Rust provides. For example, it removes the need of linking against
libgcc
,libgcc_eh
andlibgcc_s
and it forces the entry point toDllMainCRTStartup
(or_DllMainCRTStartup
for i686) located in MinGW. This works for our use-case, but might break when building Rust executables our using LLD in combination with GCC.Resolves: #12.
Stacked on top of: #14.