diff options
author | Hans Wennborg <hans@hanshq.net> | 2015-07-29 18:32:21 +0000 |
---|---|---|
committer | Hans Wennborg <hans@hanshq.net> | 2015-07-29 18:32:21 +0000 |
commit | 1e33bbecb94854ea1d648ad54c9a31a9d353f266 (patch) | |
tree | e295ca510b2358a93257ede74ddffbf0f9ee1b18 /libcxx/lib | |
parent | 0f9dcf8b90aaeb0a98dd79eda43e623f4a55231a (diff) | |
download | bcm5719-llvm-1e33bbecb94854ea1d648ad54c9a31a9d353f266.tar.gz bcm5719-llvm-1e33bbecb94854ea1d648ad54c9a31a9d353f266.zip |
Revert r243503 "[libcxx] Cleanup CMake configuration and integrate with LLVM"
This caused clang-format to stop linking on Mac; see PR24306.
llvm-svn: 243550
Diffstat (limited to 'libcxx/lib')
-rw-r--r-- | libcxx/lib/CMakeLists.txt | 68 |
1 files changed, 43 insertions, 25 deletions
diff --git a/libcxx/lib/CMakeLists.txt b/libcxx/lib/CMakeLists.txt index 26dee6765c7..a32f2931447 100644 --- a/libcxx/lib/CMakeLists.txt +++ b/libcxx/lib/CMakeLists.txt @@ -25,23 +25,48 @@ if (MSVC_IDE OR XCODE) endif() if (LIBCXX_ENABLE_SHARED) - add_library(cxx SHARED ${LIBCXX_SOURCES} ${LIBCXX_HEADERS}) + add_library(cxx SHARED + ${LIBCXX_SOURCES} + ${LIBCXX_HEADERS} + ) else() - add_library(cxx STATIC ${LIBCXX_SOURCES} ${LIBCXX_HEADERS}) + add_library(cxx STATIC + ${LIBCXX_SOURCES} + ${LIBCXX_HEADERS} + ) +endif() + +#if LIBCXX_CXX_ABI_LIBRARY_PATH is defined we want to add it to the search path. +if (DEFINED LIBCXX_CXX_ABI_LIBRARY_PATH) + target_link_libraries(cxx "-L${LIBCXX_CXX_ABI_LIBRARY_PATH}") endif() if (DEFINED LIBCXX_CXX_ABI_DEPS) add_dependencies(cxx LIBCXX_CXX_ABI_DEPS) endif() -#if LIBCXX_CXX_ABI_LIBRARY_PATH is defined we want to add it to the search path. -add_link_flags_if(LIBCXX_CXX_ABI_LIBRARY_PATH "-L${LIBCXX_CXX_ABI_LIBRARY_PATH}") - -add_library_flags_if(LIBCXX_COVERAGE_LIBRARY "${LIBCXX_COVERAGE_LIBRARY}") +set(libraries "") +if (LIBCXX_ENABLE_STATIC_ABI_LIBRARY) + # TODO(ericwf): Remove these GNU specific linker flags and let CMake do the + # configuration. This will be more portable. + list(APPEND libraries "-Wl,--whole-archive" "-Wl,-Bstatic") + list(APPEND libraries "${LIBCXX_CXX_ABI_LIBRARY}") + list(APPEND libraries "-Wl,-Bdynamic" "-Wl,--no-whole-archive") +else() + list(APPEND libraries "${LIBCXX_CXX_ABI_LIBRARY}") +endif() -add_library_flags_if(LIBCXX_ENABLE_STATIC_ABI_LIBRARY "-Wl,--whole-archive" "-Wl,-Bstatic") -add_library_flags("${LIBCXX_CXX_ABI_LIBRARY}") -add_library_flags_if(LIBCXX_ENABLE_STATIC_ABI_LIBRARY "-Wl,-Bdynamic" "-Wl,--no-whole-archive") +# Generate library list. +append_if(libraries LIBCXX_HAS_PTHREAD_LIB pthread) +append_if(libraries LIBCXX_HAS_C_LIB c) +append_if(libraries LIBCXX_HAS_M_LIB m) +append_if(libraries LIBCXX_HAS_RT_LIB rt) +append_if(libraries LIBCXX_HAS_GCC_S_LIB gcc_s) + +if (LIBCXX_COVERAGE_LIBRARY) + target_link_libraries(cxx ${LIBCXX_COVERAGE_LIBRARY}) +endif() +target_link_libraries(cxx ${libraries}) if (APPLE AND LLVM_USE_SANITIZER) if ("${LLVM_USE_SANITIZER}" STREQUAL "Address") @@ -64,21 +89,15 @@ if (APPLE AND LLVM_USE_SANITIZER) set(LIBCXX_SANITIZER_LIBRARY "${LIBDIR}/${LIBFILE}") set(LIBCXX_SANITIZER_LIBRARY "${LIBCXX_SANITIZER_LIBRARY}" PARENT_SCOPE) message(STATUS "Manually linking compiler-rt library: ${LIBCXX_SANITIZER_LIBRARY}") - add_library_flags("${LIBCXX_SANITIZER_LIBRARY}") - add_link_flags("-Wl,-rpath,${LIBDIR}") + target_link_libraries(cxx "${LIBCXX_SANITIZER_LIBRARY}") + target_link_libraries(cxx "-Wl,-rpath,${LIBDIR}") endif() endif() -# Generate library list. -add_library_flags_if(LIBCXX_HAS_PTHREAD_LIB pthread) -add_library_flags_if(LIBCXX_HAS_C_LIB c) -add_library_flags_if(LIBCXX_HAS_M_LIB m) -add_library_flags_if(LIBCXX_HAS_RT_LIB rt) -add_library_flags_if(LIBCXX_HAS_GCC_S_LIB gcc_s) # Setup flags. -add_flags_if_supported(-fPIC) -add_link_flags_if_supported(-nodefaultlibs) +append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_FPIC_FLAG -fPIC) +append_if(LIBCXX_LINK_FLAGS LIBCXX_HAS_NODEFAULTLIBS_FLAG -nodefaultlibs) if ( APPLE AND (LIBCXX_CXX_ABI_LIBNAME STREQUAL "libcxxabi" OR LIBCXX_CXX_ABI_LIBNAME STREQUAL "none")) @@ -87,8 +106,8 @@ if ( APPLE AND (LIBCXX_CXX_ABI_LIBNAME STREQUAL "libcxxabi" OR endif() if ( CMAKE_OSX_DEPLOYMENT_TARGET STREQUAL "10.6" ) - add_definitions(-D__STRICT_ANSI__) - add_link_flags( + list(APPEND LIBCXX_COMPILE_FLAGS "-U__STRICT_ANSI__") + list(APPEND LIBCXX_LINK_FLAGS "-compatibility_version 1" "-current_version 1" "-install_name /usr/lib/libc++.1.dylib" @@ -110,7 +129,7 @@ if ( APPLE AND (LIBCXX_CXX_ABI_LIBNAME STREQUAL "libcxxabi" OR set (OSX_RE_EXPORT_LINE "/usr/lib/libc++abi.dylib -Wl,-reexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/libc++abi${LIBCXX_LIBCPPABI_VERSION}.exp") endif() - add_link_flags( + list(APPEND LIBCXX_LINK_FLAGS "-compatibility_version 1" "-install_name /usr/lib/libc++.1.dylib" "-Wl,-unexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/libc++unexp.exp" @@ -120,9 +139,8 @@ if ( APPLE AND (LIBCXX_CXX_ABI_LIBNAME STREQUAL "libcxxabi" OR endif() endif() -target_link_libraries(cxx ${LIBCXX_LIBRARIES}) -split_list(LIBCXX_COMPILE_FLAGS) -split_list(LIBCXX_LINK_FLAGS) +string(REPLACE ";" " " LIBCXX_COMPILE_FLAGS "${LIBCXX_COMPILE_FLAGS}") +string(REPLACE ";" " " LIBCXX_LINK_FLAGS "${LIBCXX_LINK_FLAGS}") set_target_properties(cxx PROPERTIES |