diff options
author | Jörg Mayer <jmayer@loplof.de> | 2013-10-04 12:49:06 +0000 |
---|---|---|
committer | Jörg Mayer <jmayer@loplof.de> | 2013-10-04 12:49:06 +0000 |
commit | 00ab245568127a5923ce12a8185a544e52c9f2c8 (patch) | |
tree | 9c053d0d06f4a41d3ca2b0f15a7b79deb40bfbf1 /cmake | |
parent | a1c82a00a5240fc99283287d89d52c135b5b8773 (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')
-rw-r--r-- | cmake/modules/FindGLIB2.cmake | 346 |
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 ) |