1*e018180dSDominic Spill# 2*e018180dSDominic Spill# $Id: FindGLIB2.cmake 34248 2010-09-25 15:38:12Z jmayer $ 3*e018180dSDominic Spill# 4*e018180dSDominic Spill# - Try to find GLib2 5*e018180dSDominic Spill# Once done this will define 6*e018180dSDominic Spill# 7*e018180dSDominic Spill# GLIB2_FOUND - system has GLib2 8*e018180dSDominic Spill# GLIB2_INCLUDE_DIRS - the GLib2 include directory 9*e018180dSDominic Spill# GLIB2_LIBRARIES - Link these to use GLib2 10*e018180dSDominic Spill# 11*e018180dSDominic Spill# HAVE_GLIB_GREGEX_H glib has gregex.h header and 12*e018180dSDominic Spill# supports g_regex_match_simple 13*e018180dSDominic Spill# 14*e018180dSDominic Spill# Copyright (c) 2006 Andreas Schneider <[email protected]> 15*e018180dSDominic Spill# Copyright (c) 2006 Philippe Bernery <[email protected]> 16*e018180dSDominic Spill# Copyright (c) 2007 Daniel Gollub <[email protected]> 17*e018180dSDominic Spill# Copyright (c) 2007 Alban Browaeys <[email protected]> 18*e018180dSDominic Spill# Copyright (c) 2008 Michael Bell <[email protected]> 19*e018180dSDominic Spill# Copyright (c) 2008-2009 Bjoern Ricks <[email protected]> 20*e018180dSDominic Spill# 21*e018180dSDominic Spill# Redistribution and use is allowed according to the terms of the New 22*e018180dSDominic Spill# BSD license. 23*e018180dSDominic Spill# For details see the accompanying COPYING-CMAKE-SCRIPTS file. 24*e018180dSDominic Spill# 25*e018180dSDominic Spill 26*e018180dSDominic Spill 27*e018180dSDominic SpillIF (GLIB2_LIBRARIES AND GLIB2_INCLUDE_DIRS ) 28*e018180dSDominic Spill # in cache already 29*e018180dSDominic Spill SET(GLIB2_FOUND TRUE) 30*e018180dSDominic SpillELSE (GLIB2_LIBRARIES AND GLIB2_INCLUDE_DIRS ) 31*e018180dSDominic Spill 32*e018180dSDominic Spill INCLUDE(FindPkgConfig) 33*e018180dSDominic Spill 34*e018180dSDominic Spill ## Glib 35*e018180dSDominic Spill IF ( GLIB2_FIND_REQUIRED ) 36*e018180dSDominic Spill SET( _pkgconfig_REQUIRED "REQUIRED" ) 37*e018180dSDominic Spill ELSE ( GLIB2_FIND_REQUIRED ) 38*e018180dSDominic Spill SET( _pkgconfig_REQUIRED "" ) 39*e018180dSDominic Spill ENDIF ( GLIB2_FIND_REQUIRED ) 40*e018180dSDominic Spill 41*e018180dSDominic Spill IF ( GLIB2_MIN_VERSION ) 42*e018180dSDominic Spill PKG_SEARCH_MODULE( GLIB2 ${_pkgconfig_REQUIRED} glib-2.0>=${GLIB2_MIN_VERSION} ) 43*e018180dSDominic Spill ELSE ( GLIB2_MIN_VERSION ) 44*e018180dSDominic Spill PKG_SEARCH_MODULE( GLIB2 ${_pkgconfig_REQUIRED} glib-2.0 ) 45*e018180dSDominic Spill ENDIF ( GLIB2_MIN_VERSION ) 46*e018180dSDominic Spill IF ( PKG_CONFIG_FOUND ) 47*e018180dSDominic Spill IF ( GLIB2_FOUND ) 48*e018180dSDominic Spill SET ( GLIB2_CORE_FOUND TRUE ) 49*e018180dSDominic Spill ELSE ( GLIB2_FOUND ) 50*e018180dSDominic Spill SET ( GLIB2_CORE_FOUND FALSE ) 51*e018180dSDominic Spill ENDIF ( GLIB2_FOUND ) 52*e018180dSDominic Spill ENDIF ( PKG_CONFIG_FOUND ) 53*e018180dSDominic Spill 54*e018180dSDominic Spill # Look for glib2 include dir and libraries w/o pkgconfig 55*e018180dSDominic Spill IF ( NOT GLIB2_FOUND AND NOT PKG_CONFIG_FOUND ) 56*e018180dSDominic Spill FIND_PATH( 57*e018180dSDominic Spill _glibconfig_include_DIR 58*e018180dSDominic Spill NAMES 59*e018180dSDominic Spill glibconfig.h 60*e018180dSDominic Spill PATHS 61*e018180dSDominic Spill /opt/gnome/lib64 62*e018180dSDominic Spill /opt/gnome/lib 63*e018180dSDominic Spill /opt/lib/ 64*e018180dSDominic Spill /opt/local/lib 65*e018180dSDominic Spill /sw/lib/ 66*e018180dSDominic Spill /usr/lib64 67*e018180dSDominic Spill /usr/lib 68*e018180dSDominic Spill /usr/local/include 69*e018180dSDominic Spill ${CMAKE_LIBRARY_PATH} 70*e018180dSDominic Spill PATH_SUFFIXES 71*e018180dSDominic Spill glib-2.0/include 72*e018180dSDominic Spill ) 73*e018180dSDominic Spill 74*e018180dSDominic Spill FIND_PATH( 75*e018180dSDominic Spill _glib2_include_DIR 76*e018180dSDominic Spill NAMES 77*e018180dSDominic Spill glib.h 78*e018180dSDominic Spill PATHS 79*e018180dSDominic Spill /opt/gnome/include 80*e018180dSDominic Spill /opt/local/include 81*e018180dSDominic Spill /sw/include 82*e018180dSDominic Spill /usr/include 83*e018180dSDominic Spill /usr/local/include 84*e018180dSDominic Spill PATH_SUFFIXES 85*e018180dSDominic Spill glib-2.0 86*e018180dSDominic Spill ) 87*e018180dSDominic Spill 88*e018180dSDominic Spill #MESSAGE(STATUS "Glib headers: ${_glib2_include_DIR}") 89*e018180dSDominic Spill 90*e018180dSDominic Spill FIND_LIBRARY( 91*e018180dSDominic Spill _glib2_link_DIR 92*e018180dSDominic Spill NAMES 93*e018180dSDominic Spill glib-2.0 94*e018180dSDominic Spill glib 95*e018180dSDominic Spill PATHS 96*e018180dSDominic Spill /opt/gnome/lib 97*e018180dSDominic Spill /opt/local/lib 98*e018180dSDominic Spill /sw/lib 99*e018180dSDominic Spill /usr/lib 100*e018180dSDominic Spill /usr/local/lib 101*e018180dSDominic Spill ) 102*e018180dSDominic Spill IF ( _glib2_include_DIR AND _glib2_link_DIR ) 103*e018180dSDominic Spill SET ( _glib2_FOUND TRUE ) 104*e018180dSDominic Spill ENDIF ( _glib2_include_DIR AND _glib2_link_DIR ) 105*e018180dSDominic Spill 106*e018180dSDominic Spill 107*e018180dSDominic Spill IF ( _glib2_FOUND ) 108*e018180dSDominic Spill SET ( GLIB2_INCLUDE_DIRS ${_glib2_include_DIR} ${_glibconfig_include_DIR} ) 109*e018180dSDominic Spill SET ( GLIB2_LIBRARIES ${_glib2_link_DIR} ) 110*e018180dSDominic Spill SET ( GLIB2_CORE_FOUND TRUE ) 111*e018180dSDominic Spill ELSE ( _glib2_FOUND ) 112*e018180dSDominic Spill SET ( GLIB2_CORE_FOUND FALSE ) 113*e018180dSDominic Spill ENDIF ( _glib2_FOUND ) 114*e018180dSDominic Spill 115*e018180dSDominic Spill # Handle dependencies 116*e018180dSDominic Spill # libintl 117*e018180dSDominic Spill IF ( NOT LIBINTL_FOUND ) 118*e018180dSDominic Spill FIND_PATH(LIBINTL_INCLUDE_DIR 119*e018180dSDominic Spill NAMES 120*e018180dSDominic Spill libintl.h 121*e018180dSDominic Spill PATHS 122*e018180dSDominic Spill /opt/gnome/include 123*e018180dSDominic Spill /opt/local/include 124*e018180dSDominic Spill /sw/include 125*e018180dSDominic Spill /usr/include 126*e018180dSDominic Spill /usr/local/include 127*e018180dSDominic Spill ) 128*e018180dSDominic Spill 129*e018180dSDominic Spill FIND_LIBRARY(LIBINTL_LIBRARY 130*e018180dSDominic Spill NAMES 131*e018180dSDominic Spill intl 132*e018180dSDominic Spill PATHS 133*e018180dSDominic Spill /opt/gnome/lib 134*e018180dSDominic Spill /opt/local/lib 135*e018180dSDominic Spill /sw/lib 136*e018180dSDominic Spill /usr/local/lib 137*e018180dSDominic Spill /usr/lib 138*e018180dSDominic Spill ) 139*e018180dSDominic Spill 140*e018180dSDominic Spill IF (LIBINTL_LIBRARY AND LIBINTL_INCLUDE_DIR) 141*e018180dSDominic Spill SET (LIBINTL_FOUND TRUE) 142*e018180dSDominic Spill ENDIF (LIBINTL_LIBRARY AND LIBINTL_INCLUDE_DIR) 143*e018180dSDominic Spill ENDIF ( NOT LIBINTL_FOUND ) 144*e018180dSDominic Spill 145*e018180dSDominic Spill # libiconv 146*e018180dSDominic Spill IF ( NOT LIBICONV_FOUND ) 147*e018180dSDominic Spill FIND_PATH(LIBICONV_INCLUDE_DIR 148*e018180dSDominic Spill NAMES 149*e018180dSDominic Spill iconv.h 150*e018180dSDominic Spill PATHS 151*e018180dSDominic Spill /opt/gnome/include 152*e018180dSDominic Spill /opt/local/include 153*e018180dSDominic Spill /opt/local/include 154*e018180dSDominic Spill /sw/include 155*e018180dSDominic Spill /sw/include 156*e018180dSDominic Spill /usr/local/include 157*e018180dSDominic Spill /usr/include 158*e018180dSDominic Spill PATH_SUFFIXES 159*e018180dSDominic Spill glib-2.0 160*e018180dSDominic Spill ) 161*e018180dSDominic Spill 162*e018180dSDominic Spill FIND_LIBRARY(LIBICONV_LIBRARY 163*e018180dSDominic Spill NAMES 164*e018180dSDominic Spill iconv 165*e018180dSDominic Spill PATHS 166*e018180dSDominic Spill /opt/gnome/lib 167*e018180dSDominic Spill /opt/local/lib 168*e018180dSDominic Spill /sw/lib 169*e018180dSDominic Spill /usr/lib 170*e018180dSDominic Spill /usr/local/lib 171*e018180dSDominic Spill ) 172*e018180dSDominic Spill 173*e018180dSDominic Spill IF (LIBICONV_LIBRARY AND LIBICONV_INCLUDE_DIR) 174*e018180dSDominic Spill SET (LIBICONV_FOUND TRUE) 175*e018180dSDominic Spill ENDIF (LIBICONV_LIBRARY AND LIBICONV_INCLUDE_DIR) 176*e018180dSDominic Spill ENDIF ( NOT LIBICONV_FOUND ) 177*e018180dSDominic Spill 178*e018180dSDominic Spill IF (LIBINTL_FOUND) 179*e018180dSDominic Spill SET (GLIB2_LIBRARIES ${GLIB2_LIBRARIES} ${LIBINTL_LIBRARY}) 180*e018180dSDominic Spill SET (GLIB2_INCLUDE_DIRS ${GLIB2_INCLUDE_DIRS} ${LIBINTL_INCLUDE_DIR}) 181*e018180dSDominic Spill ENDIF (LIBINTL_FOUND) 182*e018180dSDominic Spill 183*e018180dSDominic Spill IF (LIBICONV_FOUND) 184*e018180dSDominic Spill SET (GLIB2_LIBRARIES ${GLIB2_LIBRARIES} ${LIBICONV_LIBRARY}) 185*e018180dSDominic Spill SET (GLIB2_INCLUDE_DIRS ${GLIB2_INCLUDE_DIRS} ${LIBICONV_INCLUDE_DIR}) 186*e018180dSDominic Spill ENDIF (LIBICONV_FOUND) 187*e018180dSDominic Spill 188*e018180dSDominic Spill ENDIF ( NOT GLIB2_FOUND AND NOT PKG_CONFIG_FOUND ) 189*e018180dSDominic Spill ## 190*e018180dSDominic Spill 191*e018180dSDominic Spill IF (GLIB2_CORE_FOUND AND GLIB2_INCLUDE_DIRS AND GLIB2_LIBRARIES) 192*e018180dSDominic Spill SET (GLIB2_FOUND TRUE) 193*e018180dSDominic Spill ENDIF (GLIB2_CORE_FOUND AND GLIB2_INCLUDE_DIRS AND GLIB2_LIBRARIES) 194*e018180dSDominic Spill 195*e018180dSDominic Spill IF (GLIB2_FOUND) 196*e018180dSDominic Spill IF (NOT GLIB2_FIND_QUIETLY) 197*e018180dSDominic Spill MESSAGE (STATUS "Found GLib2: ${GLIB2_LIBRARIES} ${GLIB2_INCLUDE_DIRS}") 198*e018180dSDominic Spill ENDIF (NOT GLIB2_FIND_QUIETLY) 199*e018180dSDominic Spill ELSE (GLIB2_FOUND) 200*e018180dSDominic Spill IF (GLIB2_FIND_REQUIRED) 201*e018180dSDominic Spill MESSAGE (SEND_ERROR "Could not find GLib2") 202*e018180dSDominic Spill ENDIF (GLIB2_FIND_REQUIRED) 203*e018180dSDominic Spill ENDIF (GLIB2_FOUND) 204*e018180dSDominic Spill 205*e018180dSDominic Spill # show the GLIB2_INCLUDE_DIRS and GLIB2_LIBRARIES variables only in the advanced view 206*e018180dSDominic Spill MARK_AS_ADVANCED(GLIB2_INCLUDE_DIRS GLIB2_LIBRARIES) 207*e018180dSDominic Spill MARK_AS_ADVANCED(LIBICONV_INCLUDE_DIR LIBICONV_LIBRARY) 208*e018180dSDominic Spill MARK_AS_ADVANCED(LIBINTL_INCLUDE_DIR LIBINTL_LIBRARY) 209*e018180dSDominic Spill 210*e018180dSDominic SpillENDIF (GLIB2_LIBRARIES AND GLIB2_INCLUDE_DIRS) 211*e018180dSDominic Spill 212*e018180dSDominic SpillIF ( WIN32 ) 213*e018180dSDominic Spill # include libiconv for win32 214*e018180dSDominic Spill IF ( NOT LIBICONV_FOUND ) 215*e018180dSDominic Spill FIND_PATH(LIBICONV_INCLUDE_DIR iconv.h PATH_SUFFIXES glib-2.0) 216*e018180dSDominic Spill 217*e018180dSDominic Spill FIND_LIBRARY(LIBICONV_LIBRARY NAMES iconv) 218*e018180dSDominic Spill 219*e018180dSDominic Spill IF (LIBICONV_LIBRARY AND LIBICONV_INCLUDE_DIR) 220*e018180dSDominic Spill SET (LIBICONV_FOUND TRUE) 221*e018180dSDominic Spill ENDIF (LIBICONV_LIBRARY AND LIBICONV_INCLUDE_DIR) 222*e018180dSDominic Spill ENDIF ( NOT LIBICONV_FOUND ) 223*e018180dSDominic Spill IF (LIBICONV_FOUND) 224*e018180dSDominic Spill SET (GLIB2_LIBRARIES ${GLIB2_LIBRARIES} ${LIBICONV_LIBRARY}) 225*e018180dSDominic Spill SET (GLIB2_INCLUDE_DIRS ${GLIB2_INCLUDE_DIRS} ${LIBICONV_INCLUDE_DIR}) 226*e018180dSDominic Spill ENDIF (LIBICONV_FOUND) 227*e018180dSDominic SpillENDIF ( WIN32 ) 228*e018180dSDominic Spill 229*e018180dSDominic SpillIF ( GLIB2_FOUND ) 230*e018180dSDominic Spill # Check if system has a newer version of glib 231*e018180dSDominic Spill # which supports g_regex_match_simple 232*e018180dSDominic Spill INCLUDE( CheckIncludeFiles ) 233*e018180dSDominic Spill SET( CMAKE_REQUIRED_INCLUDES ${GLIB2_INCLUDE_DIRS} ) 234*e018180dSDominic Spill CHECK_INCLUDE_FILES ( glib/gregex.h HAVE_GLIB_GREGEX_H ) 235*e018180dSDominic Spill CHECK_INCLUDE_FILES ( glib/gchecksum.h HAVE_GLIB_GCHECKSUM_H ) 236*e018180dSDominic Spill # Reset CMAKE_REQUIRED_INCLUDES 237*e018180dSDominic Spill SET( CMAKE_REQUIRED_INCLUDES "" ) 238*e018180dSDominic SpillENDIF( GLIB2_FOUND ) 239