[Cmake-commits] [cmake-commits] king committed CMakeLists.txt 1.166 1.167 CheckFortran.cmake NONE 1.1

cmake-commits at cmake.org cmake-commits at cmake.org
Thu Dec 10 12:16:45 EST 2009


Update of /cvsroot/CMake/CMake/Tests
In directory public:/mounts/ram/cvs-serv9288/Tests

Modified Files:
	CMakeLists.txt 
Added Files:
	CheckFortran.cmake 
Log Message:
New decision method to enable Fortran tests

CMake does not enable Fortran for its own build, but it needs to find a
Fortran compiler to know if it is possible to enable Fortran tests.
Previously we searched for a hard-coded list of Fortran compilers which
was duplicated from the CMakeDetermineFortranCompiler.cmake module.  We
now run CMake on a small test project that enables the Fortran language
and reports the compiler it found.  This represents a more realistic
check of whether the Fortran tests will be able to find a compiler.


Index: CMakeLists.txt
===================================================================
RCS file: /cvsroot/CMake/CMake/Tests/CMakeLists.txt,v
retrieving revision 1.166
retrieving revision 1.167
diff -C 2 -d -r1.166 -r1.167
*** CMakeLists.txt	10 Dec 2009 15:34:36 -0000	1.166
--- CMakeLists.txt	10 Dec 2009 17:16:35 -0000	1.167
***************
*** 1473,1487 ****
    # fortran does not work for IDE builds because
    # CMAKE_STANDARD_LIBRARIES needs to be per language
!   IF(CMAKE_TEST_GENERATOR MATCHES "Makefiles"
!      OR CMAKE_TEST_GENERATOR MATCHES "KDevelop")
!     # see if we can find a fortran compiler on the machine
!     # if so, add the fortran test and see if it works.
!     SET(CMAKE_Fortran_COMPILER_LIST ifort ifc efc f95 pgf95
!       lf95 xlf95 fort gfortran gfortran-4 f90  pgf90   xlf90
!       epcf90 f77  fort77 frt pgf77  xlf  fl32 af77 g77  )
!     FIND_PROGRAM(CMAKE_Fortran_COMPILER_FULLPATH NAMES 
!       ${CMAKE_Fortran_COMPILER_LIST} )
!     MARK_AS_ADVANCED(CMAKE_Fortran_COMPILER_FULLPATH)
!     IF(CMAKE_Fortran_COMPILER_FULLPATH)
        ADD_TEST(Fortran ${CMAKE_CTEST_COMMAND}
          --build-and-test
--- 1473,1479 ----
    # fortran does not work for IDE builds because
    # CMAKE_STANDARD_LIBRARIES needs to be per language
!   IF(CMAKE_TEST_GENERATOR MATCHES "Make|KDevelop")
!     INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/CheckFortran.cmake)
!     IF(CMAKE_Fortran_COMPILER)
        ADD_TEST(Fortran ${CMAKE_CTEST_COMMAND}
          --build-and-test
***************
*** 1494,1500 ****
          --test-command testf)
        LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Fortran")
!     ENDIF(CMAKE_Fortran_COMPILER_FULLPATH)
!   ENDIF(CMAKE_TEST_GENERATOR MATCHES "Makefiles"
!      OR CMAKE_TEST_GENERATOR MATCHES "KDevelop")
  
    IF(NOT CMAKE_TEST_GENERATOR MATCHES "Xcode")
--- 1486,1491 ----
          --test-command testf)
        LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Fortran")
!     ENDIF()
!   ENDIF()
  
    IF(NOT CMAKE_TEST_GENERATOR MATCHES "Xcode")

--- NEW FILE: CheckFortran.cmake ---

#=============================================================================
# Copyright 2009 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distributed this file outside of CMake, substitute the full
#  License text for the above reference.)

if(NOT DEFINED CMAKE_Fortran_COMPILER)
  set(_desc "Looking for a Fortran compiler")
  message(STATUS ${_desc})
  file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/CheckFortran/CMakeLists.txt"
    "cmake_minimum_required(VERSION 2.4)
project(CheckFortran Fortran)
file(WRITE \"\${CMAKE_CURRENT_BINARY_DIR}/result.cmake\"
  \"set(CMAKE_Fortran_COMPILER \\\"\${CMAKE_Fortran_COMPILER}\\\")\\n\")
")
  execute_process(
    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/CheckFortran
    COMMAND ${CMAKE_COMMAND} . -G ${CMAKE_GENERATOR}
    OUTPUT_VARIABLE output
    ERROR_VARIABLE output
    RESULT_VARIABLE result
    )
  include(${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/CheckFortran/result.cmake OPTIONAL)
  if(CMAKE_Fortran_COMPILER AND "${result}" STREQUAL "0")
    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
      "${_desc} passed with the following output:\n"
      "${output}\n")
  else()
    set(CMAKE_Fortran_COMPILER NOTFOUND)
    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
      "${_desc} failed with the following output:\n"
      "${output}\n")
  endif()
  message(STATUS "${_desc} - ${CMAKE_Fortran_COMPILER}")
  set(CMAKE_Fortran_COMPILER "${CMAKE_Fortran_COMPILER}" CACHE FILEPATH "Fortran compiler")
  mark_as_advanced(CMAKE_Fortran_COMPILER)
endif()



More information about the Cmake-commits mailing list