mstorsjo added inline comments.

================
Comment at: libcxx/CMakeLists.txt:250
+
+set(LIBCXX_SUPPORTED_ABI_LIBRARIES none libcxxabi system-libcxxabi libcxxrt 
libstdc++ libsupc++ vcruntime)
+set(LIBCXX_CXX_ABI "${LIBCXX_DEFAULT_ABI_LIBRARY}" CACHE STRING "Specify C++ 
ABI library to use. Supported values are ${LIBCXX_SUPPORTED_ABI_LIBRARIES}.")
----------------
ldionne wrote:
> phosek wrote:
> > All of these values refer to system ABI libraries except for libcxxabi 
> > where `libcxxabi is the in-tree one and `system-libcxxabi` is the system 
> > one. From a consistency perspective, I think it'd be better for `libcxxabi` 
> > to also refer to a system ABI library, and then use a different name for 
> > the in-tree one, perhaps `default`?
> I agree with the consistency argument. However, I'd like to avoid `default` 
> since it doesn't convey any information, and it also used to be one of the 
> valid values but it represented "whatever automatically selected ABI we 
> pick", which might not be libc++abi. I'd suggest `libcxxabi` and 
> `intree-libcxxabi`. It's not extremely pretty, but it conveys exactly what it 
> is.
> 
> Edit: I actually went ahead and made this change, and I realized that it 
> might be breaking for a bunch of people. Indeed, I think that most people who 
> specify `libcxxabi` are expecting to build against the in-tree one, which is 
> what happens today as long as they have `libcxxabi` in their 
> `LLVM_ENABLE_RUNTIMES`. With this renaming, they would implicitly start 
> building against the system libc++abi, and that might happen silently. I'm 
> not sure I like this. So, here's the diff to implement this change, however 
> I'd rather not apply it unless you think consistency is more important that 
> this concern:
> 
> ```
> diff --git a/libcxx/CMakeLists.txt b/libcxx/CMakeLists.txt
> index a7f1684235e6..7cbf8957ac90 100644
> --- a/libcxx/CMakeLists.txt
> +++ b/libcxx/CMakeLists.txt
> @@ -244,10 +244,10 @@ if (LIBCXX_TARGETING_MSVC)
>  elseif (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
>    set(LIBCXX_DEFAULT_ABI_LIBRARY "libcxxrt")
>  else()
> -  set(LIBCXX_DEFAULT_ABI_LIBRARY "libcxxabi")
> +  set(LIBCXX_DEFAULT_ABI_LIBRARY "intree-libcxxabi")
>  endif()
>  
> -set(LIBCXX_SUPPORTED_ABI_LIBRARIES none libcxxabi system-libcxxabi libcxxrt 
> libstdc++ libsupc++ vcruntime)
> +set(LIBCXX_SUPPORTED_ABI_LIBRARIES none intree-libcxxabi libcxxabi libcxxrt 
> libstdc++ libsupc++ vcruntime)
>  set(LIBCXX_CXX_ABI "${LIBCXX_DEFAULT_ABI_LIBRARY}" CACHE STRING "Specify C++ 
> ABI library to use. Supported values are ${LIBCXX_SUPPORTED_ABI_LIBRARIES}.")
>  
>  # Temporary to still accept existing CMake caches that contain "default" as 
> the value
> diff --git a/libcxx/cmake/Modules/HandleLibCXXABI.cmake 
> b/libcxx/cmake/Modules/HandleLibCXXABI.cmake
> index 6e7a53258c0a..f22cfd674623 100644
> --- a/libcxx/cmake/Modules/HandleLibCXXABI.cmake
> +++ b/libcxx/cmake/Modules/HandleLibCXXABI.cmake
> @@ -97,7 +97,7 @@ add_library(libcxx-abi-headers INTERFACE)
>    import_shared_library(libcxx-abi-static "${LIBCXX_CXX_ABI_LIBRARY_PATH}" 
> supc++)
>  
>  # Link against the in-tree libc++abi
> -elseif ("${LIBCXX_CXX_ABI}" STREQUAL "libcxxabi")
> +elseif ("${LIBCXX_CXX_ABI}" STREQUAL "intree-libcxxabi")
>    add_library(libcxx-abi-headers INTERFACE)
>    target_link_libraries(libcxx-abi-headers INTERFACE cxxabi-headers)
>    target_compile_definitions(libcxx-abi-headers INTERFACE 
> "-DLIBCXX_BUILDING_LIBCXXABI")
> @@ -111,7 +111,7 @@ elseif ("${LIBCXX_CXX_ABI}" STREQUAL "libcxxabi")
>    endif()
>  
>  # Link against a system-provided libc++abi
> -elseif ("${LIBCXX_CXX_ABI}" STREQUAL "system-libcxxabi")
> +elseif ("${LIBCXX_CXX_ABI}" STREQUAL "libcxxabi")
>    add_library(libcxx-abi-headers INTERFACE)
>    import_private_headers(libcxx-abi-headers 
> "${LIBCXX_CXX_ABI_INCLUDE_PATHS}" "cxxabi.h;__cxxabi_config.h")
>    target_compile_definitions(libcxx-abi-headers INTERFACE 
> "-DLIBCXX_BUILDING_LIBCXXABI")
> diff --git a/libcxx/cmake/caches/AIX.cmake b/libcxx/cmake/caches/AIX.cmake
> index 029b8deae3d7..e3f31aea5192 100644
> --- a/libcxx/cmake/caches/AIX.cmake
> +++ b/libcxx/cmake/caches/AIX.cmake
> @@ -13,4 +13,4 @@ set(LIBCXX_ENABLE_SHARED ON CACHE BOOL "")
>  set(LIBCXX_ENABLE_STATIC OFF CACHE BOOL "")
>  set(LIBCXXABI_ENABLE_SHARED ON CACHE BOOL "")
>  set(LIBCXXABI_ENABLE_STATIC OFF CACHE BOOL "")
> -set(LIBCXX_CXX_ABI libcxxabi CACHE STRING "")
> +set(LIBCXX_CXX_ABI intree-libcxxabi CACHE STRING "")
> diff --git a/libcxx/cmake/caches/Apple.cmake b/libcxx/cmake/caches/Apple.cmake
> index 4581d4d87b80..89087662b2f4 100644
> --- a/libcxx/cmake/caches/Apple.cmake
> +++ b/libcxx/cmake/caches/Apple.cmake
> @@ -7,7 +7,7 @@ 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 "")
> +set(LIBCXX_CXX_ABI intree-libcxxabi CACHE STRING "")
>  set(LIBCXX_HIDE_FROM_ABI_PER_TU_BY_DEFAULT ON CACHE BOOL "")
>  set(LIBCXX_ENABLE_DEBUG_MODE_SUPPORT OFF CACHE BOOL "")
>  set(LIBCXX_ENABLE_VENDOR_AVAILABILITY_ANNOTATIONS ON CACHE BOOL "")
> diff --git a/libcxx/cmake/caches/MinGW.cmake b/libcxx/cmake/caches/MinGW.cmake
> index 14b887e64101..44a3899d025d 100644
> --- a/libcxx/cmake/caches/MinGW.cmake
> +++ b/libcxx/cmake/caches/MinGW.cmake
> @@ -1,6 +1,6 @@
>  set(LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY OFF CACHE BOOL "")
>  
> -set(LIBCXX_CXX_ABI libcxxabi CACHE STRING "")
> +set(LIBCXX_CXX_ABI intree-libcxxabi CACHE STRING "")
>  set(LIBCXXABI_USE_LLVM_UNWINDER ON CACHE BOOL "")
>  
>  set(LIBCXXABI_ENABLE_SHARED OFF CACHE BOOL "")
> diff --git a/libcxx/docs/BuildingLibcxx.rst b/libcxx/docs/BuildingLibcxx.rst
> index 3f4e314382d8..cf42eadb6deb 100644
> --- a/libcxx/docs/BuildingLibcxx.rst
> +++ b/libcxx/docs/BuildingLibcxx.rst
> @@ -323,7 +323,7 @@ ABI Library Specific Options
>  
>  .. option:: LIBCXX_CXX_ABI:STRING
>  
> -  **Values**: ``none``, ``libcxxabi``, ``system-libcxxabi``, ``libcxxrt``, 
> ``libstdc++``, ``libsupc++``, ``vcruntime``.
> +  **Values**: ``none``, ``intree-libcxxabi``, ``libcxxabi``, ``libcxxrt``, 
> ``libstdc++``, ``libsupc++``, ``vcruntime``.
>  
>    Select the ABI library to build libc++ against.
>  
> diff --git a/libcxx/docs/ReleaseNotes.rst b/libcxx/docs/ReleaseNotes.rst
> index cbbe6c06ef40..64d02b9e8dfd 100644
> --- a/libcxx/docs/ReleaseNotes.rst
> +++ b/libcxx/docs/ReleaseNotes.rst
> @@ -139,3 +139,8 @@ Build System Changes
>    or on a platform that used to be supported by the legacy testing 
> configuration and isn't supported
>    by one of the configurations in ``libcxx/test/configs``, please reach out 
> to the libc++ developers
>    to get your configuration supported officially.
> +
> +- If you previously specified ``LIBCXX_CXX_ABI=libcxxabi`` to build against 
> the in-tree version of
> +  libc++abi, please switch to ``LIBCXX_CXX_ABI=intree-libcxxabi``. Starting 
> with this release,
> +  ``LIBCXX_CXX_ABI=libcxxabi`` will now build against the system-provided 
> libc++abi, for consistency
> +  with the naming of other ABI library choices.
> diff --git a/libcxx/src/CMakeLists.txt b/libcxx/src/CMakeLists.txt
> index 41d07d15f03c..fa6f44f0e19f 100644
> --- a/libcxx/src/CMakeLists.txt
> +++ b/libcxx/src/CMakeLists.txt
> @@ -243,7 +243,7 @@ if (LIBCXX_ENABLE_SHARED)
>    # Maybe re-export symbols from libc++abi
>    # In particular, we don't re-export the symbols if libc++abi is merged 
> statically
>    # into libc++ because in that case there's no dylib to re-export from.
> -  if (APPLE AND LIBCXX_CXX_ABI STREQUAL "libcxxabi"
> +  if (APPLE AND LIBCXX_CXX_ABI STREQUAL "intree-libcxxabi"
>              AND NOT DEFINED LIBCXX_OSX_REEXPORT_LIBCXXABI_SYMBOLS
>              AND NOT LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY)
>      set(LIBCXX_OSX_REEXPORT_LIBCXXABI_SYMBOLS ON)
> diff --git a/libcxx/utils/ci/run-buildbot b/libcxx/utils/ci/run-buildbot
> index 4ff71500465e..d4dfc715ce8d 100755
> --- a/libcxx/utils/ci/run-buildbot
> +++ b/libcxx/utils/ci/run-buildbot
> @@ -93,7 +93,7 @@ function generate-cmake-base() {
>  function generate-cmake() {
>      generate-cmake-base \
>            -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" \
> -          -DLIBCXX_CXX_ABI=libcxxabi \
> +          -DLIBCXX_CXX_ABI=intree-libcxxabi \
>            "${@}"
>  }
>  
> @@ -493,7 +493,7 @@ legacy-project-build)
>            -DCMAKE_BUILD_TYPE=RelWithDebInfo \
>            -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \
>            -DLLVM_LIT_ARGS="-sv --show-unsupported --xunit-xml-output 
> test-results.xml --timeout=1200" \
> -          -DLIBCXX_CXX_ABI=libcxxabi
> +          -DLIBCXX_CXX_ABI=intree-libcxxabi
>      check-runtimes
>  ;;
>  aarch64)
> diff --git a/libcxx/utils/libcxx/test/config.py 
> b/libcxx/utils/libcxx/test/config.py
> index eb55c03a7687..0f6130a44aeb 100644
> --- a/libcxx/utils/libcxx/test/config.py
> +++ b/libcxx/utils/libcxx/test/config.py
> @@ -378,12 +378,12 @@ class Configuration(object):
>                  self.cxx.link_flags += ['-lc++']
>  
>      def configure_link_flags_abi_library(self):
> -        cxx_abi = self.get_lit_conf('cxx_abi', 'libcxxabi')
> +        cxx_abi = self.get_lit_conf('cxx_abi', 'intree-libcxxabi')
>          if cxx_abi == 'libstdc++':
>              self.cxx.link_flags += ['-lstdc++']
>          elif cxx_abi == 'libsupc++':
>              self.cxx.link_flags += ['-lsupc++']
> -        elif cxx_abi == 'libcxxabi':
> +        elif cxx_abi == 'intree-libcxxabi':
>              # If the C++ library requires explicitly linking to libc++abi, or
>              # if we're testing libc++abi itself (the test configs are 
> shared),
>              # then link it.
> @@ -399,7 +399,7 @@ class Configuration(object):
>                          self.cxx.link_flags += [abs_path]
>                      else:
>                          self.cxx.link_flags += ['-lc++abi']
> -        elif cxx_abi == 'system-libcxxabi':
> +        elif cxx_abi == 'libcxxabi':
>              self.cxx.link_flags += ['-lc++abi']
>          elif cxx_abi == 'libcxxrt':
>              self.cxx.link_flags += ['-lcxxrt']
> 
> ```
Yes - if this changes the behaviour for all existing users who build with 
`-DLIBCXX_CXX_ABI=libcxxabi`, I think it's not worth all the breakage it'd 
cause.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D120727/new/

https://reviews.llvm.org/D120727

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to