r18846 - gnucash/trunk - Cutecash: Add version check for guile and define HAVE_GUILE18 if appropriate.

Christian Stimming cstim at code.gnucash.org
Fri Mar 5 15:41:40 EST 2010


Author: cstim
Date: 2010-03-05 15:41:40 -0500 (Fri, 05 Mar 2010)
New Revision: 18846
Trac: http://svn.gnucash.org/trac/changeset/18846

Added:
   gnucash/trunk/src/cmake_modules/FindGuile.cmake
Modified:
   gnucash/trunk/CMakeLists.txt
Log:
Cutecash: Add version check for guile and define HAVE_GUILE18 if appropriate.

Modified: gnucash/trunk/CMakeLists.txt
===================================================================
--- gnucash/trunk/CMakeLists.txt	2010-03-05 20:32:13 UTC (rev 18845)
+++ gnucash/trunk/CMakeLists.txt	2010-03-05 20:41:40 UTC (rev 18846)
@@ -54,11 +54,16 @@
 INCLUDE (${SWIG_USE_FILE})
 
 # guile
-FIND_PATH (LIBGUILE_INCLUDE_PATH NAMES libguile.h
-		  PATHS /usr/include)
-FIND_LIBRARY (LIBGUILE_LIBRARIES NAMES guile)
-FIND_PROGRAM (GUILE_EXECUTABLE guile)
+FIND_PACKAGE (Guile REQUIRED)
 
+# Check for guile version > 1.7, i.e. guile-1.8.x?
+IF (Guile_FIND_VERSION_MAJOR AND ${GUILE_VERSION_MAJOR} EQUAL 1
+    AND Guile_FIND_VERSION_MINOR AND ${GUILE_VERSION_MINOR} GREATER 7)
+  # Yes, define this macro
+  ADD_DEFINITIONS (-DHAVE_GUILE18)
+ENDIF (Guile_FIND_VERSION_MAJOR AND ${GUILE_VERSION_MAJOR} EQUAL 1
+    AND Guile_FIND_VERSION_MINOR AND ${GUILE_VERSION_MINOR} GREATER 7)
+
 # ############################################################
 
 # Qt

