CheckFortranFunctionExists.cmake 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. # - Check if the Fortran function exists.
  2. # CHECK_FORTRAN_FUNCTION_EXISTS(FUNCTION VARIABLE)
  3. # - macro which checks if the Fortran function exists
  4. # FUNCTION - the name of the Fortran function
  5. # VARIABLE - variable to store the result
  6. #
  7. # The following variables may be set before calling this macro to
  8. # modify the way the check is run:
  9. #
  10. # CMAKE_REQUIRED_LIBRARIES = list of libraries to link
  11. #
  12. macro(CHECK_FORTRAN_FUNCTION_EXISTS FUNCTION VARIABLE)
  13. if(NOT DEFINED ${VARIABLE})
  14. message(STATUS "Looking for Fortran ${FUNCTION}")
  15. if(CMAKE_REQUIRED_LIBRARIES)
  16. set(CHECK_FUNCTION_EXISTS_ADD_LIBRARIES
  17. "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
  18. else(CMAKE_REQUIRED_LIBRARIES)
  19. set(CHECK_FUNCTION_EXISTS_ADD_LIBRARIES)
  20. endif(CMAKE_REQUIRED_LIBRARIES)
  21. FILE(WRITE
  22. ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompiler.f
  23. "
  24. program TESTFortran
  25. external ${FUNCTION}
  26. end
  27. "
  28. )
  29. try_compile(${VARIABLE}
  30. ${CMAKE_BINARY_DIR}
  31. ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompiler.f
  32. CMAKE_FLAGS "${CHECK_FUNCTION_EXISTS_ADD_LIBRARIES}"
  33. OUTPUT_VARIABLE OUTPUT
  34. )
  35. if(${VARIABLE})
  36. set(${VARIABLE} 1 CACHE INTERNAL "Have Fortran function ${FUNCTION}")
  37. message(STATUS "Looking for Fortran ${FUNCTION} - found")
  38. file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
  39. "Determining if the Fortran ${FUNCTION} exists passed with the following output:\n"
  40. "${OUTPUT}\n\n")
  41. else(${VARIABLE})
  42. message(STATUS "Looking for Fortran ${FUNCTION} - not found")
  43. set(${VARIABLE} "" CACHE INTERNAL "Have Fortran function ${FUNCTION}")
  44. file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
  45. "Determining if the Fortran ${FUNCTION} exists failed with the following output:\n"
  46. "${OUTPUT}\n\n")
  47. endif(${VARIABLE})
  48. endif(NOT DEFINED ${VARIABLE})
  49. endmacro(CHECK_FORTRAN_FUNCTION_EXISTS)