FindGuile.cmake 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. # Copyright (c) 2008, 2014 OpenCog.org (http://opencog.org)
  2. #
  3. # Redistribution and use is allowed according to the terms of the BSD license.
  4. # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
  5. # - Try to find Guile; Once done this will define
  6. #
  7. # GUILE_FOUND - system has the GUILE library
  8. # GUILE_INCLUDE_DIRS - the GUILE include directory
  9. # GUILE_LIBRARIES - The libraries needed to use GUILE
  10. # GUILE_VERSION_STRING - Version
  11. # GUILE_SITE_DIR - site dir
  12. # GUILE_EXTENSION_DIR - extension dir
  13. # GUILE_ROOT_DIR - prefix dir
  14. # (lloda) grabbed from https://github.com/stevengj/nlopt/blob/master/cmake/FindGuile.cmake
  15. # added 3.0 to version list
  16. # $GUILE in environment overrides the other searches.
  17. if (NOT "$ENV{GUILE}" STREQUAL "")
  18. set(GUILE "$ENV{GUILE}" CACHE INTERNAL "Copied from environment variable")
  19. get_filename_component(GUILE_ROOT "$ENV{GUILE}" DIRECTORY)
  20. set(GUILE_INCLUDE_DIR_HINT "${GUILE_ROOT}/../include")
  21. set(GUILE_LIB_DIR_HINT "${GUILE_ROOT}/../lib")
  22. endif()
  23. # Look for guile-3.0 first, then 2.2, 2.0, 1.8
  24. # Macports for OSX puts things in /opt/local
  25. # Look for the header file
  26. find_path (GUILE_INCLUDE_DIR libguile.h
  27. PATH_SUFFIXES guile/3.0 guile/2.2 guile/2.0 guile/1.8 libguile guile
  28. HINTS /opt/local/include ${GUILE_INCLUDE_DIR_HINT})
  29. # Look for the library
  30. find_library (GUILE_LIBRARY
  31. NAMES guile-3.0 guile-2.2 guile-2.0 guile
  32. HINTS /opt/local/lib ${GUILE_LIB_DIR_HINT})
  33. set (GUILE_INCLUDE_DIRS ${GUILE_INCLUDE_DIR})
  34. set (GUILE_LIBRARIES ${GUILE_LIBRARY})
  35. # check guile's version if we're using cmake >= 2.6
  36. if (GUILE_INCLUDE_DIR)
  37. SET(GUILE_VERSION_MAJOR 0)
  38. SET(GUILE_VERSION_MINOR 0)
  39. SET(GUILE_VERSION_PATCH 0)
  40. IF(NOT EXISTS "${GUILE_INCLUDE_DIR}/libguile.h")
  41. message("OMG")
  42. ENDIF(NOT EXISTS "${GUILE_INCLUDE_DIR}/libguile.h")
  43. IF(NOT EXISTS "${GUILE_INCLUDE_DIR}/libguile/version.h")
  44. MESSAGE(FATAL_ERROR "Found ${GUILE_INCLUDE_DIR}/libguile.h but not version.h; check your guile installation!")
  45. ENDIF(NOT EXISTS "${GUILE_INCLUDE_DIR}/libguile/version.h")
  46. # Extract the libguile version from the 'version.h' file
  47. SET(GUILE_MAJOR_VERSION 0)
  48. FILE(READ "${GUILE_INCLUDE_DIR}/libguile/version.h" _GUILE_VERSION_H_CONTENTS)
  49. STRING(REGEX MATCH "#define SCM_MAJOR_VERSION[ ]+([0-9])" _MATCH "${_GUILE_VERSION_H_CONTENTS}")
  50. SET(GUILE_VERSION_MAJOR ${CMAKE_MATCH_1})
  51. STRING(REGEX MATCH "#define SCM_MINOR_VERSION[ ]+([0-9]+)" _MATCH "${_GUILE_VERSION_H_CONTENTS}")
  52. SET(GUILE_VERSION_MINOR ${CMAKE_MATCH_1})
  53. STRING(REGEX MATCH "#define SCM_MICRO_VERSION[ ]+([0-9]+)" _MATCH "${_GUILE_VERSION_H_CONTENTS}")
  54. SET(GUILE_VERSION_PATCH ${CMAKE_MATCH_1})
  55. SET(GUILE_VERSION_STRING "${GUILE_VERSION_MAJOR}.${GUILE_VERSION_MINOR}.${GUILE_VERSION_PATCH}")
  56. endif ()
  57. find_program(GUILE_EXECUTABLE
  58. NAMES guile
  59. HINTS ${GUILE_ROOT})
  60. find_program(GUILE_CONFIG_EXECUTABLE
  61. NAMES guile-config
  62. HINTS ${GUILE_ROOT})
  63. if (GUILE_CONFIG_EXECUTABLE)
  64. execute_process (COMMAND ${GUILE_CONFIG_EXECUTABLE} info prefix
  65. OUTPUT_VARIABLE GUILE_ROOT_DIR
  66. OUTPUT_STRIP_TRAILING_WHITESPACE)
  67. execute_process (COMMAND ${GUILE_CONFIG_EXECUTABLE} info sitedir
  68. OUTPUT_VARIABLE GUILE_SITE_DIR
  69. OUTPUT_STRIP_TRAILING_WHITESPACE)
  70. execute_process (COMMAND ${GUILE_CONFIG_EXECUTABLE} info extensiondir
  71. OUTPUT_VARIABLE GUILE_EXTENSION_DIR
  72. OUTPUT_STRIP_TRAILING_WHITESPACE)
  73. endif ()
  74. message ("* GUILE_EXECUTABLE: ${GUILE_EXECUTABLE}")
  75. message ("* GUILE_CONFIG_EXECUTABLE: ${GUILE_CONFIG_EXECUTABLE}")
  76. message ("* GUILE_ROOT: ${GUILE_ROOT}")
  77. message ("* GUILE_ROOT_DIR: ${GUILE_ROOT_DIR}")
  78. message ("* GUILE_INCLUDE_DIRS: ${GUILE_INCLUDE_DIRS}")
  79. message ("* GUILE_LIBRARIES: ${GUILE_LIBRARIES}")
  80. message ("* GUILE_VERSION_STRING: ${GUILE_VERSION_STRING}")
  81. # handle REQUIRED and QUIET options
  82. include (FindPackageHandleStandardArgs)
  83. find_package_handle_standard_args (Guile
  84. REQUIRED_VARS GUILE_EXECUTABLE GUILE_INCLUDE_DIRS GUILE_LIBRARIES
  85. VERSION_VAR GUILE_VERSION_STRING)
  86. mark_as_advanced (GUILE_INCLUDE_DIR GUILE_LIBRARY)