chiark / gitweb /
Use trusty
[nlopt.git] / cmake / FindGuile.cmake
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
19 find_path (GUILE_INCLUDE_DIR libguile.h
20   PATH_SUFFIXES
21     guile/2.2
22     guile/2.0
23     guile/1.8
24     libguile
25     guile
26   HINTS /opt/local/include
27 )
28
29 # Look for the library
30 find_library (GUILE_LIBRARY NAMES guile-2.2 guile-2.0 guile
31   HINTS
32     /opt/local/lib
33 )
34
35
36 set (GUILE_LIBRARIES ${GUILE_LIBRARY})
37 set (GUILE_INCLUDE_DIRS ${GUILE_INCLUDE_DIR})
38
39
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)
45
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")
49
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)
53
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})
60
61   SET(GUILE_VERSION_STRING "${GUILE_VERSION_MAJOR}.${GUILE_VERSION_MINOR}.${GUILE_VERSION_PATCH}")
62
63 endif ()
64
65 find_program(GUILE_EXECUTABLE
66               NAMES guile
67            )
68
69 find_program(GUILE_CONFIG_EXECUTABLE
70               NAMES guile-config
71            )
72
73
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)
78
79   execute_process (COMMAND ${GUILE_CONFIG_EXECUTABLE} info sitedir
80                     OUTPUT_VARIABLE GUILE_SITE_DIR
81                     OUTPUT_STRIP_TRAILING_WHITESPACE)
82
83   execute_process (COMMAND ${GUILE_CONFIG_EXECUTABLE} info extensiondir
84                     OUTPUT_VARIABLE GUILE_EXTENSION_DIR
85                     OUTPUT_STRIP_TRAILING_WHITESPACE)
86 endif ()
87
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)
91
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)
96 else ()
97   find_package_handle_standard_args (Guile REQUIRED_VARS GUILE_ROOT_DIR GUILE_INCLUDE_DIRS GUILE_LIBRARIES VERSION_VAR GUILE_VERSION_STRING)
98 endif ()
99
100
101 MARK_AS_ADVANCED(GUILE_INCLUDE_DIR GUILE_LIBRARY)