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 #check whether cmake version is 2.4 or greater
71 if (${CMAKE_MAJOR_VERSION} GREATER 1 AND ${CMAKE_MINOR_VERSION} GREATER 3)
72 SET(GTK2_CMAKE_24 TRUE)
73 endif (${CMAKE_MAJOR_VERSION} GREATER 1 AND ${CMAKE_MINOR_VERSION} GREATER 3)
75 # use pkg-config to get the directories and then use these values
76 # in the FIND_PATH() and FIND_LIBRARY() calls
77 if (GTK2_CMAKE_24)
78 include(UsePkgConfig)
79 else (GTK2_CMAKE_24)
80 find_package(PkgConfig)
81 endif (GTK2_CMAKE_24)
82 INCLUDE(UsePkgConfig)
84 if (GTK2_CMAKE_24)
85 pkgconfig(gtk+-2.0 _GTK2_INCLUDEDIR _GTK2_LIBDIR _GTK2_LDFLAGS _GTK2_CFLAGS)
86 MESSAGE(STATUS "DEBUG pkgconfig found: ${_GTK2_INCLUDEDIR} ${_GTK2_LIBDIR} ${_GTK2_LDFLAGS} ${_GTK2_CFLAGS}")
87 else (GTK2_CMAKE_24)
88 if (PKG_CONFIG_FOUND)
89 pkg_check_modules(_GTK2 gtk+-2.0)
90 endif (PKG_CONFIG_FOUND)
91 endif (GTK2_CMAKE_24)
93 FIND_PATH(GTK2_GTK_INCLUDE_PATH gtk/gtk.h
94 $ENV{GTK2_HOME}
95 ${_GTK2_INCLUDEDIR}
96 /usr/include/gtk-2.0
97 /usr/local/include/gtk-2.0
98 /opt/gnome/include/gtk-2.0
99 /opt/local/include/gtk-2.0
100 $ENV{DEVLIBS_PATH}//include//
101 )
103 # Some Linux distributions (e.g. Red Hat) have glibconfig.h
104 # and glib.h in different directories, so we need to look
105 # for both.
106 # - Atanas Georgiev <atanas@cs.columbia.edu>
107 if (GTK2_CMAKE_24)
108 pkgconfig(glib-2.0 _GLIB2_INCLUDEDIR _GLIB2inkDir _GLIB2_LDFLAGS _GLIB2_CFLAGS)
109 pkgconfig(gmodule-2.0 _GMODULE2_INCLUDEDIR _GMODULE2inkDir _GMODULE2_LDFLAGS _GMODULE2_CFLAGS)
110 else (GTK2_CMAKE_24)
111 if (PKG_CONFIG_FOUND)
112 pkg_check_modules(_GLIB2 glib-2.0)
113 pkg_check_modules(_GMODULE2 gmodule-2.0)
114 endif (PKG_CONFIG_FOUND)
115 endif (GTK2_CMAKE_24)
117 SET(GDIR /opt/gnome/lib/glib-2.0/include)
118 FIND_PATH(GTK2_GLIBCONFIG_INCLUDE_PATH glibconfig.h
119 ${_GLIB2_INCLUDEDIR}
120 /opt/gnome/lib64/glib-2.0/include
121 /opt/gnome/lib/glib-2.0/include
122 /usr/lib64/glib-2.0/include
123 /usr/lib/glib-2.0/include
124 /opt/local/lib/glib-2.0/include
125 $ENV{DEVLIBS_PATH}//include//
126 )
127 #MESSAGE(STATUS "DEBUG: GTK2_GLIBCONFIG_INCLUDE_PATH = ${GTK2_GLIBCONFIG_INCLUDE_PATH}")
129 FIND_PATH(GTK2_GLIB_INCLUDE_PATH glib.h
130 ${_GLIB2_INCLUDEDIR}
131 /opt/gnome/include/glib-2.0
132 /usr/include/glib-2.0
133 /opt/local/include/glib-2.0
134 $ENV{DEVLIBS_PATH}//include//
135 )
136 #MESSAGE(STATUS "DEBUG: GTK2_GLIBCONFIG_INCLUDE_PATH = ${GTK2_GLIBCONFIG_INCLUDE_PATH}")
138 FIND_PATH(GTK2_GTKGL_INCLUDE_PATH gtkgl/gtkglarea.h
139 ${_GLIB2_INCLUDEDIR}
140 /usr/include
141 /usr/local/include
142 /usr/openwin/share/include
143 /opt/gnome/include
144 /opt/local/include
145 $ENV{DEVLIBS_PATH}//include//
146 )
148 if (GTK2_CMAKE_24)
149 pkgconfig(pango _PANGO_INCLUDEDIR _PANGOinkDir _PANGO_LDFLAGS _PANGO_CFLAGS)
150 else (GTK2_CMAKE_24)
151 if (PKG_CONFIG_FOUND)
152 pkg_check_modules(_PANGO pango)
153 endif (PKG_CONFIG_FOUND)
154 endif (GTK2_CMAKE_24)
156 FIND_PATH(GTK2_PANGO_INCLUDE_PATH pango/pango.h
157 ${_PANGO_INCLUDEDIR}
158 /opt/gnome/include/pango-1.0
159 /usr/include/pango-1.0
160 /opt/local/include/pango-1.0
161 $ENV{DEVLIBS_PATH}//include//
162 )
164 if (GTK2_CMAKE_24)
165 pkgconfig(gdk-2.0 _GDK2_INCLUDEDIR _GDK2inkDir _GDK2_LDFLAGS _GDK2_CFLAGS)
166 else (GTK2_CMAKE_24)
167 if (PKG_CONFIG_FOUND)
168 pkg_check_modules(_GDK2 gdk-2.0)
169 endif (PKG_CONFIG_FOUND)
170 endif (GTK2_CMAKE_24)
172 FIND_PATH(GTK2_GDKCONFIG_INCLUDE_PATH gdkconfig.h
173 ${_GDK2_INCLUDEDIR}
174 /opt/gnome/lib/gtk-2.0/include
175 /opt/gnome/lib64/gtk-2.0/include
176 /usr/lib/gtk-2.0/include
177 /usr/lib64/gtk-2.0/include
178 /opt/local/lib/gtk-2.0/include
179 $ENV{DEVLIBS_PATH}//include//
180 )
182 if (GTK2_CMAKE_24)
183 pkgconfig(cairo _CAIRO_INCLUDEDIR _CAIROinkDir _CAIRO_LDFLAGS _CAIRO_CFLAGS)
184 else (GTK2_CMAKE_24)
185 if (PKG_CONFIG_FOUND)
186 pkg_check_modules(_CAIRO cairo)
187 endif (PKG_CONFIG_FOUND)
188 endif (GTK2_CMAKE_24)
190 FIND_PATH(GTK2_CAIRO_INCLUDE_PATH cairo.h
191 ${_CAIRO_INCLUDEDIR}
192 /opt/gnome/include/cairo
193 /usr/include
194 /usr/include/cairo
195 /opt/local/include/cairo
196 $ENV{DEVLIBS_PATH}//include//
197 )
198 #MESSAGE(STATUS "DEBUG: GTK2_CAIRO_INCLUDE_PATH = ${GTK2_CAIRO_INCLUDE_PATH}")
200 if (GTK2_CMAKE_24)
201 pkgconfig(atk _ATK_INCLUDEDIR _ATKinkDir _ATK_LDFLAGS _ATK_CFLAGS)
202 else (GTK2_CMAKE_24)
203 if (PKG_CONFIG_FOUND)
204 pkg_check_modules(_ATK atk)
205 endif (PKG_CONFIG_FOUND)
206 endif (GTK2_CMAKE_24)
208 FIND_PATH(GTK2_ATK_INCLUDE_PATH atk/atk.h
209 ${_ATK_INCLUDEDIR}
210 /opt/gnome/include/atk-1.0
211 /usr/include/atk-1.0
212 /opt/local/include/atk-1.0
213 $ENV{DEVLIBS_PATH}//include//
214 )
215 #MESSAGE(STATUS "DEBUG: GTK2_ATK_INCLUDE_PATH = ${GTK2_ATK_INCLUDE_PATH}")
217 FIND_LIBRARY(GTK2_GTKGL_LIBRARY
218 NAMES
219 gtkgl
220 PATHS
221 ${_GTK2_INCLUDEDIR}
222 /usr/lib
223 /usr/local/lib
224 /usr/openwin/lib
225 /usr/X11R6/lib
226 /opt/gnome/lib
227 )
229 FIND_LIBRARY(GTK2_GTK_LIBRARY
230 NAMES
231 gtk-x11-2.0
232 PATHS
233 ${_GTK2_LIBDIR}
234 /usr/lib
235 /usr/local/lib
236 /usr/openwin/lib
237 /usr/X11R6/lib
238 /opt/gnome/lib
239 )
241 FIND_LIBRARY(GTK2_GDK_LIBRARY
242 NAMES
243 gdk-x11-2.0
244 PATHS
245 ${_GDK2_LIBDIR}
246 /usr/lib
247 /usr/local/lib
248 /usr/openwin/lib
249 /usr/X11R6/lib
250 /opt/gnome/lib
251 )
253 FIND_LIBRARY(GTK2_GMODULE_LIBRARY
254 NAMES
255 gmodule-2.0
256 PATHS
257 ${_GMODULE2_LIBDIR}
258 /usr/lib
259 /usr/local/lib
260 /usr/openwin/lib
261 /usr/X11R6/lib
262 /opt/gnome/lib
263 )
265 FIND_LIBRARY(GTK2_GLIB_LIBRARY
266 NAMES
267 glib-2.0
268 PATHS
269 ${_GLIB2_LIBDIR}
270 /usr/lib
271 /usr/local/lib
272 /usr/openwin/lib
273 /usr/X11R6/lib
274 /opt/gnome/lib
275 )
277 FIND_LIBRARY(GTK2_Xi_LIBRARY
278 NAMES
279 Xi
280 PATHS
281 /usr/lib
282 /usr/local/lib
283 /usr/openwin/lib
284 /usr/X11R6/lib
285 /opt/gnome/lib
286 )
288 FIND_LIBRARY(GTK2_GTHREAD_LIBRARY
289 NAMES
290 gthread-2.0
291 PATHS
292 /usr/lib
293 /usr/local/lib
294 /usr/openwin/lib
295 /usr/X11R6/lib
296 /opt/gnome/lib
297 )
300 FIND_LIBRARY(GTK2_GOBJECT_LIBRARY
301 NAMES
302 gobject-2.0
303 PATHS
304 /usr/lib
305 /usr/local/lib
306 /usr/openwin/lib
307 /usr/X11R6/lib
308 /opt/gnome/lib
309 )
311 IF(GTK2_GTK_INCLUDE_PATH)
312 IF(GTK2_GLIBCONFIG_INCLUDE_PATH)
313 IF(GTK2_GLIB_INCLUDE_PATH)
314 IF(GTK2_GTK_LIBRARY)
315 IF(GTK2_GLIB_LIBRARY)
316 IF(GTK2_PANGO_INCLUDE_PATH)
317 IF(GTK2_ATK_INCLUDE_PATH)
318 IF(GTK2_CAIRO_INCLUDE_PATH)
319 # Assume that if gtk and glib were found, the other
320 # supporting libraries have also been found.
322 SET(GTK2_FOUND TRUE)
324 SET(GTK2_INCLUDE_DIRS
325 ${GTK2_GTK_INCLUDE_PATH}
326 ${GTK2_GLIBCONFIG_INCLUDE_PATH}
327 ${GTK2_GLIB_INCLUDE_PATH}
328 ${GTK2_PANGO_INCLUDE_PATH}
329 ${GTK2_GDKCONFIG_INCLUDE_PATH}
330 ${GTK2_ATK_INCLUDE_PATH}
331 ${GTK2_CAIRO_INCLUDE_PATH}
332 )
334 SET(GTK2_LIBRARIES
335 ${GTK2_GTK_LIBRARY}
336 ${GTK2_GDK_LIBRARY}
337 ${GTK2_GLIB_LIBRARY}
338 )
339 #${GTK2_GOBJECT_LIBRARY})
341 IF(GTK2_GMODULE_LIBRARY)
342 SET(GTK2_LIBRARIES
343 ${GTK2_LIBRARIES}
344 ${GTK2_GMODULE_LIBRARY}
345 )
346 ENDIF(GTK2_GMODULE_LIBRARY)
348 IF(GTK2_GTHREAD_LIBRARY)
349 SET(GTK2_LIBRARIES
350 ${GTK2_LIBRARIES}
351 ${GTK2_GTHREAD_LIBRARY}
352 )
353 SET(GTK2_LIBRARIES ${GTK2_LIBRARIES})
354 ENDIF(GTK2_GTHREAD_LIBRARY)
355 ELSE(GTK2_CAIRO_INCLUDE_PATH)
356 MESSAGE(STATUS "Can not find cairo")
357 ENDIF(GTK2_CAIRO_INCLUDE_PATH)
358 ELSE(GTK2_ATK_INCLUDE_PATH)
359 MESSAGE(STATUS "Can not find atk")
360 ENDIF(GTK2_ATK_INCLUDE_PATH)
361 ELSE(GTK2_PANGO_INCLUDE_PATH)
362 MESSAGE(STATUS "Can not find pango includes")
363 ENDIF(GTK2_PANGO_INCLUDE_PATH)
364 ELSE(GTK2_GLIB_LIBRARY)
365 MESSAGE(STATUS "Can not find glib lib")
366 ENDIF(GTK2_GLIB_LIBRARY)
367 ELSE(GTK2_GTK_LIBRARY)
368 MESSAGE(STATUS "Can not find gtk lib")
369 ENDIF(GTK2_GTK_LIBRARY)
370 ELSE(GTK2_GLIB_INCLUDE_PATH)
371 MESSAGE(STATUS "Can not find glib includes")
372 ENDIF(GTK2_GLIB_INCLUDE_PATH)
373 ELSE(GTK2_GLIBCONFIG_INCLUDE_PATH)
374 MESSAGE(STATUS "Can not find glibconfig")
375 ENDIF(GTK2_GLIBCONFIG_INCLUDE_PATH)
376 ELSE (GTK2_GTK_INCLUDE_PATH)
377 MESSAGE(STATUS "Can not find gtk includes")
378 ENDIF (GTK2_GTK_INCLUDE_PATH)
380 IF (GTK2_FOUND)
381 IF (NOT GTK2_FIND_QUIETLY)
382 MESSAGE(STATUS "Found GTK2: ${GTK2_LIBRARIES}")
383 ENDIF (NOT GTK2_FIND_QUIETLY)
384 ELSE (GTK2_FOUND)
385 IF (GTK2_FIND_REQUIRED)
386 MESSAGE(SEND_ERROR "Could NOT find GTK2")
387 ENDIF (GTK2_FIND_REQUIRED)
388 ENDIF (GTK2_FOUND)
390 MARK_AS_ADVANCED(
391 GTK2_GDK_LIBRARY
392 GTK2_GLIB_INCLUDE_PATH
393 GTK2_GLIB_LIBRARY
394 GTK2_GLIBCONFIG_INCLUDE_PATH
395 GTK2_GMODULE_LIBRARY
396 GTK2_GTHREAD_LIBRARY
397 GTK2_Xi_LIBRARY
398 GTK2_GTK_INCLUDE_PATH
399 GTK2_GTK_LIBRARY
400 GTK2_GTKGL_INCLUDE_PATH
401 GTK2_GTKGL_LIBRARY
402 GTK2_ATK_INCLUDE_PATH
403 GTK2_GDKCONFIG_INCLUDE_PATH
404 #GTK2_GOBJECT_LIBRARY
405 GTK2_PANGO_INCLUDE_PATH
406 )
407 ENDIF (GTK2_LIBRARIES AND GTK2_INCLUDE_DIRS)
409 # vim:et ts=2 sw=2 comments=\:\#