|
|
@@ -19,6 +19,8 @@
|
|
|
# the cmake variable CMAKE_GENERATOR_FC which can be defined by a generator
|
|
|
# as a default compiler
|
|
|
|
|
|
+INCLUDE(${CMAKE_ROOT}/Modules/CMakeDetermineCompiler.cmake)
|
|
|
+
|
|
|
IF(NOT CMAKE_Fortran_COMPILER)
|
|
|
# prefer the environment variable CC
|
|
|
IF($ENV{FC} MATCHES ".+")
|
|
|
@@ -40,9 +42,7 @@ IF(NOT CMAKE_Fortran_COMPILER)
|
|
|
ENDIF(CMAKE_GENERATOR_FC)
|
|
|
|
|
|
# finally list compilers to try
|
|
|
- IF(CMAKE_Fortran_COMPILER_INIT)
|
|
|
- SET(CMAKE_Fortran_COMPILER_LIST ${CMAKE_Fortran_COMPILER_INIT})
|
|
|
- ELSE(CMAKE_Fortran_COMPILER_INIT)
|
|
|
+ IF(NOT CMAKE_Fortran_COMPILER_INIT)
|
|
|
# Known compilers:
|
|
|
# f77/f90/f95: generic compiler names
|
|
|
# g77: GNU Fortran 77 compiler
|
|
|
@@ -77,41 +77,10 @@ IF(NOT CMAKE_Fortran_COMPILER)
|
|
|
SET(_Fortran_COMPILER_NAMES_PathScale pathf2003 pathf95 pathf90)
|
|
|
SET(_Fortran_COMPILER_NAMES_XL xlf)
|
|
|
SET(_Fortran_COMPILER_NAMES_VisualAge xlf95 xlf90 xlf)
|
|
|
-
|
|
|
- # Prefer vendors matching the C and C++ compilers.
|
|
|
- SET(CMAKE_Fortran_COMPILER_LIST
|
|
|
- ${_Fortran_COMPILER_NAMES_${CMAKE_C_COMPILER_ID}}
|
|
|
- ${_Fortran_COMPILER_NAMES_${CMAKE_CXX_COMPILER_ID}}
|
|
|
- ${CMAKE_Fortran_COMPILER_LIST})
|
|
|
- LIST(REMOVE_DUPLICATES CMAKE_Fortran_COMPILER_LIST)
|
|
|
- ENDIF(CMAKE_Fortran_COMPILER_INIT)
|
|
|
-
|
|
|
- # Look for directories containing the C and C++ compilers.
|
|
|
- SET(_Fortran_COMPILER_HINTS)
|
|
|
- FOREACH(lang C CXX)
|
|
|
- IF(CMAKE_${lang}_COMPILER AND IS_ABSOLUTE "${CMAKE_${lang}_COMPILER}")
|
|
|
- GET_FILENAME_COMPONENT(_hint "${CMAKE_${lang}_COMPILER}" PATH)
|
|
|
- IF(IS_DIRECTORY "${_hint}")
|
|
|
- LIST(APPEND _Fortran_COMPILER_HINTS "${_hint}")
|
|
|
- ENDIF()
|
|
|
- SET(_hint)
|
|
|
- ENDIF()
|
|
|
- ENDFOREACH()
|
|
|
-
|
|
|
- # Find the compiler.
|
|
|
- IF(_Fortran_COMPILER_HINTS)
|
|
|
- # Prefer directories containing C and C++ compilers.
|
|
|
- LIST(REMOVE_DUPLICATES _Fortran_COMPILER_HINTS)
|
|
|
- FIND_PROGRAM(CMAKE_Fortran_COMPILER
|
|
|
- NAMES ${CMAKE_Fortran_COMPILER_LIST}
|
|
|
- PATHS ${_Fortran_COMPILER_HINTS}
|
|
|
- NO_DEFAULT_PATH
|
|
|
- DOC "Fortran compiler")
|
|
|
ENDIF()
|
|
|
- FIND_PROGRAM(CMAKE_Fortran_COMPILER NAMES ${CMAKE_Fortran_COMPILER_LIST} DOC "Fortran compiler")
|
|
|
- IF(CMAKE_Fortran_COMPILER_INIT AND NOT CMAKE_Fortran_COMPILER)
|
|
|
- SET(CMAKE_Fortran_COMPILER "${CMAKE_Fortran_COMPILER_INIT}" CACHE FILEPATH "Fortran compiler" FORCE)
|
|
|
- ENDIF(CMAKE_Fortran_COMPILER_INIT AND NOT CMAKE_Fortran_COMPILER)
|
|
|
+
|
|
|
+ _cmake_find_compiler(Fortran)
|
|
|
+
|
|
|
ELSE(NOT CMAKE_Fortran_COMPILER)
|
|
|
# we only get here if CMAKE_Fortran_COMPILER was specified using -D or a pre-made CMakeCache.txt
|
|
|
# (e.g. via ctest) or set in CMAKE_TOOLCHAIN_FILE
|