[libcxx] r329545 - Revert "[CMake] Use custom command and target to install libc++ headers"

Petr Hosek via cfe-commits cfe-commits at lists.llvm.org
Sun Apr 8 21:36:04 PDT 2018


Author: phosek
Date: Sun Apr  8 21:36:04 2018
New Revision: 329545

URL: http://llvm.org/viewvc/llvm-project?rev=329545&view=rev
Log:
Revert "[CMake] Use custom command and target to install libc++ headers"

This reverts commit r329544 which is failing on libcxx standalone bots.

Modified:
    libcxx/trunk/NOTES.TXT
    libcxx/trunk/cmake/Modules/HandleLibCXXABI.cmake
    libcxx/trunk/include/CMakeLists.txt
    libcxx/trunk/lib/CMakeLists.txt

Modified: libcxx/trunk/NOTES.TXT
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/NOTES.TXT?rev=329545&r1=329544&r2=329545&view=diff
==============================================================================
--- libcxx/trunk/NOTES.TXT (original)
+++ libcxx/trunk/NOTES.TXT Sun Apr  8 21:36:04 2018
@@ -26,4 +26,3 @@ to libc++.
 1. Add a test under `test/libcxx` that the header defines `_LIBCPP_VERSION`.
 2. Update `test/libcxx/double_include.sh.cpp` to include the new header.
 3. Create a submodule in `include/module.modulemap` for the new header.
-4. Update the include/CMakeLists.txt file to include the new header.

