[libcxx-commits] [libcxx] 4b1fe09 - [libc++] Simplify the conditions for generating a linker script (#73151)
via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Nov 23 07:15:08 PST 2023
Author: Louis Dionne
Date: 2023-11-23T10:15:03-05:00
New Revision: 4b1fe097f9a3882f437bc3b829ef02331e28a8d6
URL: https://github.com/llvm/llvm-project/commit/4b1fe097f9a3882f437bc3b829ef02331e28a8d6
DIFF: https://github.com/llvm/llvm-project/commit/4b1fe097f9a3882f437bc3b829ef02331e28a8d6.diff
LOG: [libc++] Simplify the conditions for generating a linker script (#73151)
We really shouldn't be depending on far away configuration options like
LLVM_HAVE_LINK_VERSION_SCRIPT here. This patch simplifies the enablement
of the linker scripts and as a result gets rid of an undesirable
dependency on HandleLLVMOptions.cmake.
As a drive-by, the patch also stops taking into account whether Python3
is available. This should have no bearing on whether we generate a
linker script or not, which is required for correctness. If someone
tries to build libc++ and generate a linker script but Python3 is not
available, they should get an error instead of silently getting an
incorrect installation of the library.
Added:
Modified:
libcxx/CMakeLists.txt
Removed:
################################################################################
diff --git a/libcxx/CMakeLists.txt b/libcxx/CMakeLists.txt
index cb708baacd91dec..843ccbd0ed92edb 100644
--- a/libcxx/CMakeLists.txt
+++ b/libcxx/CMakeLists.txt
@@ -251,17 +251,18 @@ option(LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY
# Generate and install a linker script inplace of libc++.so. The linker script
# will link libc++ to the correct ABI library. This option is on by default
-# on UNIX platforms other than Apple unless
-# 'LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY' is on. This option is also
-# disabled when the ABI library is not specified or is specified to be "none".
-set(ENABLE_LINKER_SCRIPT_DEFAULT_VALUE OFF)
-if (LLVM_HAVE_LINK_VERSION_SCRIPT AND NOT LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY
- AND NOT LIBCXX_CXX_ABI STREQUAL "none"
- AND Python3_EXECUTABLE
- AND LIBCXX_ENABLE_SHARED)
- set(ENABLE_LINKER_SCRIPT_DEFAULT_VALUE ON)
+# on UNIX platforms other than Apple unless we statically link libc++abi
+# inside libc++.so, we don't build libc++.so at all or we don't have any
+# ABI library.
+if (LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY
+ OR NOT LIBCXX_ENABLE_SHARED
+ OR LIBCXX_CXX_ABI STREQUAL "none")
+ set(ENABLE_LINKER_SCRIPT_DEFAULT_VALUE OFF)
+elseif(UNIX AND NOT APPLE)
+ set(ENABLE_LINKER_SCRIPT_DEFAULT_VALUE ON)
+else()
+ set(ENABLE_LINKER_SCRIPT_DEFAULT_VALUE OFF)
endif()
-
option(LIBCXX_ENABLE_ABI_LINKER_SCRIPT
"Use and install a linker script for the given ABI library"
${ENABLE_LINKER_SCRIPT_DEFAULT_VALUE})
More information about the libcxx-commits
mailing list