1 # Copyright (c) 2008, 2014 OpenCog.org (http://opencog.org)
3 # Redistribution and use is allowed according to the terms of the BSD license.
4 # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
6 # - Try to find Guile; Once done this will define
8 # GUILE_FOUND - system has the GUILE library
9 # GUILE_INCLUDE_DIRS - the GUILE include directory
10 # GUILE_LIBRARIES - The libraries needed to use GUILE
11 # GUILE_VERSION_STRING - Version
12 # GUILE_SITE_DIR - site dir
13 # GUILE_EXTENSION_DIR - extension dir
14 # GUILE_ROOT_DIR - prefix dir
16 # Look for the header file
17 # Look for guile-2.2 first, then 2.0, then 1.8
18 # Macports for OSX puts things in /opt/local
19 find_path (GUILE_INCLUDE_DIR libguile.h
26 HINTS /opt/local/include
29 # Look for the library
30 find_library (GUILE_LIBRARY NAMES guile-2.2 guile-2.0 guile
36 set (GUILE_LIBRARIES ${GUILE_LIBRARY})
37 set (GUILE_INCLUDE_DIRS ${GUILE_INCLUDE_DIR})
40 # check guile's version if we're using cmake >= 2.6
41 if (GUILE_INCLUDE_DIR)
42 SET(GUILE_VERSION_MAJOR 0)
43 SET(GUILE_VERSION_MINOR 0)
44 SET(GUILE_VERSION_PATCH 0)
46 IF(NOT EXISTS "${GUILE_INCLUDE_DIR}/libguile/version.h")
47 MESSAGE(FATAL_ERROR "Found ${GUILE_INCLUDE_DIR}/libguile.h but not version.h; check your guile installation!")
48 ENDIF(NOT EXISTS "${GUILE_INCLUDE_DIR}/libguile/version.h")
50 # Extract the libguile version from the 'version.h' file
51 SET(GUILE_MAJOR_VERSION 0)
52 FILE(READ "${GUILE_INCLUDE_DIR}/libguile/version.h" _GUILE_VERSION_H_CONTENTS)
54 STRING(REGEX MATCH "#define SCM_MAJOR_VERSION[ ]+([0-9])" _MATCH "${_GUILE_VERSION_H_CONTENTS}")
55 SET(GUILE_VERSION_MAJOR ${CMAKE_MATCH_1})
56 STRING(REGEX MATCH "#define SCM_MINOR_VERSION[ ]+([0-9]+)" _MATCH "${_GUILE_VERSION_H_CONTENTS}")
57 SET(GUILE_VERSION_MINOR ${CMAKE_MATCH_1})
58 STRING(REGEX MATCH "#define SCM_MICRO_VERSION[ ]+([0-9]+)" _MATCH "${_GUILE_VERSION_H_CONTENTS}")
59 SET(GUILE_VERSION_PATCH ${CMAKE_MATCH_1})
61 SET(GUILE_VERSION_STRING "${GUILE_VERSION_MAJOR}.${GUILE_VERSION_MINOR}.${GUILE_VERSION_PATCH}")
65 find_program(GUILE_EXECUTABLE
69 find_program(GUILE_CONFIG_EXECUTABLE
74 if (GUILE_CONFIG_EXECUTABLE)
75 execute_process (COMMAND ${GUILE_CONFIG_EXECUTABLE} info prefix
76 OUTPUT_VARIABLE GUILE_ROOT_DIR
77 OUTPUT_STRIP_TRAILING_WHITESPACE)
79 execute_process (COMMAND ${GUILE_CONFIG_EXECUTABLE} info sitedir
80 OUTPUT_VARIABLE GUILE_SITE_DIR
81 OUTPUT_STRIP_TRAILING_WHITESPACE)
83 execute_process (COMMAND ${GUILE_CONFIG_EXECUTABLE} info extensiondir
84 OUTPUT_VARIABLE GUILE_EXTENSION_DIR
85 OUTPUT_STRIP_TRAILING_WHITESPACE)
88 # IF(GUILE_FOUND AND GUILE_VERSION_MAJOR EQUAL 2)
89 # ADD_DEFINITIONS(-DHAVE_GUILE2)
90 # ENDIF(GUILE_FOUND AND GUILE_VERSION_MAJOR EQUAL 2)
92 # handle REQUIRED and QUIET options
93 include (FindPackageHandleStandardArgs)
94 if (CMAKE_VERSION LESS 2.8.3)
95 find_package_handle_standard_args (Guile DEFAULT_MSG GUILE_ROOT_DIR GUILE_INCLUDE_DIRS GUILE_LIBRARIES GUILE_VERSION_STRING)
97 find_package_handle_standard_args (Guile REQUIRED_VARS GUILE_ROOT_DIR GUILE_INCLUDE_DIRS GUILE_LIBRARIES VERSION_VAR GUILE_VERSION_STRING)
101 MARK_AS_ADVANCED(GUILE_INCLUDE_DIR GUILE_LIBRARY)