summaryrefslogtreecommitdiffstats
path: root/Modules/CMakeDetermineCompilerId.cmake
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2014-04-23 08:33:16 (GMT)
committerStephen Kelly <steveire@gmail.com>2014-05-07 12:00:00 (GMT)
commit9a083bce83cfa31192ad34ba504454f8087c4fce (patch)
treed00a469b13a772989f9b2e35d77bc27657a0c6f4 /Modules/CMakeDetermineCompilerId.cmake
parent9d285600d484c8e539801310f2c4bbe2bb4daef8 (diff)
downloadCMake-9a083bce83cfa31192ad34ba504454f8087c4fce.zip
CMake-9a083bce83cfa31192ad34ba504454f8087c4fce.tar.gz
CMake-9a083bce83cfa31192ad34ba504454f8087c4fce.tar.bz2
Project: Split the compiler id detection into a separate function.
This can be extended with parameters to control the output and re-used in other contexts.
Diffstat (limited to 'Modules/CMakeDetermineCompilerId.cmake')
-rw-r--r--Modules/CMakeDetermineCompilerId.cmake76
1 files changed, 2 insertions, 74 deletions
diff --git a/Modules/CMakeDetermineCompilerId.cmake b/Modules/CMakeDetermineCompilerId.cmake
index ddaa8ef..94c2e50 100644
--- a/Modules/CMakeDetermineCompilerId.cmake
+++ b/Modules/CMakeDetermineCompilerId.cmake
@@ -97,13 +97,7 @@ function(CMAKE_DETERMINE_COMPILER_ID lang flagvar src)
set(CMAKE_${lang}_SIMULATE_VERSION "${CMAKE_${lang}_SIMULATE_VERSION}" PARENT_SCOPE)
endfunction()
-function(_readFile file)
- include(${file})
- get_filename_component(name ${file} NAME_WE)
- string(REGEX REPLACE "-.*" "" CompilerId ${name})
- set(_compiler_id_version_compute_${CompilerId} ${_compiler_id_version_compute} PARENT_SCOPE)
- set(_compiler_id_pp_test_${CompilerId} ${_compiler_id_pp_test} PARENT_SCOPE)
-endfunction()
+include(CMakeCompilerIdDetection)
#-----------------------------------------------------------------------------
# Function to write the compiler id source file.
@@ -111,73 +105,7 @@ function(CMAKE_DETERMINE_COMPILER_ID_WRITE lang src)
find_file(src_in ${src}.in PATHS ${CMAKE_ROOT}/Modules ${CMAKE_MODULE_PATH} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
file(READ ${src_in} ID_CONTENT_IN)
- file(GLOB lang_files
- "${CMAKE_ROOT}/Modules/Compiler/*-${lang}-DetermineCompiler.cmake")
-
- if (NOT lang STREQUAL Fortran)
- file(GLOB non_lang_files
- "${CMAKE_ROOT}/Modules/Compiler/*-${lang}-DetermineCompiler.cmake")
- endif()
-
- set(files ${lang_files} ${non_lang_files})
- if (files)
- foreach(file ${files})
- _readFile(${file})
- endforeach()
- set(pp_if "#if")
- set(CMAKE_CXX_COMPILER_ID_CONTENT "/* Version number components: V=Version, R=Revision, P=Patch
- Version date components: YYYY=Year, MM=Month, DD=Day */\n")
-
- foreach(Id
- Comeau
- Intel
- PathScale
- AppleClang
- Clang
- Embarcadero
- Borland
- Watcom
- OpenWatcom
- SunPro
- HP
- Compaq
- zOS
- XL
- VisualAge
- PGI
- Cray
- TI
- SCO
- GNU
- MSVC
- ADSP
- IAR
- MIPSpro)
- if (NOT _compiler_id_pp_test_${Id})
- message(FATAL_ERROR "No test for \"${Id}\"")
- endif()
- set(id_content "${pp_if} ${_compiler_id_pp_test_${Id}}\n# define COMPILER_ID \"${Id}\"${_compiler_id_version_compute_${Id}}\n")
- set(CMAKE_CXX_COMPILER_ID_CONTENT "${CMAKE_CXX_COMPILER_ID_CONTENT}\n${id_content}")
- set(pp_if "#elif")
- endforeach()
-
- set(platform_compiler_detection "
-/* These compilers are either not known or too old to define an
- identification macro. Try to identify the platform and guess that
- it is the native compiler. */
-#elif defined(__sgi)
-# define COMPILER_ID \"MIPSpro\"
-
-#elif defined(__hpux) || defined(__hpua)
-# define COMPILER_ID \"HP\"
-
-#else /* unknown compiler */
-# define COMPILER_ID \"\"
-
-#endif")
-
- set(CMAKE_CXX_COMPILER_ID_CONTENT "${CMAKE_CXX_COMPILER_ID_CONTENT}\n${platform_compiler_detection}")
- endif()
+ compiler_id_detection(CMAKE_${lang}_COMPILER_ID_CONTENT ${lang})
unset(src_in CACHE)
string(CONFIGURE "${ID_CONTENT_IN}" ID_CONTENT_OUT @ONLY)