OverviewFilesCommitsIssuesDocsReleasesPeers

opencog-cogutil commits / b04fed8

FindGuile with pkgconfig
This avoids the hard-coded paths that are tripping up guix.
b04fed8fa229382513c145becf97871d3f8744bf
by Linas Vepstas <linasvepstas@gmail.com> · 2025-12-15T17:46:14.000Z

Changed files (1) +27 -52

cmake/FindGuile.cmake +27 -52
……@@ -1,50 +1,29 @@
1# Copyright (c) 2008, 2014 OpenCog.org (http://opencog.org)
1# Copyright (c) 2008, 2014, 2025 OpenCog.org (http://opencog.org)
22#
33# Redistribution and use is allowed according to the terms of the BSD license.
44# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
55
6# - Try to find Guile; Once done this will define
6# - Try to find Guile using pkg-config; Once done this will define
77#
88# GUILE_FOUND - system has the GUILE library
99# GUILE_INCLUDE_DIRS - the GUILE include directory
1010# GUILE_LIBRARIES - The libraries needed to use GUILE
1111
12FIND_PACKAGE(PkgConfig)
1213
13# Look for the header file
14# Look for guile-3.0 first, then 2.2
15# Macports for OSX puts things in /opt/local
16FIND_PATH(GUILE_INCLUDE_DIR libguile.h
17 /usr/include/guile/3.0
18 /usr/local/include/guile/3.0
19 /opt/local/include/guile/3.0
20
21 /usr/include/guile/2.2
22 /usr/local/include/guile/2.2
23 /opt/local/include/guile/2.2
24
25 /opt/homebrew/include/guile/3.0
26)
27
28# Look for the library
29FIND_LIBRARY(GUILE_LIBRARY NAMES guile-3.0 guile-2.2 PATHS
30 /usr/lib
31 /usr/local/lib
32 /opt/local/lib
33)
34
35# Copy the results to the output variables.
36IF(GUILE_INCLUDE_DIR AND GUILE_LIBRARY)
37 SET(GUILE_FOUND 1)
38 SET(GUILE_LIBRARIES ${GUILE_LIBRARY})
39 SET(GUILE_INCLUDE_DIRS ${GUILE_INCLUDE_DIR})
40ELSE(GUILE_INCLUDE_DIR AND GUILE_LIBRARY)
41 SET(GUILE_FOUND 0)
42 SET(GUILE_LIBRARIES)
43 SET(GUILE_INCLUDE_DIRS)
44ENDIF(GUILE_INCLUDE_DIR AND GUILE_LIBRARY)
14# Try guile-3.0 first, then 2.2
15PKG_CHECK_MODULES(GUILE guile-3.0 QUIET)
16IF(NOT GUILE_FOUND)
17 PKG_CHECK_MODULES(GUILE guile-2.2 QUIET)
18ENDIF()
4519
20IF(GUILE_FOUND)
21 # pkg-config sets GUILE_INCLUDE_DIRS and GUILE_LIBRARIES
22 # but we also need GUILE_INCLUDE_DIR (singular) for version check
23 LIST(GET GUILE_INCLUDE_DIRS 0 GUILE_INCLUDE_DIR)
24ENDIF()
4625
47# check guile's version if we're using cmake >= 2.6
26# Check guile's version from the header file
4827IF(GUILE_INCLUDE_DIR)
4928 SET(GUILE_VERSION_MAJOR 0)
5029 SET(GUILE_VERSION_MINOR 0)
……@@ -52,10 +31,9 @@ IF(GUILE_INCLUDE_DIR)
5231
5332 IF(NOT EXISTS "${GUILE_INCLUDE_DIR}/libguile/version.h")
5433 MESSAGE(FATAL_ERROR "Found ${GUILE_INCLUDE_DIR}/libguile.h but not version.h; check your guile installation!")
55 ENDIF(NOT EXISTS "${GUILE_INCLUDE_DIR}/libguile/version.h")
34 ENDIF()
5635
5736 # Extract the libguile version from the 'version.h' file
58 SET(GUILE_MAJOR_VERSION 0)
5937 FILE(READ "${GUILE_INCLUDE_DIR}/libguile/version.h" _GUILE_VERSION_H_CONTENTS)
6038
6139 STRING(REGEX MATCH "#define SCM_MAJOR_VERSION[ ]+([0-9])" _MATCH "${_GUILE_VERSION_H_CONTENTS}")
……@@ -70,41 +48,38 @@ IF(GUILE_INCLUDE_DIR)
7048 # Check found version against required one
7149 IF (DEFINED Guile_FIND_VERSION AND ${GUILE_VERSION} VERSION_LESS Guile_FIND_VERSION)
7250 SET(GUILE_FOUND FALSE)
73 ELSE ()
74 SET(GUILE_FOUND TRUE)
7551 ENDIF ()
76
77ENDIF(GUILE_INCLUDE_DIR)
52ENDIF()
7853
7954IF (GUILE_FOUND AND GUILE_VERSION_MAJOR EQUAL 3)
8055 ADD_DEFINITIONS(-DHAVE_GUILE3)
81ENDIF (GUILE_FOUND AND GUILE_VERSION_MAJOR EQUAL 3)
56ENDIF ()
8257
8358IF (GUILE_FOUND AND GUILE_VERSION_MAJOR EQUAL 2)
8459 ADD_DEFINITIONS(-DHAVE_GUILE2)
8560 IF (GUILE_VERSION_MINOR GREATER 0)
8661 ADD_DEFINITIONS(-DHAVE_GUILE_2_2)
87 ENDIF (GUILE_VERSION_MINOR GREATER 0)
88ENDIF (GUILE_FOUND AND GUILE_VERSION_MAJOR EQUAL 2)
62 ENDIF ()
63ENDIF ()
8964
9065# Report the results.
9166IF (Guile_FIND_VERSION)
9267 SET(_GUILE_VERSION_MESSAGE_STRING "(${GUILE_VERSION} >= ${Guile_FIND_VERSION})")
93ENDIF (Guile_FIND_VERSION)
68ENDIF ()
9469
9570IF(GUILE_FOUND)
9671 IF(NOT GUILE_FIND_QUIETLY)
9772 MESSAGE(STATUS "Guile ${_GUILE_VERSION_MESSAGE_STRING} was found.")
98 ENDIF(NOT GUILE_FIND_QUIETLY)
99ELSE(GUILE_FOUND)
73 ENDIF()
74ELSE()
10075 SET(GUILE_DIR_MESSAGE "Guile ${_GUILE_VERSION_MESSAGE_STRING} was not found. Make sure GUILE_LIBRARY and GUILE_INCLUDE_DIR are set.")
10176 IF(NOT GUILE_FIND_QUIETLY)
10277 MESSAGE(STATUS "${GUILE_DIR_MESSAGE}")
103 ELSE(NOT GUILE_FIND_QUIETLY)
78 ELSE()
10479 IF(GUILE_FIND_REQUIRED)
10580 MESSAGE(FATAL_ERROR "${GUILE_DIR_MESSAGE}")
106 ENDIF(GUILE_FIND_REQUIRED)
107 ENDIF(NOT GUILE_FIND_QUIETLY)
108ENDIF(GUILE_FOUND)
81 ENDIF()
82 ENDIF()
83ENDIF()
10984
110MARK_AS_ADVANCED(GUILE_INCLUDE_DIR GUILE_LIBRARY)
85MARK_AS_ADVANCED(GUILE_INCLUDE_DIR GUILE_LIBRARIES)