xref: /libbtbb/wireshark/plugins/btbb/cmake/FindGLIB2.cmake (revision 4cc286f39977de0d2c7d8305e14882bbf313e363)
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