mirror of
https://github.com/SerenityOS/serenity.git
synced 2026-11-07 04:29:30 -10:00
While `pc` is not particularly wrong on x86_64, it's nonsensical on other supported platforms, namely aarch64 and riscv64. For consistency, we now don't use this vendor anymore, regardless of the platform. Within the LLVM project, we now build as `$arch-serenity`. This is enough in most cases, the only place where we have to specify a vendor is the target .cfg file where we use `$arch-unknown-serenity`. When building GCC and friends, again we simply identify as `$arch-serenity` and this is enough. As a result, the tools in Toolchain/Local/$arch/bin are now named after this pattern: `$arch-serenity-$tool`. These changes affect the toolchain build scripts, serenity's build scripts and the Ports. The last place where we should see `x86_64-pc-serenity` is the output of `config.sub`, which assume the vendor is `pc` on vendor-less `x86*` triples. So `x86_64-serenity` is expanded to `x86_64-pc-serenity`, luckily enough and AFAICT, the whole GNU ecosystem considers `pc`, `unknown` and vendor-less target triples the same. So `configure` shouldn't have an issue finding the right tools anyway. The gn files were edited with sed and are not tested. This commit also includes a check in `Meta/serenity.sh` to give a nicer error message when trying to build the system with an old toolchain. ---- To test this patch, on a clean tree I: - Ran `./Meta/serenity.sh x86_64 GNU` - Ran `./Toolchain/BuildJakt.sh` - Tested these ports: python3(configure based), libjxl(cmake based) and rizin(meson based) - Also booted on aarch64 and risv64 I also repeated the steps above with a Clang toolchain. On a working tree I tested all the affected ports, the results are: - tinycc build fine but can't compile programs, I observed the same on master. - gdb and epsilon don't build but report the same errors as on master. - I manually edited the libgpg-error, and it builds fine. - The gcc port works fine.
32 lines
1.2 KiB
Plaintext
32 lines
1.2 KiB
Plaintext
declare_args() {
|
|
# Serenity architecture to build for
|
|
serenity_arch = "x86_64"
|
|
|
|
# Serenity compiler to use, Clang or GNU
|
|
serenity_toolchain = "GNU"
|
|
}
|
|
|
|
if (serenity_toolchain == "GNU") {
|
|
toolchain_root =
|
|
rebase_path("//Toolchain/Local/$serenity_arch/", root_build_dir)
|
|
toolchain_bin = toolchain_root + "bin/"
|
|
|
|
serenity_cc = toolchain_bin + serenity_arch + "-serenity-gcc"
|
|
serenity_cxx = toolchain_bin + serenity_arch + "-serenity-g++"
|
|
serenity_ld = serenity_cxx
|
|
serenity_nm = toolchain_bin + serenity_arch + "-serenity-nm"
|
|
serenity_objcopy = toolchain_bin + serenity_arch + "-serenity-objcopy"
|
|
serenity_compiler_version = "13.1.0"
|
|
} else {
|
|
assert(serenity_toolchain == "Clang",
|
|
"Expected GNU or Clang for serenity_toolchain")
|
|
toolchain_root = rebase_path("//Toolchain/Local/clang/", root_build_dir)
|
|
toolchain_bin = toolchain_root + "bin/"
|
|
serenity_cc = toolchain_bin + serenity_arch + "-serenity-clang"
|
|
serenity_cxx = toolchain_bin + serenity_arch + "-serenity-clang++"
|
|
serenity_ld = serenity_cxx
|
|
serenity_nm = toolchain_bin + "llvm-nm"
|
|
serenity_objcopy = toolchain_bin + "llvm-objcopy"
|
|
serenity_compiler_version = "16"
|
|
}
|