summaryrefslogtreecommitdiff
path: root/experimental/mrustc/mrustc-adelie-targets.patch
diff options
context:
space:
mode:
Diffstat (limited to 'experimental/mrustc/mrustc-adelie-targets.patch')
-rw-r--r--experimental/mrustc/mrustc-adelie-targets.patch309
1 files changed, 309 insertions, 0 deletions
diff --git a/experimental/mrustc/mrustc-adelie-targets.patch b/experimental/mrustc/mrustc-adelie-targets.patch
new file mode 100644
index 000000000..c084538f7
--- /dev/null
+++ b/experimental/mrustc/mrustc-adelie-targets.patch
@@ -0,0 +1,309 @@
+This two-step patch is for ease of patch maintenance only.
+
+diff -ur a/src/trans/target.cpp b/src/trans/target.cpp
+--- a/src/trans/target.cpp 2024-12-17 15:23:24.990000000 +0000
++++ b/src/trans/target.cpp 2024-12-17 15:23:59.900000000 +0000
+@@ -411,231 +411,6 @@
+ {
+ return load_spec_from_file(target_name);
+ }
+- else if(target_name == "i586-linux-gnu" || target_name == "i586-unknown-linux-gnu")
+- {
+- return TargetSpec {
+- "unix", "linux", "gnu", {CodegenMode::Gnu11, true, "i586-linux-gnu", BACKEND_C_OPTS_GNU},
+- ARCH_X86
+- };
+- }
+- else if(target_name == "x86_64-linux-gnu" || target_name == "x86_64-unknown-linux-gnu")
+- {
+- return TargetSpec {
+- "unix", "linux", "gnu", {CodegenMode::Gnu11, true /*false*/, "x86_64-linux-gnu", BACKEND_C_OPTS_GNU},
+- ARCH_X86_64
+- };
+- }
+- else if(target_name == "x86_64-linux-musl" || target_name == "x86_64-unknown-linux-musl")
+- {
+- return TargetSpec {
+- "unix", "linux", "musl", {CodegenMode::Gnu11, true /*false*/, "x86_64-linux-musl", BACKEND_C_OPTS_GNU},
+- ARCH_X86_64
+- };
+- }
+- else if(target_name == "x86_64-unknown-linux-gnux32")
+- {
+- return TargetSpec {
+- "unix", "linux", "gnu", {CodegenMode::Gnu11, true, "x86_64-unknown-linux-gnux32", BACKEND_C_OPTS_GNU},
+- ARCH_X32
+- };
+- }
+- else if(target_name == "arm-linux-gnu" || target_name == "arm-unknown-linux-gnu")
+- {
+- 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")
+- {
+- 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")
+- {
+- 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")
+- {
+- 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")
+- {
+- 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")
+- {
+- return TargetSpec {
+- "unix", "linux", "gnu", {CodegenMode::Gnu11, false, "riscv64-unknown-linux-gnu", BACKEND_C_OPTS_GNU},
+- ARCH_RISCV64
+- };
+- }
+- else if(target_name == "i586-pc-windows-gnu")
+- {
+- return TargetSpec {
+- "windows", "windows", "gnu", {CodegenMode::Gnu11, true, "mingw32", BACKEND_C_OPTS_GNU},
+- ARCH_X86
+- };
+- }
+- else if(target_name == "x86_64-pc-windows-gnu")
+- {
+- return TargetSpec {
+- "windows", "windows", "gnu", {CodegenMode::Gnu11, false, "x86_64-w64-mingw32", BACKEND_C_OPTS_GNU},
+- ARCH_X86_64
+- };
+- }
+- else if (target_name == "x86-pc-windows-msvc")
+- {
+- // TODO: Should this include the "kernel32.lib" inclusion?
+- return TargetSpec {
+- "windows", "windows", "msvc", {CodegenMode::Msvc, true, "x86", {}, {}},
+- ARCH_X86
+- };
+- }
+- else if (target_name == "x86_64-pc-windows-msvc")
+- {
+- return TargetSpec {
+- "windows", "windows", "msvc", {CodegenMode::Msvc, true, "amd64", {}, {}},
+- ARCH_X86_64
+- };
+- }
+- else if(target_name == "i686-unknown-freebsd")
+- {
+- return TargetSpec {
+- "unix", "freebsd", "gnu", {CodegenMode::Gnu11, true, "i686-unknown-freebsd", BACKEND_C_OPTS_GNU},
+- ARCH_X86
+- };
+- }
+- else if(target_name == "x86_64-unknown-freebsd")
+- {
+- return TargetSpec {
+- "unix", "freebsd", "gnu", {CodegenMode::Gnu11, false, "x86_64-unknown-freebsd", BACKEND_C_OPTS_GNU},
+- ARCH_X86_64
+- };
+- }
+- else if(target_name == "arm-unknown-freebsd")
+- {
+- return TargetSpec {
+- "unix", "freebsd", "gnu", {CodegenMode::Gnu11, true, "arm-unknown-freebsd", BACKEND_C_OPTS_GNU},
+- ARCH_ARM32
+- };
+- }
+- else if(target_name == "aarch64-unknown-freebsd")
+- {
+- return TargetSpec {
+- "unix", "freebsd", "gnu", {CodegenMode::Gnu11, false, "aarch64-unknown-freebsd", BACKEND_C_OPTS_GNU},
+- ARCH_ARM64
+- };
+- }
+- else if(target_name == "x86_64-unknown-netbsd")
+- {
+- return TargetSpec {
+- "unix", "netbsd", "gnu", {CodegenMode::Gnu11, false, "x86_64-unknown-netbsd", BACKEND_C_OPTS_GNU},
+- ARCH_X86_64
+- };
+- }
+- else if(target_name == "i686-unknown-openbsd")
+- {
+- return TargetSpec {
+- "unix", "openbsd", "gnu", {CodegenMode::Gnu11, true, "i686-unknown-openbsd", BACKEND_C_OPTS_GNU},
+- ARCH_X86
+- };
+- }
+- else if(target_name == "x86_64-unknown-openbsd")
+- {
+- return TargetSpec {
+- "unix", "openbsd", "gnu", {CodegenMode::Gnu11, false, "x86_64-unknown-openbsd", BACKEND_C_OPTS_GNU},
+- ARCH_X86_64
+- };
+- }
+- else if(target_name == "arm-unknown-openbsd")
+- {
+- return TargetSpec {
+- "unix", "openbsd", "gnu", {CodegenMode::Gnu11, true, "arm-unknown-openbsd", BACKEND_C_OPTS_GNU},
+- ARCH_ARM32
+- };
+- }
+- else if(target_name == "aarch64-unknown-openbsd")
+- {
+- return TargetSpec {
+- "unix", "openbsd", "gnu", {CodegenMode::Gnu11, false, "aarch64-unknown-openbsd", BACKEND_C_OPTS_GNU},
+- ARCH_ARM64
+- };
+- }
+- else if(target_name == "x86_64-unknown-dragonfly")
+- {
+- return TargetSpec {
+- "unix", "dragonfly", "gnu", {CodegenMode::Gnu11, false, "x86_64-unknown-dragonfly", BACKEND_C_OPTS_GNU},
+- ARCH_X86_64
+- };
+- }
+- else if(target_name == "i686-apple-darwin")
+- {
+- // NOTE: OSX uses Mach-O binaries, which don't fully support the defaults used for GNU targets
+- // The first 32bit Intel Mac was Core Solo aka yonah. It allows to use `-march=yonah` like Rust.
+- return TargetSpec {
+- "unix", "macos", "gnu", {CodegenMode::Gnu11, false, "x86_64-apple-darwin", {"-march=yonah"}, {}},
+- ARCH_X86_64
+- };
+- }
+- else if(target_name == "x86_64-apple-darwin")
+- {
+- // NOTE: OSX uses Mach-O binaries, which don't fully support the defaults used for GNU targets
+- // The first 64bit Intel Mac was Core Duo. It allows to use `-march=core2` like Rust.
+- return TargetSpec {
+- "unix", "macos", "gnu", {CodegenMode::Gnu11, false, "x86_64-apple-darwin", {"-march=core2"}, {}},
+- ARCH_X86_64
+- };
+- }
+- else if(target_name == "aarch64-apple-darwin")
+- {
+- // NOTE: OSX uses Mach-O binaries, which don't fully support the defaults used for GNU targets
+- return TargetSpec {
+- "unix", "macos", "gnu", {CodegenMode::Gnu11, false, "aarch64-apple-darwin", {}, {}},
+- ARCH_ARM64
+- };
+- }
+- else if(target_name == "powerpc-apple-darwin")
+- {
+- // NOTE: OSX uses Mach-O binaries, which don't fully support the defaults used for GNU targets
+- return TargetSpec {
+- "unix", "macos", "gnu", {CodegenMode::Gnu11, false, "powerpc-apple-darwin", {}, {}},
+- ARCH_POWERPC32
+- };
+- }
+- else if(target_name == "powerpc64-apple-darwin")
+- {
+- // NOTE: OSX uses Mach-O binaries, which don't fully support the defaults used for GNU targets
+- return TargetSpec {
+- "unix", "macos", "gnu", {CodegenMode::Gnu11, false, "powerpc64-apple-darwin", {}, {}},
+- ARCH_POWERPC64
+- };
+- }
+- else if(target_name == "arm-unknown-haiku")
+- {
+- return TargetSpec {
+- "unix", "haiku", "gnu", {CodegenMode::Gnu11, true, "arm-unknown-haiku", {}, {}},
+- ARCH_ARM32
+- };
+- }
+- else if(target_name == "x86_64-unknown-haiku")
+- {
+- return TargetSpec {
+- "unix", "haiku", "gnu", {CodegenMode::Gnu11, false, "x86_64-unknown-haiku", {}, {}},
+- ARCH_X86_64
+- };
+- }
+ else
+ {
+ ::std::cerr << "Unknown target name '" << target_name << "'" << ::std::endl;
+--- a/src/trans/target.cpp 2024-12-17 15:27:49.410000000 +0000
++++ b/src/trans/target.cpp 2024-12-17 15:26:13.600000000 +0000
+@@ -411,6 +411,69 @@
+ {
+ return load_spec_from_file(target_name);
+ }
++ else if(target_name == "x86_64-foxkit-linux-musl" || target_name == "x86_64-unknown-linux-musl")
++ {
++ return TargetSpec {
++ "unix", "linux", "musl", {CodegenMode::Gnu11, true /*false*/, "x86_64-linux-musl", BACKEND_C_OPTS_GNU},
++ ARCH_X86_64
++ };
++ }
++ else if(target_name == "i586-foxkit-linux-musl" || target_name == "i586-unknown-linux-musl")
++ {
++ return TargetSpec {
++ "unix", "linux", "musl", {CodegenMode::Gnu11, true /*false*/, "i586-linux-musl", BACKEND_C_OPTS_GNU},
++ ARCH_X86
++ };
++ }
++ else if(target_name == "aarch64-foxkit-linux-musl" || target_name == "aarch64-unknown-linux-musl")
++ {
++ return TargetSpec {
++ "unix", "linux", "musl", {CodegenMode::Gnu11, true /*false*/, "aarch64-linux-musl", BACKEND_C_OPTS_GNU},
++ ARCH_ARM64
++ };
++ }
++ else if(target_name == "armv7-foxkit-linux-musleabihf" || target_name == "armv7-unknown-linux-musleabihf")
++ {
++ return TargetSpec {
++ "unix", "linux", "musl", {CodegenMode::Gnu11, true /*false*/, "arm-linux-musl", BACKEND_C_OPTS_GNU},
++ ARCH_ARM32
++ };
++ }
++ else if(target_name == "m68k-foxkit-linux-musl" || target_name == "m68k-unknown-linux-musl")
++ {
++ return TargetSpec {
++ "unix", "linux", "musl", {CodegenMode::Gnu11, true /*false*/, "m68k-linux-musl", BACKEND_C_OPTS_GNU},
++ ARCH_M68K
++ };
++ }
++ else if(target_name == "powerpc64-foxkit-linux-musl" || target_name == "powerpc64-unknown-linux-musl")
++ {
++ return TargetSpec {
++ "unix", "linux", "musl", {CodegenMode::Gnu11, true /*false*/, "powerpc64-linux-musl", BACKEND_C_OPTS_GNU},
++ ARCH_POWERPC64
++ };
++ }
++ else if(target_name == "powerpc64le-foxkit-linux-musl" || target_name == "powerpc64le-unknown-linux-musl")
++ {
++ return TargetSpec {
++ "unix", "linux", "musl", {CodegenMode::Gnu11, true /*false*/, "powerpc64le-linux-musl", BACKEND_C_OPTS_GNU},
++ ARCH_POWERPC64LE
++ };
++ }
++ else if(target_name == "powerpc-foxkit-linux-musl" || target_name == "powerpc-unknown-linux-musl")
++ {
++ return TargetSpec {
++ "unix", "linux", "musl", {CodegenMode::Gnu11, true /*false*/, "powerpc-linux-musl", BACKEND_C_OPTS_GNU},
++ ARCH_POWERPC32
++ };
++ }
++ else if(target_name == "riscv64-foxkit-linux-musl" || target_name == "riscv64-unknown-linux-musl")
++ {
++ return TargetSpec {
++ "unix", "linux", "musl", {CodegenMode::Gnu11, true /*false*/, "riscv64-linux-musl", BACKEND_C_OPTS_GNU},
++ ARCH_RISCV64
++ };
++ }
+ else
+ {
+ ::std::cerr << "Unknown target name '" << target_name << "'" << ::std::endl;