summaryrefslogtreecommitdiff
path: root/Modules/CMakeCompilerIdDetection.cmake
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2014-04-23 10:46:47 +0200
committerStephen Kelly <steveire@gmail.com>2014-05-07 14:00:00 +0200
commit36ed5894840f40f6859710d44be607c929e5d38c (patch)
tree9f597a5e579019f0aceb78cb3ed0b6003e3b33cd /Modules/CMakeCompilerIdDetection.cmake
parent9a083bce83cfa31192ad34ba504454f8087c4fce (diff)
downloadcmake-36ed5894840f40f6859710d44be607c929e5d38c.tar.gz
CompilerId: Allow specifying the compiler-specific components to generate.
Diffstat (limited to 'Modules/CMakeCompilerIdDetection.cmake')
-rw-r--r--Modules/CMakeCompilerIdDetection.cmake20
1 files changed, 18 insertions, 2 deletions
diff --git a/Modules/CMakeCompilerIdDetection.cmake b/Modules/CMakeCompilerIdDetection.cmake
index eee1337fc4..5df525fe16 100644
--- a/Modules/CMakeCompilerIdDetection.cmake
+++ b/Modules/CMakeCompilerIdDetection.cmake
@@ -20,6 +20,8 @@ function(_readFile file)
set(_compiler_id_pp_test_${CompilerId} ${_compiler_id_pp_test} PARENT_SCOPE)
endfunction()
+include(${CMAKE_CURRENT_LIST_DIR}/CMakeParseArguments.cmake)
+
function(compiler_id_detection outvar lang)
file(GLOB lang_files
@@ -36,6 +38,12 @@ function(compiler_id_detection outvar lang)
_readFile(${file})
endforeach()
+ set(options ID_STRING VERSION_STRINGS)
+ cmake_parse_arguments(CID "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+ if (CID_UNPARSED_ARGUMENTS)
+ message(FATAL_ERROR "Unrecognized arguments: \"${CID_UNPARSED_ARGUMENTS}\"")
+ endif()
+
set(ordered_compilers
# Order is relevant here. For example, compilers which pretend to be
# GCC must appear before the actual GCC.
@@ -65,14 +73,22 @@ function(compiler_id_detection outvar lang)
MIPSpro)
set(pp_if "#if")
- set(CMAKE_${lang}_COMPILER_ID_CONTENT "/* Version number components: V=Version, R=Revision, P=Patch
+ if (CID_VERSION_STRINGS)
+ set(CMAKE_${lang}_COMPILER_ID_CONTENT "/* Version number components: V=Version, R=Revision, P=Patch
Version date components: YYYY=Year, MM=Month, DD=Day */\n")
+ endif()
foreach(Id ${ordered_compilers})
if (NOT _compiler_id_pp_test_${Id})
message(FATAL_ERROR "No preprocessor 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(id_content "${pp_if} ${_compiler_id_pp_test_${Id}}\n")
+ if (CID_ID_STRING)
+ set(id_content "${id_content}# define COMPILER_ID \"${Id}\"")
+ endif()
+ if (CID_VERSION_STRINGS)
+ set(id_content "${id_content}${_compiler_id_version_compute_${Id}}\n")
+ endif()
set(CMAKE_${lang}_COMPILER_ID_CONTENT "${CMAKE_${lang}_COMPILER_ID_CONTENT}\n${id_content}")
set(pp_if "#elif")
endforeach()