diff --git a/clang/cmake/caches/Fuchsia-stage2.cmake b/clang/cmake/caches/Fuchsia-stage2.cmake index 412dbdf71b68..67c88b306a4d 100644 --- a/clang/cmake/caches/Fuchsia-stage2.cmake +++ b/clang/cmake/caches/Fuchsia-stage2.cmake @@ -79,7 +79,6 @@ if(WIN32) set(RUNTIMES_${target}_CMAKE_SYSTEM_NAME Windows CACHE STRING "") set(RUNTIMES_${target}_CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "") set(RUNTIMES_${target}_LIBCXX_ABI_VERSION 2 CACHE STRING "") - set(RUNTIMES_${target}_LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY OFF CACHE BOOL "") set(RUNTIMES_${target}_LIBCXX_ENABLE_FILESYSTEM OFF CACHE BOOL "") set(RUNTIMES_${target}_LIBCXX_ENABLE_ABI_LINKER_SCRIPT OFF CACHE BOOL "") set(RUNTIMES_${target}_LIBCXX_ENABLE_SHARED OFF CACHE BOOL "") diff --git a/clang/cmake/caches/Fuchsia.cmake b/clang/cmake/caches/Fuchsia.cmake index 7b534e61f952..53bb78d9ea36 100644 --- a/clang/cmake/caches/Fuchsia.cmake +++ b/clang/cmake/caches/Fuchsia.cmake @@ -50,7 +50,6 @@ endif() if(WIN32) set(LIBCXX_ABI_VERSION 2 CACHE STRING "") - set(LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY OFF CACHE BOOL "") set(LIBCXX_ENABLE_FILESYSTEM OFF CACHE BOOL "") set(LIBCXX_ENABLE_ABI_LINKER_SCRIPT OFF CACHE BOOL "") set(LIBCXX_ENABLE_SHARED OFF CACHE BOOL "") diff --git a/compiler-rt/cmake/Modules/AddCompilerRT.cmake b/compiler-rt/cmake/Modules/AddCompilerRT.cmake index b7eb04327bb1..00bb892be595 100644 --- a/compiler-rt/cmake/Modules/AddCompilerRT.cmake +++ b/compiler-rt/cmake/Modules/AddCompilerRT.cmake @@ -685,7 +685,6 @@ macro(add_custom_libcxx name prefix) -DLIBCXXABI_HERMETIC_STATIC_LIBRARY=ON -DLIBCXXABI_INCLUDE_TESTS=OFF -DLIBCXX_CXX_ABI=libcxxabi - -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=OFF -DLIBCXX_ENABLE_SHARED=OFF -DLIBCXX_HERMETIC_STATIC_LIBRARY=ON -DLIBCXX_INCLUDE_BENCHMARKS=OFF diff --git a/libcxx/CMakeLists.txt b/libcxx/CMakeLists.txt index 3d63bb0c8fbf..0977a7229e5d 100644 --- a/libcxx/CMakeLists.txt +++ b/libcxx/CMakeLists.txt @@ -55,7 +55,6 @@ option(LIBCXX_ENABLE_ASSERTIONS by users in their own code regardless of this option." 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) set(ENABLE_FILESYSTEM_DEFAULT ON) if (WIN32 AND NOT MINGW) # Filesystem is buildable for windows, but it requires __int128 helper @@ -167,9 +166,6 @@ cmake_dependent_option(LIBCXX_INSTALL_STATIC_LIBRARY cmake_dependent_option(LIBCXX_INSTALL_SHARED_LIBRARY "Install the shared libc++ library." ON "LIBCXX_ENABLE_SHARED;LIBCXX_INSTALL_LIBRARY" OFF) -cmake_dependent_option(LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY - "Install libc++experimental.a" ON - "LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY;LIBCXX_INSTALL_LIBRARY" OFF) option(LIBCXX_ABI_UNSTABLE "Use the unstable ABI of libc++. This is equivalent to specifying LIBCXX_ABI_VERSION=n, where n is the not-yet-stable version." OFF) if (LIBCXX_ABI_UNSTABLE) @@ -930,11 +926,7 @@ add_subdirectory(include) add_subdirectory(src) add_subdirectory(utils) -set(LIBCXX_TEST_DEPS "") - -if (LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY) - list(APPEND LIBCXX_TEST_DEPS cxx_experimental) -endif() +set(LIBCXX_TEST_DEPS "cxx_experimental") if (LIBCXX_BUILD_EXTERNAL_THREAD_LIBRARY) list(APPEND LIBCXX_TEST_DEPS cxx_external_threads) diff --git a/libcxx/appveyor.yml b/libcxx/appveyor.yml index ae7c7ad7cf67..ea2c88e5fda7 100644 --- a/libcxx/appveyor.yml +++ b/libcxx/appveyor.yml @@ -45,7 +45,7 @@ build_script: ############################################################################# - cmake -G "%GENERATOR%" %CMAKE_OPTIONS% "-DCMAKE_BUILD_TYPE=%configuration%" - "-DLLVM_PATH=C:\projects\deps\llvm" -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=OFF + "-DLLVM_PATH=C:\projects\deps\llvm" -DLLVM_LIT_ARGS="-sv --show-xfail --show-unsupported" %APPVEYOR_BUILD_FOLDER% diff --git a/libcxx/cmake/caches/AIX.cmake b/libcxx/cmake/caches/AIX.cmake index b6c483a31727..76cf17791301 100644 --- a/libcxx/cmake/caches/AIX.cmake +++ b/libcxx/cmake/caches/AIX.cmake @@ -9,7 +9,6 @@ set(LIBCXX_USE_COMPILER_RT ON CACHE BOOL "") set(LIBCXX_ENABLE_ASSERTIONS OFF CACHE BOOL "") set(LIBCXX_ABI_VERSION "1" CACHE STRING "") set(LIBCXX_ENABLE_ABI_LINKER_SCRIPT OFF CACHE BOOL "") -set(LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY OFF CACHE BOOL "") set(LIBCXX_ENABLE_SHARED ON CACHE BOOL "") set(LIBCXX_ENABLE_STATIC OFF CACHE BOOL "") set(LIBCXXABI_ENABLE_SHARED ON CACHE BOOL "") diff --git a/libcxx/cmake/caches/Apple.cmake b/libcxx/cmake/caches/Apple.cmake index ea701a43f96a..734f5ac8a1b9 100644 --- a/libcxx/cmake/caches/Apple.cmake +++ b/libcxx/cmake/caches/Apple.cmake @@ -4,7 +4,6 @@ set(CMAKE_POSITION_INDEPENDENT_CODE OFF CACHE BOOL "") set(LIBCXX_USE_COMPILER_RT ON CACHE BOOL "") set(LIBCXX_ENABLE_ASSERTIONS OFF CACHE BOOL "") set(LIBCXX_ABI_VERSION "1" CACHE STRING "") -set(LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY OFF CACHE BOOL "") set(LIBCXX_ENABLE_STATIC ON CACHE BOOL "") set(LIBCXX_ENABLE_SHARED ON CACHE BOOL "") set(LIBCXX_CXX_ABI libcxxabi CACHE STRING "") diff --git a/libcxx/cmake/caches/Generic-no-experimental.cmake b/libcxx/cmake/caches/Generic-no-experimental.cmake index 0f055f4a98e0..98f01418d197 100644 --- a/libcxx/cmake/caches/Generic-no-experimental.cmake +++ b/libcxx/cmake/caches/Generic-no-experimental.cmake @@ -1,2 +1,3 @@ -set(LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY OFF CACHE BOOL "") +set(LIBCXX_TEST_PARAMS "enable_experimental=False" CACHE STRING "") +set(LIBCXXABI_TEST_PARAMS "${LIBCXX_TEST_PARAMS}" CACHE STRING "") set(LIBCXX_ENABLE_INCOMPLETE_FEATURES OFF CACHE BOOL "") diff --git a/libcxx/docs/BuildingLibcxx.rst b/libcxx/docs/BuildingLibcxx.rst index 5069c7fe0692..7c347c6b57ba 100644 --- a/libcxx/docs/BuildingLibcxx.rst +++ b/libcxx/docs/BuildingLibcxx.rst @@ -99,8 +99,7 @@ it is the simplest way to build. -T "ClangCL" ^ -DLLVM_ENABLE_RUNTIMES=libcxx ^ -DLIBCXX_ENABLE_SHARED=YES ^ - -DLIBCXX_ENABLE_STATIC=NO ^ - -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=NO + -DLIBCXX_ENABLE_STATIC=NO > cmake --build build CMake + ninja (MSVC) @@ -131,8 +130,7 @@ In either case, then run: > cmake -G Ninja -S runtimes -B build ^ -DCMAKE_C_COMPILER=clang-cl ^ -DCMAKE_CXX_COMPILER=clang-cl ^ - -DLLVM_ENABLE_RUNTIMES=libcxx ^ - -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=NO + -DLLVM_ENABLE_RUNTIMES=libcxx > ninja -C build cxx > ninja -C build check-cxx @@ -298,23 +296,6 @@ libc++ specific options Path where target-specific libc++ headers should be installed. If a relative path, relative to ``CMAKE_INSTALL_PREFIX``. -.. _libc++experimental options: - -libc++experimental Specific Options ------------------------------------- - -.. option:: LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY:BOOL - - **Default**: ``ON`` - - Build and test libc++experimental.a. - -.. option:: LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY:BOOL - - **Default**: ``LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY AND LIBCXX_INSTALL_LIBRARY`` - - Install libc++experimental.a alongside libc++. - .. _ABI Library Specific Options: diff --git a/libcxx/docs/UsingLibcxx.rst b/libcxx/docs/UsingLibcxx.rst index f69f9990cf31..343937b94149 100644 --- a/libcxx/docs/UsingLibcxx.rst +++ b/libcxx/docs/UsingLibcxx.rst @@ -34,22 +34,20 @@ matches that Standard in the library. library until the standard has been ratified. -Using libc++experimental and ```` -=================================================== +Enabling experimental C++ Library features +========================================== -Libc++ provides implementations of experimental technical specifications -in a separate library, ``libc++experimental.a``. Users of ```` -headers may be required to link ``-lc++experimental``. Note that not all -vendors ship ``libc++experimental.a``, and as a result, you may not be -able to use those experimental features. - -.. code-block:: bash - - $ clang++ test.cpp -lc++experimental +Libc++ provides implementations of some experimental features. Experimental features +are either Technical Specifications (TSes) or official features that were voted to +the Standard but whose implementation is not complete or stable yet in libc++. Those +are disabled by default because they are neither API nor ABI stable. However, the +``_LIBCPP_ENABLE_EXPERIMENTAL`` macro can be defined to turn those features on. Note +that you will also need to link to the appropriate ``libc++experimental.a`` static +archive. .. warning:: Experimental libraries are Experimental. - * The contents of the ```` headers and ``libc++experimental.a`` + * The contents of the ```` headers and the associated static library will not remain compatible between versions. * No guarantees of API or ABI stability are provided. * When the standardized version of an experimental feature is implemented, diff --git a/libcxx/src/CMakeLists.txt b/libcxx/src/CMakeLists.txt index 28436fbf38f4..10123074f83e 100644 --- a/libcxx/src/CMakeLists.txt +++ b/libcxx/src/CMakeLists.txt @@ -315,31 +315,30 @@ endif() # Add a meta-target for both libraries. add_custom_target(cxx DEPENDS ${LIBCXX_BUILD_TARGETS}) -if (LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY) - set(LIBCXX_EXPERIMENTAL_SOURCES - experimental/memory_resource.cpp - ) - add_library(cxx_experimental STATIC ${LIBCXX_EXPERIMENTAL_SOURCES}) - if (LIBCXX_ENABLE_SHARED) - target_link_libraries(cxx_experimental PRIVATE cxx_shared) - else() - target_link_libraries(cxx_experimental PRIVATE cxx_static) - endif() - - set_target_properties(cxx_experimental - PROPERTIES - COMPILE_FLAGS "${LIBCXX_COMPILE_FLAGS}" - OUTPUT_NAME "c++experimental" +set(LIBCXX_EXPERIMENTAL_SOURCES + experimental/memory_resource.cpp ) - cxx_add_common_build_flags(cxx_experimental) - if (LIBCXX_HERMETIC_STATIC_LIBRARY) - # _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS can be defined in __config_site - # too. Define it in the same way here, to avoid redefinition conflicts. - target_compile_definitions(cxx_experimental PRIVATE _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS=) - endif() +add_library(cxx_experimental STATIC ${LIBCXX_EXPERIMENTAL_SOURCES}) +if (LIBCXX_ENABLE_SHARED) + target_link_libraries(cxx_experimental PRIVATE cxx_shared) +else() + target_link_libraries(cxx_experimental PRIVATE cxx_static) endif() +if (LIBCXX_HERMETIC_STATIC_LIBRARY) + # _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS can be defined in __config_site + # too. Define it in the same way here, to avoid redefinition conflicts. + target_compile_definitions(cxx_experimental PRIVATE _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS=) +endif() + +set_target_properties(cxx_experimental + PROPERTIES + COMPILE_FLAGS "${LIBCXX_COMPILE_FLAGS}" + OUTPUT_NAME "c++experimental" +) +cxx_add_common_build_flags(cxx_experimental) + if (LIBCXX_BUILD_EXTERNAL_THREAD_LIBRARY) set(LIBCXX_EXTERNAL_THREADING_SUPPORT_SOURCES @@ -375,7 +374,7 @@ if (LIBCXX_INSTALL_STATIC_LIBRARY) RUNTIME DESTINATION ${LIBCXX_INSTALL_RUNTIME_DIR} COMPONENT cxx) endif() -if(LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY) +if (LIBCXX_INSTALL_LIBRARY) install(TARGETS cxx_experimental LIBRARY DESTINATION ${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx ARCHIVE DESTINATION ${LIBCXX_INSTALL_LIBRARY_DIR} COMPONENT cxx @@ -392,10 +391,7 @@ endif() if (NOT CMAKE_CONFIGURATION_TYPES) if(LIBCXX_INSTALL_LIBRARY) - set(lib_install_target cxx) - endif() - if (LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY) - set(experimental_lib_install_target cxx_experimental) + set(lib_install_target "cxx;cxx_experimental") endif() if(LIBCXX_INSTALL_HEADERS) set(header_install_target install-cxx-headers) @@ -405,7 +401,7 @@ if (NOT CMAKE_CONFIGURATION_TYPES) endif() add_custom_target(install-cxx DEPENDS ${lib_install_target} - ${experimental_lib_install_target} + cxx_experimental ${header_install_target} ${pstl_install_target} COMMAND "${CMAKE_COMMAND}" @@ -413,7 +409,7 @@ if (NOT CMAKE_CONFIGURATION_TYPES) -P "${LIBCXX_BINARY_DIR}/cmake_install.cmake") add_custom_target(install-cxx-stripped DEPENDS ${lib_install_target} - ${experimental_lib_install_target} + cxx_experimental ${header_install_target} ${pstl_install_target} COMMAND "${CMAKE_COMMAND}" diff --git a/libcxx/test/CMakeLists.txt b/libcxx/test/CMakeLists.txt index b85f726fd1c0..b06db91536eb 100644 --- a/libcxx/test/CMakeLists.txt +++ b/libcxx/test/CMakeLists.txt @@ -93,10 +93,6 @@ if (NOT LIBCXX_ENABLE_EXCEPTIONS) serialize_lit_param(enable_exceptions False) endif() -if (NOT LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY) - serialize_lit_param(enable_experimental False) -endif() - if (NOT LIBCXX_ENABLE_RTTI) serialize_lit_param(enable_rtti False) endif() diff --git a/libcxx/test/libcxx/experimental/memory/memory.resource.global/global_memory_resource_lifetime.pass.cpp b/libcxx/test/libcxx/experimental/memory/memory.resource.global/global_memory_resource_lifetime.pass.cpp index a3b5eade7d08..876aa2dad149 100644 --- a/libcxx/test/libcxx/experimental/memory/memory.resource.global/global_memory_resource_lifetime.pass.cpp +++ b/libcxx/test/libcxx/experimental/memory/memory.resource.global/global_memory_resource_lifetime.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // memory_resource * new_delete_resource() diff --git a/libcxx/test/libcxx/experimental/memory/memory.resource.global/new_delete_resource_lifetime.pass.cpp b/libcxx/test/libcxx/experimental/memory/memory.resource.global/new_delete_resource_lifetime.pass.cpp index 1a99d02ebdba..04748c3b5895 100644 --- a/libcxx/test/libcxx/experimental/memory/memory.resource.global/new_delete_resource_lifetime.pass.cpp +++ b/libcxx/test/libcxx/experimental/memory/memory.resource.global/new_delete_resource_lifetime.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // memory_resource * new_delete_resource() diff --git a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.ctor/default.pass.cpp b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.ctor/default.pass.cpp index b3bc2e2e5ee7..f43ea1bd908d 100644 --- a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.ctor/default.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.ctor/default.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // template class polymorphic_allocator diff --git a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.eq/equal.pass.cpp b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.eq/equal.pass.cpp index 60e78124ea06..36ee90ba1e57 100644 --- a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.eq/equal.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.eq/equal.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // template class polymorphic_allocator; diff --git a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.eq/not_equal.pass.cpp b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.eq/not_equal.pass.cpp index ec281c6ab1d7..5d1e6bbb27b5 100644 --- a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.eq/not_equal.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.eq/not_equal.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // template class polymorphic_allocator; diff --git a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/allocate.pass.cpp b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/allocate.pass.cpp index 779c0eb231c6..86fdbf9275eb 100644 --- a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/allocate.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/allocate.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // template class polymorphic_allocator diff --git a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair.pass.cpp b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair.pass.cpp index d080b059e2f0..6fc77f58428b 100644 --- a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // template class polymorphic_allocator diff --git a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_const_lvalue_pair.pass.cpp b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_const_lvalue_pair.pass.cpp index e601758b0327..a1c3fef4fc95 100644 --- a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_const_lvalue_pair.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_const_lvalue_pair.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // template class polymorphic_allocator diff --git a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_rvalue.pass.cpp b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_rvalue.pass.cpp index 3f002d5aed6c..346e58186c0a 100644 --- a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_rvalue.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_rvalue.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // template class polymorphic_allocator diff --git a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_values.pass.cpp b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_values.pass.cpp index 07975fd485c1..ab9b5d5d81cf 100644 --- a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_values.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_pair_values.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // template class polymorphic_allocator diff --git a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_piecewise_pair.pass.cpp b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_piecewise_pair.pass.cpp index e9b203f35925..61c16bd5b4f6 100644 --- a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_piecewise_pair.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_piecewise_pair.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // template class polymorphic_allocator diff --git a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_piecewise_pair_evil.pass.cpp b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_piecewise_pair_evil.pass.cpp index 2a9ca2b39b4b..5f71e4b5eb65 100644 --- a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_piecewise_pair_evil.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_piecewise_pair_evil.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // template class polymorphic_allocator diff --git a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_types.pass.cpp b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_types.pass.cpp index 4d0b9c90f1cf..63d99025a73d 100644 --- a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_types.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/construct_types.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // template class polymorphic_allocator diff --git a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/deallocate.pass.cpp b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/deallocate.pass.cpp index 288222c45c03..bad36cd470d2 100644 --- a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/deallocate.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/deallocate.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // template class polymorphic_allocator diff --git a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/destroy.pass.cpp b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/destroy.pass.cpp index 6030c132a0b8..58550fe53068 100644 --- a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/destroy.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/destroy.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // template class polymorphic_allocator diff --git a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/resource.pass.cpp b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/resource.pass.cpp index 2776e16b1d68..1a8146ce0ca4 100644 --- a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/resource.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/resource.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // template class polymorphic_allocator diff --git a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/select_on_container_copy_construction.pass.cpp b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/select_on_container_copy_construction.pass.cpp index 5ca6e812c98c..7ab203401dc4 100644 --- a/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/select_on_container_copy_construction.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.polymorphic.allocator.class/memory.polymorphic.allocator.mem/select_on_container_copy_construction.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // template class polymorphic_allocator diff --git a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_deque_synop.pass.cpp b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_deque_synop.pass.cpp index 34ea9e1b303c..21e3d01d5862 100644 --- a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_deque_synop.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_deque_synop.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // namespace std { namespace experimental { namespace pmr { diff --git a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_forward_list_synop.pass.cpp b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_forward_list_synop.pass.cpp index f20d176eccf3..7925f1058c63 100644 --- a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_forward_list_synop.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_forward_list_synop.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // namespace std { namespace experimental { namespace pmr { diff --git a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_list_synop.pass.cpp b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_list_synop.pass.cpp index c4eae679d7e2..d33d132cd804 100644 --- a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_list_synop.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_list_synop.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // namespace std { namespace experimental { namespace pmr { diff --git a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_map_synop.pass.cpp b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_map_synop.pass.cpp index 4998f3e64b6a..5ab24e794fb1 100644 --- a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_map_synop.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_map_synop.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // namespace std { namespace experimental { namespace pmr { diff --git a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_regex_synop.pass.cpp b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_regex_synop.pass.cpp index eb30b202d9d5..8079840a46bb 100644 --- a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_regex_synop.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_regex_synop.pass.cpp @@ -9,6 +9,11 @@ // UNSUPPORTED: c++03 // UNSUPPORTED: no-localization +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // namespace std { namespace experimental { namespace pmr { diff --git a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_set_synop.pass.cpp b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_set_synop.pass.cpp index 6c3ba831d96d..7539b53184b0 100644 --- a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_set_synop.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_set_synop.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // namespace std { namespace experimental { namespace pmr { diff --git a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_string_synop.pass.cpp b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_string_synop.pass.cpp index 95cb8e5a8d3d..ee141039c451 100644 --- a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_string_synop.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_string_synop.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // namespace std { namespace experimental { namespace pmr { diff --git a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_unordered_map_synop.pass.cpp b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_unordered_map_synop.pass.cpp index 2087aac4e76c..775ebcc08229 100644 --- a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_unordered_map_synop.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_unordered_map_synop.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // namespace std { namespace experimental { namespace pmr { diff --git a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_unordered_set_synop.pass.cpp b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_unordered_set_synop.pass.cpp index da7ecd9c0d13..7ef0d6f03f28 100644 --- a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_unordered_set_synop.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_unordered_set_synop.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // namespace std { namespace experimental { namespace pmr { diff --git a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_vector_synop.pass.cpp b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_vector_synop.pass.cpp index f0b14b87cef6..8f76c2397477 100644 --- a/libcxx/test/std/experimental/memory/memory.resource.aliases/header_vector_synop.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.resource.aliases/header_vector_synop.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // namespace std { namespace experimental { namespace pmr { diff --git a/libcxx/test/std/experimental/memory/memory.resource.global/default_resource.pass.cpp b/libcxx/test/std/experimental/memory/memory.resource.global/default_resource.pass.cpp index f91865ef5699..0cad6ca95cdc 100644 --- a/libcxx/test/std/experimental/memory/memory.resource.global/default_resource.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.resource.global/default_resource.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // //----------------------------------------------------------------------------- diff --git a/libcxx/test/std/experimental/memory/memory.resource.global/new_delete_resource.pass.cpp b/libcxx/test/std/experimental/memory/memory.resource.global/new_delete_resource.pass.cpp index 91bf1f5efd91..d904d5a14558 100644 --- a/libcxx/test/std/experimental/memory/memory.resource.global/new_delete_resource.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.resource.global/new_delete_resource.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // memory_resource * new_delete_resource() diff --git a/libcxx/test/std/experimental/memory/memory.resource.global/null_memory_resource.pass.cpp b/libcxx/test/std/experimental/memory/memory.resource.global/null_memory_resource.pass.cpp index bdd62484d075..a08e4f93f081 100644 --- a/libcxx/test/std/experimental/memory/memory.resource.global/null_memory_resource.pass.cpp +++ b/libcxx/test/std/experimental/memory/memory.resource.global/null_memory_resource.pass.cpp @@ -8,6 +8,11 @@ // UNSUPPORTED: c++03 +// Aligned allocation is required by std::experimental::pmr, but it was not provided +// before macosx10.13 and as a result we get linker errors when deploying to older than +// macosx10.13. +// XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12}} + // // memory_resource * null_memory_resource() diff --git a/libcxx/utils/ci/run-buildbot b/libcxx/utils/ci/run-buildbot index 81a68467e3e1..1de4ad9a208e 100755 --- a/libcxx/utils/ci/run-buildbot +++ b/libcxx/utils/ci/run-buildbot @@ -105,7 +105,6 @@ function generate-cmake-libcxx-win() { # -D_LIBCPP_HAS_NO_INT128 (both when building the library itself and # when building tests) to allow enabling filesystem for running tests, # even if it uses a non-permanent ABI. - generate-cmake-base \ -DLLVM_ENABLE_RUNTIMES="libcxx" \ -DCMAKE_C_COMPILER=clang-cl \ @@ -523,7 +522,7 @@ clang-cl-dll) # correctly when libc++ visibility attributes indicate dllimport linkage # anyway), thus just disable the experimental library. Remove this # setting when cmake and the test driver does the right thing automatically. - generate-cmake-libcxx-win -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=OFF + generate-cmake-libcxx-win -DLIBCXX_TEST_PARAMS="enable_experimental=False" echo "+++ Running the libc++ tests" ${NINJA} -vC "${BUILD_DIR}" check-cxx ;; diff --git a/libcxx/utils/libcxx/test/params.py b/libcxx/utils/libcxx/test/params.py index dcfefeced957..22aa19ec0a26 100644 --- a/libcxx/utils/libcxx/test/params.py +++ b/libcxx/utils/libcxx/test/params.py @@ -156,15 +156,19 @@ DEFAULT_PARAMETERS = [ ])), Parameter(name='enable_experimental', choices=[True, False], type=bool, default=True, - help="Whether to enable tests for experimental C++ libraries (typically Library Fundamentals TSes).", + help="Whether to enable tests for experimental C++ Library features.", actions=lambda experimental: [] if not experimental else [ - AddFeature('c++experimental'), # When linking in MSVC mode via the Clang driver, a -l # maps to .lib, so we need to use -llibc++experimental here # to make it link against the static libc++experimental.lib. # We can't check for the feature 'msvc' in available_features # as those features are added after processing parameters. - PrependLinkFlag(lambda config: '-llibc++experimental' if _isMSVC(config) else '-lc++experimental') + # + # TODO: Switch to using the appropriate experimental compiler flag once + # all compilers we support implement that flag. + AddFeature('c++experimental'), + PrependLinkFlag(lambda cfg: '-llibc++experimental' if _isMSVC(cfg) else '-lc++experimental'), + AddCompileFlag('-D_LIBCPP_ENABLE_EXPERIMENTAL'), ]), Parameter(name='long_tests', choices=[True, False], type=bool, default=True,