diff --git a/libcxx/CMakeLists.txt b/libcxx/CMakeLists.txt --- a/libcxx/CMakeLists.txt +++ b/libcxx/CMakeLists.txt @@ -77,7 +77,7 @@ option(LIBCXX_ENABLE_ASSERTIONS "Enable assertions independent of build mode." OFF) option(LIBCXX_ENABLE_SHARED "Build libc++ as a shared library." ON) option(LIBCXX_ENABLE_STATIC "Build libc++ as a static library." ON) -option(LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY "Build libc++experimental.a" ON) +option(LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY "Build libc++experimental.a, and link it into libc++" ON) set(ENABLE_FILESYSTEM_DEFAULT ON) if (WIN32) set(ENABLE_FILESYSTEM_DEFAULT OFF) diff --git a/libcxx/src/CMakeLists.txt b/libcxx/src/CMakeLists.txt --- a/libcxx/src/CMakeLists.txt +++ b/libcxx/src/CMakeLists.txt @@ -163,6 +163,9 @@ llvm_setup_rpath(cxx_shared) endif() target_link_libraries(cxx_shared PRIVATE ${LIBCXX_LIBRARIES}) + if (LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY) + target_link_libraries(cxx_shared PRIVATE cxx_experimental) + endif() set_target_properties(cxx_shared PROPERTIES COMPILE_FLAGS "${LIBCXX_COMPILE_FLAGS}" @@ -241,6 +244,9 @@ if (LIBCXX_ENABLE_STATIC) add_library(cxx_static STATIC ${exclude_from_all} ${LIBCXX_SOURCES} ${LIBCXX_HEADERS}) target_link_libraries(cxx_static PRIVATE ${LIBCXX_LIBRARIES}) + if (LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY) + target_link_libraries(cxx_static PRIVATE cxx_experimental) + endif() set(CMAKE_STATIC_LIBRARY_PREFIX "lib") set_target_properties(cxx_static PROPERTIES @@ -302,9 +308,9 @@ ) add_library(cxx_experimental STATIC ${LIBCXX_EXPERIMENTAL_SOURCES}) if (LIBCXX_ENABLE_SHARED) - target_link_libraries(cxx_experimental PRIVATE cxx_shared) + target_link_libraries(cxx_experimental INTERFACE cxx_shared) else() - target_link_libraries(cxx_experimental PRIVATE cxx_static) + target_link_libraries(cxx_experimental INTERFACE cxx_static) endif() set_target_properties(cxx_experimental