Skip to content

Commit 216799a

Browse files
committed
[cmake] also do static-vs-linker work-around for cxx_add_warning_flags
1 parent 7444457 commit 216799a

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

libunwind/CMakeLists.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,10 @@ endif()
234234
add_cxx_compile_flags_if_supported(-fno-exceptions)
235235
add_cxx_compile_flags_if_supported(-fno-rtti)
236236

237+
# reset CMAKE_TRY_COMPILE_TARGET_TYPE & CMAKE_REQUIRED_LINK_OPTIONS after flag checks
238+
set(CMAKE_TRY_COMPILE_TARGET_TYPE ${_previous_CMAKE_TRY_COMPILE_TARGET_TYPE})
239+
set(CMAKE_REQUIRED_LINK_OPTIONS ${_previous_CMAKE_REQUIRED_LINK_OPTIONS})
240+
237241
# Ensure that we don't depend on C++ standard library.
238242
if (CXX_SUPPORTS_NOSTDINCXX_FLAG)
239243
list(APPEND LIBUNWIND_COMPILE_FLAGS -nostdinc++)
@@ -287,10 +291,6 @@ if (LIBUNWIND_ENABLE_ARM_WMMX)
287291
add_compile_flags(-D__ARM_WMMX)
288292
endif()
289293

290-
# reset CMAKE_TRY_COMPILE_TARGET_TYPE & CMAKE_REQUIRED_LINK_OPTIONS after flag checks
291-
set(CMAKE_TRY_COMPILE_TARGET_TYPE ${_previous_CMAKE_TRY_COMPILE_TARGET_TYPE})
292-
set(CMAKE_REQUIRED_LINK_OPTIONS ${_previous_CMAKE_REQUIRED_LINK_OPTIONS})
293-
294294
if(LIBUNWIND_IS_BAREMETAL)
295295
add_compile_definitions(_LIBUNWIND_IS_BAREMETAL)
296296
endif()

runtimes/cmake/Modules/WarningFlags.cmake

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,18 @@ include(HandleFlags)
33
# Warning flags ===============================================================
44
function(cxx_add_warning_flags target enable_werror enable_pedantic)
55
target_compile_definitions(${target} PUBLIC -D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
6+
7+
# Disable linker for CMake flag compatibility checks
8+
#
9+
# Due to https://gitlab.kitware.com/cmake/cmake/-/issues/23454, we need to
10+
# disable CMAKE_REQUIRED_LINK_OPTIONS (c.f. CXX_SUPPORTS_UNWINDLIB_EQ_NONE_FLAG),
11+
# for static targets; cache the target type here, and reset it after the various
12+
# checks have been performed.
13+
set(_previous_CMAKE_TRY_COMPILE_TARGET_TYPE ${CMAKE_TRY_COMPILE_TARGET_TYPE})
14+
set(_previous_CMAKE_REQUIRED_LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS})
15+
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
16+
set(CMAKE_REQUIRED_LINK_OPTIONS)
17+
618
if (MSVC)
719
# -W4 is the cl.exe/clang-cl equivalent of -Wall. (In cl.exe and clang-cl,
820
# -Wall is equivalent to -Weverything in GCC style compiler drivers.)
@@ -74,4 +86,8 @@ function(cxx_add_warning_flags target enable_werror enable_pedantic)
7486
if (${enable_pedantic})
7587
target_add_compile_flags_if_supported(${target} PRIVATE -pedantic)
7688
endif()
89+
90+
# reset CMAKE_TRY_COMPILE_TARGET_TYPE & CMAKE_REQUIRED_LINK_OPTIONS after flag checks
91+
set(CMAKE_TRY_COMPILE_TARGET_TYPE ${_previous_CMAKE_TRY_COMPILE_TARGET_TYPE})
92+
set(CMAKE_REQUIRED_LINK_OPTIONS ${_previous_CMAKE_REQUIRED_LINK_OPTIONS})
7793
endfunction()

0 commit comments

Comments
 (0)