diff options
-rw-r--r-- | Modules/CMakeFortranCompilerABI.F | 3 | ||||
-rw-r--r-- | Modules/CMakeTestFortranCompiler.cmake | 14 |
2 files changed, 17 insertions, 0 deletions
diff --git a/Modules/CMakeFortranCompilerABI.F b/Modules/CMakeFortranCompilerABI.F new file mode 100644 index 0000000..cf8662f --- /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 c4e6395..6591c2d 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) |