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