aboutsummaryrefslogtreecommitdiffstats
path: root/cmake/modules/FindGLIB2.cmake
diff options
context:
space:
mode:
authorJörg Mayer <jmayer@loplof.de>2013-10-04 12:49:06 +0000
committerJörg Mayer <jmayer@loplof.de>2013-10-04 12:49:06 +0000
commit00ab245568127a5923ce12a8185a544e52c9f2c8 (patch)
tree9c053d0d06f4a41d3ca2b0f15a7b79deb40bfbf1 /cmake/modules/FindGLIB2.cmake
parenta1c82a00a5240fc99283287d89d52c135b5b8773 (diff)
Replace the old version by a more modern one that only
tries to find glib2 and not other stuff as well. Not tested on OS X due to problems with my build environment. svn path=/trunk/; revision=52356
Diffstat (limited to 'cmake/modules/FindGLIB2.cmake')
-rw-r--r--cmake/modules/FindGLIB2.cmake346
1 files changed, 100 insertions, 246 deletions
diff --git a/cmake/modules/FindGLIB2.cmake b/cmake/modules/FindGLIB2.cmake
index 08bb950d42..4d700eb64e 100644
--- a/cmake/modules/FindGLIB2.cmake
+++ b/cmake/modules/FindGLIB2.cmake
@@ -1,253 +1,107 @@
#
# $Id$
#
-# - Try to find GLib2
+# - Try to find the GLIB2 libraries
# Once done this will define
#
-# GLIB2_FOUND - system has GLib2
-# GLIB2_INCLUDE_DIRS - the GLib2 include directory
-# GLIB2_LIBRARIES - Link these to use GLib2
-#
-# HAVE_GLIB_GREGEX_H glib has gregex.h header and
-# supports g_regex_match_simple
-#
-# Copyright (c) 2006 Andreas Schneider <mail@cynapses.org>
-# Copyright (c) 2006 Philippe Bernery <philippe.bernery@gmail.com>
-# Copyright (c) 2007 Daniel Gollub <gollub@b1-systems.de>
-# Copyright (c) 2007 Alban Browaeys <prahal@yahoo.com>
-# Copyright (c) 2008 Michael Bell <michael.bell@web.de>
-# Copyright (c) 2008-2009 Bjoern Ricks <bjoern.ricks@googlemail.com>
-#
-# Redistribution and use is allowed according to the terms of the New
-# BSD license.
-# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+# GLIB2_FOUND - system has glib2
+# GLIB2_INCLUDE_DIRS - the glib2 include directory
+# GLIB2_LIBRARIES - glib2 library
+
+# Copyright (c) 2008 Laurent Montel, <montel@kde.org>
#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+
+if( GLIB2_MAIN_INCLUDE_DIR AND GLIB2_LIBRARIES )
+ # Already in cache, be silent
+ set(GLIB2_FIND_QUIETLY TRUE)
+endif()
+
+include( FindWSWinLibs )
+FindWSWinLibs( "gtk[23]" "GLIB2_HINTS" )
+
+find_package( PkgConfig )
+if( GLIB2_FIND_REQUIRED )
+ set( _pkgconfig_REQUIRED "REQUIRED" )
+else()
+ set( _pkgconfig_REQUIRED "" )
+endif()
+
+if( GLIB2_MIN_VERSION )
+ pkg_search_module( GLIB2 ${_pkgconfig_REQUIRED} glib-2.0>=${GLIB2_MIN_VERSION} )
+else()
+ pkg_search_module( GLIB2 ${_pkgconfig_REQUIRED} glib-2.0 )
+endif()
+
+find_path( GLIB2_MAIN_INCLUDE_DIR
+ NAMES
+ glib.h
+ HINTS
+ "${PC_GLIB2_INCLUDEDIR}"
+ "${GLIB2_HINTS}/include"
+ PATH_SUFFIXES
+ glib-2.0
+ glib-2.0/include
+ PATHS
+ /opt/gnome/include
+ /opt/local/include
+ /sw/include
+ /usr/include
+ /usr/local/include
+)
+
+message( STATUS "H: ${GLIB2_HINTS}\nMI: ${GLIB2_MAIN_INCLUDE_DIR}, L: ${GLIB2_LIBRARY}\nII: ${GLIB2_INTERNAL_INCLUDE_DIR}\n" )
+
+find_library( GLIB2_LIBRARY
+ NAMES
+ glib-2.0
+ libglib-2.0
+ HINTS
+ "${PC_GLIB2_LIBDIR}"
+ "${GLIB2_HINTS}/lib"
+ PATHS
+ /opt/gnome/lib64
+ /opt/gnome/lib
+ /opt/lib/
+ /opt/local/lib
+ /sw/lib/
+ /usr/lib64
+ /usr/lib
+)
+
+# search the glibconfig.h include dir under the same root where the library is found
+get_filename_component( glib2LibDir "${GLIB2_LIBRARY}" PATH)
+
+find_path(GLIB2_INTERNAL_INCLUDE_DIR
+ NAMES
+ glibconfig.h
+ HINTS
+ "${PC_GLIB2_INCLUDEDIR}"
+ "${glib2LibDir}"
+ ${CMAKE_SYSTEM_LIBRARY_PATH}
+ PATH_SUFFIXES
+ glib-2.0/include
+ PATHS
+ ${GLIB2_LIBRARY}
+
+)
+
+include( FindPackageHandleStandardArgs )
+find_package_handle_standard_args( GLIB2
+ DEFAULT_MSG
+ GLIB2_LIBRARY
+ GLIB2_MAIN_INCLUDE_DIR
+)
+
+if( GLIB2_FOUND )
+ set( GLIB2_LIBRARIES ${GLIB2_LIBRARY} )
+ set( GLIB2_INCLUDE_DIRS ${GLIB2_MAIN_INCLUDE_DIR} ${GLIB2_INTERNAL_INCLUDE_DIR} )
+else()
+ set( GLIB2_LIBRARIES )
+ set( GLIB2_MAIN_INCLUDE_DIRS )
+endif()
+
+mark_as_advanced( GLIB2_INCLUDE_DIRS GLIB2_LIBRARIES )
-INCLUDE(FindWSWinLibs)
-FindWSWinLibs("gtk2" "GLIB2_HINTS")
-
-IF (GLIB2_LIBRARIES AND GLIB2_INCLUDE_DIRS )
- # in cache already
- SET(GLIB2_FOUND TRUE)
-ELSE (GLIB2_LIBRARIES AND GLIB2_INCLUDE_DIRS )
-
- INCLUDE(FindPkgConfig)
-
- ## Glib
- IF ( GLIB2_FIND_REQUIRED )
- SET( _pkgconfig_REQUIRED "REQUIRED" )
- ELSE ( GLIB2_FIND_REQUIRED )
- SET( _pkgconfig_REQUIRED "" )
- ENDIF ( GLIB2_FIND_REQUIRED )
-
- IF ( GLIB2_MIN_VERSION )
- PKG_SEARCH_MODULE( GLIB2 ${_pkgconfig_REQUIRED} glib-2.0>=${GLIB2_MIN_VERSION} )
- ELSE ( GLIB2_MIN_VERSION )
- PKG_SEARCH_MODULE( GLIB2 ${_pkgconfig_REQUIRED} glib-2.0 )
- ENDIF ( GLIB2_MIN_VERSION )
- IF ( PKG_CONFIG_FOUND )
- IF ( GLIB2_FOUND )
- SET ( GLIB2_CORE_FOUND TRUE )
- ELSE ( GLIB2_FOUND )
- SET ( GLIB2_CORE_FOUND FALSE )
- ENDIF ( GLIB2_FOUND )
- ENDIF ( PKG_CONFIG_FOUND )
-
- # Look for glib2 include dir and libraries with hinting from pkgconfig if available
- FIND_PATH(
- _glibconfig_include_DIR
- NAMES
- glibconfig.h
- PATHS
- ${GLIB2_INCLUDE_DIRS}
- /opt/gnome/lib64
- /opt/gnome/lib
- /opt/lib/
- /opt/local/lib
- /sw/lib/
- /usr/lib64
- /usr/lib
- /usr/local/include
- ${CMAKE_LIBRARY_PATH}
- PATH_SUFFIXES
- glib-2.0/include
- HINTS
- "${GLIB2_HINTS}/lib"
- )
-
- FIND_PATH(
- _glib2_include_DIR
- NAMES
- glib.h
- PATHS
- ${GLIB2_INCLUDE_DIRS}
- /opt/gnome/include
- /opt/local/include
- /sw/include
- /usr/include
- /usr/local/include
- PATH_SUFFIXES
- glib-2.0
- HINTS
- "${GLIB2_HINTS}/include"
- )
-
- #MESSAGE(STATUS "Glib headers: ${_glib2_include_DIR}")
-
- FIND_LIBRARY(
- _glib2_link_DIR
- NAMES
- ${GLIB2_LIBRARIES}
- glib-2.0
- glib
- PATHS
- ${GLIB2_LIBRARY_DIRS}
- /opt/gnome/lib
- /opt/local/lib
- /sw/lib
- /usr/lib
- /usr/local/lib
- HINTS
- "${GLIB2_HINTS}/lib"
- )
- IF ( _glib2_include_DIR AND _glib2_link_DIR )
- SET ( _glib2_FOUND TRUE )
- ENDIF ( _glib2_include_DIR AND _glib2_link_DIR )
-
-
- IF ( _glib2_FOUND )
- SET ( GLIB2_INCLUDE_DIRS ${_glib2_include_DIR} ${_glibconfig_include_DIR} )
- SET ( GLIB2_LIBRARIES ${_glib2_link_DIR} )
- SET ( GLIB2_CORE_FOUND TRUE )
- ELSE ( _glib2_FOUND )
- SET ( GLIB2_CORE_FOUND FALSE )
- ENDIF ( _glib2_FOUND )
-
- # Handle dependencies
- # libintl
- IF ( NOT LIBINTL_FOUND )
- FIND_PATH(LIBINTL_INCLUDE_DIR
- NAMES
- libintl.h
- PATHS
- ${GLIB2_INCLUDE_DIRS}
- /opt/gnome/include
- /opt/local/include
- /sw/include
- /usr/include
- /usr/local/include
- )
-
- FIND_LIBRARY(LIBINTL_LIBRARY
- NAMES
- intl
- PATHS
- ${GLIB2_LIBRARY_DIRS}
- /opt/gnome/lib
- /opt/local/lib
- /sw/lib
- /usr/local/lib
- /usr/lib
- )
-
- IF (LIBINTL_LIBRARY AND LIBINTL_INCLUDE_DIR)
- SET (LIBINTL_FOUND TRUE)
- ENDIF (LIBINTL_LIBRARY AND LIBINTL_INCLUDE_DIR)
- ENDIF ( NOT LIBINTL_FOUND )
-
- # libiconv
- IF ( NOT LIBICONV_FOUND )
- FIND_PATH(LIBICONV_INCLUDE_DIR
- NAMES
- iconv.h
- PATHS
- ${GLIB2_INCLUDE_DIRS}
- /opt/gnome/include
- /opt/local/include
- /opt/local/include
- /sw/include
- /sw/include
- /usr/local/include
- /usr/include
- PATH_SUFFIXES
- glib-2.0
- )
-
- FIND_LIBRARY(LIBICONV_LIBRARY
- NAMES
- iconv
- PATHS
- ${GLIB2_LIBRARY_DIRS}
- /opt/gnome/lib
- /opt/local/lib
- /sw/lib
- /usr/lib
- /usr/local/lib
- )
-
- IF (LIBICONV_LIBRARY AND LIBICONV_INCLUDE_DIR)
- SET (LIBICONV_FOUND TRUE)
- ENDIF (LIBICONV_LIBRARY AND LIBICONV_INCLUDE_DIR)
- ENDIF ( NOT LIBICONV_FOUND )
-
- IF (LIBINTL_FOUND)
- SET (GLIB2_LIBRARIES ${GLIB2_LIBRARIES} ${LIBINTL_LIBRARY})
- SET (GLIB2_INCLUDE_DIRS ${GLIB2_INCLUDE_DIRS} ${LIBINTL_INCLUDE_DIR})
- ENDIF (LIBINTL_FOUND)
-
- IF (LIBICONV_FOUND)
- SET (GLIB2_LIBRARIES ${GLIB2_LIBRARIES} ${LIBICONV_LIBRARY})
- SET (GLIB2_INCLUDE_DIRS ${GLIB2_INCLUDE_DIRS} ${LIBICONV_INCLUDE_DIR})
- ENDIF (LIBICONV_FOUND)
-
- ##
-
- IF (GLIB2_CORE_FOUND AND GLIB2_INCLUDE_DIRS AND GLIB2_LIBRARIES)
- SET (GLIB2_FOUND TRUE)
- ENDIF (GLIB2_CORE_FOUND AND GLIB2_INCLUDE_DIRS AND GLIB2_LIBRARIES)
-
- IF (GLIB2_FOUND)
- IF (NOT GLIB2_FIND_QUIETLY)
- MESSAGE (STATUS "Found GLib2: ${GLIB2_LIBRARIES} ${GLIB2_INCLUDE_DIRS}")
- ENDIF (NOT GLIB2_FIND_QUIETLY)
- ELSE (GLIB2_FOUND)
- IF (GLIB2_FIND_REQUIRED)
- MESSAGE (SEND_ERROR "Could not find GLib2")
- ENDIF (GLIB2_FIND_REQUIRED)
- ENDIF (GLIB2_FOUND)
-
- # show the GLIB2_INCLUDE_DIRS and GLIB2_LIBRARIES variables only in the advanced view
- MARK_AS_ADVANCED(GLIB2_INCLUDE_DIRS GLIB2_LIBRARIES)
- MARK_AS_ADVANCED(LIBICONV_INCLUDE_DIR LIBICONV_LIBRARY)
- MARK_AS_ADVANCED(LIBINTL_INCLUDE_DIR LIBINTL_LIBRARY)
-
-ENDIF (GLIB2_LIBRARIES AND GLIB2_INCLUDE_DIRS)
-include(FindPackageHandleStandardArgs)
-
-IF ( WIN32 )
- # include libiconv for win32
- IF ( NOT LIBICONV_FOUND )
- FIND_PATH(LIBICONV_INCLUDE_DIR iconv.h PATH_SUFFIXES glib-2.0)
-
- FIND_LIBRARY(LIBICONV_LIBRARY NAMES iconv)
-
- IF (LIBICONV_LIBRARY AND LIBICONV_INCLUDE_DIR)
- SET (LIBICONV_FOUND TRUE)
- ENDIF (LIBICONV_LIBRARY AND LIBICONV_INCLUDE_DIR)
- ENDIF ( NOT LIBICONV_FOUND )
- IF (LIBICONV_FOUND)
- SET (GLIB2_LIBRARIES ${GLIB2_LIBRARIES} ${LIBICONV_LIBRARY})
- SET (GLIB2_INCLUDE_DIRS ${GLIB2_INCLUDE_DIRS} ${LIBICONV_INCLUDE_DIR})
- ENDIF (LIBICONV_FOUND)
-ENDIF ( WIN32 )
-
-IF ( GLIB2_FOUND )
- # Check if system has a newer version of glib
- # which supports g_regex_match_simple
- INCLUDE( CheckIncludeFiles )
- SET( CMAKE_REQUIRED_INCLUDES ${GLIB2_INCLUDE_DIRS} )
- CHECK_INCLUDE_FILES ( glib/gregex.h HAVE_GLIB_GREGEX_H )
- CHECK_INCLUDE_FILES ( glib/gchecksum.h HAVE_GLIB_GCHECKSUM_H )
- # Reset CMAKE_REQUIRED_INCLUDES
- SET( CMAKE_REQUIRED_INCLUDES "" )
-ENDIF( GLIB2_FOUND )