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
6# - Try to find Guile; Once done this will define
7#
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
15
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
19find_path (GUILE_INCLUDE_DIR libguile.h
20  PATH_SUFFIXES
21    guile/3.0
22    guile/2.2
23    guile/2.0
24    guile/1.8
25    libguile
26    guile
27  HINTS /opt/local/include
28)
29
30# Look for the library
31find_library (GUILE_LIBRARY NAMES guile-3.0 guile-2.2 guile-2.0 guile
32  HINTS
33    /opt/local/lib
34)
35
36
37set (GUILE_LIBRARIES ${GUILE_LIBRARY})
38set (GUILE_INCLUDE_DIRS ${GUILE_INCLUDE_DIR})
39
40
41# check guile's version if we're using cmake >= 2.6
42if (GUILE_INCLUDE_DIR)
43  SET(GUILE_VERSION_MAJOR 0)
44  SET(GUILE_VERSION_MINOR 0)
45  SET(GUILE_VERSION_PATCH 0)
46
47  IF(NOT EXISTS "${GUILE_INCLUDE_DIR}/libguile/version.h")
48          MESSAGE(FATAL_ERROR "Found ${GUILE_INCLUDE_DIR}/libguile.h but not version.h; check your guile installation!")
49  ENDIF(NOT EXISTS "${GUILE_INCLUDE_DIR}/libguile/version.h")
50
51  # Extract the libguile version from the 'version.h' file
52  SET(GUILE_MAJOR_VERSION 0)
53  FILE(READ "${GUILE_INCLUDE_DIR}/libguile/version.h" _GUILE_VERSION_H_CONTENTS)
54
55  STRING(REGEX MATCH "#define SCM_MAJOR_VERSION[	 ]+([0-9])" _MATCH "${_GUILE_VERSION_H_CONTENTS}")
56  SET(GUILE_VERSION_MAJOR ${CMAKE_MATCH_1})
57  STRING(REGEX MATCH "#define SCM_MINOR_VERSION[	 ]+([0-9]+)" _MATCH "${_GUILE_VERSION_H_CONTENTS}")
58  SET(GUILE_VERSION_MINOR ${CMAKE_MATCH_1})
59  STRING(REGEX MATCH "#define SCM_MICRO_VERSION[	 ]+([0-9]+)" _MATCH "${_GUILE_VERSION_H_CONTENTS}")
60  SET(GUILE_VERSION_PATCH ${CMAKE_MATCH_1})
61
62  SET(GUILE_VERSION_STRING "${GUILE_VERSION_MAJOR}.${GUILE_VERSION_MINOR}.${GUILE_VERSION_PATCH}")
63
64endif ()
65
66find_program(GUILE_EXECUTABLE
67              NAMES guile
68           )
69
70find_program(GUILE_CONFIG_EXECUTABLE
71              NAMES guile-config
72           )
73
74
75if (GUILE_CONFIG_EXECUTABLE)
76  execute_process (COMMAND ${GUILE_CONFIG_EXECUTABLE} info prefix
77                    OUTPUT_VARIABLE GUILE_ROOT_DIR
78                    OUTPUT_STRIP_TRAILING_WHITESPACE)
79
80  execute_process (COMMAND ${GUILE_CONFIG_EXECUTABLE} info sitedir
81                    OUTPUT_VARIABLE GUILE_SITE_DIR
82                    OUTPUT_STRIP_TRAILING_WHITESPACE)
83
84  execute_process (COMMAND ${GUILE_CONFIG_EXECUTABLE} info extensiondir
85                    OUTPUT_VARIABLE GUILE_EXTENSION_DIR
86                    OUTPUT_STRIP_TRAILING_WHITESPACE)
87endif ()
88
89# IF(GUILE_FOUND AND GUILE_VERSION_MAJOR EQUAL 2)
90# 	ADD_DEFINITIONS(-DHAVE_GUILE2)
91# ENDIF(GUILE_FOUND AND GUILE_VERSION_MAJOR EQUAL 2)
92
93# handle REQUIRED and QUIET options
94include (FindPackageHandleStandardArgs)
95find_package_handle_standard_args (Guile REQUIRED_VARS GUILE_EXECUTABLE GUILE_ROOT_DIR GUILE_INCLUDE_DIRS GUILE_LIBRARIES VERSION_VAR GUILE_VERSION_STRING)
96
97
98mark_as_advanced (GUILE_INCLUDE_DIR GUILE_LIBRARY)
99