mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 22:57:44 +00:00
Toolchain+Ports: Update LLVM to 14.0.1
Besides a version bump, the following changes have been made to our toolchain infrastructure: - LLVM/Clang is now built with -march=native if the host compiler supports it. An exception to this is CI, as the toolchain cache is shared among many different machines there. - The LLVM tarball is not re-extracted if the hash of the applied patches doesn't differ. - The patches have been split up into atomic chunks. - Port-specific patches have been integrated into the main patches, which will aid in the work towards self-hosting. - <sysroot>/usr/local/lib is now appended to the linker's search path by default. - --pack-dyn-relocs=relr is appended to the linker command line by default, meaning ports take advantage of RELR relocations without any patches or additional compiler flags. The formatting of LLVM port's package.sh has been bothering me, so I also indented the arguments to the CMake invocation.
This commit is contained in:
parent
9a898df1cd
commit
01b31d9858
22 changed files with 664 additions and 1007 deletions
|
@ -0,0 +1,54 @@
|
|||
From eb1dbc59eaebdefd9735b738ca30478ce1788dca Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Bertalan <dani@danielbertalan.dev>
|
||||
Date: Mon, 18 Apr 2022 22:32:29 +0200
|
||||
Subject: [PATCH 8/8] [cmake] Support building shared libLLVM and libClang for
|
||||
SerenityOS
|
||||
|
||||
This patch tells CMake that the --whole-archive linker option should be
|
||||
used for specifying the archives whose members will constitute these
|
||||
shared libraries.
|
||||
|
||||
Symbol versioning is disabled, as the SerenityOS loader doesn't support
|
||||
it, and the ELF sections that store version data would just waste space.
|
||||
---
|
||||
clang/tools/libclang/CMakeLists.txt | 2 +-
|
||||
llvm/tools/llvm-shlib/CMakeLists.txt | 3 ++-
|
||||
2 files changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/clang/tools/libclang/CMakeLists.txt b/clang/tools/libclang/CMakeLists.txt
|
||||
index 4e0647971..2e4aeeab3 100644
|
||||
--- a/clang/tools/libclang/CMakeLists.txt
|
||||
+++ b/clang/tools/libclang/CMakeLists.txt
|
||||
@@ -80,7 +80,7 @@ if(MSVC)
|
||||
set(LLVM_EXPORTED_SYMBOL_FILE)
|
||||
endif()
|
||||
|
||||
-if (UNIX AND NOT APPLE)
|
||||
+if (UNIX AND NOT APPLE AND (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "SerenityOS"))
|
||||
set(LLVM_EXPORTED_SYMBOL_FILE)
|
||||
set(USE_VERSION_SCRIPT ${LLVM_HAVE_LINK_VERSION_SCRIPT})
|
||||
endif()
|
||||
diff --git a/llvm/tools/llvm-shlib/CMakeLists.txt b/llvm/tools/llvm-shlib/CMakeLists.txt
|
||||
index 8e2b78f1b..909018753 100644
|
||||
--- a/llvm/tools/llvm-shlib/CMakeLists.txt
|
||||
+++ b/llvm/tools/llvm-shlib/CMakeLists.txt
|
||||
@@ -39,6 +39,7 @@ if(LLVM_BUILD_LLVM_DYLIB)
|
||||
OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "OpenBSD")
|
||||
OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "Fuchsia")
|
||||
OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "DragonFly")
|
||||
+ OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "SerenityOS")
|
||||
OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "SunOS")) # FIXME: It should be "GNU ld for elf"
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/simple_version_script.map.in
|
||||
@@ -46,7 +47,7 @@ if(LLVM_BUILD_LLVM_DYLIB)
|
||||
|
||||
# GNU ld doesn't resolve symbols in the version script.
|
||||
set(LIB_NAMES -Wl,--whole-archive ${LIB_NAMES} -Wl,--no-whole-archive)
|
||||
- if (NOT LLVM_LINKER_IS_SOLARISLD AND NOT MINGW)
|
||||
+ if (NOT LLVM_LINKER_IS_SOLARISLD AND NOT MINGW AND (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "SerenityOS"))
|
||||
# Solaris ld does not accept global: *; so there is no way to version *all* global symbols
|
||||
set(LIB_NAMES -Wl,--version-script,${LLVM_LIBRARY_DIR}/tools/llvm-shlib/simple_version_script.map ${LIB_NAMES})
|
||||
endif()
|
||||
--
|
||||
2.35.3
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue