Bladeren bron

[libc++][CMake] Link against libSystem on Apple platforms

Instead of manually linking against libm/librt/libpthread, we should be
linking against libSystem on Apple platforms, and only that. libm and
libpthread are symlinks to libSystem anyway.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@359808 91177308-0d34-0410-b5e6-96231b3b80d8
Louis Dionne 6 jaren geleden
bovenliggende
commit
07ca5d0973
2 gewijzigde bestanden met toevoegingen van 11 en 0 verwijderingen
  1. 7 0
      cmake/config-ix.cmake
  2. 4 0
      src/CMakeLists.txt

+ 7 - 0
cmake/config-ix.cmake

@@ -80,8 +80,15 @@ if(WIN32 AND NOT MINGW)
   set(LIBCXX_HAS_PTHREAD_LIB NO)
   set(LIBCXX_HAS_M_LIB NO)
   set(LIBCXX_HAS_RT_LIB NO)
+  set(LIBCXX_HAS_SYSTEM_LIB NO)
+elseif(APPLE)
+  check_library_exists(System write "" LIBCXX_HAS_SYSTEM_LIB)
+  set(LIBCXX_HAS_PTHREAD_LIB NO)
+  set(LIBCXX_HAS_M_LIB NO)
+  set(LIBCXX_HAS_RT_LIB NO)
 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)
+  set(LIBCXX_HAS_SYSTEM_LIB NO)
 endif()

+ 4 - 0
src/CMakeLists.txt

@@ -140,6 +140,10 @@ function(cxx_link_system_libraries target)
   target_add_compile_flags_if_supported(${target} PRIVATE "/Zl")
   target_add_link_flags_if_supported(${target} PRIVATE "/nodefaultlib")
 
+  if (LIBCXX_HAS_SYSTEM_LIB)
+    target_link_libraries(${target} PUBLIC System)
+  endif()
+
   if (LIBCXX_HAS_PTHREAD_LIB)
     target_link_libraries(${target} PUBLIC pthread)
   endif()