summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Modules/CMakeForceCompiler.cmake74
1 files changed, 47 insertions, 27 deletions
diff --git a/Modules/CMakeForceCompiler.cmake b/Modules/CMakeForceCompiler.cmake
index 0b55500..21e890e 100644
--- a/Modules/CMakeForceCompiler.cmake
+++ b/Modules/CMakeForceCompiler.cmake
@@ -1,27 +1,47 @@
-MESSAGE(FATAL_ERROR
- "Do not include the CMakeForceCompiler module. "
- "It is no longer necessary. "
- "Update your toolchain file as follows.
-
-Use of the CMAKE_FORCE_SYSTEM macro:
-
- CMAKE_FORCE_SYSTEM(\"<name>\" \"<version>\" \"<processor>\")
-
-may be replaced by just
-
- SET(CMAKE_SYSTEM_NAME \"<name>\")
- SET(CMAKE_SYSTEM_VERSION \"<version>\")
- SET(CMAKE_SYSTEM_PROCESSOR \"<processor>\")
-
-Use of the CMAKE_FORCE_C_COMPILER and CMAKE_FORCE_CXX_COMPILER macros:
-
- CMAKE_FORCE_C_COMPILER (/path/to/cc <id> <sizeof_void_p>)
- CMAKE_FORCE_CXX_COMPILER (/path/to/CC <id>)
-
-may be replaced by just
-
- SET(CMAKE_C_COMPILER /path/to/cc)
- SET(CMAKE_CXX_COMPILER /path/to/CC)
-
-CMake will automatically detect known compiler IDs and sizeof(void*).
-")
+# This module defines macros intended for use by cross-compiling
+# toolchain files when CMake is not able to automatically detect the
+# compiler identification.
+#
+# Macro CMAKE_FORCE_C_COMPILER has the following signature:
+# CMAKE_FORCE_C_COMPILER(<compiler> <compiler-id>)
+# It sets CMAKE_C_COMPILER to the given compiler and the cmake
+# internal variable CMAKE_C_COMPILER_ID to the given compiler-id.
+# It also bypasses ???
+#
+# Macro CMAKE_FORCE_CXX_COMPILER has the following signature:
+# CMAKE_FORCE_CXX_COMPILER(<compiler> <compiler-id>)
+# It sets CMAKE_CXX_COMPILER to the given compiler and the cmake
+# internal variable CMAKE_CXX_COMPILER_ID to the given compiler-id.
+# It also bypasses ???
+#
+# So a simple toolchain file could look like this:
+# INCLUDE (CMakeForceCompiler)
+# SET(CMAKE_SYSTEM_NAME Generic)
+# CMAKE_FORCE_C_COMPILER (chc12 MetrowerksHicross)
+# CMAKE_FORCE_CXX_COMPILER (chc12 MetrowerksHicross)
+
+MACRO(CMAKE_FORCE_C_COMPILER compiler id)
+ SET(CMAKE_C_COMPILER "${compiler}")
+ SET(CMAKE_C_COMPILER_ID_RUN TRUE)
+ SET(CMAKE_C_COMPILER_ID ${id})
+ SET(CMAKE_C_COMPILER_WORKS TRUE)
+ SET(CMAKE_C_COMPILER_FORCED TRUE)
+
+ # Set old compiler id variables.
+ IF("${CMAKE_C_COMPILER_ID}" MATCHES "GNU")
+ SET(CMAKE_COMPILER_IS_GNUCC 1)
+ ENDIF("${CMAKE_C_COMPILER_ID}" MATCHES "GNU")
+ENDMACRO(CMAKE_FORCE_C_COMPILER)
+
+MACRO(CMAKE_FORCE_CXX_COMPILER compiler id)
+ SET(CMAKE_CXX_COMPILER "${compiler}")
+ SET(CMAKE_CXX_COMPILER_ID_RUN TRUE)
+ SET(CMAKE_CXX_COMPILER_ID ${id})
+ SET(CMAKE_CXX_COMPILER_WORKS TRUE)
+ SET(CMAKE_CXX_COMPILER_FORCED TRUE)
+
+ # Set old compiler id variables.
+ IF("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
+ SET(CMAKE_COMPILER_IS_GNUCXX 1)
+ ENDIF("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
+ENDMACRO(CMAKE_FORCE_CXX_COMPILER)