|
@@ -28,6 +28,11 @@ endif()
|
|
if("${CMAKE_GENERATOR}" MATCHES "Visual Studio")
|
|
if("${CMAKE_GENERATOR}" MATCHES "Visual Studio")
|
|
set(PP_VS 1)
|
|
set(PP_VS 1)
|
|
endif()
|
|
endif()
|
|
|
|
+if(CMAKE_C_COMPILER_ID STREQUAL "Clang" AND
|
|
|
|
+ "x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC" AND
|
|
|
|
+ "x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
|
|
|
|
+ set(CLANG_GNULIKE_WINDOWS 1)
|
|
|
|
+endif()
|
|
|
|
|
|
# Some tests below check the PP_* variables set above. They are meant
|
|
# Some tests below check the PP_* variables set above. They are meant
|
|
# to test the case that the build tool is at fault. Other tests below
|
|
# to test the case that the build tool is at fault. Other tests below
|
|
@@ -53,7 +58,7 @@ endif()
|
|
|
|
|
|
string(APPEND STRING_EXTRA " ")
|
|
string(APPEND STRING_EXTRA " ")
|
|
|
|
|
|
-if(NOT PP_BORLAND AND NOT PP_WATCOM)
|
|
|
|
|
|
+if(NOT PP_BORLAND AND NOT PP_WATCOM AND NOT CLANG_GNULIKE_WINDOWS)
|
|
# Borland, WMake: multiple spaces
|
|
# Borland, WMake: multiple spaces
|
|
# The make tool seems to remove extra whitespace from inside
|
|
# The make tool seems to remove extra whitespace from inside
|
|
# quoted strings when passing to the compiler. It does not have
|
|
# quoted strings when passing to the compiler. It does not have
|
|
@@ -70,14 +75,14 @@ if(NOT PP_VS)
|
|
string(APPEND STRING_EXTRA ",")
|
|
string(APPEND STRING_EXTRA ",")
|
|
endif()
|
|
endif()
|
|
|
|
|
|
-if(NOT PP_MINGW)
|
|
|
|
|
|
+if(NOT PP_MINGW AND NOT CLANG_GNULIKE_WINDOWS)
|
|
# MinGW: &
|
|
# MinGW: &
|
|
# When inside -D"FOO=\"a & b\"" MinGW make wants -D"FOO=\"a "&" b\""
|
|
# When inside -D"FOO=\"a & b\"" MinGW make wants -D"FOO=\"a "&" b\""
|
|
# but it does not like quoted ampersand elsewhere.
|
|
# but it does not like quoted ampersand elsewhere.
|
|
string(APPEND STRING_EXTRA "&")
|
|
string(APPEND STRING_EXTRA "&")
|
|
endif()
|
|
endif()
|
|
|
|
|
|
-if(NOT PP_MINGW)
|
|
|
|
|
|
+if(NOT PP_MINGW AND NOT CLANG_GNULIKE_WINDOWS)
|
|
# MinGW: |
|
|
# MinGW: |
|
|
# When inside -D"FOO=\"a | b\"" MinGW make wants -D"FOO=\"a "|" b\""
|
|
# When inside -D"FOO=\"a | b\"" MinGW make wants -D"FOO=\"a "|" b\""
|
|
# but it does not like quoted pipe elsewhere.
|
|
# but it does not like quoted pipe elsewhere.
|
|
@@ -100,7 +105,8 @@ endif()
|
|
|
|
|
|
set(EXPR_OP1 "/")
|
|
set(EXPR_OP1 "/")
|
|
if((NOT MSVC OR PP_NMAKE) AND
|
|
if((NOT MSVC OR PP_NMAKE) AND
|
|
- NOT CMAKE_C_COMPILER_ID STREQUAL "Intel")
|
|
|
|
|
|
+ NOT CMAKE_C_COMPILER_ID STREQUAL "Intel" AND
|
|
|
|
+ NOT CLANG_GNULIKE_WINDOWS)
|
|
# MSVC cl, Intel icl: %
|
|
# MSVC cl, Intel icl: %
|
|
# When the cl compiler is invoked from the command line then % must
|
|
# When the cl compiler is invoked from the command line then % must
|
|
# be written %% (to distinguish from %ENV% syntax). However cl does
|
|
# be written %% (to distinguish from %ENV% syntax). However cl does
|