diff options
Diffstat (limited to 'libcxxabi/src')
-rw-r--r-- | libcxxabi/src/CMakeLists.txt | 68 |
1 files changed, 44 insertions, 24 deletions
diff --git a/libcxxabi/src/CMakeLists.txt b/libcxxabi/src/CMakeLists.txt index 5c9e38b0c78..fda2d105f42 100644 --- a/libcxxabi/src/CMakeLists.txt +++ b/libcxxabi/src/CMakeLists.txt @@ -34,18 +34,6 @@ if (MSVC_IDE OR XCODE) endif() endif() -if (LIBCXXABI_ENABLE_SHARED) - add_library(cxxabi SHARED - ${LIBCXXABI_SOURCES} - ${LIBCXXABI_HEADERS} - ) -else() - add_library(cxxabi STATIC - ${LIBCXXABI_SOURCES} - ${LIBCXXABI_HEADERS} - ) -endif() - include_directories("${LIBCXXABI_LIBCXX_INCLUDES}") if (LIBCXXABI_HAS_CXA_THREAD_ATEXIT_IMPL) @@ -65,22 +53,23 @@ else() append_if(libraries LIBCXXABI_HAS_GCC_EH_LIB gcc_eh) endif() -target_link_libraries(cxxabi ${libraries}) - # Setup flags. append_if(LIBCXXABI_COMPILE_FLAGS LIBCXXABI_HAS_FPIC_FLAG -fPIC) append_if(LIBCXXABI_LINK_FLAGS LIBCXXABI_HAS_NODEFAULTLIBS_FLAG -nodefaultlibs) +set(LIBCXXABI_SHARED_LINK_FLAGS) + if ( APPLE ) if ( CMAKE_OSX_DEPLOYMENT_TARGET STREQUAL "10.6" ) list(APPEND LIBCXXABI_COMPILE_FLAGS "-U__STRICT_ANSI__") - list(APPEND LIBCXXABI_LINK_FLAGS + list(APPEND LIBCXXABI_SHARED_LINK_FLAGS "-compatibility_version 1" "-current_version 1" - "-install_name /usr/lib/libc++abi.1.dylib" - "/usr/lib/libSystem.B.dylib") - else() + "-install_name /usr/lib/libc++abi.1.dylib") list(APPEND LIBCXXABI_LINK_FLAGS + "/usr/lib/libSystem.B.dylib") + else() + list(APPEND LIBCXXABI_SHARED_LINK_FLAGS "-compatibility_version 1" "-install_name /usr/lib/libc++abi.1.dylib") endif() @@ -88,17 +77,48 @@ endif() string(REPLACE ";" " " LIBCXXABI_COMPILE_FLAGS "${LIBCXXABI_COMPILE_FLAGS}") string(REPLACE ";" " " LIBCXXABI_LINK_FLAGS "${LIBCXXABI_LINK_FLAGS}") +string(REPLACE ";" " " LIBCXXABI_SHARED_LINK_FLAGS "${LIBCXXABI_SHARED_LINK_FLAGS}") + +# Add a object library that contains the compiled source files. +add_library(cxxabi_objects OBJECT ${LIBCXXABI_SOURCES} ${LIBCXXABI_HEADERS}) -set_target_properties(cxxabi +set_target_properties(cxxabi_objects PROPERTIES COMPILE_FLAGS "${LIBCXXABI_COMPILE_FLAGS}" - LINK_FLAGS "${LIBCXXABI_LINK_FLAGS}" - OUTPUT_NAME "c++abi" - VERSION "1.0" - SOVERSION "1" ) -install(TARGETS cxxabi +set(LIBCXXABI_TARGETS) + +# Build the shared library. +if (LIBCXXABI_ENABLE_SHARED) + add_library(cxxabi_shared SHARED $<TARGET_OBJECTS:cxxabi_objects>) + target_link_libraries(cxxabi_shared ${libraries}) + set_target_properties(cxxabi_shared + PROPERTIES + LINK_FLAGS "${LIBCXXABI_LINK_FLAGS} ${LIBCXXABI_SHARED_LINK_FLAGS}" + OUTPUT_NAME "c++abi" + VERSION "1.0" + SOVERSION "1" + ) + list(APPEND LIBCXXABI_TARGETS "cxxabi_shared") +endif() + +# Build the static library. +if (LIBCXXABI_ENABLE_STATIC) + add_library(cxxabi_static STATIC $<TARGET_OBJECTS:cxxabi_objects>) + target_link_libraries(cxxabi_static ${libraries}) + set_target_properties(cxxabi_static + PROPERTIES + LINK_FLAGS "${LIBCXXABI_LINK_FLAGS}" + OUTPUT_NAME "c++abi" + ) + list(APPEND LIBCXXABI_TARGETS "cxxabi_static") +endif() + +# Add a meta-target for both libraries. +add_custom_target(cxxabi DEPENDS ${LIBCXXABI_TARGETS}) + +install(TARGETS ${LIBCXXABI_TARGETS} LIBRARY DESTINATION lib${LIBCXXABI_LIBDIR_SUFFIX} ARCHIVE DESTINATION lib${LIBCXXABI_LIBDIR_SUFFIX} ) |