diff --git a/libcxx/CMakeLists.txt b/libcxx/CMakeLists.txt index 16540caf68eaf0..d03421afde1e75 100644 --- a/libcxx/CMakeLists.txt +++ b/libcxx/CMakeLists.txt @@ -642,18 +642,8 @@ get_sanitizer_flags(SANITIZER_FLAGS "${LLVM_USE_SANITIZER}") # Link system libraries ======================================================= function(cxx_link_system_libraries target) - -# In order to remove just libc++ from the link step -# we need to use -nostdlib++ whenever it is supported. -# Unfortunately this cannot be used universally because for example g++ supports -# only -nodefaultlibs in which case all libraries will be removed and -# all libraries but c++ have to be added in manually. - if (CXX_SUPPORTS_NOSTDLIBXX_FLAG) - target_add_link_flags_if_supported(${target} PRIVATE "-nostdlib++") - else() - target_add_link_flags_if_supported(${target} PRIVATE "-nodefaultlibs") - target_add_compile_flags_if_supported(${target} PRIVATE "/Zl") - target_add_link_flags_if_supported(${target} PRIVATE "/nodefaultlib") + if (NOT MSVC) + target_link_libraries(${target} PRIVATE "-nostdlib++") endif() if (CXX_SUPPORTS_UNWINDLIB_EQ_NONE_FLAG AND LIBCXXABI_USE_LLVM_UNWINDER) @@ -663,24 +653,6 @@ function(cxx_link_system_libraries target) target_add_link_flags_if_supported(${target} PRIVATE "--unwindlib=none") endif() - if (NOT APPLE) # On Apple platforms, we always use -nostdlib++ so we don't need to re-add other libraries - if (LIBCXX_HAS_PTHREAD_LIB) - target_link_libraries(${target} PRIVATE pthread) - endif() - - if (LIBCXX_HAS_C_LIB) - target_link_libraries(${target} PRIVATE c) - endif() - - if (LIBCXX_HAS_M_LIB) - target_link_libraries(${target} PRIVATE m) - endif() - - if (LIBCXX_HAS_RT_LIB) - target_link_libraries(${target} PRIVATE rt) - endif() - endif() - if (LIBCXX_USE_COMPILER_RT) find_compiler_rt_library(builtins LIBCXX_BUILTINS_LIBRARY) if (LIBCXX_BUILTINS_LIBRARY) diff --git a/libcxx/benchmarks/CMakeLists.txt b/libcxx/benchmarks/CMakeLists.txt index 1a4d634500180e..80b2663fd80868 100644 --- a/libcxx/benchmarks/CMakeLists.txt +++ b/libcxx/benchmarks/CMakeLists.txt @@ -122,7 +122,7 @@ endif() add_library( cxx-benchmarks-flags-libcxx INTERFACE) target_link_libraries( cxx-benchmarks-flags-libcxx INTERFACE cxx-benchmarks-flags) target_compile_options(cxx-benchmarks-flags-libcxx INTERFACE ${SANITIZER_FLAGS} -Wno-user-defined-literals -Wno-suggest-override) -target_link_options( cxx-benchmarks-flags-libcxx INTERFACE -nodefaultlibs "-L${BENCHMARK_LIBCXX_INSTALL}/lib" "-L${BENCHMARK_LIBCXX_INSTALL}/lib64" ${SANITIZER_FLAGS}) +target_link_options( cxx-benchmarks-flags-libcxx INTERFACE -nostdlib++ "-L${BENCHMARK_LIBCXX_INSTALL}/lib" "-L${BENCHMARK_LIBCXX_INSTALL}/lib64" ${SANITIZER_FLAGS}) set(libcxx_benchmark_targets) diff --git a/libcxx/cmake/config-ix.cmake b/libcxx/cmake/config-ix.cmake index 9962d848d85e84..9fed861a4e193c 100644 --- a/libcxx/cmake/config-ix.cmake +++ b/libcxx/cmake/config-ix.cmake @@ -14,14 +14,6 @@ include(CheckCSourceCompiles) # link with --uwnindlib=none. Check if that option works. llvm_check_compiler_linker_flag(C "--unwindlib=none" CXX_SUPPORTS_UNWINDLIB_EQ_NONE_FLAG) -if(WIN32 AND NOT MINGW) - # NOTE(compnerd) this is technically a lie, there is msvcrt, but for now, lets - # let the default linking take care of that. - set(LIBCXX_HAS_C_LIB NO) -else() - check_library_exists(c fopen "" LIBCXX_HAS_C_LIB) -endif() - if (NOT LIBCXX_USE_COMPILER_RT) if(WIN32 AND NOT MINGW) set(LIBCXX_HAS_GCC_S_LIB NO) @@ -54,9 +46,6 @@ else() endif() if (CXX_SUPPORTS_NOSTDLIBXX_FLAG OR C_SUPPORTS_NODEFAULTLIBS_FLAG) - if (LIBCXX_HAS_C_LIB) - list(APPEND CMAKE_REQUIRED_LIBRARIES c) - endif () if (LIBCXX_USE_COMPILER_RT) include(HandleCompilerRT) find_compiler_rt_library(builtins LIBCXX_BUILTINS_LIBRARY @@ -108,22 +97,18 @@ if(WIN32 AND NOT MINGW) # TODO(compnerd) do we want to support an emulation layer that allows for the # use of pthread-win32 or similar libraries to emulate pthreads on Windows? set(LIBCXX_HAS_PTHREAD_LIB NO) - set(LIBCXX_HAS_M_LIB NO) set(LIBCXX_HAS_RT_LIB NO) set(LIBCXX_HAS_ATOMIC_LIB NO) elseif(APPLE) set(LIBCXX_HAS_PTHREAD_LIB NO) - set(LIBCXX_HAS_M_LIB NO) set(LIBCXX_HAS_RT_LIB NO) set(LIBCXX_HAS_ATOMIC_LIB NO) elseif(FUCHSIA) - set(LIBCXX_HAS_M_LIB NO) set(LIBCXX_HAS_PTHREAD_LIB NO) set(LIBCXX_HAS_RT_LIB NO) check_library_exists(atomic __atomic_fetch_add_8 "" LIBCXX_HAS_ATOMIC_LIB) else() check_library_exists(pthread pthread_create "" LIBCXX_HAS_PTHREAD_LIB) - check_library_exists(m ccos "" LIBCXX_HAS_M_LIB) check_library_exists(rt clock_gettime "" LIBCXX_HAS_RT_LIB) check_library_exists(atomic __atomic_fetch_add_8 "" LIBCXX_HAS_ATOMIC_LIB) endif()