mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 12:41:49 +01:00
[cmake] Instead of testing char16_t for MSVC compat, directly ask cl.exe its version
Credit to Aaron Ballman for thinking of this. llvm-svn: 264886
This commit is contained in:
parent
caec55026e
commit
2045f67567
@ -348,14 +348,16 @@ if( MSVC )
|
|||||||
append("/Zc:rvalueCast" CMAKE_CXX_FLAGS)
|
append("/Zc:rvalueCast" CMAKE_CXX_FLAGS)
|
||||||
|
|
||||||
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||||
# In VS 2015, char16_t became a builtin type. Clang still defaults to VS
|
# Find and run MSVC (not clang-cl) and get its version. This will tell
|
||||||
# 2013 compatibility, where it cannot be a builtin type. If we're using an
|
# clang-cl what version of MSVC to pretend to be so that the STL works.
|
||||||
# STL newer than 2015, this compilation will fail. Rasing the MSVC
|
execute_process(COMMAND "$ENV{VSINSTALLDIR}/VC/bin/cl.exe"
|
||||||
# compatibility version of the compiler will provide char16/32.
|
OUTPUT_QUIET
|
||||||
check_cxx_source_compiles("#include <cstdint>\nchar16_t v1;\n" STL_PROVIDES_CHAR16_T)
|
ERROR_VARIABLE MSVC_COMPAT_VERSION
|
||||||
if (NOT STL_PROVIDES_CHAR16_T)
|
)
|
||||||
append("-fms-compatibility-version=19" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
|
string(REGEX REPLACE "^.*Compiler Version ([0-9.]+) for .*$" "\\1"
|
||||||
endif()
|
MSVC_COMPAT_VERSION "${MSVC_COMPAT_VERSION}")
|
||||||
|
append("-fms-compatibility-version=${MSVC_COMPAT_VERSION}"
|
||||||
|
CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (NOT LLVM_ENABLE_TIMESTAMPS AND CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
if (NOT LLVM_ENABLE_TIMESTAMPS AND CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user