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