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