Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Kitware
GitHub Repository: Kitware/CMake
Path: blob/master/Tests/CMakeOnly/CheckCXXCompilerFlag/CMakeLists.txt
3153 views
1
cmake_minimum_required(VERSION 3.10)
2
if(POLICY CMP0129)
3
cmake_policy(SET CMP0129 NEW)
4
endif()
5
project(CheckCXXCompilerFlag)
6
7
message(STATUS "CTEST_FULL_OUTPUT (Avoid ctest truncation of output)")
8
set(CMAKE_VERBOSE_MAKEFILE 1)
9
10
macro(TEST_FAIL value msg)
11
if (${value})
12
message (SEND_ERROR "Test fail:" ${msg} ${Out} )
13
endif ()
14
endmacro()
15
16
macro(TEST_PASS value msg)
17
if (NOT ${value})
18
message (SEND_ERROR "Test fail:" ${msg} ${Out} )
19
endif ()
20
endmacro()
21
22
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
23
execute_process(COMMAND ${CMAKE_C_COMPILER} --version OUTPUT_VARIABLE _gcc_version_info)
24
string (REGEX MATCH "[345]\\.[0-9]\\.[0-9]" _gcc_version "${_gcc_version_info}")
25
# gcc on mac just reports: "gcc (GCC) 3.3 20030304 ..." without the
26
# patch level, handle this here:
27
if(NOT _gcc_version)
28
string (REGEX REPLACE ".*\\(GCC\\).* ([34]\\.[0-9]) .*" "\\1.0" _gcc_version "${_gcc_version_info}")
29
endif()
30
endif()
31
32
if(CMAKE_CXX_COMPILER_ID MATCHES Clang)
33
execute_process(COMMAND ${CMAKE_CXX_COMPILER} --version OUTPUT_VARIABLE _clang_version_info)
34
string (REGEX REPLACE ".*version ([0-9]\\.[0-9]).*" "\\1" _clang_version "${_clang_version_info}")
35
endif()
36
37
if(CMAKE_CXX_COMPILER_ID MATCHES Intel)
38
execute_process(COMMAND ${CMAKE_CXX_COMPILER} -V OUTPUT_VARIABLE _intel_version_info)
39
string (REGEX REPLACE ".*Version ([0-9]+(\\.[0-9]+)+).*" "\\1" _intel_version "${_intel_version_info}")
40
endif()
41
42
message("Platform:\n WIN32: ${WIN32}\n UNIX: ${UNIX}\n APPLE: ${APPLE}\n MINGW: ${MINGW}\n CYGWIN: ${CYGWIN}\n MSYS: ${MSYS}\n"
43
" MSVC: ${MSVC}\n MSVC60: ${MSVC60}\n MSVC70: ${MSVC70}\n MSVC71: ${MSVC71}\n MSVC80: ${MSVC80}\n MSVC90: ${MSVC90}\n MSVC10: ${MSVC10}\n"
44
" GCC: ${_gcc_version}\n"
45
" Clang: ${_clang_version}\n"
46
" Intel: ${_intel_version}\n"
47
)
48
49
include(CheckCXXCompilerFlag)
50
51
check_cxx_compiler_flag(-fvisibility=hidden HAS_HIDDEN_VISIBILITY)
52
53
message("HAS_HIDDEN_VISIBILITY: ${HAS_HIDDEN_VISIBILITY}\n\nCOMPILE OUTPUT:\n${OUTPUT}")
54
55
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
56
if(NOT WIN32)
57
# test_pass(HAS_HIDDEN_VISIBILITY "GCC should support hidden visibility, but does not.")
58
endif()
59
else()
60
message("Unhandled Platform")
61
endif()
62
63
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|LCC|Clang" AND NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
64
check_cxx_compiler_flag("-x c++" HAVE_X_CXX)
65
if(NOT HAVE_X_CXX)
66
message(FATAL_ERROR "${CMAKE_CXX_COMPILER_ID} compiler flag '-x c++' check failed")
67
endif()
68
endif()
69
70