summaryrefslogtreecommitdiff
path: root/Modules
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2009-07-13 11:24:01 -0400
committerBrad King <brad.king@kitware.com>2009-07-13 11:24:01 -0400
commitde6f88d06f907f4cbaab5462cd079fcd77193e41 (patch)
treea38f31920d6fbcbc8c79c2c143625f6b4472ec82 /Modules
parenta03bb5a28f42767d1494cb17971103faae5b409b (diff)
downloadcmake-de6f88d06f907f4cbaab5462cd079fcd77193e41.tar.gz
ENH: Create Fortran ABI detection framework
This invokes CMakeDetermineCompilerABI.cmake for Fortran at the same place it is already done for C and CXX.
Diffstat (limited to 'Modules')
-rw-r--r--Modules/CMakeFortranCompilerABI.F3
-rw-r--r--Modules/CMakeTestFortranCompiler.cmake14
2 files changed, 17 insertions, 0 deletions
diff --git a/Modules/CMakeFortranCompilerABI.F b/Modules/CMakeFortranCompilerABI.F
new file mode 100644
index 0000000000..cf8662fb88
--- /dev/null
+++ b/Modules/CMakeFortranCompilerABI.F
@@ -0,0 +1,3 @@
+ PROGRAM CMakeFortranCompilerId
+ PRINT *, 'ABI Detection Binary'
+ END
diff --git a/Modules/CMakeTestFortranCompiler.cmake b/Modules/CMakeTestFortranCompiler.cmake
index c4e639574e..6591c2dff5 100644
--- a/Modules/CMakeTestFortranCompiler.cmake
+++ b/Modules/CMakeTestFortranCompiler.cmake
@@ -34,6 +34,20 @@ ELSE(NOT CMAKE_Fortran_COMPILER_WORKS)
"the following output:\n${OUTPUT}\n\n")
ENDIF(FORTRAN_TEST_WAS_RUN)
SET(CMAKE_Fortran_COMPILER_WORKS 1 CACHE INTERNAL "")
+
+ IF(CMAKE_Fortran_COMPILER_FORCED)
+ # The compiler configuration was forced by the user.
+ # Assume the user has configured all compiler information.
+ ELSE(CMAKE_Fortran_COMPILER_FORCED)
+ # Try to identify the ABI and configure it into CMakeFortranCompiler.cmake
+ INCLUDE(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerABI.cmake)
+ CMAKE_DETERMINE_COMPILER_ABI(Fortran ${CMAKE_ROOT}/Modules/CMakeFortranCompilerABI.F)
+ CONFIGURE_FILE(
+ ${CMAKE_ROOT}/Modules/CMakeFortranCompiler.cmake.in
+ ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeFortranCompiler.cmake
+ @ONLY IMMEDIATE # IMMEDIATE must be here for compatibility mode <= 2.0
+ )
+ ENDIF(CMAKE_Fortran_COMPILER_FORCED)
ENDIF(NOT CMAKE_Fortran_COMPILER_WORKS)
IF(CMAKE_Fortran_COMPILER_WORKS)