summaryrefslogtreecommitdiffstats
path: root/Modules/CMakeTestCompilerCommon.cmake
diff options
context:
space:
mode:
authorFred Baksik <frodak17@gmail.com>2019-01-09 04:52:12 (GMT)
committerFred Baksik <frodak17@gmail.com>2019-01-16 15:42:04 (GMT)
commit72e0c115b771fe9e3f4b5a5b6bd3bcdade77a7cb (patch)
tree33ba6fcac03fcd685893654e3933c02b7beb8d79 /Modules/CMakeTestCompilerCommon.cmake
parent436cc5e991c7be07610d7902a5ce2a00221ca0a2 (diff)
downloadCMake-72e0c115b771fe9e3f4b5a5b6bd3bcdade77a7cb.zip
CMake-72e0c115b771fe9e3f4b5a5b6bd3bcdade77a7cb.tar.gz
CMake-72e0c115b771fe9e3f4b5a5b6bd3bcdade77a7cb.tar.bz2
GHS: Add Compiler ID detection
-- Detect GHS compiler and version Detect ARCHITECTURE_ID for PPC / ARM / 86 targets Detect PLATFORM_ID for Integrity and Integrity178 platforms Using defines specified in the documents for the compilers: 201416 PPC / 201754 ARM / 201714 86 -- Fallback C/CXX compiler ID to GHS if not otherwise detected and using GHS MULTI generator Works around issue with some GHS compilers not setting __ghs__ compiler define -- Tweak Compiler ID checking so major id of 002017 is not replaced with 217 -- Prefer try_compile() library targets when testing for working GHS compilers -- Avoid CMake errors if reading past end of file for checking if file is PE executable
Diffstat (limited to 'Modules/CMakeTestCompilerCommon.cmake')
-rw-r--r--Modules/CMakeTestCompilerCommon.cmake20
1 files changed, 20 insertions, 0 deletions
diff --git a/Modules/CMakeTestCompilerCommon.cmake b/Modules/CMakeTestCompilerCommon.cmake
index f76076f..6ee5175 100644
--- a/Modules/CMakeTestCompilerCommon.cmake
+++ b/Modules/CMakeTestCompilerCommon.cmake
@@ -5,3 +5,23 @@
function(PrintTestCompilerStatus LANG MSG)
message(STATUS "Check for working ${LANG} compiler: ${CMAKE_${LANG}_COMPILER}${MSG}")
endfunction()
+
+# if required set the target type if not already explicitly set
+macro(__TestCompiler_setTryCompileTargetType)
+ if(NOT CMAKE_TRY_COMPILE_TARGET_TYPE)
+ if("${CMAKE_GENERATOR}" MATCHES "Green Hills MULTI")
+ #prefer static libraries to avoid linking issues
+ set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
+ set(__CMAKE_TEST_COMPILER_TARGET_TYPE_RESTORE 1)
+ endif()
+ endif()
+endmacro()
+
+# restore the original value
+# -- not necessary if __TestCompiler_setTryCompileTargetType() was used in function scope
+macro(__TestCompiler_restoreTryCompileTargetType)
+ if(__CMAKE_TEST_COMPILER_TARGET_TYPE_RESTORE)
+ unset(CMAKE_TRY_COMPILE_TARGET_TYPE)
+ unset(__CMAKE_TEST_COMPILER_TARGET_TYPE_RESTORE)
+ endif()
+endmacro()