[clang] [llvm] [llvm] Add triples for managarm (PR #87845)
https://github.com/no92 created https://github.com/llvm/llvm-project/pull/87845 This PR aims to add a target for [managarm](https://github.com/managarm/managarm). The targets `{x86_64,aarch64,riscv64}-pc-managarm-{kernel,system}` are enabled by this PR and have been tested to work on managarm. >From 09288d0ab62d6ca13bd5dea4cfa5d78e67901e89 Mon Sep 17 00:00:00 2001 From: no92 Date: Tue, 2 Apr 2024 18:24:04 +0200 Subject: [PATCH] [llvm] Add triples for managarm --- clang/lib/Basic/Targets.cpp| 9 + clang/lib/Basic/Targets/OSTargets.h| 30 +++ clang/lib/Driver/CMakeLists.txt| 1 + clang/lib/Driver/Driver.cpp| 4 + clang/lib/Driver/ToolChains/Gnu.cpp| 13 +- clang/lib/Driver/ToolChains/Managarm.cpp | 230 + clang/lib/Driver/ToolChains/Managarm.h | 54 + llvm/include/llvm/ADT/bit.h| 2 +- llvm/include/llvm/TargetParser/Triple.h| 5 +- llvm/lib/Support/Unix/Path.inc | 13 +- llvm/lib/TargetParser/Triple.cpp | 6 + llvm/unittests/TargetParser/TripleTest.cpp | 24 +++ 12 files changed, 381 insertions(+), 10 deletions(-) create mode 100644 clang/lib/Driver/ToolChains/Managarm.cpp create mode 100644 clang/lib/Driver/ToolChains/Managarm.h diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index e3283510c6aac7..356b1888aca80d 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -160,6 +160,9 @@ std::unique_ptr AllocateTarget(const llvm::Triple &Triple, return std::make_unique>(Triple, Opts); } +case llvm::Triple::Managarm: + return std::make_unique>(Triple, + Opts); case llvm::Triple::NetBSD: return std::make_unique>(Triple, Opts); @@ -463,6 +466,9 @@ std::unique_ptr AllocateTarget(const llvm::Triple &Triple, return std::make_unique>(Triple, Opts); } +case llvm::Triple::Managarm: + return std::make_unique>(Triple, + Opts); default: return std::make_unique(Triple, Opts); } @@ -646,6 +652,9 @@ std::unique_ptr AllocateTarget(const llvm::Triple &Triple, return std::make_unique>(Triple, Opts); case llvm::Triple::Hurd: return std::make_unique>(Triple, Opts); +case llvm::Triple::Managarm: + return std::make_unique>(Triple, +Opts); default: return std::make_unique(Triple, Opts); } diff --git a/clang/lib/Basic/Targets/OSTargets.h b/clang/lib/Basic/Targets/OSTargets.h index 4366c1149e4053..7e966ec32b911b 100644 --- a/clang/lib/Basic/Targets/OSTargets.h +++ b/clang/lib/Basic/Targets/OSTargets.h @@ -369,6 +369,36 @@ class LLVM_LIBRARY_VISIBILITY LinuxTargetInfo : public OSTargetInfo { } }; +// Managarm Target +template +class LLVM_LIBRARY_VISIBILITY ManagarmTargetInfo : public OSTargetInfo { +protected: + void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, +MacroBuilder &Builder) const override { +Builder.defineMacro("__managarm__"); +Builder.defineMacro("__ELF__"); +if (Opts.POSIXThreads) + Builder.defineMacro("_REENTRANT"); +if (Opts.CPlusPlus) + Builder.defineMacro("_GNU_SOURCE"); +if (this->HasFloat128) + Builder.defineMacro("__FLOAT128__"); + } + +public: + ManagarmTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) + : OSTargetInfo(Triple, Opts) { +switch (Triple.getArch()) { +default: + break; +case llvm::Triple::x86: +case llvm::Triple::x86_64: + this->HasFloat128 = true; + break; +} + } +}; + // NetBSD Target template class LLVM_LIBRARY_VISIBILITY NetBSDTargetInfo : public OSTargetInfo { diff --git a/clang/lib/Driver/CMakeLists.txt b/clang/lib/Driver/CMakeLists.txt index 58427e3f83c420..afdf39ed6fb61a 100644 --- a/clang/lib/Driver/CMakeLists.txt +++ b/clang/lib/Driver/CMakeLists.txt @@ -65,6 +65,7 @@ add_clang_library(clangDriver ToolChains/HLSL.cpp ToolChains/Hurd.cpp ToolChains/Linux.cpp + ToolChains/Managarm.cpp ToolChains/MipsLinux.cpp ToolChains/MinGW.cpp ToolChains/MSP430.cpp diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index e7335a61b10c53..d5203c21c10e2d 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -32,6 +32,7 @@ #include "ToolChains/Linux.h" #include "ToolChains/MSP430.h" #include "ToolChains/MSVC.h" +#include "ToolChains/Managarm.h" #include "ToolChains/MinGW.h" #include "ToolChains/MipsLinux.h" #include "ToolChains/NaCl.h" @@ -6351,6 +6352,9 @@ const T
[clang] [llvm] [llvm] Add triples for managarm (PR #87845)
github-actions[bot] wrote: Thank you for submitting a Pull Request (PR) to the LLVM Project! This PR will be automatically labeled and the relevant teams will be notified. If you wish to, you can add reviewers by using the "Reviewers" section on this page. If this is not working for you, it is probably because you do not have write permissions for the repository. In which case you can instead tag reviewers by name in a comment by using `@` followed by their GitHub username. If you have received no comments on your PR for a week, you can request a review by "ping"ing the PR by adding a comment “Ping”. The common courtesy "ping" rate is once a week. Please remember that you are asking for valuable time from other developers. If you have further questions, they may be answered by the [LLVM GitHub User Guide](https://llvm.org/docs/GitHub.html). You can also ask questions in a comment on this PR, on the [LLVM Discord](https://discord.com/invite/xS7Z362) or on the [forums](https://discourse.llvm.org/). https://github.com/llvm/llvm-project/pull/87845 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [llvm] Add triples for managarm (PR #87845)
llvmbot wrote: @llvm/pr-subscribers-clang-driver Author: no92 (no92) Changes This PR aims to add a target for [managarm](https://github.com/managarm/managarm). The targets `{x86_64,aarch64,riscv64}-pc-managarm-{kernel,system}` are enabled by this PR and have been tested to work on managarm. --- Patch is 23.53 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/87845.diff 12 Files Affected: - (modified) clang/lib/Basic/Targets.cpp (+9) - (modified) clang/lib/Basic/Targets/OSTargets.h (+30) - (modified) clang/lib/Driver/CMakeLists.txt (+1) - (modified) clang/lib/Driver/Driver.cpp (+4) - (modified) clang/lib/Driver/ToolChains/Gnu.cpp (+10-3) - (added) clang/lib/Driver/ToolChains/Managarm.cpp (+230) - (added) clang/lib/Driver/ToolChains/Managarm.h (+54) - (modified) llvm/include/llvm/ADT/bit.h (+1-1) - (modified) llvm/include/llvm/TargetParser/Triple.h (+4-1) - (modified) llvm/lib/Support/Unix/Path.inc (+8-5) - (modified) llvm/lib/TargetParser/Triple.cpp (+6) - (modified) llvm/unittests/TargetParser/TripleTest.cpp (+24) ``diff diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index e3283510c6aac7..356b1888aca80d 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -160,6 +160,9 @@ std::unique_ptr AllocateTarget(const llvm::Triple &Triple, return std::make_unique>(Triple, Opts); } +case llvm::Triple::Managarm: + return std::make_unique>(Triple, + Opts); case llvm::Triple::NetBSD: return std::make_unique>(Triple, Opts); @@ -463,6 +466,9 @@ std::unique_ptr AllocateTarget(const llvm::Triple &Triple, return std::make_unique>(Triple, Opts); } +case llvm::Triple::Managarm: + return std::make_unique>(Triple, + Opts); default: return std::make_unique(Triple, Opts); } @@ -646,6 +652,9 @@ std::unique_ptr AllocateTarget(const llvm::Triple &Triple, return std::make_unique>(Triple, Opts); case llvm::Triple::Hurd: return std::make_unique>(Triple, Opts); +case llvm::Triple::Managarm: + return std::make_unique>(Triple, +Opts); default: return std::make_unique(Triple, Opts); } diff --git a/clang/lib/Basic/Targets/OSTargets.h b/clang/lib/Basic/Targets/OSTargets.h index 4366c1149e4053..7e966ec32b911b 100644 --- a/clang/lib/Basic/Targets/OSTargets.h +++ b/clang/lib/Basic/Targets/OSTargets.h @@ -369,6 +369,36 @@ class LLVM_LIBRARY_VISIBILITY LinuxTargetInfo : public OSTargetInfo { } }; +// Managarm Target +template +class LLVM_LIBRARY_VISIBILITY ManagarmTargetInfo : public OSTargetInfo { +protected: + void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, +MacroBuilder &Builder) const override { +Builder.defineMacro("__managarm__"); +Builder.defineMacro("__ELF__"); +if (Opts.POSIXThreads) + Builder.defineMacro("_REENTRANT"); +if (Opts.CPlusPlus) + Builder.defineMacro("_GNU_SOURCE"); +if (this->HasFloat128) + Builder.defineMacro("__FLOAT128__"); + } + +public: + ManagarmTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) + : OSTargetInfo(Triple, Opts) { +switch (Triple.getArch()) { +default: + break; +case llvm::Triple::x86: +case llvm::Triple::x86_64: + this->HasFloat128 = true; + break; +} + } +}; + // NetBSD Target template class LLVM_LIBRARY_VISIBILITY NetBSDTargetInfo : public OSTargetInfo { diff --git a/clang/lib/Driver/CMakeLists.txt b/clang/lib/Driver/CMakeLists.txt index 58427e3f83c420..afdf39ed6fb61a 100644 --- a/clang/lib/Driver/CMakeLists.txt +++ b/clang/lib/Driver/CMakeLists.txt @@ -65,6 +65,7 @@ add_clang_library(clangDriver ToolChains/HLSL.cpp ToolChains/Hurd.cpp ToolChains/Linux.cpp + ToolChains/Managarm.cpp ToolChains/MipsLinux.cpp ToolChains/MinGW.cpp ToolChains/MSP430.cpp diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index e7335a61b10c53..d5203c21c10e2d 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -32,6 +32,7 @@ #include "ToolChains/Linux.h" #include "ToolChains/MSP430.h" #include "ToolChains/MSVC.h" +#include "ToolChains/Managarm.h" #include "ToolChains/MinGW.h" #include "ToolChains/MipsLinux.h" #include "ToolChains/NaCl.h" @@ -6351,6 +6352,9 @@ const ToolChain &Driver::getToolChain(const ArgList &Args, case llvm::Triple::Fuchsia: TC = std::make_unique(*this, Target, Args); break; +case llvm::Triple::Managarm: +
[clang] [llvm] [llvm] Add triples for managarm (PR #87845)
llvmbot wrote: @llvm/pr-subscribers-llvm-adt Author: no92 (no92) Changes This PR aims to add a target for [managarm](https://github.com/managarm/managarm). The targets `{x86_64,aarch64,riscv64}-pc-managarm-{kernel,system}` are enabled by this PR and have been tested to work on managarm. --- Patch is 23.53 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/87845.diff 12 Files Affected: - (modified) clang/lib/Basic/Targets.cpp (+9) - (modified) clang/lib/Basic/Targets/OSTargets.h (+30) - (modified) clang/lib/Driver/CMakeLists.txt (+1) - (modified) clang/lib/Driver/Driver.cpp (+4) - (modified) clang/lib/Driver/ToolChains/Gnu.cpp (+10-3) - (added) clang/lib/Driver/ToolChains/Managarm.cpp (+230) - (added) clang/lib/Driver/ToolChains/Managarm.h (+54) - (modified) llvm/include/llvm/ADT/bit.h (+1-1) - (modified) llvm/include/llvm/TargetParser/Triple.h (+4-1) - (modified) llvm/lib/Support/Unix/Path.inc (+8-5) - (modified) llvm/lib/TargetParser/Triple.cpp (+6) - (modified) llvm/unittests/TargetParser/TripleTest.cpp (+24) ``diff diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index e3283510c6aac7..356b1888aca80d 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -160,6 +160,9 @@ std::unique_ptr AllocateTarget(const llvm::Triple &Triple, return std::make_unique>(Triple, Opts); } +case llvm::Triple::Managarm: + return std::make_unique>(Triple, + Opts); case llvm::Triple::NetBSD: return std::make_unique>(Triple, Opts); @@ -463,6 +466,9 @@ std::unique_ptr AllocateTarget(const llvm::Triple &Triple, return std::make_unique>(Triple, Opts); } +case llvm::Triple::Managarm: + return std::make_unique>(Triple, + Opts); default: return std::make_unique(Triple, Opts); } @@ -646,6 +652,9 @@ std::unique_ptr AllocateTarget(const llvm::Triple &Triple, return std::make_unique>(Triple, Opts); case llvm::Triple::Hurd: return std::make_unique>(Triple, Opts); +case llvm::Triple::Managarm: + return std::make_unique>(Triple, +Opts); default: return std::make_unique(Triple, Opts); } diff --git a/clang/lib/Basic/Targets/OSTargets.h b/clang/lib/Basic/Targets/OSTargets.h index 4366c1149e4053..7e966ec32b911b 100644 --- a/clang/lib/Basic/Targets/OSTargets.h +++ b/clang/lib/Basic/Targets/OSTargets.h @@ -369,6 +369,36 @@ class LLVM_LIBRARY_VISIBILITY LinuxTargetInfo : public OSTargetInfo { } }; +// Managarm Target +template +class LLVM_LIBRARY_VISIBILITY ManagarmTargetInfo : public OSTargetInfo { +protected: + void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, +MacroBuilder &Builder) const override { +Builder.defineMacro("__managarm__"); +Builder.defineMacro("__ELF__"); +if (Opts.POSIXThreads) + Builder.defineMacro("_REENTRANT"); +if (Opts.CPlusPlus) + Builder.defineMacro("_GNU_SOURCE"); +if (this->HasFloat128) + Builder.defineMacro("__FLOAT128__"); + } + +public: + ManagarmTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) + : OSTargetInfo(Triple, Opts) { +switch (Triple.getArch()) { +default: + break; +case llvm::Triple::x86: +case llvm::Triple::x86_64: + this->HasFloat128 = true; + break; +} + } +}; + // NetBSD Target template class LLVM_LIBRARY_VISIBILITY NetBSDTargetInfo : public OSTargetInfo { diff --git a/clang/lib/Driver/CMakeLists.txt b/clang/lib/Driver/CMakeLists.txt index 58427e3f83c420..afdf39ed6fb61a 100644 --- a/clang/lib/Driver/CMakeLists.txt +++ b/clang/lib/Driver/CMakeLists.txt @@ -65,6 +65,7 @@ add_clang_library(clangDriver ToolChains/HLSL.cpp ToolChains/Hurd.cpp ToolChains/Linux.cpp + ToolChains/Managarm.cpp ToolChains/MipsLinux.cpp ToolChains/MinGW.cpp ToolChains/MSP430.cpp diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index e7335a61b10c53..d5203c21c10e2d 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -32,6 +32,7 @@ #include "ToolChains/Linux.h" #include "ToolChains/MSP430.h" #include "ToolChains/MSVC.h" +#include "ToolChains/Managarm.h" #include "ToolChains/MinGW.h" #include "ToolChains/MipsLinux.h" #include "ToolChains/NaCl.h" @@ -6351,6 +6352,9 @@ const ToolChain &Driver::getToolChain(const ArgList &Args, case llvm::Triple::Fuchsia: TC = std::make_unique(*this, Target, Args); break; +case llvm::Triple::Managarm: + TC
[clang] [llvm] [llvm] Add triples for managarm (PR #87845)
https://github.com/no92 edited https://github.com/llvm/llvm-project/pull/87845 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [llvm] Add triples for managarm (PR #87845)
no92 wrote: Ping https://github.com/llvm/llvm-project/pull/87845 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [llvm] Add triples for managarm (PR #87845)
no92 wrote: Ping https://github.com/llvm/llvm-project/pull/87845 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [llvm] Add triples for managarm (PR #87845)
no92 wrote: Ping https://github.com/llvm/llvm-project/pull/87845 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [llvm] Add triples for managarm (PR #87845)
@@ -2562,7 +2566,10 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes( static const char *const RISCV64LibDirs[] = {"/lib64", "/lib"}; static const char *const RISCV64Triples[] = {"riscv64-unknown-linux-gnu", "riscv64-linux-gnu", - "riscv64-unknown-elf"}; + "riscv64-unknown-elf", MaskRay wrote: L2449 has a comment that we should not add new elements. The existing ones should be cleaned up as well. https://github.com/llvm/llvm-project/pull/87845 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [llvm] Add triples for managarm (PR #87845)
MaskRay wrote: Some older `ToolChain`s were probably contributed with a lot of `CmdArgs.push_back` uncovered by tests. They are not good examples to follow. For new `ToolChain`s, we ensure that all constructed `CmdArgs.push_back` are covered. This allows refactoring by someone who is unfamiliar with your usage pattern. https://github.com/llvm/llvm-project/pull/87845 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [llvm] Add triples for managarm (PR #87845)
@@ -279,8 +280,10 @@ class Triple { Amplification, OpenCL, OpenHOS, +Kernel, MaskRay wrote: Why is a generic term `Kernel` added? I am concerned that it would cause confusion to users of other OSes. Does your OS need a different target triple for kernel development? Note that almost all other OSes don't make the target triple distinction. https://github.com/llvm/llvm-project/pull/87845 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [llvm] Add triples for managarm (PR #87845)
@@ -279,8 +280,10 @@ class Triple { Amplification, OpenCL, OpenHOS, +Kernel, +Mlibc, MaskRay wrote: I don't know how Mlibc is intended to be used but LLVM LTO warns about differing target triples. https://github.com/llvm/llvm-project/pull/87845 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [llvm] Add triples for managarm (PR #87845)
https://github.com/MaskRay edited https://github.com/llvm/llvm-project/pull/87845 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [llvm] Add triples for managarm (PR #87845)
MaskRay wrote: > [llvm] Add triples for managarm I suggest that you split the patch into LLVM target triple part and a clang part. That's a convention to support new targets. https://github.com/llvm/llvm-project/pull/87845 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [llvm] Add triples for managarm (PR #87845)
MaskRay wrote: #78065 for Hurd is a good example for clang testing. https://github.com/llvm/llvm-project/pull/87845 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [llvm] Add triples for managarm (PR #87845)
dwblaikie wrote: @MaskRay seems like this target might be too niche to go into LLVM at this time? is it worth considering some bar before accepting such a thing into LLVM, rather than encouraging folks to maintain such a thing in a branch for now? https://github.com/llvm/llvm-project/pull/87845 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [llvm] Add triples for managarm (PR #87845)
MaskRay wrote: > @MaskRay seems like this target might be too niche to go into LLVM at this > time? is it worth considering some bar before accepting such a thing into > LLVM, rather than encouraging folks to maintain such a thing in a branch for > now? Good question about the acceptance bar. I started https://discourse.llvm.org/t/new-clang-toolchain-acceptance-criteria/79233 https://github.com/llvm/llvm-project/pull/87845 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [llvm] Add triples for managarm (PR #87845)
mintsuki wrote: I would remove the `-kernel` environment, only leaving the `-mlibc` environment which makes sense, similar to `-gnu` and `-musl`. The rest seems fine to me, but I would change the `defined(__managarm__)` for `defined(__mlibc__)` wherever possible (adding that macro to mlibc if it hasn't been already). If the notoriety of managarm is an issue for this addition, I would still strongly recommend perhaps removing the managarm portion and leaving `-mlibc` as a new environment. mlibc is used by dozens of OSes at this point, some of which relatively notable. https://github.com/llvm/llvm-project/pull/87845 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [llvm] Add triples for managarm (PR #87845)
ArsenArsen wrote: (context: I work(ed) on managarm, but haven't interacted with the LLVM port on it nearly at all, and have never added targets to LLVM) The `Kernel` environment probably was added is to mimic what gnuconfig does: ``` ~$ /usr/share/gnuconfig/config.sub x86_64-managarm-kernel x86_64-pc-managarm-kernel ~$ /usr/share/gnuconfig/config.sub x86_64-linux-kernel Invalid configuration 'x86_64-linux-kernel': 'linux' does not support 'kernel'. ~ 1 $ ``` It might be reasonable to constrain it to `managarm` (as gnuconfig does). > Does your OS need a different target triple for kernel development? Note that > almost all other OSes don't make the target triple distinction. It does for GCC, at least for libstdc++. I don't know how LLVM works, so I can't comment there. The kernel environment could also conceivably be a multilib of `*-*-managarm*-*` in general. I haven't done the work necessary to implement that in our GCC port yet, but it's been simmering in the back of my mind for a while. Generally, though, I don't buy that an OS triplet covers said OSes kernel. It seems simpler for kernel compilers to be kernel compilers (perhaps via multilib). WRT niche, I don't disagree - that's part of why I haven't upstreamed anything into GCC either. The other part is that I haven't worked enough on the port to consider myself confident in quality for inclusion (but that doesn't have an influence on the LLVM port) https://github.com/llvm/llvm-project/pull/87845 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [llvm] Add triples for managarm (PR #87845)
avdgrinten wrote: Regarding the acceptance bar, I'd like to stress the following point: it is true that Managarm is not a mainstream OS (but neither are some of the other OSes that have existing LLVM and Clang targets); however, LLVM is an infrastructure project that is used by a lot of downstreams (e.g., out of tree compilers), and not being supported by LLVM seriously impacts our ability to integrate with downstream projects. In fact, maintaining our LLVM patches has been quite easy ([and we've been doing that out-of-tree since 2019](https://github.com/managarm/bootstrap-managarm/commit/565104262b7aa96995c80c86b6857ae872da6efa)), but maintaining patches for downstream compilers tends to be much more involved. This is especially true for Rust, where the mainstream tooling is not built in a way that allows us to easily apply out-of-tree patches to packages managed by `cargo` etc. One of the main reasons why we want to get into upstream LLVM now is that we also have a Rust port that we want to upstream, and upstream Rust wants us to submit the LLVM target first. We are committed to maintain our LLVM port indefinitely, and we've been doing it out-of-tree already since LLVM 6. https://github.com/llvm/llvm-project/pull/87845 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [llvm] Add triples for managarm (PR #87845)
no92 wrote: Ping https://github.com/llvm/llvm-project/pull/87845 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [llvm] Add triples for managarm (PR #87845)
brad0 wrote: @MaskRay https://github.com/llvm/llvm-project/pull/87845 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits