diff options
Diffstat (limited to 'Modules/CMakeForceCompiler.cmake')
-rw-r--r-- | Modules/CMakeForceCompiler.cmake | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/Modules/CMakeForceCompiler.cmake b/Modules/CMakeForceCompiler.cmake new file mode 100644 index 0000000..7048806 --- /dev/null +++ b/Modules/CMakeForceCompiler.cmake @@ -0,0 +1,114 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + +#[=======================================================================[.rst: +CMakeForceCompiler +------------------ + +.. deprecated:: 3.6 + + Do not use. + +The macros provided by this module were once intended for use by +cross-compiling toolchain files when CMake was not able to automatically +detect the compiler identification. Since the introduction of this module, +CMake's compiler identification capabilities have improved and can now be +taught to recognize any compiler. Furthermore, the suite of information +CMake detects from a compiler is now too extensive to be provided by +toolchain files using these macros. + +One common use case for this module was to skip CMake's checks for a +working compiler when using a cross-compiler that cannot link binaries +without special flags or custom linker scripts. This case is now supported +by setting the :variable:`CMAKE_TRY_COMPILE_TARGET_TYPE` variable in the +toolchain file instead. + +------------------------------------------------------------------------- + +Macro ``CMAKE_FORCE_C_COMPILER`` has the following signature: + +:: + + CMAKE_FORCE_C_COMPILER(<compiler> <compiler-id>) + +It sets :variable:`CMAKE_C_COMPILER <CMAKE_<LANG>_COMPILER>` to +the given compiler and the cmake internal variable +:variable:`CMAKE_C_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` to the given +compiler-id. It also bypasses the check for working compiler and basic +compiler information tests. + +Macro ``CMAKE_FORCE_CXX_COMPILER`` has the following signature: + +:: + + CMAKE_FORCE_CXX_COMPILER(<compiler> <compiler-id>) + +It sets :variable:`CMAKE_CXX_COMPILER <CMAKE_<LANG>_COMPILER>` to +the given compiler and the cmake internal variable +:variable:`CMAKE_CXX_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` to the given +compiler-id. It also bypasses the check for working compiler and basic +compiler information tests. + +Macro ``CMAKE_FORCE_Fortran_COMPILER`` has the following signature: + +:: + + CMAKE_FORCE_Fortran_COMPILER(<compiler> <compiler-id>) + +It sets :variable:`CMAKE_Fortran_COMPILER <CMAKE_<LANG>_COMPILER>` to +the given compiler and the cmake internal variable +:variable:`CMAKE_Fortran_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` to the given +compiler-id. It also bypasses the check for working compiler and basic +compiler information tests. + +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) + message(DEPRECATION "The CMAKE_FORCE_C_COMPILER macro is deprecated. " + "Instead just set CMAKE_C_COMPILER and allow CMake to identify the compiler.") + set(CMAKE_C_COMPILER "${compiler}") + set(CMAKE_C_COMPILER_ID_RUN TRUE) + set(CMAKE_C_COMPILER_ID ${id}) + 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() +endmacro() + +macro(CMAKE_FORCE_CXX_COMPILER compiler id) + message(DEPRECATION "The CMAKE_FORCE_CXX_COMPILER macro is deprecated. " + "Instead just set CMAKE_CXX_COMPILER and allow CMake to identify the compiler.") + set(CMAKE_CXX_COMPILER "${compiler}") + set(CMAKE_CXX_COMPILER_ID_RUN TRUE) + set(CMAKE_CXX_COMPILER_ID ${id}) + 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() +endmacro() + +macro(CMAKE_FORCE_Fortran_COMPILER compiler id) + message(DEPRECATION "The CMAKE_FORCE_Fortran_COMPILER macro is deprecated. " + "Instead just set CMAKE_Fortran_COMPILER and allow CMake to identify the compiler.") + set(CMAKE_Fortran_COMPILER "${compiler}") + set(CMAKE_Fortran_COMPILER_ID_RUN TRUE) + set(CMAKE_Fortran_COMPILER_ID ${id}) + set(CMAKE_Fortran_COMPILER_FORCED TRUE) + + # Set old compiler id variables. + if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU") + set(CMAKE_COMPILER_IS_GNUG77 1) + endif() +endmacro() |