Author: Matt Arsenault Date: 2026-07-01T12:50:29+02:00 New Revision: 6a909d68627ff6027777186699ff8fd54ae6e668
URL: https://github.com/llvm/llvm-project/commit/6a909d68627ff6027777186699ff8fd54ae6e668 DIFF: https://github.com/llvm/llvm-project/commit/6a909d68627ff6027777186699ff8fd54ae6e668.diff LOG: [runtimes][NFC] Re-indent shared library blocks (#205523) Re-indent the shared library target blocks that were wrapped in if(<runtime>_SUPPORTS_SHARED_LIBRARY) in the previous commit. This is a whitespace-only change split out from the functional change to keep that diff minimal and reviewable. Co-authored-by: Claude (Opus 4.8) <[email protected]> Added: Modified: libcxx/src/CMakeLists.txt libcxxabi/src/CMakeLists.txt libunwind/src/CMakeLists.txt Removed: ################################################################################ diff --git a/libcxx/src/CMakeLists.txt b/libcxx/src/CMakeLists.txt index d60a62a7ef5a3..e029f9f29d5ea 100644 --- a/libcxx/src/CMakeLists.txt +++ b/libcxx/src/CMakeLists.txt @@ -174,89 +174,89 @@ include(FindLibcCommonUtils) # Build the shared library. if (LIBCXX_SUPPORTS_SHARED_LIBRARY) -add_library(cxx_shared SHARED ${LIBCXX_SOURCES} ${LIBCXX_HEADERS}) -target_include_directories(cxx_shared PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) -target_link_libraries(cxx_shared PUBLIC cxx-headers runtimes-libc-shared - PRIVATE ${LIBCXX_LIBRARIES} - PRIVATE llvm-libc-common-utilities) -set_target_properties(cxx_shared - PROPERTIES - EXCLUDE_FROM_ALL "$<IF:$<BOOL:${LIBCXX_ENABLE_SHARED}>,FALSE,TRUE>" - COMPILE_FLAGS "${LIBCXX_COMPILE_FLAGS}" - LINK_FLAGS "${LIBCXX_LINK_FLAGS}" - OUTPUT_NAME "${LIBCXX_SHARED_OUTPUT_NAME}" - VERSION "${LIBCXX_LIBRARY_VERSION}" - SOVERSION "${LIBCXX_ABI_VERSION}" - DEFINE_SYMBOL "" -) -cxx_add_common_build_flags(cxx_shared) - -if(ZOS) - add_custom_command(TARGET cxx_shared POST_BUILD - COMMAND - ${LIBCXX_SOURCE_DIR}/utils/zos_rename_dll_side_deck.sh - $<TARGET_LINKER_FILE_NAME:cxx_shared> $<TARGET_FILE_NAME:cxx_shared> "${LIBCXX_DLL_NAME}" - COMMENT "Rename dll name inside the side deck file" - WORKING_DIRECTORY $<TARGET_FILE_DIR:cxx_shared> + add_library(cxx_shared SHARED ${LIBCXX_SOURCES} ${LIBCXX_HEADERS}) + target_include_directories(cxx_shared PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) + target_link_libraries(cxx_shared PUBLIC cxx-headers runtimes-libc-shared + PRIVATE ${LIBCXX_LIBRARIES} + PRIVATE llvm-libc-common-utilities) + set_target_properties(cxx_shared + PROPERTIES + EXCLUDE_FROM_ALL "$<IF:$<BOOL:${LIBCXX_ENABLE_SHARED}>,FALSE,TRUE>" + COMPILE_FLAGS "${LIBCXX_COMPILE_FLAGS}" + LINK_FLAGS "${LIBCXX_LINK_FLAGS}" + OUTPUT_NAME "${LIBCXX_SHARED_OUTPUT_NAME}" + VERSION "${LIBCXX_LIBRARY_VERSION}" + SOVERSION "${LIBCXX_ABI_VERSION}" + DEFINE_SYMBOL "" ) -endif() + cxx_add_common_build_flags(cxx_shared) + + if(ZOS) + add_custom_command(TARGET cxx_shared POST_BUILD + COMMAND + ${LIBCXX_SOURCE_DIR}/utils/zos_rename_dll_side_deck.sh + $<TARGET_LINKER_FILE_NAME:cxx_shared> $<TARGET_FILE_NAME:cxx_shared> "${LIBCXX_DLL_NAME}" + COMMENT "Rename dll name inside the side deck file" + WORKING_DIRECTORY $<TARGET_FILE_DIR:cxx_shared> + ) + endif() -# Link against libc++abi -if (LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY) - target_link_libraries(cxx_shared PRIVATE libcxx-abi-shared-objects) -else() - target_link_libraries(cxx_shared PUBLIC libcxx-abi-shared) -endif() + # Link against libc++abi + if (LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY) + target_link_libraries(cxx_shared PRIVATE libcxx-abi-shared-objects) + else() + target_link_libraries(cxx_shared PUBLIC libcxx-abi-shared) + endif() -# Maybe force some symbols to be weak, not weak or not exported. -# TODO: This shouldn't depend on the platform, and ideally it should be done in the sources. -if (APPLE AND LIBCXX_CXX_ABI MATCHES "libcxxabi$" - AND NOT LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY) - target_link_libraries(cxx_shared PRIVATE - "-Wl,-force_symbols_not_weak_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/notweak.exp" - "-Wl,-force_symbols_weak_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/weak.exp") -endif() + # Maybe force some symbols to be weak, not weak or not exported. + # TODO: This shouldn't depend on the platform, and ideally it should be done in the sources. + if (APPLE AND LIBCXX_CXX_ABI MATCHES "libcxxabi$" + AND NOT LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY) + target_link_libraries(cxx_shared PRIVATE + "-Wl,-force_symbols_not_weak_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/notweak.exp" + "-Wl,-force_symbols_weak_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/weak.exp") + endif() -# Generate a linker script in place of a libc++.so symlink. -if (LIBCXX_ENABLE_ABI_LINKER_SCRIPT) - set(link_libraries) + # Generate a linker script in place of a libc++.so symlink. + if (LIBCXX_ENABLE_ABI_LINKER_SCRIPT) + set(link_libraries) + + set(imported_libname "$<TARGET_PROPERTY:libcxx-abi-shared,IMPORTED_LIBNAME>") + set(output_name "$<TARGET_PROPERTY:libcxx-abi-shared,OUTPUT_NAME>") + string(APPEND link_libraries "${CMAKE_LINK_LIBRARY_FLAG}$<IF:$<BOOL:${imported_libname}>,${imported_libname},${output_name}>") + + # TODO: Move to the same approach as above for the unwind library + if (LIBCXXABI_USE_LLVM_UNWINDER) + if (LIBCXXABI_STATICALLY_LINK_UNWINDER_IN_SHARED_LIBRARY) + # libunwind is already included in libc++abi + elseif (TARGET unwind_shared OR HAVE_LIBUNWIND) + string(APPEND link_libraries " ${CMAKE_LINK_LIBRARY_FLAG}$<TARGET_PROPERTY:unwind_shared,OUTPUT_NAME>") + else() + string(APPEND link_libraries " ${CMAKE_LINK_LIBRARY_FLAG}unwind") + endif() + endif() - set(imported_libname "$<TARGET_PROPERTY:libcxx-abi-shared,IMPORTED_LIBNAME>") - set(output_name "$<TARGET_PROPERTY:libcxx-abi-shared,OUTPUT_NAME>") - string(APPEND link_libraries "${CMAKE_LINK_LIBRARY_FLAG}$<IF:$<BOOL:${imported_libname}>,${imported_libname},${output_name}>") + set(linker_script "INPUT($<TARGET_SONAME_FILE_NAME:cxx_shared> ${link_libraries})") + add_custom_command(TARGET cxx_shared POST_BUILD + COMMAND "${CMAKE_COMMAND}" -E remove "$<TARGET_LINKER_FILE:cxx_shared>" + COMMAND "${CMAKE_COMMAND}" -E echo "${linker_script}" > "$<TARGET_LINKER_FILE:cxx_shared>" + COMMENT "Generating linker script: '${linker_script}' as file $<TARGET_LINKER_FILE:cxx_shared>" + VERBATIM + ) + endif() - # TODO: Move to the same approach as above for the unwind library - if (LIBCXXABI_USE_LLVM_UNWINDER) - if (LIBCXXABI_STATICALLY_LINK_UNWINDER_IN_SHARED_LIBRARY) - # libunwind is already included in libc++abi - elseif (TARGET unwind_shared OR HAVE_LIBUNWIND) - string(APPEND link_libraries " ${CMAKE_LINK_LIBRARY_FLAG}$<TARGET_PROPERTY:unwind_shared,OUTPUT_NAME>") + if(WIN32 AND NOT MINGW AND NOT "${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows") + # Since we most likely do not have a mt.exe replacement, disable the + # manifest bundling. This allows a normal cmake invocation to pass which + # will attempt to use the manifest tool to generate the bundled manifest + if (${CMAKE_CXX_COMPILER_FRONTEND_VARIANT} STREQUAL "MSVC") + set_target_properties(cxx_shared PROPERTIES + APPEND_STRING PROPERTY LINK_FLAGS " /MANIFEST:NO") else() - string(APPEND link_libraries " ${CMAKE_LINK_LIBRARY_FLAG}unwind") + set_target_properties(cxx_shared PROPERTIES + APPEND_STRING PROPERTY LINK_FLAGS " -Xlinker /MANIFEST:NO") endif() endif() - - set(linker_script "INPUT($<TARGET_SONAME_FILE_NAME:cxx_shared> ${link_libraries})") - add_custom_command(TARGET cxx_shared POST_BUILD - COMMAND "${CMAKE_COMMAND}" -E remove "$<TARGET_LINKER_FILE:cxx_shared>" - COMMAND "${CMAKE_COMMAND}" -E echo "${linker_script}" > "$<TARGET_LINKER_FILE:cxx_shared>" - COMMENT "Generating linker script: '${linker_script}' as file $<TARGET_LINKER_FILE:cxx_shared>" - VERBATIM - ) -endif() - -if(WIN32 AND NOT MINGW AND NOT "${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows") - # Since we most likely do not have a mt.exe replacement, disable the - # manifest bundling. This allows a normal cmake invocation to pass which - # will attempt to use the manifest tool to generate the bundled manifest - if (${CMAKE_CXX_COMPILER_FRONTEND_VARIANT} STREQUAL "MSVC") - set_target_properties(cxx_shared PROPERTIES - APPEND_STRING PROPERTY LINK_FLAGS " /MANIFEST:NO") - else() - set_target_properties(cxx_shared PROPERTIES - APPEND_STRING PROPERTY LINK_FLAGS " -Xlinker /MANIFEST:NO") - endif() -endif() endif(LIBCXX_SUPPORTS_SHARED_LIBRARY) set(CMAKE_STATIC_LIBRARY_PREFIX "lib") diff --git a/libcxxabi/src/CMakeLists.txt b/libcxxabi/src/CMakeLists.txt index c6652a831a4ad..1889d7d5a82de 100644 --- a/libcxxabi/src/CMakeLists.txt +++ b/libcxxabi/src/CMakeLists.txt @@ -162,105 +162,105 @@ include(WarningFlags) # Build the shared library. if (LIBCXXABI_SUPPORTS_SHARED_LIBRARY) -add_library(cxxabi_shared_objects OBJECT EXCLUDE_FROM_ALL ${LIBCXXABI_SOURCES} ${LIBCXXABI_HEADERS}) -cxx_add_warning_flags(cxxabi_shared_objects ${LIBCXXABI_ENABLE_WERROR} ${LIBCXXABI_ENABLE_PEDANTIC}) -if (LIBCXXABI_USE_LLVM_UNWINDER) - if (LIBCXXABI_STATICALLY_LINK_UNWINDER_IN_SHARED_LIBRARY OR - (DEFINED LIBUNWIND_ENABLE_SHARED AND NOT LIBUNWIND_ENABLE_SHARED)) - target_link_libraries(cxxabi_shared_objects PUBLIC unwind_shared_objects) # propagate usage requirements - target_sources(cxxabi_shared_objects PUBLIC $<TARGET_OBJECTS:unwind_shared_objects>) - else() - target_link_libraries(cxxabi_shared_objects PUBLIC unwind_shared) + add_library(cxxabi_shared_objects OBJECT EXCLUDE_FROM_ALL ${LIBCXXABI_SOURCES} ${LIBCXXABI_HEADERS}) + cxx_add_warning_flags(cxxabi_shared_objects ${LIBCXXABI_ENABLE_WERROR} ${LIBCXXABI_ENABLE_PEDANTIC}) + if (LIBCXXABI_USE_LLVM_UNWINDER) + if (LIBCXXABI_STATICALLY_LINK_UNWINDER_IN_SHARED_LIBRARY OR + (DEFINED LIBUNWIND_ENABLE_SHARED AND NOT LIBUNWIND_ENABLE_SHARED)) + target_link_libraries(cxxabi_shared_objects PUBLIC unwind_shared_objects) # propagate usage requirements + target_sources(cxxabi_shared_objects PUBLIC $<TARGET_OBJECTS:unwind_shared_objects>) + else() + target_link_libraries(cxxabi_shared_objects PUBLIC unwind_shared) + endif() endif() -endif() -target_link_libraries(cxxabi_shared_objects - PUBLIC cxxabi-headers - PRIVATE cxx-headers runtimes-libc-headers ${LIBCXXABI_LIBRARIES}) -if (NOT CXX_SUPPORTS_NOSTDLIBXX_FLAG) - target_link_libraries(cxxabi_shared_objects PRIVATE ${LIBCXXABI_BUILTINS_LIBRARY}) -endif() -set_target_properties(cxxabi_shared_objects - PROPERTIES - CXX_EXTENSIONS OFF - CXX_STANDARD 23 - CXX_STANDARD_REQUIRED OFF # TODO: Make this REQUIRED once we don't need to accommodate the LLVM documentation builders using an ancient CMake - COMPILE_FLAGS "${LIBCXXABI_COMPILE_FLAGS}" - DEFINE_SYMBOL "" -) -if (CMAKE_POSITION_INDEPENDENT_CODE OR NOT DEFINED CMAKE_POSITION_INDEPENDENT_CODE) - set_target_properties(cxxabi_shared_objects PROPERTIES POSITION_INDEPENDENT_CODE ON) # must set manually because it's an object library -endif() -target_compile_options(cxxabi_shared_objects PRIVATE "${LIBCXXABI_ADDITIONAL_COMPILE_FLAGS}") - -# Build with -fsized-deallocation, which is default in recent versions of Clang. -# TODO(LLVM 21): This can be dropped once we only support Clang >= 19. -target_add_compile_flags_if_supported(cxxabi_shared_objects PRIVATE -fsized-deallocation) - -add_library(cxxabi_shared SHARED) -set_target_properties(cxxabi_shared - PROPERTIES - EXCLUDE_FROM_ALL "$<IF:$<BOOL:${LIBCXXABI_ENABLE_SHARED}>,FALSE,TRUE>" - LINK_FLAGS "${LIBCXXABI_LINK_FLAGS}" - OUTPUT_NAME "${LIBCXXABI_SHARED_OUTPUT_NAME}" - SOVERSION "1" - VERSION "${LIBCXXABI_LIBRARY_VERSION}" -) - -if (ZOS) - add_custom_command(TARGET cxxabi_shared POST_BUILD - COMMAND - ${LIBCXXABI_LIBCXX_PATH}/utils/zos_rename_dll_side_deck.sh - $<TARGET_LINKER_FILE_NAME:cxxabi_shared> $<TARGET_FILE_NAME:cxxabi_shared> "${LIBCXXABI_DLL_NAME}" - COMMENT "Rename dll name inside the side deck file" - WORKING_DIRECTORY $<TARGET_FILE_DIR:cxxabi_shared> + target_link_libraries(cxxabi_shared_objects + PUBLIC cxxabi-headers + PRIVATE cxx-headers runtimes-libc-headers ${LIBCXXABI_LIBRARIES}) + if (NOT CXX_SUPPORTS_NOSTDLIBXX_FLAG) + target_link_libraries(cxxabi_shared_objects PRIVATE ${LIBCXXABI_BUILTINS_LIBRARY}) + endif() + set_target_properties(cxxabi_shared_objects + PROPERTIES + CXX_EXTENSIONS OFF + CXX_STANDARD 23 + CXX_STANDARD_REQUIRED OFF # TODO: Make this REQUIRED once we don't need to accommodate the LLVM documentation builders using an ancient CMake + COMPILE_FLAGS "${LIBCXXABI_COMPILE_FLAGS}" + DEFINE_SYMBOL "" ) -endif () - -target_link_libraries(cxxabi_shared - PUBLIC cxxabi_shared_objects runtimes-libc-shared - PRIVATE ${LIBCXXABI_LIBRARIES}) - -# TODO: Move this to libc++'s HandleLibCXXABI.cmake since this is effectively trying to control -# what libc++ re-exports. -add_library(cxxabi-reexports INTERFACE) -function(export_symbols file) - # -exported_symbols_list is only available on Apple platforms - if (APPLE) - target_link_libraries(cxxabi_shared PRIVATE "-Wl,-exported_symbols_list,${file}") + if (CMAKE_POSITION_INDEPENDENT_CODE OR NOT DEFINED CMAKE_POSITION_INDEPENDENT_CODE) + set_target_properties(cxxabi_shared_objects PROPERTIES POSITION_INDEPENDENT_CODE ON) # must set manually because it's an object library endif() -endfunction() + target_compile_options(cxxabi_shared_objects PRIVATE "${LIBCXXABI_ADDITIONAL_COMPILE_FLAGS}") + + # Build with -fsized-deallocation, which is default in recent versions of Clang. + # TODO(LLVM 21): This can be dropped once we only support Clang >= 19. + target_add_compile_flags_if_supported(cxxabi_shared_objects PRIVATE -fsized-deallocation) + + add_library(cxxabi_shared SHARED) + set_target_properties(cxxabi_shared + PROPERTIES + EXCLUDE_FROM_ALL "$<IF:$<BOOL:${LIBCXXABI_ENABLE_SHARED}>,FALSE,TRUE>" + LINK_FLAGS "${LIBCXXABI_LINK_FLAGS}" + OUTPUT_NAME "${LIBCXXABI_SHARED_OUTPUT_NAME}" + SOVERSION "1" + VERSION "${LIBCXXABI_LIBRARY_VERSION}" + ) -function(reexport_symbols file) - export_symbols("${file}") - # -reexported_symbols_list is only available on Apple platforms - if (APPLE) - target_link_libraries(cxxabi-reexports INTERFACE "-Wl,-reexported_symbols_list,${file}") - endif() -endfunction() + if (ZOS) + add_custom_command(TARGET cxxabi_shared POST_BUILD + COMMAND + ${LIBCXXABI_LIBCXX_PATH}/utils/zos_rename_dll_side_deck.sh + $<TARGET_LINKER_FILE_NAME:cxxabi_shared> $<TARGET_FILE_NAME:cxxabi_shared> "${LIBCXXABI_DLL_NAME}" + COMMENT "Rename dll name inside the side deck file" + WORKING_DIRECTORY $<TARGET_FILE_DIR:cxxabi_shared> + ) + endif () + + target_link_libraries(cxxabi_shared + PUBLIC cxxabi_shared_objects runtimes-libc-shared + PRIVATE ${LIBCXXABI_LIBRARIES}) + + # TODO: Move this to libc++'s HandleLibCXXABI.cmake since this is effectively trying to control + # what libc++ re-exports. + add_library(cxxabi-reexports INTERFACE) + function(export_symbols file) + # -exported_symbols_list is only available on Apple platforms + if (APPLE) + target_link_libraries(cxxabi_shared PRIVATE "-Wl,-exported_symbols_list,${file}") + endif() + endfunction() -export_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/symbols-not-reexported.exp") -reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/cxxabiv1.exp") -reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/fundamental-types.exp") -reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/itanium-base.exp") -reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/std-misc.exp") + function(reexport_symbols file) + export_symbols("${file}") + # -reexported_symbols_list is only available on Apple platforms + if (APPLE) + target_link_libraries(cxxabi-reexports INTERFACE "-Wl,-reexported_symbols_list,${file}") + endif() + endfunction() -if (LIBCXXABI_ENABLE_NEW_DELETE_DEFINITIONS) - reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/new-delete.exp") -endif() + export_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/symbols-not-reexported.exp") + reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/cxxabiv1.exp") + reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/fundamental-types.exp") + reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/itanium-base.exp") + reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/std-misc.exp") -# Note that std:: exception types are always defined by the library regardless of -# whether the exception runtime machinery is provided. -reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/std-exceptions.exp") + if (LIBCXXABI_ENABLE_NEW_DELETE_DEFINITIONS) + reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/new-delete.exp") + endif() -if (LIBCXXABI_ENABLE_EXCEPTIONS) - reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/itanium-exceptions.exp") + # Note that std:: exception types are always defined by the library regardless of + # whether the exception runtime machinery is provided. + reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/std-exceptions.exp") - if ("${CMAKE_OSX_ARCHITECTURES}" MATCHES "^(armv6|armv7|armv7s)$") - reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/personality-sjlj.exp") - else() - reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/personality-v0.exp") + if (LIBCXXABI_ENABLE_EXCEPTIONS) + reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/itanium-exceptions.exp") + + if ("${CMAKE_OSX_ARCHITECTURES}" MATCHES "^(armv6|armv7|armv7s)$") + reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/personality-sjlj.exp") + else() + reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/personality-v0.exp") + endif() endif() -endif() endif(LIBCXXABI_SUPPORTS_SHARED_LIBRARY) # Build the static library. diff --git a/libunwind/src/CMakeLists.txt b/libunwind/src/CMakeLists.txt index 57e780afb90b2..a9d9a2ef089d6 100644 --- a/libunwind/src/CMakeLists.txt +++ b/libunwind/src/CMakeLists.txt @@ -126,39 +126,39 @@ include(WarningFlags) # Build the shared library. if (LIBUNWIND_SUPPORTS_SHARED_LIBRARY) -add_library(unwind_shared_objects OBJECT EXCLUDE_FROM_ALL ${LIBUNWIND_SOURCES} ${LIBUNWIND_HEADERS}) -cxx_add_warning_flags(unwind_shared_objects ${LIBUNWIND_ENABLE_WERROR} ${LIBUNWIND_ENABLE_PEDANTIC}) -if(CMAKE_C_COMPILER_ID STREQUAL MSVC) - target_compile_options(unwind_shared_objects PRIVATE /GR-) -else() - target_compile_options(unwind_shared_objects PRIVATE -fno-rtti) -endif() -target_compile_options(unwind_shared_objects PUBLIC "${LIBUNWIND_ADDITIONAL_COMPILE_FLAGS}") -target_link_libraries(unwind_shared_objects - PUBLIC "${LIBUNWIND_ADDITIONAL_LIBRARIES}" - PRIVATE unwind-headers runtimes-libc-headers ${LIBUNWIND_LIBRARIES}) -set_target_properties(unwind_shared_objects - PROPERTIES - CXX_EXTENSIONS OFF - CXX_STANDARD 17 - CXX_STANDARD_REQUIRED ON - COMPILE_FLAGS "${LIBUNWIND_COMPILE_FLAGS}" -) -if (CMAKE_POSITION_INDEPENDENT_CODE OR NOT DEFINED CMAKE_POSITION_INDEPENDENT_CODE) - set_target_properties(unwind_shared_objects PROPERTIES POSITION_INDEPENDENT_CODE ON) # must set manually because it's an object library -endif() + add_library(unwind_shared_objects OBJECT EXCLUDE_FROM_ALL ${LIBUNWIND_SOURCES} ${LIBUNWIND_HEADERS}) + cxx_add_warning_flags(unwind_shared_objects ${LIBUNWIND_ENABLE_WERROR} ${LIBUNWIND_ENABLE_PEDANTIC}) + if(CMAKE_C_COMPILER_ID STREQUAL MSVC) + target_compile_options(unwind_shared_objects PRIVATE /GR-) + else() + target_compile_options(unwind_shared_objects PRIVATE -fno-rtti) + endif() + target_compile_options(unwind_shared_objects PUBLIC "${LIBUNWIND_ADDITIONAL_COMPILE_FLAGS}") + target_link_libraries(unwind_shared_objects + PUBLIC "${LIBUNWIND_ADDITIONAL_LIBRARIES}" + PRIVATE unwind-headers runtimes-libc-headers ${LIBUNWIND_LIBRARIES}) + set_target_properties(unwind_shared_objects + PROPERTIES + CXX_EXTENSIONS OFF + CXX_STANDARD 17 + CXX_STANDARD_REQUIRED ON + COMPILE_FLAGS "${LIBUNWIND_COMPILE_FLAGS}" + ) + if (CMAKE_POSITION_INDEPENDENT_CODE OR NOT DEFINED CMAKE_POSITION_INDEPENDENT_CODE) + set_target_properties(unwind_shared_objects PROPERTIES POSITION_INDEPENDENT_CODE ON) # must set manually because it's an object library + endif() -add_library(unwind_shared SHARED) -target_link_libraries(unwind_shared PUBLIC unwind_shared_objects runtimes-libc-shared) -set_target_properties(unwind_shared - PROPERTIES - EXCLUDE_FROM_ALL "$<IF:$<BOOL:${LIBUNWIND_ENABLE_SHARED}>,FALSE,TRUE>" - LINK_FLAGS "${LIBUNWIND_LINK_FLAGS}" - LINKER_LANGUAGE C - OUTPUT_NAME "${LIBUNWIND_SHARED_OUTPUT_NAME}" - VERSION "${LIBUNWIND_LIBRARY_VERSION}" - SOVERSION "1" -) + add_library(unwind_shared SHARED) + target_link_libraries(unwind_shared PUBLIC unwind_shared_objects runtimes-libc-shared) + set_target_properties(unwind_shared + PROPERTIES + EXCLUDE_FROM_ALL "$<IF:$<BOOL:${LIBUNWIND_ENABLE_SHARED}>,FALSE,TRUE>" + LINK_FLAGS "${LIBUNWIND_LINK_FLAGS}" + LINKER_LANGUAGE C + OUTPUT_NAME "${LIBUNWIND_SHARED_OUTPUT_NAME}" + VERSION "${LIBUNWIND_LIBRARY_VERSION}" + SOVERSION "1" + ) endif(LIBUNWIND_SUPPORTS_SHARED_LIBRARY) # Build the static library. _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
