summaryrefslogtreecommitdiff
path: root/contrib/depends/packages/native_mrustc.mk
diff options
context:
space:
mode:
authormalik1004x <malikowskirobert@gmail.com>2025-07-11 06:27:50 +0200
committerCzarek Nakamoto <cyjan@mrcyjanek.net>2025-07-13 15:31:13 +0200
commit670020c850da7af3f1a7fa6b00025a124979f465 (patch)
tree9eeeac3204ac1541df2adfd8b2676a455adc1a0c /contrib/depends/packages/native_mrustc.mk
parent74e861aa4e27de802652602d72e2612b7046449c (diff)
Rust bootstrap support for macOS aarch64 (#143)
* darwin rust bootstrap support * add patches for darwin rust bootstrap
Diffstat (limited to 'contrib/depends/packages/native_mrustc.mk')
-rw-r--r--contrib/depends/packages/native_mrustc.mk19
1 files changed, 11 insertions, 8 deletions
diff --git a/contrib/depends/packages/native_mrustc.mk b/contrib/depends/packages/native_mrustc.mk
index 661eade..e51a0e7 100644
--- a/contrib/depends/packages/native_mrustc.mk
+++ b/contrib/depends/packages/native_mrustc.mk
@@ -5,9 +5,11 @@ $(package)_download_file=06b87d1af49d2db3bd850fdee8888055dd540dd1.tar.gz
$(package)_file_name=$(package)-$($(package)_version).tar.gz
$(package)_sha256_hash=d3d3b84a100e71628afecf1125dbaa9bfc54ef9578c4fd81d75dca34c96f2565
$(package)_dependencies=native_ccache
+$(package)_patches=codegen_c.cpp.patch
define $(package)_preprocess_cmds
cd $($(package)_extract_dir) && \
+ patch -p1 < $($(package)_patch_dir)/codegen_c.cpp.patch && \
if [ -f script-overrides/stable-1.54.0-macos/build_std.txt ]; then \
ARCH=`uname -m | sed 's/arm64/aarch64/'` && \
sed -i.bak "s/STD_ENV_ARCH=[a-zA-Z0-9_]*/STD_ENV_ARCH=$$$$ARCH/" script-overrides/stable-1.54.0-macos/build_std.txt; \
@@ -16,12 +18,8 @@ define $(package)_preprocess_cmds
ARCH=`uname -m | sed 's/arm64/aarch64/'` && \
sed -i.bak "s/STD_ENV_ARCH=[a-zA-Z0-9_]*/STD_ENV_ARCH=$$$$ARCH/" script-overrides/stable-1.54.0-linux/build_std.txt; \
fi && \
- if [ `uname -s` = "Darwin" ]; then \
- echo 'Patching mrustc to work with clang on macOS' && \
- sed -i.bak 's/-fno-tree-sra//g' Makefile && \
- grep -rl -- "-fno-tree-sra" . | xargs sed -i.bak 's/-fno-tree-sra//g'; \
- fi && \
sed -i.bak 's/^make$$$$/make $$$$@/' build-1.54.0.sh &&\
+ sed -i '' 's/^[[:space:]]*RUSTC_TARGET ?= x86_64-apple-darwin/RUSTC_TARGET ?= aarch64-apple-darwin/' run_rustc/Makefile && \
echo >> build-1.54.0.sh && \
echo make -C run_rustc >> build-1.54.0.sh
endef
@@ -31,9 +29,14 @@ define $(package)_build_cmds
$($(package)_build_env) PARLEVEL=$(shell nproc) ./build-1.54.0.sh -j$(shell nproc)
endef
+# FIXME bad dylib paths embedded in the rustc binary, forcing install_name_tool dark magic
define $(package)_stage_cmds
mkdir -p $($(package)_staging_prefix_dir)/native/rust_1_54_0/bin && \
- cp -a run_rustc/output-1.54.0/prefix-2/bin/rustc $($(package)_staging_prefix_dir)/native/rust_1_54_0/bin && \
- cp -a run_rustc/output-1.54.0/prefix/bin/cargo $($(package)_staging_prefix_dir)/native/rust_1_54_0/bin && \
- cp -a run_rustc/output-1.54.0/prefix-2/lib $($(package)_staging_prefix_dir)/native/rust_1_54_0/lib
+ cp -a run_rustc/output-1.54.0/prefix/bin/ $($(package)_staging_prefix_dir)/native/rust_1_54_0/bin && \
+ cp -a run_rustc/output-1.54.0/prefix/lib $($(package)_staging_prefix_dir)/native/rust_1_54_0/lib && \
+ if [ `uname -s` = "Darwin" ]; then \
+ install_name_tool -change $($(package)_extract_dir)/run_rustc/output-1.54.0/build-rustc/aarch64-apple-darwin/release/deps/librustc_driver.dylib @loader_path/../lib/rustlib/aarch64-apple-darwin/lib/librustc_driver.dylib $($(package)_staging_prefix_dir)/native/rust_1_54_0/bin/rustc_binary && \
+ install_name_tool -change $($(package)_extract_dir)/run_rustc/output-1.54.0/build-std2/aarch64-apple-darwin/release/deps/libstd.dylib @loader_path/../lib/rustlib/aarch64-apple-darwin/lib/libstd.dylib $($(package)_staging_prefix_dir)/native/rust_1_54_0/bin/rustc_binary && \
+ install_name_tool -change $($(package)_extract_dir)/run_rustc/output-1.54.0/build-std2/aarch64-apple-darwin/release/deps/libstd.dylib @loader_path/libstd.dylib $($(package)_staging_prefix_dir)/native/rust_1_54_0/lib/rustlib/aarch64-apple-darwin/lib/librustc_driver.dylib; \
+ fi
endef