Files
extra/trackballs/find_guile.patch
2025-06-22 20:39:04 -05:00

96 lines
4.0 KiB
Diff

diff --git a/cmake/FindGuile.cmake b/cmake/FindGuile.cmake
index 844e817..46ef61b 100644
--- a/cmake/FindGuile.cmake
+++ b/cmake/FindGuile.cmake
@@ -1,36 +1,71 @@
-# Locate Guile.
+# Locate Guile.
# Note: `guile-config` ultimately calls pkg-config anyway
# Nothing gets marked `advanced` since there aren't that many variables
-find_program(GUILE_SNARF NAMES guile-snarf guile-snarf3.0 guile-snarf2.2 guile-snarf2.0)
+# Use PkgConfig when possible to find the version of guile which is available,
+# and then use its results as hints toward the actual library/include paths
-# PkgConfig is only there to provide hints
find_package(PkgConfig)
-pkg_check_modules(PC_GUILE QUIET guile)
+pkg_check_modules(PC_GUILE QUIET guile-3.0)
+if (PC_GUILE_FOUND)
+ find_program(GUILE_SNARF NAMES guile-snarf3.0 guile-snarf)
+ find_path(GUILE_INCLUDE_DIR libguile.h
+ HINTS ${PC_GUILE_INCLUDEDIR} ${PC_GUILE_INCLUDE_DIRS}
+ PATH_SUFFIXES guile/3.0 guile)
+ find_library(GUILE_LIBRARY NAMES guile-3.0 guile
+ HINTS ${PC_GUILE_LIBDIR} ${PC_GUILE_LIBRARY_DIRS} )
+endif(PC_GUILE_FOUND)
+
if (NOT PC_GUILE_FOUND)
- pkg_check_modules(PC_GUILE QUIET guile-3.0)
- if (NOT PC_GUILE_FOUND)
pkg_check_modules(PC_GUILE QUIET guile-2.2)
- if (NOT PC_GUILE_FOUND)
- pkg_check_modules(PC_GUILE QUIET guile-2.0)
- endif(NOT PC_GUILE_FOUND)
- endif(NOT PC_GUILE_FOUND)
+ if (PC_GUILE_FOUND)
+ find_program(GUILE_SNARF NAMES guile-snarf2.2 guile-snarf)
+ find_path(GUILE_INCLUDE_DIR libguile.h
+ HINTS ${PC_GUILE_INCLUDEDIR} ${PC_GUILE_INCLUDE_DIRS}
+ PATH_SUFFIXES guile/2.2 guile)
+ find_library(GUILE_LIBRARY NAMES guile-2.2 guile
+ HINTS ${PC_GUILE_LIBDIR} ${PC_GUILE_LIBRARY_DIRS} )
+ endif(PC_GUILE_FOUND)
endif(NOT PC_GUILE_FOUND)
+if (NOT PC_GUILE_FOUND)
+ pkg_check_modules(PC_GUILE QUIET guile-2.0)
+ if (PC_GUILE_FOUND)
+ find_program(GUILE_SNARF NAMES guile-snarf2.0 guile-snarf)
+ find_path(GUILE_INCLUDE_DIR libguile.h
+ HINTS ${PC_GUILE_INCLUDEDIR} ${PC_GUILE_INCLUDE_DIRS}
+ PATH_SUFFIXES guile/2.0 guile)
+ find_library(GUILE_LIBRARY NAMES guile-2.0 guile
+ HINTS ${PC_GUILE_LIBDIR} ${PC_GUILE_LIBRARY_DIRS} )
+ endif(PC_GUILE_FOUND)
+endif(NOT PC_GUILE_FOUND)
-set(GUILE_DEFINITIONS ${PC_GUILE_CFLAGS_OTHER})
+if (NOT PC_GUILE_FOUND)
+ pkg_check_modules(PC_GUILE QUIET guile)
+ if (PC_GUILE_FOUND)
+ find_program(GUILE_SNARF NAMES guile-snarf)
+ find_path(GUILE_INCLUDE_DIR libguile.h
+ HINTS ${PC_GUILE_INCLUDEDIR} ${PC_GUILE_INCLUDE_DIRS}
+ PATH_SUFFIXES guile)
+ find_library(GUILE_LIBRARY NAMES guile
+ HINTS ${PC_GUILE_LIBDIR} ${PC_GUILE_LIBRARY_DIRS} )
+ endif(PC_GUILE_FOUND)
+endif(NOT PC_GUILE_FOUND)
-find_path(GUILE_INCLUDE_DIR libguile.h
- HINTS ${PC_GUILE_INCLUDEDIR} ${PC_GUILE_INCLUDE_DIRS}
- PATH_SUFFIXES guile guile/3.0 guile/2.2 guile/2.0)
+if (NOT PC_GUILE_FOUND)
+ find_program(GUILE_SNARF NAMES
+ guile-snarf3.0 guile-snarf2.2 guile-snarf2.0 guile-snarf)
+ find_path(GUILE_INCLUDE_DIR libguile.h
+ PATH_SUFFIXES guile/3.0 guile/2.2 guile/2.0 guile)
+ find_library(GUILE_LIBRARY NAMES guile-3.0 guile-2.2 guile-2.0 guile)
+endif(NOT PC_GUILE_FOUND)
-find_library(GUILE_LIBRARY NAMES guile guile-3.0 guile-2.2 guile-2.0
- HINTS ${PC_GUILE_LIBDIR} ${PC_GUILE_LIBRARY_DIRS} )
+set(GUILE_DEFINITIONS ${PC_GUILE_CFLAGS_OTHER})
include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(Guile REQUIRED_VARS
- GUILE_LIBRARY GUILE_INCLUDE_DIR
- VERSION_VAR PC_GUILE_VERSION)
+find_package_handle_standard_args(Guile
+ REQUIRED_VARS GUILE_LIBRARY GUILE_INCLUDE_DIR
+ VERSION_VAR PC_GUILE_VERSION)
set(GUILE_LIBRARIES ${GUILE_LIBRARY} )
set(GUILE_INCLUDE_DIRS ${GUILE_INCLUDE_DIR} )