[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