forked from OSchip/llvm-project
[libc++] Clarify names of ABI forcing macros
Make it clear that these are intended only to force a specific ABI when the autodetection would give the wrong result by renaming the cmake options and adding separate forcing macros, as suggested by EricWF in the post-commit review of r314949 and further discussed on IRC. llvm-svn: 314965
This commit is contained in:
parent
03e77c64f1
commit
a4a3d40eb6
|
@ -99,8 +99,8 @@ cmake_dependent_option(LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY
|
||||||
"LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY;LIBCXX_INSTALL_LIBRARY" OFF)
|
"LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY;LIBCXX_INSTALL_LIBRARY" OFF)
|
||||||
set(LIBCXX_ABI_VERSION 1 CACHE STRING "ABI version of libc++.")
|
set(LIBCXX_ABI_VERSION 1 CACHE STRING "ABI version of libc++.")
|
||||||
option(LIBCXX_ABI_UNSTABLE "Unstable ABI of libc++." OFF)
|
option(LIBCXX_ABI_UNSTABLE "Unstable ABI of libc++." OFF)
|
||||||
option(LIBCXX_ABI_ITANIUM "Ignore auto-detection and force use of the Itanium ABI.")
|
option(LIBCXX_ABI_FORCE_ITANIUM "Ignore auto-detection and force use of the Itanium ABI.")
|
||||||
option(LIBCXX_ABI_MICROSOFT "Ignore auto-detection and force use of the Microsoft ABI.")
|
option(LIBCXX_ABI_FORCE_MICROSOFT "Ignore auto-detection and force use of the Microsoft ABI.")
|
||||||
set(LIBCXX_ABI_DEFINES "" CACHE STRING "A semicolon separated list of ABI macros to define in the site config header.")
|
set(LIBCXX_ABI_DEFINES "" CACHE STRING "A semicolon separated list of ABI macros to define in the site config header.")
|
||||||
option(LIBCXX_USE_COMPILER_RT "Use compiler-rt instead of libgcc" OFF)
|
option(LIBCXX_USE_COMPILER_RT "Use compiler-rt instead of libgcc" OFF)
|
||||||
|
|
||||||
|
@ -340,8 +340,8 @@ if (LIBCXX_HAS_MUSL_LIBC AND NOT LIBCXX_INSTALL_SUPPORT_HEADERS)
|
||||||
"when building for Musl with LIBCXX_HAS_MUSL_LIBC.")
|
"when building for Musl with LIBCXX_HAS_MUSL_LIBC.")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (LIBCXX_ABI_ITANIUM AND LIBCXX_ABI_MICROSOFT)
|
if (LIBCXX_ABI_FORCE_ITANIUM AND LIBCXX_ABI_FORCE_MICROSOFT)
|
||||||
message(FATAL_ERROR "Only one of LIBCXX_ABI_ITANIUM and LIBCXX_ABI_MICROSOFT can be specified.")
|
message(FATAL_ERROR "Only one of LIBCXX_ABI_FORCE_ITANIUM and LIBCXX_ABI_FORCE_MICROSOFT can be specified.")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
@ -601,8 +601,8 @@ if (NOT LIBCXX_ABI_VERSION EQUAL "1")
|
||||||
config_define(${LIBCXX_ABI_VERSION} _LIBCPP_ABI_VERSION)
|
config_define(${LIBCXX_ABI_VERSION} _LIBCPP_ABI_VERSION)
|
||||||
endif()
|
endif()
|
||||||
config_define_if(LIBCXX_ABI_UNSTABLE _LIBCPP_ABI_UNSTABLE)
|
config_define_if(LIBCXX_ABI_UNSTABLE _LIBCPP_ABI_UNSTABLE)
|
||||||
config_define_if(LIBCXX_ABI_ITANIUM _LIBCPP_ABI_ITANIUM)
|
config_define_if(LIBCXX_ABI_FORCE_ITANIUM _LIBCPP_ABI_FORCE_ITANIUM)
|
||||||
config_define_if(LIBCXX_ABI_MICROSOFT _LIBCPP_ABI_MICROSOFT)
|
config_define_if(LIBCXX_ABI_FORCE_MICROSOFT _LIBCPP_ABI_FORCE_MICROSOFT)
|
||||||
|
|
||||||
config_define_if_not(LIBCXX_ENABLE_GLOBAL_FILESYSTEM_NAMESPACE _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE)
|
config_define_if_not(LIBCXX_ENABLE_GLOBAL_FILESYSTEM_NAMESPACE _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE)
|
||||||
config_define_if_not(LIBCXX_ENABLE_STDIN _LIBCPP_HAS_NO_STDIN)
|
config_define_if_not(LIBCXX_ENABLE_STDIN _LIBCPP_HAS_NO_STDIN)
|
||||||
|
|
|
@ -160,7 +160,13 @@
|
||||||
// that Windows compilers pretending to be MSVC++ target the Microsoft ABI,
|
// that Windows compilers pretending to be MSVC++ target the Microsoft ABI,
|
||||||
// and allow the user to explicitly specify the ABI to handle cases where this
|
// and allow the user to explicitly specify the ABI to handle cases where this
|
||||||
// heuristic falls short.
|
// heuristic falls short.
|
||||||
#if !defined(_LIBCPP_ABI_ITANIUM) && !defined(_LIBCPP_ABI_MICROSOFT)
|
#if defined(_LIBCPP_ABI_FORCE_ITANIUM) && defined(_LIBCPP_ABI_FORCE_MICROSOFT)
|
||||||
|
# error "Only one of _LIBCPP_ABI_FORCE_ITANIUM and _LIBCPP_ABI_FORCE_MICROSOFT can be defined"
|
||||||
|
#elif defined(_LIBCPP_ABI_FORCE_ITANIUM)
|
||||||
|
# define _LIBCPP_ABI_ITANIUM
|
||||||
|
#elif defined(_LIBCPP_ABI_FORCE_MICROSOFT)
|
||||||
|
# define _LIBCPP_ABI_MICROSOFT
|
||||||
|
#else
|
||||||
# if defined(_WIN32) && defined(_MSC_VER)
|
# if defined(_WIN32) && defined(_MSC_VER)
|
||||||
# define _LIBCPP_ABI_MICROSOFT
|
# define _LIBCPP_ABI_MICROSOFT
|
||||||
# else
|
# else
|
||||||
|
|
|
@ -12,8 +12,8 @@
|
||||||
|
|
||||||
#cmakedefine _LIBCPP_ABI_VERSION @_LIBCPP_ABI_VERSION@
|
#cmakedefine _LIBCPP_ABI_VERSION @_LIBCPP_ABI_VERSION@
|
||||||
#cmakedefine _LIBCPP_ABI_UNSTABLE
|
#cmakedefine _LIBCPP_ABI_UNSTABLE
|
||||||
#cmakedefine _LIBCPP_ABI_ITANIUM
|
#cmakedefine _LIBCPP_ABI_FORCE_ITANIUM
|
||||||
#cmakedefine _LIBCPP_ABI_MICROSOFT
|
#cmakedefine _LIBCPP_ABI_FORCE_MICROSOFT
|
||||||
#cmakedefine _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE
|
#cmakedefine _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE
|
||||||
#cmakedefine _LIBCPP_HAS_NO_STDIN
|
#cmakedefine _LIBCPP_HAS_NO_STDIN
|
||||||
#cmakedefine _LIBCPP_HAS_NO_STDOUT
|
#cmakedefine _LIBCPP_HAS_NO_STDOUT
|
||||||
|
|
Loading…
Reference in New Issue