Hi, please find attached for potential inclusion into CMake a new Module that tests Fortran compiler flags. It is a modified copy of the existing CheckCCompilerFlag.cmake module.
Thanks, nick
# - Check whether the Fortran compiler supports a given flag. # CHECK_Fortran_COMPILER_FLAG(<flag> <var>) # <flag> - the compiler flag # <var> - variable to store the result # This internally calls the check_fortran_source_compiles macro and # sets CMAKE_REQUIRED_DEFINITIONS to <flag>. # See help for CheckFortranSourceCompiles for a listing of variables # that can otherwise modify the build. # The result only tells that the compiler does not give an error message when # it encounters the flag. If the flag has any effect or even a specific one is # beyond the scope of this module. #============================================================================= # Copyright 2006-2011 Kitware, Inc. # Copyright 2006 Alexander Neundorf <neund...@kde.org> # Copyright 2011 Matthias Kretz <kr...@kde.org> # # 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 distribute this file outside of CMake, substitute the full # License text for the above reference.) include(${CMAKE_SOURCE_DIR}/cmake-scripts//CheckFortranSourceCompiles.cmake) macro (CHECK_Fortran_COMPILER_FLAG _FLAG _RESULT) set(SAFE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}") set(CMAKE_REQUIRED_DEFINITIONS "${_FLAG}") # Normalize locale during test compilation. set(_CheckFortranCompilerFlag_LOCALE_VARS LC_ALL LC_MESSAGES LANG) foreach(v ${_CheckFortranCompilerFlag_LOCALE_VARS}) set(_CheckFortranCompilerFlag_SAVED_${v} "$ENV{${v}}") set(ENV{${v}} C) endforeach() CHECK_Fortran_SOURCE_COMPILES("program test\nstop\nend program test" ${_RESULT} # Some compilers do not fail with a bad flag FAIL_REGEX "command line option .* is valid for .* but not for C" # GNU FAIL_REGEX "unrecognized .*option" # GNU FAIL_REGEX "unknown .*option" # Clang FAIL_REGEX "ignoring unknown option" # MSVC FAIL_REGEX "warning D9002" # MSVC, any lang FAIL_REGEX "option.*not supported" # Intel FAIL_REGEX "invalid argument .*option" # Intel FAIL_REGEX "ignoring option .*argument required" # Intel FAIL_REGEX "[Uu]nknown option" # HP FAIL_REGEX "[Ww]arning: [Oo]ption" # SunPro FAIL_REGEX "command option .* is not recognized" # XL FAIL_REGEX "WARNING: unknown flag:" # Open64 ) foreach(v ${_CheckFortranCompilerFlag_LOCALE_VARS}) set(ENV{${v}} ${_CheckFortranCompilerFlag_SAVED_${v}}) unset(_CheckFortranCompilerFlag_SAVED_${v}) endforeach() unset(_CheckFortranCompilerFlag_LOCALE_VARS) set (CMAKE_REQUIRED_DEFINITIONS "${SAFE_CMAKE_REQUIRED_DEFINITIONS}") endmacro ()
-- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake