summaryrefslogtreecommitdiff
path: root/libcxxabi/src
diff options
context:
space:
mode:
authorLouis Dionne <ldionne.2@gmail.com>2022-09-19 16:17:02 -0400
committerLouis Dionne <ldionne.2@gmail.com>2022-10-12 09:36:29 -0400
commit79ee0342dbf025bc70f237bdfe9ccb4e10a592ce (patch)
treee0d18a4af06beadd99098956a41496835aa7a6b8 /libcxxabi/src
parentec2640bf3a5221a3ac58f25b34976be6264e8e21 (diff)
downloadllvm-79ee0342dbf025bc70f237bdfe9ccb4e10a592ce.tar.gz
[runtimes] Always define cxx_shared, cxx_static & other targets
However, mark them as EXCLUDE_FROM_ALL when we don't want to build them. Simply declaring the targets should be of no harm, and it allows other projects to mention these targets regardless of whether they end up being built or not. While the diff may not make that obvious, this patch basically moves the definition of e.g. `cxx_shared` out of the `if (LIBCXX_ENABLE_SHARED)` and instead marks it as `EXCLUDE_FROM_ALL` conditionally on whether LIBCXX_ENABLE_SHARED is passed. It then does the same for libunwind and libc++abi targets. Differential Revision: https://reviews.llvm.org/D134221
Diffstat (limited to 'libcxxabi/src')
-rw-r--r--libcxxabi/src/CMakeLists.txt135
1 files changed, 67 insertions, 68 deletions
diff --git a/libcxxabi/src/CMakeLists.txt b/libcxxabi/src/CMakeLists.txt
index 58df59a5725a..e4e85733153d 100644
--- a/libcxxabi/src/CMakeLists.txt
+++ b/libcxxabi/src/CMakeLists.txt
@@ -182,64 +182,63 @@ if (CMAKE_POSITION_INDEPENDENT_CODE OR NOT DEFINED CMAKE_POSITION_INDEPENDENT_CO
set_target_properties(cxxabi_shared_objects PROPERTIES POSITION_INDEPENDENT_CODE ON) # must set manually because it's an object library
endif()
-if (LIBCXXABI_ENABLE_SHARED)
- add_library(cxxabi_shared SHARED)
- set_target_properties(cxxabi_shared
- PROPERTIES
- LINK_FLAGS "${LIBCXXABI_LINK_FLAGS}"
- OUTPUT_NAME "${LIBCXXABI_SHARED_OUTPUT_NAME}"
- SOVERSION "1"
- VERSION "${LIBCXXABI_LIBRARY_VERSION}"
- )
+add_library(cxxabi_shared SHARED $<$<NOT:$<BOOL:LIBCXXABI_ENABLE_SHARED>>:EXCLUDE_FROM_ALL>)
+set_target_properties(cxxabi_shared
+ PROPERTIES
+ 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>
- )
- endif ()
+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
- PRIVATE ${LIBCXXABI_SHARED_LIBRARIES} ${LIBCXXABI_LIBRARIES})
- if (TARGET pstl::ParallelSTL)
- target_link_libraries(cxxabi_shared PUBLIC pstl::ParallelSTL)
- endif()
+target_link_libraries(cxxabi_shared
+ PUBLIC cxxabi_shared_objects
+ PRIVATE ${LIBCXXABI_SHARED_LIBRARIES} ${LIBCXXABI_LIBRARIES})
+if (TARGET pstl::ParallelSTL)
+ target_link_libraries(cxxabi_shared PUBLIC pstl::ParallelSTL)
+endif()
+if (LIBCXXABI_ENABLE_SHARED)
list(APPEND LIBCXXABI_BUILD_TARGETS "cxxabi_shared")
- if (LIBCXXABI_INSTALL_SHARED_LIBRARY)
- list(APPEND LIBCXXABI_INSTALL_TARGETS "cxxabi_shared")
- endif()
-
- add_library(cxxabi-reexports INTERFACE)
+endif()
+if (LIBCXXABI_INSTALL_SHARED_LIBRARY)
+ list(APPEND LIBCXXABI_INSTALL_TARGETS "cxxabi_shared")
+endif()
- # -exported_symbols_list is only available on Apple platforms
- if (APPLE)
- function(export_symbols file)
- target_link_libraries(cxxabi_shared PRIVATE "-Wl,-exported_symbols_list,${file}")
- endfunction()
- function(reexport_symbols file)
- export_symbols("${file}")
- target_link_libraries(cxxabi-reexports INTERFACE "-Wl,-reexported_symbols_list,${file}")
- endfunction()
+add_library(cxxabi-reexports INTERFACE)
+# -exported_symbols_list is only available on Apple platforms
+if (APPLE)
+ function(export_symbols file)
+ target_link_libraries(cxxabi_shared PRIVATE "-Wl,-exported_symbols_list,${file}")
+ endfunction()
+ function(reexport_symbols file)
+ export_symbols("${file}")
+ target_link_libraries(cxxabi-reexports INTERFACE "-Wl,-reexported_symbols_list,${file}")
+ endfunction()
- export_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/itanium-base.exp")
+ export_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/itanium-base.exp")
- if (LIBCXXABI_ENABLE_NEW_DELETE_DEFINITIONS)
- reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/new-delete.exp")
- endif()
+ 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/exceptions.exp")
+ if (LIBCXXABI_ENABLE_EXCEPTIONS)
+ reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/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()
+ 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()
@@ -277,27 +276,27 @@ if(LIBCXXABI_HERMETIC_STATIC_LIBRARY)
_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS=)
endif()
-if (LIBCXXABI_ENABLE_STATIC)
- add_library(cxxabi_static STATIC)
- if (LIBCXXABI_USE_LLVM_UNWINDER AND NOT LIBCXXABI_STATICALLY_LINK_UNWINDER_IN_STATIC_LIBRARY)
- target_link_libraries(cxxabi_static PUBLIC unwind_static)
- endif()
- set_target_properties(cxxabi_static
- PROPERTIES
- LINK_FLAGS "${LIBCXXABI_LINK_FLAGS}"
- OUTPUT_NAME "${LIBCXXABI_STATIC_OUTPUT_NAME}"
- )
- target_link_libraries(cxxabi_static
- PUBLIC cxxabi_static_objects
- PRIVATE ${LIBCXXABI_STATIC_LIBRARIES} ${LIBCXXABI_LIBRARIES})
- if (TARGET pstl::ParallelSTL)
- target_link_libraries(cxxabi_static PUBLIC pstl::ParallelSTL)
- endif()
+add_library(cxxabi_static STATIC $<$<NOT:$<BOOL:LIBCXXABI_ENABLE_STATIC>>:EXCLUDE_FROM_ALL>)
+if (LIBCXXABI_USE_LLVM_UNWINDER AND NOT LIBCXXABI_STATICALLY_LINK_UNWINDER_IN_STATIC_LIBRARY)
+ target_link_libraries(cxxabi_static PUBLIC unwind_static)
+endif()
+set_target_properties(cxxabi_static
+ PROPERTIES
+ LINK_FLAGS "${LIBCXXABI_LINK_FLAGS}"
+ OUTPUT_NAME "${LIBCXXABI_STATIC_OUTPUT_NAME}"
+ )
+target_link_libraries(cxxabi_static
+ PUBLIC cxxabi_static_objects
+ PRIVATE ${LIBCXXABI_STATIC_LIBRARIES} ${LIBCXXABI_LIBRARIES})
+if (TARGET pstl::ParallelSTL)
+ target_link_libraries(cxxabi_static PUBLIC pstl::ParallelSTL)
+endif()
+if (LIBCXXABI_ENABLE_STATIC)
list(APPEND LIBCXXABI_BUILD_TARGETS "cxxabi_static")
- if (LIBCXXABI_INSTALL_STATIC_LIBRARY)
- list(APPEND LIBCXXABI_INSTALL_TARGETS "cxxabi_static")
- endif()
+endif()
+if (LIBCXXABI_INSTALL_STATIC_LIBRARY)
+ list(APPEND LIBCXXABI_INSTALL_TARGETS "cxxabi_static")
endif()
# Add a meta-target for both libraries.