diff options
author | Brad King <brad.king@kitware.com> | 2013-10-04 14:13:08 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2013-10-04 17:39:22 (GMT) |
commit | 3d8356d486ae736d1ba151aedfeb928222e7a084 (patch) | |
tree | ca7a5aefdaac1f61bb04c96a11095642d5f7dbc3 /Modules/Compiler | |
parent | 51ab85c398319c074200ca51f37baa0e4c47ed7c (diff) | |
download | CMake-3d8356d486ae736d1ba151aedfeb928222e7a084.zip CMake-3d8356d486ae736d1ba151aedfeb928222e7a084.tar.gz CMake-3d8356d486ae736d1ba151aedfeb928222e7a084.tar.bz2 |
Clang: Support Windows variants for GNU and MSVC (#13035, #14458)
Teach the compiler identification preprocessor tests to report when
Clang simulates MSVC, and what version. If not MSVC, assume GNU.
Teach compiler information modules Clang-(C|CXX) to recognize when Clang
simulates MSVC and skip loading the GNU information.
Teach the Windows-MSVC platform information to recognize when it is
loaded as the simulated compiler and use that version information
instead of the real compiler's (different) version scheme.
Add platform modules Windows-Clang-(C|CXX) and support module
Windows-Clang to load either Windows-MSVC or Windows-GNU and wrap
the corresponding information macros.
Diffstat (limited to 'Modules/Compiler')
-rw-r--r-- | Modules/Compiler/Clang-CXX.cmake | 4 | ||||
-rw-r--r-- | Modules/Compiler/Clang.cmake | 20 |
2 files changed, 16 insertions, 8 deletions
diff --git a/Modules/Compiler/Clang-CXX.cmake b/Modules/Compiler/Clang-CXX.cmake index 972d889..0372e18 100644 --- a/Modules/Compiler/Clang-CXX.cmake +++ b/Modules/Compiler/Clang-CXX.cmake @@ -1,4 +1,6 @@ include(Compiler/Clang) __compiler_clang(CXX) -set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden") +if(NOT CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC") + set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden") +endif() diff --git a/Modules/Compiler/Clang.cmake b/Modules/Compiler/Clang.cmake index ec4562a..7d7be5c 100644 --- a/Modules/Compiler/Clang.cmake +++ b/Modules/Compiler/Clang.cmake @@ -18,11 +18,17 @@ if(__COMPILER_CLANG) endif() set(__COMPILER_CLANG 1) -include(Compiler/GNU) +if(CMAKE_C_SIMULATE_ID STREQUAL "MSVC" + OR CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC") + macro(__compiler_clang lang) + endmacro() +else() + include(Compiler/GNU) -macro(__compiler_clang lang) - __compiler_gnu(${lang}) - set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "-fPIE") - set(CMAKE_INCLUDE_SYSTEM_FLAG_${lang} "-isystem ") - set(CMAKE_${lang}_COMPILE_OPTIONS_VISIBILITY "-fvisibility=") -endmacro() + macro(__compiler_clang lang) + __compiler_gnu(${lang}) + set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "-fPIE") + set(CMAKE_INCLUDE_SYSTEM_FLAG_${lang} "-isystem ") + set(CMAKE_${lang}_COMPILE_OPTIONS_VISIBILITY "-fvisibility=") + endmacro() +endif() |