xref: /libbtbb/wireshark/plugins-legacy/btbredr/cmake/FindGLIB2.cmake (revision e018180df8c9bd1ca869d5329a027253be1a76ec)
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