diff options
author | Zach van Rijn <me@zv.io> | 2024-12-16 15:54:47 -0600 |
---|---|---|
committer | Zach van Rijn <me@zv.io> | 2024-12-17 01:03:14 -0600 |
commit | e84bcca8de8fc62b5bf0067072c0d4e81346e11d (patch) | |
tree | 6a980ea9463754170a72aab3455cb6dc2a59f1ff | |
parent | 98264c3e6fa550a221317a931aeec048eebd01cd (diff) | |
download | packages-e84bcca8de8fc62b5bf0067072c0d4e81346e11d.tar.gz packages-e84bcca8de8fc62b5bf0067072c0d4e81346e11d.tar.bz2 packages-e84bcca8de8fc62b5bf0067072c0d4e81346e11d.tar.xz packages-e84bcca8de8fc62b5bf0067072c0d4e81346e11d.zip |
experimental/mrustc: new package.
10 files changed, 504 insertions, 0 deletions
diff --git a/experimental/mrustc/0001-Fix-two-typos.patch b/experimental/mrustc/0001-Fix-two-typos.patch new file mode 100644 index 000000000..fc58d2cd8 --- /dev/null +++ b/experimental/mrustc/0001-Fix-two-typos.patch @@ -0,0 +1,35 @@ +From ca30fdadc60b3cb42a0c1e30c1d14088fc2e5cac Mon Sep 17 00:00:00 2001 +From: Tobias Bucher <tobiasbucher5991@gmail.com> +Date: Sun, 15 Dec 2024 12:43:13 +0100 +Subject: [PATCH 1/6] Fix two typos + + +diff --git a/src/hir/hir_ops.cpp b/src/hir/hir_ops.cpp +index 84698c74..0d7c128a 100644 +--- a/src/hir/hir_ops.cpp ++++ b/src/hir/hir_ops.cpp +@@ -713,7 +713,7 @@ bool ::HIR::TraitImpl::overlaps_with(const Crate& crate, const ::HIR::TraitImpl& + DEBUG("- Params mismatch"); + return false; + } +- // Matched with second ording ++ // Matched with second ordering + } + else if( this->m_trait_args.match_test_generics_fuzz(sp, other.m_trait_args, cb_ident, matcher) != ::HIR::Compare::Equal ) + { +diff --git a/src/parse/lex.cpp b/src/parse/lex.cpp +index 29fc6599..ddf3a168 100644 +--- a/src/parse/lex.cpp ++++ b/src/parse/lex.cpp +@@ -43,7 +43,7 @@ Lexer::Lexer(const ::std::string& filename, AST::Edition edition, ParseState ps) + throw ::std::runtime_error("Incomplete BOM - missing \\xBB in second position"); + } + if( this->getc_byte() != '\xbf' ) { +- throw ::std::runtime_error("Incomplete BOM - missing \\xBF in second position"); ++ throw ::std::runtime_error("Incomplete BOM - missing \\xBF in third position"); + } + m_line_ofs = 0; + } +-- +2.40.0 + diff --git a/experimental/mrustc/0002-HIR-Const-Eval-Fix-uninitialised-variable-leading-to.patch b/experimental/mrustc/0002-HIR-Const-Eval-Fix-uninitialised-variable-leading-to.patch new file mode 100644 index 000000000..34244422c --- /dev/null +++ b/experimental/mrustc/0002-HIR-Const-Eval-Fix-uninitialised-variable-leading-to.patch @@ -0,0 +1,22 @@ +From ddd2642eb8374f72473a40fe98891a6f839aeeea Mon Sep 17 00:00:00 2001 +From: John Hodge <tpg@mutabah.net> +Date: Mon, 16 Dec 2024 08:34:43 +0800 +Subject: [PATCH 2/6] HIR Const Eval - Fix uninitialised variable leading to + random failures with newer GCC versions (Fixes #346) + + +diff --git a/src/hir_conv/constant_evaluation.cpp b/src/hir_conv/constant_evaluation.cpp +index 399aab4c..77d0e25a 100644 +--- a/src/hir_conv/constant_evaluation.cpp ++++ b/src/hir_conv/constant_evaluation.cpp +@@ -3099,6 +3099,7 @@ namespace { + , m_recurse_types(false) + , m_impl_params(nullptr) + , m_item_params(nullptr) ++ , m_pass(Pass::OuterOnly) + {} + + ::HIR::Evaluator get_eval(const Span& sp, NewvalState& nvs) const +-- +2.40.0 + diff --git a/experimental/mrustc/0003-Patches-Add-extra-context-to-1.74-patch-file-hopeful.patch b/experimental/mrustc/0003-Patches-Add-extra-context-to-1.74-patch-file-hopeful.patch new file mode 100644 index 000000000..b4a0adc6e --- /dev/null +++ b/experimental/mrustc/0003-Patches-Add-extra-context-to-1.74-patch-file-hopeful.patch @@ -0,0 +1,55 @@ +From 07a942a858b940f2a76e00d88f5c4df084685b33 Mon Sep 17 00:00:00 2001 +From: John Hodge <tpg@mutabah.net> +Date: Mon, 16 Dec 2024 14:21:28 +0800 +Subject: [PATCH 3/6] Patches - Add extra context to 1.74 patch file, hopefully + makes OSX happy. Ref #349 + + +diff --git a/rustc-1.74.0-src.patch b/rustc-1.74.0-src.patch +index cacaa3dc..780afc6d 100644 +--- a/rustc-1.74.0-src.patch ++++ b/rustc-1.74.0-src.patch +@@ -81,13 +81,15 @@ + mod size_asserts { + --- compiler/rustc_middle/src/mir/consts.rs + +++ compiler/rustc_middle/src/mir/consts.rs +-@@ -73,2 +73,2 @@ ++@@ -73,3 +73,3 @@ ++ + -#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))] + +#[cfg(all(target_arch = "x86_64", target_pointer_width = "64", not(rust_compiler = "mrustc")))] + static_assert_size!(ConstValue<'_>, 24); + --- compiler/rustc_middle/src/mir/interpret/value.rs + +++ compiler/rustc_middle/src/mir/interpret/value.rs +-@@ -37,2 +37,2 @@ ++@@ -37,3 +37,3 @@ ++ + -#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))] + +#[cfg(all(target_arch = "x86_64", target_pointer_width = "64", not(rust_compiler = "mrustc")))] + static_assert_size!(Scalar, 24); +@@ -107,7 +109,8 @@ + mod size_asserts { + --- compiler/rustc_middle/src/ty/consts/kind.rs + +++ compiler/rustc_middle/src/ty/consts/kind.rs +-@@ -75,2 +75,2 @@ ++@@ -75,3 +75,3 @@ ++ + -#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))] + +#[cfg(all(target_arch = "x86_64", target_pointer_width = "64", not(rust_compiler = "mrustc")))] + static_assert_size!(Expr<'_>, 24); +@@ -115,7 +118,9 @@ + # MSVC Cannot handle structs larger than 32-bit, so disable this for windows with mrustc + --- vendor/hex/src/lib.rs + +++ vendor/hex/src/lib.rs +-@@ -239,2 +239,2 @@ ++@@ -239,3 +239,3 @@ ++ + -#[cfg(target_pointer_width = "64")] + +#[cfg(all(target_pointer_width = "64", not(rust_compiler = "mrustc")))] +- from_hex_array_impl! { +\ No newline at end of file ++ from_hex_array_impl! { ++ +-- +2.40.0 + diff --git a/experimental/mrustc/0004-Patches-Fix-incorrect-line-numbers-in-patches.patch b/experimental/mrustc/0004-Patches-Fix-incorrect-line-numbers-in-patches.patch new file mode 100644 index 000000000..3b7340a30 --- /dev/null +++ b/experimental/mrustc/0004-Patches-Fix-incorrect-line-numbers-in-patches.patch @@ -0,0 +1,48 @@ +From 012bc633560b5fb7fbaaa2e7733852c1eedbd8d5 Mon Sep 17 00:00:00 2001 +From: John Hodge <tpg@mutabah.net> +Date: Mon, 16 Dec 2024 15:07:57 +0800 +Subject: [PATCH 4/6] Patches - Fix incorrect line numbers in patches + + +diff --git a/rustc-1.74.0-src.patch b/rustc-1.74.0-src.patch +index 780afc6d..8d3df778 100644 +--- a/rustc-1.74.0-src.patch ++++ b/rustc-1.74.0-src.patch +@@ -81,14 +81,14 @@ + mod size_asserts { + --- compiler/rustc_middle/src/mir/consts.rs + +++ compiler/rustc_middle/src/mir/consts.rs +-@@ -73,3 +73,3 @@ ++@@ -72,3 +73,3 @@ + + -#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))] + +#[cfg(all(target_arch = "x86_64", target_pointer_width = "64", not(rust_compiler = "mrustc")))] + static_assert_size!(ConstValue<'_>, 24); + --- compiler/rustc_middle/src/mir/interpret/value.rs + +++ compiler/rustc_middle/src/mir/interpret/value.rs +-@@ -37,3 +37,3 @@ ++@@ -36,3 +37,3 @@ + + -#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))] + +#[cfg(all(target_arch = "x86_64", target_pointer_width = "64", not(rust_compiler = "mrustc")))] +@@ -109,7 +109,7 @@ + mod size_asserts { + --- compiler/rustc_middle/src/ty/consts/kind.rs + +++ compiler/rustc_middle/src/ty/consts/kind.rs +-@@ -75,3 +75,3 @@ ++@@ -74,3 +75,3 @@ + + -#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))] + +#[cfg(all(target_arch = "x86_64", target_pointer_width = "64", not(rust_compiler = "mrustc")))] +@@ -118,7 +118,7 @@ + # MSVC Cannot handle structs larger than 32-bit, so disable this for windows with mrustc + --- vendor/hex/src/lib.rs + +++ vendor/hex/src/lib.rs +-@@ -239,3 +239,3 @@ ++@@ -238,3 +239,3 @@ + + -#[cfg(target_pointer_width = "64")] + +#[cfg(all(target_pointer_width = "64", not(rust_compiler = "mrustc")))] +-- +2.40.0 + diff --git a/experimental/mrustc/0005-Patches-Fix-it-this-time.patch b/experimental/mrustc/0005-Patches-Fix-it-this-time.patch new file mode 100644 index 000000000..b3423a9e5 --- /dev/null +++ b/experimental/mrustc/0005-Patches-Fix-it-this-time.patch @@ -0,0 +1,48 @@ +From bb8b59f16c3cd234f4f08102b57558748766dec0 Mon Sep 17 00:00:00 2001 +From: John Hodge <tpg@mutabah.net> +Date: Mon, 16 Dec 2024 15:39:57 +0800 +Subject: [PATCH 5/6] Patches - Fix it this time? + + +diff --git a/rustc-1.74.0-src.patch b/rustc-1.74.0-src.patch +index 8d3df778..f0ae6172 100644 +--- a/rustc-1.74.0-src.patch ++++ b/rustc-1.74.0-src.patch +@@ -81,14 +81,14 @@ + mod size_asserts { + --- compiler/rustc_middle/src/mir/consts.rs + +++ compiler/rustc_middle/src/mir/consts.rs +-@@ -72,3 +73,3 @@ ++@@ -72,3 +72,3 @@ + + -#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))] + +#[cfg(all(target_arch = "x86_64", target_pointer_width = "64", not(rust_compiler = "mrustc")))] + static_assert_size!(ConstValue<'_>, 24); + --- compiler/rustc_middle/src/mir/interpret/value.rs + +++ compiler/rustc_middle/src/mir/interpret/value.rs +-@@ -36,3 +37,3 @@ ++@@ -36,3 +36,3 @@ + + -#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))] + +#[cfg(all(target_arch = "x86_64", target_pointer_width = "64", not(rust_compiler = "mrustc")))] +@@ -109,7 +109,7 @@ + mod size_asserts { + --- compiler/rustc_middle/src/ty/consts/kind.rs + +++ compiler/rustc_middle/src/ty/consts/kind.rs +-@@ -74,3 +75,3 @@ ++@@ -74,3 +74,3 @@ + + -#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))] + +#[cfg(all(target_arch = "x86_64", target_pointer_width = "64", not(rust_compiler = "mrustc")))] +@@ -118,7 +118,7 @@ + # MSVC Cannot handle structs larger than 32-bit, so disable this for windows with mrustc + --- vendor/hex/src/lib.rs + +++ vendor/hex/src/lib.rs +-@@ -238,3 +239,3 @@ ++@@ -238,3 +238,3 @@ + + -#[cfg(target_pointer_width = "64")] + +#[cfg(all(target_pointer_width = "64", not(rust_compiler = "mrustc")))] +-- +2.40.0 + diff --git a/experimental/mrustc/0006-Codegen-C-Turn-down-gcc-optimisation-level-to-work-a.patch b/experimental/mrustc/0006-Codegen-C-Turn-down-gcc-optimisation-level-to-work-a.patch new file mode 100644 index 000000000..f84c19b44 --- /dev/null +++ b/experimental/mrustc/0006-Codegen-C-Turn-down-gcc-optimisation-level-to-work-a.patch @@ -0,0 +1,24 @@ +From 994ddf817a554c48ae03840c8aaf82fb99ab5d27 Mon Sep 17 00:00:00 2001 +From: John Hodge <tpg@mutabah.net> +Date: Mon, 16 Dec 2024 20:09:09 +0800 +Subject: [PATCH 6/6] Codegen C - Turn down gcc optimisation level to work + around #347 + + +diff --git a/src/trans/codegen_c.cpp b/src/trans/codegen_c.cpp +index c40a8d98..6a3cdf25 100644 +--- a/src/trans/codegen_c.cpp ++++ b/src/trans/codegen_c.cpp +@@ -1282,7 +1282,8 @@ namespace { + args.push_back("-O1"); + break; + case 2: +- args.push_back("-O2"); ++ //args.push_back("-O2"); ++ args.push_back("-O1"); // HACK: Work around mrustc #347 by reducing the optimisation level + break; + } + // HACK: Work around [https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117423] by disabling an optimisation stage +-- +2.40.0 + diff --git a/experimental/mrustc/0007-HIR-Typecheck-Properly-pass-type-params-to-const-eva.patch b/experimental/mrustc/0007-HIR-Typecheck-Properly-pass-type-params-to-const-eva.patch new file mode 100644 index 000000000..d190dbb40 --- /dev/null +++ b/experimental/mrustc/0007-HIR-Typecheck-Properly-pass-type-params-to-const-eva.patch @@ -0,0 +1,102 @@ +From 5e01a76097265f4bb27b18885b9af3f2778180f9 Mon Sep 17 00:00:00 2001 +From: John Hodge <tpg@mutabah.net> +Date: Tue, 17 Dec 2024 12:13:04 +0800 +Subject: [PATCH] HIR Typecheck - Properly pass type params to const evaluation + (re #322) + + +diff --git a/samples/test/mrustc-322.rs b/samples/test/mrustc-322.rs +new file mode 100644 +index 00000000..654f3ef7 +--- /dev/null ++++ b/samples/test/mrustc-322.rs +@@ -0,0 +1,14 @@ ++// ignore-test - Rustc doesn't allow this, plus it doesn't specify the type for the `Vec<_>` ++#![crate_type = "lib"] ++struct Assert<const COND: bool>; ++trait IsTrue {} ++impl IsTrue for Assert<true> {} ++trait IsNotZst {} ++impl<T> IsNotZst for T ++where ++ Assert<{ std::mem::size_of::<T>() > 0 }>: IsTrue, ++{} ++fn assert_not_zero_sized<T: IsNotZst>(_: T) {} ++fn main() { ++ assert_not_zero_sized(vec![]); ++} +diff --git a/src/hir_conv/constant_evaluation.cpp b/src/hir_conv/constant_evaluation.cpp +index 77d0e25a..9ae98604 100644 +--- a/src/hir_conv/constant_evaluation.cpp ++++ b/src/hir_conv/constant_evaluation.cpp +@@ -3729,6 +3729,22 @@ void ConvertHIR_ConstantEvaluate_ArraySize(const Span& sp, const ::HIR::Crate& c + } + } + ++namespace { ++ bool params_contain_ivars(const ::HIR::PathParams& params) { ++ for(const auto& t : params.m_types) { ++ if( visit_ty_with(t, [](const HIR::TypeRef& t){ return t.data().is_Infer(); })) { ++ return true; ++ } ++ } ++ for(const auto& v : params.m_values) { ++ if( v.is_Infer() ) { ++ return true; ++ } ++ } ++ return false; ++ } ++} ++ + void ConvertHIR_ConstantEvaluate_MethodParams( + const Span& sp, + const ::HIR::Crate& crate, const HIR::SimplePath& mod_path, const ::HIR::GenericParams* impl_generics, const ::HIR::GenericParams* item_generics, +@@ -3740,7 +3756,8 @@ void ConvertHIR_ConstantEvaluate_MethodParams( + { + if(v.is_Unevaluated()) + { +- const auto& e = *v.as_Unevaluated()->expr; ++ const auto& ue = *v.as_Unevaluated(); ++ const auto& e = *ue.expr; + auto name = FMT("param_" << &v << "#"); + TRACE_FUNCTION_FR(name, name); + auto nvs = NewvalState { crate.get_mod_by_path(Span(), mod_path), mod_path, name }; +@@ -3751,12 +3768,21 @@ void ConvertHIR_ConstantEvaluate_MethodParams( + // - Which, might not be known at this point - might be a UfcsInherent + try + { ++ // TODO: if there's an ivar in the param list, then throw defer ++ // - Caller should ensure that known ivars are expanded. ++ if( params_contain_ivars(ue.params_impl) || params_contain_ivars(ue.params_item) ) { ++ throw Defer(); ++ } ++ + auto idx = static_cast<size_t>(&v - ¶ms.m_values.front()); + ASSERT_BUG(sp, idx < params_def.m_values.size(), ""); + const auto& ty = params_def.m_values[idx].m_type; + ASSERT_BUG(sp, !monomorphise_type_needed(ty), "" << ty); ++ MonomorphState ms; ++ ms.pp_impl = &ue.params_impl; ++ ms.pp_method = &ue.params_item; + +- auto val = eval.evaluate_constant( ::HIR::ItemPath(mod_path, name.c_str()), e, ty.clone() ); ++ auto val = eval.evaluate_constant( ::HIR::ItemPath(mod_path, name.c_str()), e, ty.clone(), std::move(ms) ); + v = ::HIR::ConstGeneric::make_Evaluated(std::move(val)); + } + catch(const Defer& ) +diff --git a/src/hir_typeck/expr_cs.cpp b/src/hir_typeck/expr_cs.cpp +index 63754207..02b333bd 100644 +--- a/src/hir_typeck/expr_cs.cpp ++++ b/src/hir_typeck/expr_cs.cpp +@@ -2385,6 +2385,7 @@ void Context::equate_values(const Span& sp, const ::HIR::ConstGeneric& rl, const + this->m_ivars.set_ivar_val_to(r.as_Infer().index, l.clone()); + } + else { ++ // TODO: What about unevaluated values due to type inference? + ERROR(sp, E0000, "Value mismatch between " << l << " and " << r); + } + } +-- +2.40.0 + diff --git a/experimental/mrustc/APKBUILD b/experimental/mrustc/APKBUILD new file mode 100644 index 000000000..69891f37e --- /dev/null +++ b/experimental/mrustc/APKBUILD @@ -0,0 +1,82 @@ +# Contributor: Zach van Rijn <me@zv.io> +# Maintainer: Zach van Rijn <me@zv.io> +pkgname=mrustc +pkgver=0.11.0 +_rustcver=1.74.1 +_minorver=${_rustcver%.*}.0 +pkgrel=0 +pkgdesc="Alternative rust compiler (re-implementation)" +url="https://github.com/thepowersgang/mrustc" +arch="x86_64" +license="MIT" +depends="" +makedepends="cmake python3 zlib-dev" +subpackages="" +source="mrustc-$pkgver.tar.gz::https://github.com/thepowersgang/mrustc/archive/refs/tags/v$pkgver.tar.gz + https://static.rust-lang.org/dist/rustc-${_rustcver}-src.tar.xz + use-cached-tarball.patch + + 0001-Fix-two-typos.patch + 0002-HIR-Const-Eval-Fix-uninitialised-variable-leading-to.patch + 0003-Patches-Add-extra-context-to-1.74-patch-file-hopeful.patch + 0004-Patches-Fix-incorrect-line-numbers-in-patches.patch + 0005-Patches-Fix-it-this-time.patch + 0006-Codegen-C-Turn-down-gcc-optimisation-level-to-work-a.patch + 0007-HIR-Typecheck-Properly-pass-type-params-to-const-eva.patch + + add-adelie-targets.patch + " + +prepare() { + default_prepare + + # use our cached copy and do not download during build + mv "${srcdir}"/rustc-${_rustcver}-src "${builddir}"/rustc-${_minorver}-src +} + +build() { + # experimental but do you really want to build llvm with -j1? + export PARLEVEL="${JOBS}" + + export RUSTC_VERSION=${_minorver} MRUSTC_TARGET_VER=${_rustcver%.*} OUTDIR_SUF=-${_minorver} + + make + make RUSTCSRC + make -f minicargo.mk LIBS + + make test + make local_tests + + RUSTC_INSTALL_BINDIR=bin make -f minicargo.mk output-${_minorver}/rustc + + LIBGIT2_SYS_USE_PKG_CONFIG=1 make -f minicargo.mk -j ${PARLEVEL:-1} output-${_minorver}/cargo +} + +check() { + cd "${builddir}" + + ./output-${_minorver}/rustc --version + ./output-${_minorver}/cargo --version + ./output-${_minorver}/rustc samples/no_core.rs + #./output-${_minorver}/rustc samples/1.rs +} + +package() { + mkdir -p "$pkgdir"/usr/bin + + for k in cargo rustc; do + cp "$builddir"/output-${_minorver}/${k} "$pkgdir"/usr/bin + done +} + +sha512sums="2cc4941f8747be4ddde4109ab93a1cec2792839b3083b5f4b39b8009823d212c43c95f9cc56a96901c416934033c4e94917d18ef3ff15899de8b2840e955bd3f mrustc-0.11.0.tar.gz +14c7e7ed2f38ab60299d8c7d41d78f042b6b57ef822d577b5138e60bdde31cf141eccd4332a25bc5da3d58eb5313d63c1448b5dfe9e11b8055bb8ea133a9038d rustc-1.74.1-src.tar.xz +f301120ea9488d90511d55a123ebbab4738ff67d0a1352427e7002b59642beaf8a8fd3908c41a6eeb59fd017509d66eb637e048dd7c96ed21b8b97df9c506f58 use-cached-tarball.patch +90db8205bcefb71bdf248d5d3c1e170b43f7a6d672931f15bd9fd000de7528088b048f48b6a5f18b61432f2d61041da8f875e6f7a135f62d05dc36c05edaf712 0001-Fix-two-typos.patch +53bf7c21f0ee3384d1d3c284654819027f1a132ddd32ca8b51d82eca97b87421f331a3cfb974de8f45b18aadf05144cdcef80441db1c78a8b4fe025dd38c4f62 0002-HIR-Const-Eval-Fix-uninitialised-variable-leading-to.patch +76f2cf36a7efa66295d20b1b3d2faeff74087a9b240801f3d6c2a4beb34bbabffc540f363b96c26dd8024a0ce13f7018d4cab4816bc0fe00c6be459b8b544852 0003-Patches-Add-extra-context-to-1.74-patch-file-hopeful.patch +debbc9d9a2d2398cd66987904ea62f26a64be078b97cbfa159e10b63c5fd2e1fbdf600a1326c9f6a7b4b3f7066fb0b0c66ebdb528232eac42b2e9c5bf56e18fa 0004-Patches-Fix-incorrect-line-numbers-in-patches.patch +11fed26ae226c810b2f06f983f665639e146c3ef2da1b68d64586a35555de0b0e58e3e8765b5bc45085b237dfe74ca6c33e864bdf9d2e89f1be75050f63aa922 0005-Patches-Fix-it-this-time.patch +7e879056bf3debdaf469ef0b17cf91b6e61d8802094521b8df1d0c07f9d889897009e2987e3654c3560d03e3fa775b26ec11543c5ba630bc059c50f6bbc8145e 0006-Codegen-C-Turn-down-gcc-optimisation-level-to-work-a.patch +52a42716b73f13852c5507a9566250f174b6a87de0aed3752f5f54bdf25887930620b3c0ea597bdb86c33b8be00724fa94e5c38e156a7edadb3776e4c4a5fb39 0007-HIR-Typecheck-Properly-pass-type-params-to-const-eva.patch +ef161a48c432c4338d48cf52ef45085aa8479ff13102af924a9f35d5786db90953163d79129f004eddc1dd67f41f7946228d211147d8b310a928548705079442 add-adelie-targets.patch" diff --git a/experimental/mrustc/add-adelie-targets.patch b/experimental/mrustc/add-adelie-targets.patch new file mode 100644 index 000000000..e37171945 --- /dev/null +++ b/experimental/mrustc/add-adelie-targets.patch @@ -0,0 +1,68 @@ +diff -ur a/src/trans/target.cpp b/src/trans/target.cpp +--- a/src/trans/target.cpp 2024-12-16 21:41:45.380039459 +0000 ++++ b/src/trans/target.cpp 2024-12-16 21:49:00.640039666 +0000 +@@ -411,7 +411,9 @@ + { + return load_spec_from_file(target_name); + } +- else if(target_name == "i586-linux-gnu" || target_name == "i586-unknown-linux-gnu") ++ else if(target_name == "i586-linux-gnu" || target_name == "i586-unknown-linux-gnu" ++ || target_name == "i586-linux-musl" || target_name == "i586-unknown-linux-musl" ++ || target_name == "i686-linux-musl" || target_name == "i686-unknown-linux-musl") + { + return TargetSpec { + "unix", "linux", "gnu", {CodegenMode::Gnu11, true, "i586-linux-gnu", BACKEND_C_OPTS_GNU}, +@@ -439,42 +441,47 @@ + ARCH_X32 + }; + } +- else if(target_name == "arm-linux-gnu" || target_name == "arm-unknown-linux-gnu") ++ else if(target_name == "arm-linux-gnu" || target_name == "arm-unknown-linux-gnu" ++ || target_name == "arm-linux-musl" || target_name == "arm-unknown-linux-musl" ++ || target_name == "armv7l-linux-musl" || target_name == "armv7l-unknown-linux-musl" ++ || target_name == "armv7-linux-musl" || target_name == "armv7-unknown-linux-musl") + { + return TargetSpec { + "unix", "linux", "gnu", {CodegenMode::Gnu11, true, "arm-elf-eabi", BACKEND_C_OPTS_GNU}, + ARCH_ARM32 + }; + } +- else if(target_name == "aarch64-linux-gnu" || target_name == "aarch64-unknown-linux-gnu") ++ else if(target_name == "aarch64-linux-gnu" || target_name == "aarch64-unknown-linux-gnu" ++ || target_name == "aarch64-linux-musl" || target_name == "aarch64-unknown-linux-musl") + { + return TargetSpec { + "unix", "linux", "gnu", {CodegenMode::Gnu11, false, "aarch64-linux-gnu", BACKEND_C_OPTS_GNU}, + ARCH_ARM64 + }; + } +- else if(target_name == "m68k-linux-gnu" || target_name == "m68k-unknown-linux-gnu") ++ else if(target_name == "m68k-linux-gnu" || target_name == "m68k-unknown-linux-gnu" ++ || target_name == "m68k-linux-musl" || target_name == "m68k-unknown-linux-musl") + { + return TargetSpec { + "unix", "linux", "gnu", {CodegenMode::Gnu11, true, "m68k-linux-gnu", BACKEND_C_OPTS_GNU}, + ARCH_M68K + }; + } +- else if(target_name == "powerpc64-unknown-linux-gnu") ++ else if(target_name == "powerpc64-unknown-linux-gnu" || target_name == "powerpc64-unknown-linux-musl") + { + return TargetSpec { + "unix", "linux", "gnu", {CodegenMode::Gnu11, false, "powerpc64-unknown-linux-gnu", BACKEND_C_OPTS_GNU}, + ARCH_POWERPC64 + }; + } +- else if(target_name == "powerpc64le-unknown-linux-gnu") ++ else if(target_name == "powerpc64le-unknown-linux-gnu" || target_name == "powerpc64le-unknown-linux-musl") + { + return TargetSpec { + "unix", "linux", "gnu", {CodegenMode::Gnu11, false, "powerpc64le-unknown-linux-gnu", BACKEND_C_OPTS_GNU}, + ARCH_POWERPC64LE + }; + } +- else if(target_name == "riscv64-unknown-linux-gnu") ++ else if(target_name == "riscv64-unknown-linux-gnu" || target_name == "riscv64-unknown-linux-musl") + { + return TargetSpec { + "unix", "linux", "gnu", {CodegenMode::Gnu11, false, "riscv64-unknown-linux-gnu", BACKEND_C_OPTS_GNU}, diff --git a/experimental/mrustc/use-cached-tarball.patch b/experimental/mrustc/use-cached-tarball.patch new file mode 100644 index 000000000..9d66001bd --- /dev/null +++ b/experimental/mrustc/use-cached-tarball.patch @@ -0,0 +1,20 @@ +diff -ur a/minicargo.mk b/minicargo.mk +--- a/minicargo.mk 2024-12-17 05:12:59.834050504 +0000 ++++ b/minicargo.mk 2024-12-17 05:22:54.039140295 +0000 +@@ -204,15 +204,7 @@ + # + # rustc (with std/cargo) source download + # +-RUSTC_SRC_TARBALL := rustc-$(RUSTC_VERSION)-src.tar.gz +-$(RUSTC_SRC_TARBALL): +- @echo [CURL] $@ +- @rm -f $@ +- @curl -sS https://static.rust-lang.org/dist/$@ -o $@ +-rustc-$(RUSTC_VERSION)-src/extracted: $(RUSTC_SRC_TARBALL) +- tar -xf $(RUSTC_SRC_TARBALL) +- touch $@ +-$(RUSTC_SRC_DL): rustc-$(RUSTC_VERSION)-src/extracted rustc-$(RUSTC_VERSION)-src.patch ++$(RUSTC_SRC_DL): rustc-$(RUSTC_VERSION)-src.patch + cd $(RUSTCSRC) && patch -p0 < ../rustc-$(RUSTC_VERSION)-src.patch; + touch $@ + |