mirror of
https://github.com/reactos/CMake.git
synced 2025-01-30 16:31:56 +00:00
9db3116226
Ancient versions of CMake required else(), endif(), and similar block termination commands to have arguments matching the command starting the block. This is no longer the preferred style. Run the following shell code: for c in else endif endforeach endfunction endmacro endwhile; do echo 's/\b'"$c"'\(\s*\)(.\+)/'"$c"'\1()/' done >convert.sed && git ls-files -z -- bootstrap '*.cmake' '*.cmake.in' '*CMakeLists.txt' | egrep -z -v '^(Utilities/cm|Source/kwsys/)' | egrep -z -v 'Tests/CMakeTests/While-Endwhile-' | xargs -0 sed -i -f convert.sed && rm convert.sed
70 lines
2.8 KiB
CMake
70 lines
2.8 KiB
CMake
# - Check if the Fortran function exists.
|
|
# CHECK_FORTRAN_FUNCTION_EXISTS(FUNCTION VARIABLE)
|
|
# - macro which checks if the Fortran function exists
|
|
# FUNCTION - the name of the Fortran function
|
|
# VARIABLE - variable to store the result
|
|
#
|
|
# The following variables may be set before calling this macro to
|
|
# modify the way the check is run:
|
|
#
|
|
# CMAKE_REQUIRED_LIBRARIES = list of libraries to link
|
|
|
|
#=============================================================================
|
|
# Copyright 2007-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 distribute this file outside of CMake, substitute the full
|
|
# License text for the above reference.)
|
|
|
|
include("${CMAKE_CURRENT_LIST_DIR}/CMakeExpandImportedTargets.cmake")
|
|
|
|
|
|
macro(CHECK_FORTRAN_FUNCTION_EXISTS FUNCTION VARIABLE)
|
|
if(NOT DEFINED ${VARIABLE})
|
|
message(STATUS "Looking for Fortran ${FUNCTION}")
|
|
if(CMAKE_REQUIRED_LIBRARIES)
|
|
# this one translates potentially used imported library targets to their files on disk
|
|
cmake_expand_imported_targets(_ADJUSTED_CMAKE_REQUIRED_LIBRARIES LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} CONFIGURATION "${CMAKE_TRY_COMPILE_CONFIGURATION}")
|
|
set(CHECK_FUNCTION_EXISTS_ADD_LIBRARIES
|
|
"-DLINK_LIBRARIES:STRING=${_ADJUSTED_CMAKE_REQUIRED_LIBRARIES}")
|
|
else()
|
|
set(CHECK_FUNCTION_EXISTS_ADD_LIBRARIES)
|
|
endif()
|
|
file(WRITE
|
|
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompiler.f
|
|
"
|
|
program TESTFortran
|
|
external ${FUNCTION}
|
|
call ${FUNCTION}()
|
|
end program TESTFortran
|
|
"
|
|
)
|
|
try_compile(${VARIABLE}
|
|
${CMAKE_BINARY_DIR}
|
|
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompiler.f
|
|
CMAKE_FLAGS "${CHECK_FUNCTION_EXISTS_ADD_LIBRARIES}"
|
|
OUTPUT_VARIABLE OUTPUT
|
|
)
|
|
# message(STATUS "${OUTPUT}")
|
|
if(${VARIABLE})
|
|
set(${VARIABLE} 1 CACHE INTERNAL "Have Fortran function ${FUNCTION}")
|
|
message(STATUS "Looking for Fortran ${FUNCTION} - found")
|
|
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
|
|
"Determining if the Fortran ${FUNCTION} exists passed with the following output:\n"
|
|
"${OUTPUT}\n\n")
|
|
else()
|
|
message(STATUS "Looking for Fortran ${FUNCTION} - not found")
|
|
set(${VARIABLE} "" CACHE INTERNAL "Have Fortran function ${FUNCTION}")
|
|
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
|
|
"Determining if the Fortran ${FUNCTION} exists failed with the following output:\n"
|
|
"${OUTPUT}\n\n")
|
|
endif()
|
|
endif()
|
|
endmacro()
|