mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-16 02:16:29 +00:00

If Clang is set up to link directly against libunwind (via the --unwindlib option, or the corresponding builtin default option), configuring libunwind will fail while bootstrapping (before the initial libunwind is built), because every cmake test will fail due to -lunwind not being found, and linking the shared library will fail similarly. Check if --unwindlib=none is supported, and add it in that case. Using check_c_compiler_flag on its own doesn't work, because that only adds the tested flag to the compilation command, and if -lunwind is missing, the linking step would still fail - instead try adding it to CMAKE_REQUIRED_FLAGS and restore the variable if it doesn't work. This avoids having to pass --unwindlib=none while building libunwind. Differential Revision: https://reviews.llvm.org/D112126
12 lines
552 B
CMake
12 lines
552 B
CMake
macro(llvm_enable_language_nolink)
|
|
# Set CMAKE_TRY_COMPILE_TARGET_TYPE to STATIC_LIBRARY to disable linking
|
|
# in the compiler sanity checks. When bootstrapping the toolchain,
|
|
# the toolchain itself is still incomplete and sanity checks that include
|
|
# linking may fail.
|
|
set(__SAVED_TRY_COMPILE_TARGET_TYPE ${CMAKE_TRY_COMPILE_TARGET_TYPE})
|
|
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
|
|
enable_language(${ARGV})
|
|
set(CMAKE_TRY_COMPILE_TARGET_TYPE ${__SAVED_TRY_COMPILE_TARGET_TYPE})
|
|
unset(__SAVED_TRY_COMPILE_TARGET_TYPE)
|
|
endmacro()
|