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