1 #
2 # try to find GTK2 (and glib) and GTK2GLArea
3 #
4 # GTK2_INCLUDE_DIRS - Directories to include to use GTK2
5 # GTK2_LIBRARIES - Files to link against to use GTK2
6 # GTK2_FOUND - If false, don't try to use GTK2
7 # GTK2_GL_FOUND - If false, don't try to use GTK2's GL features
8 #
9 ###################################################################
10 #
11 # Copyright (c) 2004 Jan Woetzel
12 # Copyright (c) 2006 Andreas Schneider <mail@cynapses.org>
13 #
14 # This program is free software; you can redistribute it and/or
15 # modify it under the terms of the GNU General Public License
16 # as published by the Free Software Foundation; either version 2
17 # of the License, or (at your option) any later version.
18 #
19 # This program is distributed in the hope that it will be useful,
20 # but WITHOUT ANY WARRANTY; without even the implied warranty of
21 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 # GNU General Public License for more details.
23 #
24 # You should have received a copy of the GNU General Public License
25 # along with this program; if not, write to the Free Software
26 # Foundation, Inc., 51 Franklin Street, Fifth Floor,
27 # Boston, MA 02110-1301, USA.
28 #
29 ###################################################################
30 #
31 # Copyright (c) 2004 Jan Woetzel
32 # Copyright (c) 2006 Andreas Schneider <mail@cynapses.org>
33 # All rights reserved.
34 #
35 # Redistribution and use in source and binary forms, with or without
36 # modification, are permitted provided that the following conditions
37 # are met:
38 #
39 # * Redistributions of source code must retain the above copyright
40 # notice, this list of conditions and the following disclaimer.
41 #
42 # * Redistributions in binary form must reproduce the above copyright
43 # notice, this list of conditions and the following disclaimer in
44 # the documentation and/or other materials provided with the
45 # distribution.
46 #
47 # * Neither the name of the <ORGANIZATION> nor the names of its
48 # contributors may be used to endorse or promote products derived
49 # from this software without specific prior written permission.
50 #
51 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
52 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
53 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
54 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
55 # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
56 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
57 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
58 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
59 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
60 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
61 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
62 # POSSIBILITY OF SUCH DAMAGE.
63 #
65 IF (GTK2_LIBRARIES AND GTK2_INCLUDE_DIRS)
66 # in cache already
67 SET(GTK2_FOUND TRUE)
68 ELSE (GTK2_LIBRARIES AND GTK2_INCLUDE_DIRS)
70 # use pkg-config to get the directories and then use these values
71 # in the FIND_PATH() and FIND_LIBRARY() calls
72 if (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
73 include(UsePkgConfig)
74 else (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
75 find_package(PkgConfig)
76 endif (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
77 INCLUDE(UsePkgConfig)
79 if (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
80 pkgconfig(gtk+-2.0 _GTK2_INCLUDEDIR _GTK2_LIBDIR _GTK2_LDFLAGS _GTK2_CFLAGS)
81 else (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
82 if (PKG_CONFIG_FOUND)
83 pkg_check_modules(_GTK2 gtk+-2.0)
84 endif (PKG_CONFIG_FOUND)
85 endif (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
87 FIND_PATH(GTK2_GTK_INCLUDE_PATH gtk/gtk.h
88 $ENV{GTK2_HOME}
89 ${_GTK2_INCLUDEDIR}
90 /usr/include/gtk-2.0
91 /usr/local/include/gtk-2.0
92 /opt/gnome/include/gtk-2.0
93 $ENV{DEVLIBS_PATH}//include//
94 )
96 # Some Linux distributions (e.g. Red Hat) have glibconfig.h
97 # and glib.h in different directories, so we need to look
98 # for both.
99 # - Atanas Georgiev <atanas@cs.columbia.edu>
100 if (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
101 pkgconfig(glib-2.0 _GLIB2_INCLUDEDIR _GLIB2inkDir _GLIB2_LDFLAGS _GLIB2_CFLAGS)
102 pkgconfig(gmodule-2.0 _GMODULE2_INCLUDEDIR _GMODULE2inkDir _GMODULE2_LDFLAGS _GMODULE2_CFLAGS)
103 else (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
104 if (PKG_CONFIG_FOUND)
105 pkg_check_modules(_GLIB2 glib-2.0)
106 pkg_check_modules(_GMODULE2 gmodule-2.0)
107 endif (PKG_CONFIG_FOUND)
108 endif (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
110 SET(GDIR /opt/gnome/lib/glib-2.0/include)
111 FIND_PATH(GTK2_GLIBCONFIG_INCLUDE_PATH glibconfig.h
112 ${_GLIB2_INCLUDEDIR}
113 /opt/gnome/lib64/glib-2.0/include
114 /opt/gnome/lib/glib-2.0/include
115 /usr/lib64/glib-2.0/include
116 /usr/lib/glib-2.0/include
117 $ENV{DEVLIBS_PATH}//include//
118 )
119 #MESSAGE(STATUS "DEBUG: GTK2_GLIBCONFIG_INCLUDE_PATH = ${GTK2_GLIBCONFIG_INCLUDE_PATH}")
121 FIND_PATH(GTK2_GLIB_INCLUDE_PATH glib.h
122 ${_GLIB2_INCLUDEDIR}
123 /opt/gnome/include/glib-2.0
124 /usr/include/glib-2.0
125 $ENV{DEVLIBS_PATH}//include//
126 )
127 #MESSAGE(STATUS "DEBUG: GTK2_GLIBCONFIG_INCLUDE_PATH = ${GTK2_GLIBCONFIG_INCLUDE_PATH}")
129 FIND_PATH(GTK2_GTKGL_INCLUDE_PATH gtkgl/gtkglarea.h
130 ${_GLIB2_INCLUDEDIR}
131 /usr/include
132 /usr/local/include
133 /usr/openwin/share/include
134 /opt/gnome/include
135 $ENV{DEVLIBS_PATH}//include//
136 )
138 if (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
139 pkgconfig(pango _PANGO_INCLUDEDIR _PANGOinkDir _PANGO_LDFLAGS _PANGO_CFLAGS)
140 else (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
141 if (PKG_CONFIG_FOUND)
142 pkg_check_modules(_PANGO pango)
143 endif (PKG_CONFIG_FOUND)
144 endif (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
146 FIND_PATH(GTK2_PANGO_INCLUDE_PATH pango/pango.h
147 ${_PANGO_INCLUDEDIR}
148 /opt/gnome/include/pango-1.0
149 /usr/include/pango-1.0
150 $ENV{DEVLIBS_PATH}//include//
151 )
153 if (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
154 pkgconfig(gdk-2.0 _GDK2_INCLUDEDIR _GDK2inkDir _GDK2_LDFLAGS _GDK2_CFLAGS)
155 else (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
156 if (PKG_CONFIG_FOUND)
157 pkg_check_modules(_GDK2 gdk-2.0)
158 endif (PKG_CONFIG_FOUND)
159 endif (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
161 FIND_PATH(GTK2_GDKCONFIG_INCLUDE_PATH gdkconfig.h
162 ${_GDK2_INCLUDEDIR}
163 /opt/gnome/lib/gtk-2.0/include
164 /opt/gnome/lib64/gtk-2.0/include
165 /usr/lib/gtk-2.0/include
166 /usr/lib64/gtk-2.0/include
167 $ENV{DEVLIBS_PATH}//include//
168 )
170 if (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
171 pkgconfig(cairo _CAIRO_INCLUDEDIR _CAIROinkDir _CAIRO_LDFLAGS _CAIRO_CFLAGS)
172 else (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
173 if (PKG_CONFIG_FOUND)
174 pkg_check_modules(_CAIRO cairo)
175 endif (PKG_CONFIG_FOUND)
176 endif (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
178 FIND_PATH(GTK2_CAIRO_INCLUDE_PATH cairo.h
179 ${_CAIRO_INCLUDEDIR}
180 /opt/gnome/include/cairo
181 /usr/include
182 /usr/include/cairo
183 $ENV{DEVLIBS_PATH}//include//
184 )
185 #MESSAGE(STATUS "DEBUG: GTK2_CAIRO_INCLUDE_PATH = ${GTK2_CAIRO_INCLUDE_PATH}")
187 if (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
188 pkgconfig(atk _ATK_INCLUDEDIR _ATKinkDir _ATK_LDFLAGS _ATK_CFLAGS)
189 else (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
190 if (PKG_CONFIG_FOUND)
191 pkg_check_modules(_ATK atk)
192 endif (PKG_CONFIG_FOUND)
193 endif (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
195 FIND_PATH(GTK2_ATK_INCLUDE_PATH atk/atk.h
196 ${_ATK_INCLUDEDIR}
197 /opt/gnome/include/atk-1.0
198 /usr/include/atk-1.0
199 $ENV{DEVLIBS_PATH}//include//
200 )
201 #MESSAGE(STATUS "DEBUG: GTK2_ATK_INCLUDE_PATH = ${GTK2_ATK_INCLUDE_PATH}")
203 FIND_LIBRARY(GTK2_GTKGL_LIBRARY
204 NAMES
205 gtkgl
206 PATHS
207 ${_GTK2_INCLUDEDIR}
208 /usr/lib
209 /usr/local/lib
210 /usr/openwin/lib
211 /usr/X11R6/lib
212 /opt/gnome/lib
213 )
215 FIND_LIBRARY(GTK2_GTK_LIBRARY
216 NAMES
217 gtk-x11-2.0
218 PATHS
219 ${_GTK2_LIBDIR}
220 /usr/lib
221 /usr/local/lib
222 /usr/openwin/lib
223 /usr/X11R6/lib
224 /opt/gnome/lib
225 )
227 FIND_LIBRARY(GTK2_GDK_LIBRARY
228 NAMES
229 gdk-x11-2.0
230 PATHS
231 ${_GDK2_LIBDIR}
232 /usr/lib
233 /usr/local/lib
234 /usr/openwin/lib
235 /usr/X11R6/lib
236 /opt/gnome/lib
237 )
239 FIND_LIBRARY(GTK2_GMODULE_LIBRARY
240 NAMES
241 gmodule-2.0
242 PATHS
243 ${_GMODULE2_LIBDIR}
244 /usr/lib
245 /usr/local/lib
246 /usr/openwin/lib
247 /usr/X11R6/lib
248 /opt/gnome/lib
249 )
251 FIND_LIBRARY(GTK2_GLIB_LIBRARY
252 NAMES
253 glib-2.0
254 PATHS
255 ${_GLIB2_LIBDIR}
256 /usr/lib
257 /usr/local/lib
258 /usr/openwin/lib
259 /usr/X11R6/lib
260 /opt/gnome/lib
261 )
263 FIND_LIBRARY(GTK2_Xi_LIBRARY
264 NAMES
265 Xi
266 PATHS
267 /usr/lib
268 /usr/local/lib
269 /usr/openwin/lib
270 /usr/X11R6/lib
271 /opt/gnome/lib
272 )
274 FIND_LIBRARY(GTK2_GTHREAD_LIBRARY
275 NAMES
276 gthread-2.0
277 PATHS
278 /usr/lib
279 /usr/local/lib
280 /usr/openwin/lib
281 /usr/X11R6/lib
282 /opt/gnome/lib
283 )
286 FIND_LIBRARY(GTK2_GOBJECT_LIBRARY
287 NAMES
288 gobject-2.0
289 PATHS
290 /usr/lib
291 /usr/local/lib
292 /usr/openwin/lib
293 /usr/X11R6/lib
294 /opt/gnome/lib
295 )
297 IF(GTK2_GTK_INCLUDE_PATH)
298 IF(GTK2_GLIBCONFIG_INCLUDE_PATH)
299 IF(GTK2_GLIB_INCLUDE_PATH)
300 IF(GTK2_GTK_LIBRARY)
301 IF(GTK2_GLIB_LIBRARY)
302 IF(GTK2_PANGO_INCLUDE_PATH)
303 IF(GTK2_ATK_INCLUDE_PATH)
304 IF(GTK2_CAIRO_INCLUDE_PATH)
305 # Assume that if gtk and glib were found, the other
306 # supporting libraries have also been found.
308 SET(GTK2_FOUND TRUE)
310 SET(GTK2_INCLUDE_DIRS
311 ${GTK2_GTK_INCLUDE_PATH}
312 ${GTK2_GLIBCONFIG_INCLUDE_PATH}
313 ${GTK2_GLIB_INCLUDE_PATH}
314 ${GTK2_PANGO_INCLUDE_PATH}
315 ${GTK2_GDKCONFIG_INCLUDE_PATH}
316 ${GTK2_ATK_INCLUDE_PATH}
317 ${GTK2_CAIRO_INCLUDE_PATH}
318 )
320 SET(GTK2_LIBRARIES
321 ${GTK2_GTK_LIBRARY}
322 ${GTK2_GDK_LIBRARY}
323 ${GTK2_GLIB_LIBRARY}
324 )
325 #${GTK2_GOBJECT_LIBRARY})
327 IF(GTK2_GMODULE_LIBRARY)
328 SET(GTK2_LIBRARIES
329 ${GTK2_LIBRARIES}
330 ${GTK2_GMODULE_LIBRARY}
331 )
332 ENDIF(GTK2_GMODULE_LIBRARY)
334 IF(GTK2_GTHREAD_LIBRARY)
335 SET(GTK2_LIBRARIES
336 ${GTK2_LIBRARIES}
337 ${GTK2_GTHREAD_LIBRARY}
338 )
339 SET(GTK2_LIBRARIES ${GTK2_LIBRARIES})
340 ENDIF(GTK2_GTHREAD_LIBRARY)
341 ELSE(GTK2_CAIRO_INCLUDE_PATH)
342 MESSAGE(STATUS "Can not find cairo")
343 ENDIF(GTK2_CAIRO_INCLUDE_PATH)
344 ELSE(GTK2_ATK_INCLUDE_PATH)
345 MESSAGE(STATUS "Can not find atk")
346 ENDIF(GTK2_ATK_INCLUDE_PATH)
347 ELSE(GTK2_PANGO_INCLUDE_PATH)
348 MESSAGE(STATUS "Can not find pango includes")
349 ENDIF(GTK2_PANGO_INCLUDE_PATH)
350 ELSE(GTK2_GLIB_LIBRARY)
351 MESSAGE(STATUS "Can not find glib lib")
352 ENDIF(GTK2_GLIB_LIBRARY)
353 ELSE(GTK2_GTK_LIBRARY)
354 MESSAGE(STATUS "Can not find gtk lib")
355 ENDIF(GTK2_GTK_LIBRARY)
356 ELSE(GTK2_GLIB_INCLUDE_PATH)
357 MESSAGE(STATUS "Can not find glib includes")
358 ENDIF(GTK2_GLIB_INCLUDE_PATH)
359 ELSE(GTK2_GLIBCONFIG_INCLUDE_PATH)
360 MESSAGE(STATUS "Can not find glibconfig")
361 ENDIF(GTK2_GLIBCONFIG_INCLUDE_PATH)
362 ELSE (GTK2_GTK_INCLUDE_PATH)
363 MESSAGE(STATUS "Can not find gtk includes")
364 ENDIF (GTK2_GTK_INCLUDE_PATH)
366 IF (GTK2_FOUND)
367 IF (NOT GTK2_FIND_QUIETLY)
368 MESSAGE(STATUS "Found GTK2: ${GTK2_LIBRARIES}")
369 ENDIF (NOT GTK2_FIND_QUIETLY)
370 ELSE (GTK2_FOUND)
371 IF (GTK2_FIND_REQUIRED)
372 MESSAGE(SEND_ERROR "Could NOT find GTK2")
373 ENDIF (GTK2_FIND_REQUIRED)
374 ENDIF (GTK2_FOUND)
376 MARK_AS_ADVANCED(
377 GTK2_GDK_LIBRARY
378 GTK2_GLIB_INCLUDE_PATH
379 GTK2_GLIB_LIBRARY
380 GTK2_GLIBCONFIG_INCLUDE_PATH
381 GTK2_GMODULE_LIBRARY
382 GTK2_GTHREAD_LIBRARY
383 GTK2_Xi_LIBRARY
384 GTK2_GTK_INCLUDE_PATH
385 GTK2_GTK_LIBRARY
386 GTK2_GTKGL_INCLUDE_PATH
387 GTK2_GTKGL_LIBRARY
388 GTK2_ATK_INCLUDE_PATH
389 GTK2_GDKCONFIG_INCLUDE_PATH
390 #GTK2_GOBJECT_LIBRARY
391 GTK2_PANGO_INCLUDE_PATH
392 )
393 ENDIF (GTK2_LIBRARIES AND GTK2_INCLUDE_DIRS)
395 # vim:et ts=2 sw=2 comments=\:\#