[clang] [lldb] [llvm] [cmake] Build executables with -no_exported_symbols when building Apple toolchain (PR #87684)
Dan Liew via cfe-commits
cfe-commits at lists.llvm.org
Fri Apr 5 13:25:05 PDT 2024
================
@@ -258,15 +258,24 @@ if (NOT DEFINED LLVM_LINKER_DETECTED AND NOT WIN32)
endif()
endif()
- # Apple's linker complains about duplicate libraries, which CMake likes to do
- # to support ELF platforms. To silence that warning, we can use
- # -no_warn_duplicate_libraries, but only in versions of the linker that
- # support that flag.
- if(NOT LLVM_USE_LINKER AND ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
include(CheckLinkerFlag)
- check_linker_flag(C "-Wl,-no_warn_duplicate_libraries" LLVM_LINKER_SUPPORTS_NO_WARN_DUPLICATE_LIBRARIES)
- else()
- set(LLVM_LINKER_SUPPORTS_NO_WARN_DUPLICATE_LIBRARIES OFF CACHE INTERNAL "")
+ # Linkers that support Darwin allow a setting to internalize all symbol exports,
+ # aiding in reducing binary size and often is applicable for executables.
+ check_linker_flag(C "-Wl,-no_exported_symbols" LLVM_LINKER_SUPPORTS_NO_EXPORTED_SYMBOLS)
+
+ if (NOT LLVM_USE_LINKER)
+ # Apple's linker complains about duplicate libraries, which CMake likes to do
+ # to support ELF platforms. To silence that warning, we can use
+ # -no_warn_duplicate_libraries, but only in versions of the linker that
+ # support that flag.
+ check_linker_flag(C "-Wl,-no_warn_duplicate_libraries" LLVM_LINKER_SUPPORTS_NO_WARN_DUPLICATE_LIBRARIES)
+ else()
+ set(LLVM_LINKER_SUPPORTS_NO_WARN_DUPLICATE_LIBRARIES OFF CACHE INTERNAL "")
----------------
delcypher wrote:
Nit: This won't do anything if `LLVM_LINKER_SUPPORTS_NO_WARN_DUPLICATE_LIBRARIES` is already set in the cache (e.g. from a previous configure). You can use `FORCE` to always set the value.
https://github.com/llvm/llvm-project/pull/87684
More information about the cfe-commits
mailing list