Added: gnucash/trunk/src/cmake_modules/FindGuile.cmake
===================================================================
--- gnucash/trunk/src/cmake_modules/FindGuile.cmake	                        (rev 0)
+++ gnucash/trunk/src/cmake_modules/FindGuile.cmake	2010-03-05 20:41:40 UTC (rev 18846)
@@ -0,0 +1,78 @@
+# Copyright (c) 2008, OpenCog.org (http://opencog.org)
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+# - Try to find Guile; Once done this will define
+#
+# GUILE_FOUND - system has the GUILE library
+# GUILE_INCLUDE_DIRS - the GUILE include directory
+# GUILE_LIBRARIES - The libraries needed to use GUILE
+
+
+
+# Look for the header file
+FIND_PATH(GUILE_INCLUDE_DIR libguile.h /usr/include /usr/local/include /usr/include/libguile /usr/local/include/libguile)
+
+# Look for the library
+FIND_LIBRARY(GUILE_LIBRARY NAMES guile PATH /usr/lib /usr/local/lib)
+
+# Copy the results to the output variables.
+IF(GUILE_INCLUDE_DIR AND GUILE_LIBRARY)
+	SET(GUILE_FOUND 1)
+	SET(GUILE_LIBRARIES ${GUILE_LIBRARY})
+	SET(GUILE_INCLUDE_DIRS ${GUILE_INCLUDE_DIR})
+ELSE(GUILE_INCLUDE_DIR AND GUILE_LIBRARY)
+	SET(GUILE_FOUND 0)
+	SET(GUILE_LIBRARIES)
+	SET(GUILE_INCLUDE_DIRS)
+ENDIF(GUILE_INCLUDE_DIR AND GUILE_LIBRARY)
+
+
+# check guile's version if we're using cmake >= 2.6
+IF(GUILE_INCLUDE_DIR AND NOT CMAKE_MAJOR_VERSION LESS 2 AND NOT CMAKE_MINOR_VERSION LESS 6)
+	SET(GUILE_VERSION_MAJOR 0)
+	SET(GUILE_VERSION_MINOR 0)
+	SET(GUILE_VERSION_PATCH 0)
+
+	# Extract the libguile version from the 'version.h' file
+	SET(GUILE_MAJOR_VERSION 0)
+	FILE(READ "${GUILE_INCLUDE_DIR}/libguile/version.h" _GUILE_VERSION_H_CONTENTS)
+
+	STRING(REGEX MATCH "#define SCM_MAJOR_VERSION[	 ]+([0-9])" _MATCH "${_GUILE_VERSION_H_CONTENTS}")
+	SET(GUILE_VERSION_MAJOR ${CMAKE_MATCH_1})
+	STRING(REGEX MATCH "#define SCM_MINOR_VERSION[	 ]+([0-9])" _MATCH "${_GUILE_VERSION_H_CONTENTS}")
+	SET(GUILE_VERSION_MINOR ${CMAKE_MATCH_1})
+	STRING(REGEX MATCH "#define SCM_MICRO_VERSION[	 ]+([0-9])" _MATCH "${_GUILE_VERSION_H_CONTENTS}")
+	SET(GUILE_VERSION_PATCH ${CMAKE_MATCH_1})
+
+	# check found version against required one
+	IF (Guile_FIND_VERSION_MAJOR AND ${GUILE_VERSION_MAJOR} LESS Guile_FIND_VERSION_MAJOR)
+		SET(GUILE_FOUND FALSE)
+	ELSE (Guile_FIND_VERSION_MAJOR AND ${GUILE_VERSION_MAJOR} LESS Guile_FIND_VERSION_MAJOR)
+		IF (Guile_FIND_VERSION_MINOR AND ${GUILE_VERSION_MINOR} LESS Guile_FIND_VERSION_MINOR)
+			SET(GUILE_FOUND FALSE )
+		ELSE (Guile_FIND_VERSION_MINOR AND ${GUILE_VERSION_MINOR} LESS Guile_FIND_VERSION_MINOR)
+			IF (Guile_FIND_VERSION_PATCH AND ${GUILE_VERSION_PATCH} LESS Guile_FIND_VERSION_PATCH)
+				SET(GUILE_FOUND FALSE )
+			ENDIF (Guile_FIND_VERSION_PATCH AND ${GUILE_VERSION_PATCH} LESS Guile_FIND_VERSION_PATCH)
+		ENDIF (Guile_FIND_VERSION_MINOR AND ${GUILE_VERSION_MINOR} LESS Guile_FIND_VERSION_MINOR)
+	ENDIF (Guile_FIND_VERSION_MAJOR AND ${GUILE_VERSION_MAJOR} LESS Guile_FIND_VERSION_MAJOR)
+ENDIF(GUILE_INCLUDE_DIR AND NOT CMAKE_MAJOR_VERSION LESS 2 AND NOT CMAKE_MINOR_VERSION LESS 6)
+
+# Report the results.
+IF(NOT GUILE_FOUND)
+	IF (Guile_FIND_VERSION_MAJOR)
+		SET(_GUILE_VERSION_MESSAGE_STRING " (>=${Guile_FIND_VERSION_MAJOR}.${Guile_FIND_VERSION_MINOR}.${Guile_FIND_VERSION_PATCH})")
+	ENDIF (Guile_FIND_VERSION_MAJOR)
+	SET(GUILE_DIR_MESSAGE "Guile${_GUILE_VERSION_MESSAGE_STRING} was not found. Make sure GUILE_LIBRARY and GUILE_INCLUDE_DIR are set.")
+	IF(NOT GUILE_FIND_QUIETLY)
+		MESSAGE(STATUS "${GUILE_DIR_MESSAGE}")
+	ELSE(NOT GUILE_FIND_QUIETLY)
+		IF(GUILE_FIND_REQUIRED)
+			MESSAGE(FATAL_ERROR "${GUILE_DIR_MESSAGE}")
+		ENDIF(GUILE_FIND_REQUIRED)
+	ENDIF(NOT GUILE_FIND_QUIETLY)
+ENDIF(NOT GUILE_FOUND)
+
+MARK_AS_ADVANCED(GUILE_INCLUDE_DIR GUILE_LIBRARY)



More information about the gnucash-changes mailing list