Modified: libcxx/trunk/cmake/Modules/HandleLibCXXABI.cmake
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/cmake/Modules/HandleLibCXXABI.cmake?rev=329545&r1=329544&r2=329545&view=diff
==============================================================================
--- libcxx/trunk/cmake/Modules/HandleLibCXXABI.cmake (original)
+++ libcxx/trunk/cmake/Modules/HandleLibCXXABI.cmake Sun Apr  8 21:36:04 2018
@@ -47,22 +47,12 @@ macro(setup_abi_lib abidefines abilib ab
         set(found TRUE)
         get_filename_component(dstdir ${fpath} PATH)
         get_filename_component(ifile ${fpath} NAME)
-        set(src ${incpath}/${fpath})
-
-        set(dst ${LIBCXX_BINARY_INCLUDE_DIR}/${dstdir}/${fpath})
-        add_custom_command(OUTPUT ${dst}
-            DEPENDS ${src}
-            COMMAND ${CMAKE_COMMAND} -E copy_if_different ${src} ${dst}
-            COMMENT "Copying C++ ABI header ${fpath}...")
-        list(APPEND abilib_headers "${dst}")
-
-        set(dst "${CMAKE_BINARY_DIR}/include/c++/v1/${dstdir}/${fpath}")
-        add_custom_command(OUTPUT ${dst}
-            DEPENDS ${src}
-            COMMAND ${CMAKE_COMMAND} -E copy_if_different ${src} ${dst}
-            COMMENT "Copying C++ ABI header ${fpath}...")
-        list(APPEND abilib_headers "${dst}")
-
+        file(COPY "${incpath}/${fpath}"
+          DESTINATION "${LIBCXX_BINARY_INCLUDE_DIR}/${dstdir}"
+          )
+        file(COPY "${incpath}/${fpath}"
+          DESTINATION "${CMAKE_BINARY_DIR}/include/c++/v1/${dstdir}"
+          )
         if (LIBCXX_INSTALL_HEADERS)
           install(FILES "${LIBCXX_BINARY_INCLUDE_DIR}/${fpath}"
             DESTINATION ${LIBCXX_INSTALL_PREFIX}include/c++/v1/${dstdir}
@@ -70,6 +60,7 @@ macro(setup_abi_lib abidefines abilib ab
             PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
             )
         endif()
+        list(APPEND abilib_headers "${LIBCXX_BINARY_INCLUDE_DIR}/${fpath}")
       endif()
     endforeach()
     if (NOT found)
@@ -78,7 +69,6 @@ macro(setup_abi_lib abidefines abilib ab
   endforeach()
 
   include_directories("${LIBCXX_BINARY_INCLUDE_DIR}")
-  add_custom_target(cxx-abi-headers ALL DEPENDS ${abilib_headers})
 endmacro()
 
 

Modified: libcxx/trunk/include/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/CMakeLists.txt?rev=329545&r1=329544&r2=329545&view=diff
==============================================================================
--- libcxx/trunk/include/CMakeLists.txt (original)
+++ libcxx/trunk/include/CMakeLists.txt Sun Apr  8 21:36:04 2018
@@ -1,183 +1,5 @@
-set(files
-  __bit_reference
-  __bsd_locale_defaults.h
-  __bsd_locale_fallbacks.h
-  __debug
-  __functional_03
-  __functional_base
-  __functional_base_03
-  __hash_table
-  __libcpp_version
-  __locale
-  __mutex_base
-  __nullptr
-  __split_buffer
-  __sso_allocator
-  __std_stream
-  __string
-  __threading_support
-  __tree
-  __tuple
-  __undef_macros
-  algorithm
-  any
-  array
-  atomic
-  bitset
-  cassert
-  ccomplex
-  cctype
-  cerrno
-  cfenv
-  cfloat
-  chrono
-  cinttypes
-  ciso646
-  climits
-  clocale
-  cmath
-  codecvt
-  compare
-  complex
-  complex.h
-  condition_variable
-  csetjmp
-  csignal
-  cstdarg
-  cstdbool
-  cstddef
-  cstdint
-  cstdio
-  cstdlib
-  cstring
-  ctgmath
-  ctime
-  ctype.h
-  cwchar
-  cwctype
-  deque
-  errno.h
-  exception
-  experimental/__config
-  experimental/__memory
-  experimental/algorithm
-  experimental/any
-  experimental/chrono
-  experimental/coroutine
-  experimental/deque
-  experimental/dynarray
-  experimental/filesystem
-  experimental/forward_list
-  experimental/functional
-  experimental/iterator
-  experimental/list
-  experimental/map
-  experimental/memory_resource
-  experimental/numeric
-  experimental/optional
-  experimental/propagate_const
-  experimental/ratio
-  experimental/regex
-  experimental/set
-  experimental/string
-  experimental/string_view
-  experimental/system_error
-  experimental/tuple
-  experimental/type_traits
-  experimental/unordered_map
-  experimental/unordered_set
-  experimental/utility
-  experimental/vector
-  ext/__hash
-  ext/hash_map
-  ext/hash_set
-  float.h
-  forward_list
-  fstream
-  functional
-  future
-  initializer_list
-  inttypes.h
-  iomanip
-  ios
-  iosfwd
-  iostream
-  istream
-  iterator
-  limits
-  limits.h
-  list
-  locale
-  locale.h
-  map
-  math.h
-  memory
-  module.modulemap
-  mutex
-  new
-  numeric
-  optional
-  ostream
-  queue
-  random
-  ratio
-  regex
-  scoped_allocator
-  set
-  setjmp.h
-  shared_mutex
-  sstream
-  stack
-  stdbool.h
-  stddef.h
-  stdexcept
-  stdint.h
-  stdio.h
-  stdlib.h
-  streambuf
-  string
-  string.h
-  string_view
-  strstream
-  system_error
-  tgmath.h
-  thread
-  tuple
-  type_traits
-  typeindex
-  typeinfo
-  unordered_map
-  unordered_set
-  utility
-  valarray
-  variant
-  vector
-  version
-  wchar.h
-  wctype.h
-  )
-
-if(LIBCXX_INSTALL_SUPPORT_HEADERS)
-  set(files
-    ${files}
-    support/android/locale_bionic.h
-    support/fuchsia/xlocale.h
-    support/ibm/limits.h
-    support/ibm/locale_mgmt_aix.h
-    support/ibm/support.h
-    support/ibm/xlocale.h
-    support/musl/xlocale.h
-    support/newlib/xlocale.h
-    support/solaris/floatingpoint.h
-    support/solaris/wchar.h
-    support/solaris/xlocale.h
-    support/win32/limits_msvc_win32.h
-    support/win32/locale_win32.h
-    support/xlocale/__nop_locale_mgmt.h
-    support/xlocale/__posix_l_fallback.h
-    support/xlocale/__strtonum_fallback.h
-    support/xlocale/xlocale.h
-    )
+if (NOT LIBCXX_INSTALL_SUPPORT_HEADERS)
+  set(LIBCXX_SUPPORT_HEADER_PATTERN PATTERN "support" EXCLUDE)
 endif()
 
 if (LIBCXX_NEEDS_SITE_CONFIG)
@@ -192,56 +14,44 @@ if (LIBCXX_NEEDS_SITE_CONFIG)
             ${LIBCXX_BINARY_DIR}/__config_site
   )
   # Add a target that executes the generation commands.
-  add_custom_target(cxx-generated-config ALL
+  add_custom_target(generate_config_header ALL
     DEPENDS ${LIBCXX_BINARY_DIR}/__generated_config)
-  set(generated_config_deps cxx-generated-config)
-else()
-  set(files
-    ${files}
-    __config
-    )
+  set(generated_config_deps generate_config_header)
 endif()
 
-if(NOT LIBCXX_USING_INSTALLED_LLVM AND LLVM_BINARY_DIR)
-  set(output_dir ${LLVM_BINARY_DIR}/include/c++/v1)
+set(LIBCXX_HEADER_PATTERN
+  PATTERN "*"
+  PATTERN "CMakeLists.txt" EXCLUDE
+  PATTERN ".svn" EXCLUDE
+  PATTERN "__config_site.in" EXCLUDE
+  ${LIBCXX_SUPPORT_HEADER_PATTERN}
+  )
 
-  set(out_files)
-  foreach(f ${files})
-    set(src ${CMAKE_CURRENT_SOURCE_DIR}/${f})
-    set(dst ${output_dir}/${f})
-    add_custom_command(OUTPUT ${dst}
-      DEPENDS ${src}
-      COMMAND ${CMAKE_COMMAND} -E copy_if_different ${src} ${dst}
-      COMMENT "Copying libc++'s ${f}...")
-    list(APPEND out_files ${dst})
-  endforeach()
+if(NOT LIBCXX_USING_INSTALLED_LLVM AND LLVM_BINARY_DIR)
+  file(COPY .
+    DESTINATION "${LLVM_BINARY_DIR}/include/c++/v1"
+    FILES_MATCHING
+    ${LIBCXX_HEADER_PATTERN}
+    )
 
   if (LIBCXX_NEEDS_SITE_CONFIG)
     # Copy the generated header as __config into build directory.
-    set(src ${LIBCXX_BINARY_DIR}/__generated_config)
-    set(dst ${output_dir}/__config)
-    add_custom_command(OUTPUT ${dst}
-        DEPENDS ${src} ${generated_config_deps}
-        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${src} ${dst}
-        COMMENT "Copying libc++'s __config")
-    list(APPEND out_files ${dst})
+    add_custom_command(
+        TARGET generate_config_header POST_BUILD
+        COMMAND ${CMAKE_COMMAND} -E copy
+                ${LIBCXX_BINARY_DIR}/__generated_config
+                ${LLVM_BINARY_DIR}/include/c++/v1/__config)
   endif()
-
-  add_custom_target(cxx-headers ALL DEPENDS ${out_files} ${abilib_headers})
-else()
-  add_custom_target(cxx-headers)
 endif()
-set_target_properties(cxx-headers PROPERTIES FOLDER "Misc")
 
 if (LIBCXX_INSTALL_HEADERS)
-  foreach(file ${files})
-    get_filename_component(dir ${file} DIRECTORY)
-    install(FILES ${file}
-      DESTINATION ${LIBCXX_INSTALL_PREFIX}include/c++/v1/${dir}
-      COMPONENT cxx-headers
-      PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
-    )
-  endforeach()
+  install(DIRECTORY .
+    DESTINATION ${LIBCXX_INSTALL_PREFIX}include/c++/v1
+    COMPONENT cxx-headers
+    FILES_MATCHING
+    ${LIBCXX_HEADER_PATTERN}
+    PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
+  )
 
   if (LIBCXX_NEEDS_SITE_CONFIG)
     # Install the generated header as __config.
@@ -253,6 +63,8 @@ if (LIBCXX_INSTALL_HEADERS)
   endif()
 
   if (NOT CMAKE_CONFIGURATION_TYPES)
+    # this target is just needed as a placeholder for the distribution target
+    add_custom_target(cxx-headers)
     add_custom_target(install-cxx-headers
                       DEPENDS cxx-headers ${generated_config_deps}
                       COMMAND "${CMAKE_COMMAND}"
@@ -261,6 +73,7 @@ if (LIBCXX_INSTALL_HEADERS)
     # Stripping is a no-op for headers
     add_custom_target(install-cxx-headers-stripped DEPENDS install-cxx-headers)
 
+    add_custom_target(libcxx-headers)
     add_custom_target(install-libcxx-headers DEPENDS install-cxx-headers)
     add_custom_target(install-libcxx-headers-stripped DEPENDS install-cxx-headers-stripped)
   endif()

Modified: libcxx/trunk/lib/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/lib/CMakeLists.txt?rev=329545&r1=329544&r2=329545&view=diff
==============================================================================
--- libcxx/trunk/lib/CMakeLists.txt (original)
+++ libcxx/trunk/lib/CMakeLists.txt Sun Apr  8 21:36:04 2018
@@ -283,8 +283,7 @@ if (LIBCXX_ENABLE_STATIC)
 endif()
 
 # Add a meta-target for both libraries.
-add_custom_target(cxx DEPENDS ${LIBCXX_TARGETS})
-add_dependencies(cxx cxx-headers)
+add_custom_target(cxx DEPENDS ${LIBCXX_TARGETS} ${generated_config_deps})
 
 if (LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY)
   file(GLOB LIBCXX_EXPERIMENTAL_SOURCES ../src/experimental/*.cpp)




More information about the cfe-commits mailing list