d3e22ef7347c71fce0cfa079b1b313860f8ae899
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 )
95 # Some Linux distributions (e.g. Red Hat) have glibconfig.h
96 # and glib.h in different directories, so we need to look
97 # for both.
98 # - Atanas Georgiev <atanas@cs.columbia.edu>
99 if (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
100 pkgconfig(glib-2.0 _GLIB2_INCLUDEDIR _GLIB2inkDir _GLIB2_LDFLAGS _GLIB2_CFLAGS)
101 pkgconfig(gmodule-2.0 _GMODULE2_INCLUDEDIR _GMODULE2inkDir _GMODULE2_LDFLAGS _GMODULE2_CFLAGS)
102 else (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
103 if (PKG_CONFIG_FOUND)
104 pkg_check_modules(_GLIB2 glib-2.0)
105 pkg_check_modules(_GMODULE2 gmodule-2.0)
106 endif (PKG_CONFIG_FOUND)
107 endif (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
109 SET(GDIR /opt/gnome/lib/glib-2.0/include)
110 FIND_PATH(GTK2_GLIBCONFIG_INCLUDE_PATH glibconfig.h
111 ${_GLIB2_INCLUDEDIR}
112 /opt/gnome/lib64/glib-2.0/include
113 /opt/gnome/lib/glib-2.0/include
114 /usr/lib64/glib-2.0/include
115 /usr/lib/glib-2.0/include
116 )
117 #MESSAGE(STATUS "DEBUG: GTK2_GLIBCONFIG_INCLUDE_PATH = ${GTK2_GLIBCONFIG_INCLUDE_PATH}")
119 FIND_PATH(GTK2_GLIB_INCLUDE_PATH glib.h
120 ${_GLIB2_INCLUDEDIR}
121 /opt/gnome/include/glib-2.0
122 /usr/include/glib-2.0
123 )
124 #MESSAGE(STATUS "DEBUG: GTK2_GLIBCONFIG_INCLUDE_PATH = ${GTK2_GLIBCONFIG_INCLUDE_PATH}")
126 FIND_PATH(GTK2_GTKGL_INCLUDE_PATH gtkgl/gtkglarea.h
127 ${_GLIB2_INCLUDEDIR}
128 /usr/include
129 /usr/local/include
130 /usr/openwin/share/include
131 /opt/gnome/include
132 )
134 if (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
135 pkgconfig(pango _PANGO_INCLUDEDIR _PANGOinkDir _PANGO_LDFLAGS _PANGO_CFLAGS)
136 else (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
137 if (PKG_CONFIG_FOUND)
138 pkg_check_modules(_PANGO pango)
139 endif (PKG_CONFIG_FOUND)
140 endif (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
142 FIND_PATH(GTK2_PANGO_INCLUDE_PATH pango/pango.h
143 ${_PANGO_INCLUDEDIR}
144 /opt/gnome/include/pango-1.0
145 /usr/include/pango-1.0
146 )
148 if (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
149 pkgconfig(gdk-2.0 _GDK2_INCLUDEDIR _GDK2inkDir _GDK2_LDFLAGS _GDK2_CFLAGS)
150 else (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
151 if (PKG_CONFIG_FOUND)
152 pkg_check_modules(_GDK2 gdk-2.0)
153 endif (PKG_CONFIG_FOUND)
154 endif (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
156 FIND_PATH(GTK2_GDKCONFIG_INCLUDE_PATH gdkconfig.h
157 ${_GDK2_INCLUDEDIR}
158 /opt/gnome/lib/gtk-2.0/include
159 /opt/gnome/lib64/gtk-2.0/include
160 /usr/lib/gtk-2.0/include
161 /usr/lib64/gtk-2.0/include
162 )
164 if (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
165 pkgconfig(cairo _CAIRO_INCLUDEDIR _CAIROinkDir _CAIRO_LDFLAGS _CAIRO_CFLAGS)
166 else (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
167 if (PKG_CONFIG_FOUND)
168 pkg_check_modules(_CAIRO cairo)
169 endif (PKG_CONFIG_FOUND)
170 endif (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
172 FIND_PATH(GTK2_CAIRO_INCLUDE_PATH cairo.h
173 ${_CAIRO_INCLUDEDIR}
174 /opt/gnome/include/cairo
175 /usr/include
176 /usr/include/cairo
177 )
178 #MESSAGE(STATUS "DEBUG: GTK2_CAIRO_INCLUDE_PATH = ${GTK2_CAIRO_INCLUDE_PATH}")
180 if (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
181 pkgconfig(atk _ATK_INCLUDEDIR _ATKinkDir _ATK_LDFLAGS _ATK_CFLAGS)
182 else (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
183 if (PKG_CONFIG_FOUND)
184 pkg_check_modules(_ATK atk)
185 endif (PKG_CONFIG_FOUND)
186 endif (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
188 FIND_PATH(GTK2_ATK_INCLUDE_PATH atk/atk.h
189 ${_ATK_INCLUDEDIR}
190 /opt/gnome/include/atk-1.0
191 /usr/include/atk-1.0
192 )
193 #MESSAGE(STATUS "DEBUG: GTK2_ATK_INCLUDE_PATH = ${GTK2_ATK_INCLUDE_PATH}")
195 FIND_LIBRARY(GTK2_GTKGL_LIBRARY
196 NAMES
197 gtkgl
198 PATHS
199 ${_GTK2_INCLUDEDIR}
200 /usr/lib
201 /usr/local/lib
202 /usr/openwin/lib
203 /usr/X11R6/lib
204 /opt/gnome/lib
205 )
207 FIND_LIBRARY(GTK2_GTK_LIBRARY
208 NAMES
209 gtk-x11-2.0
210 PATHS
211 ${_GTK2_LIBDIR}
212 /usr/lib
213 /usr/local/lib
214 /usr/openwin/lib
215 /usr/X11R6/lib
216 /opt/gnome/lib
217 )
219 FIND_LIBRARY(GTK2_GDK_LIBRARY
220 NAMES
221 gdk-x11-2.0
222 PATHS
223 ${_GDK2_LIBDIR}
224 /usr/lib
225 /usr/local/lib
226 /usr/openwin/lib
227 /usr/X11R6/lib
228 /opt/gnome/lib
229 )
231 FIND_LIBRARY(GTK2_GMODULE_LIBRARY
232 NAMES
233 gmodule-2.0
234 PATHS
235 ${_GMODULE2_LIBDIR}
236 /usr/lib
237 /usr/local/lib
238 /usr/openwin/lib
239 /usr/X11R6/lib
240 /opt/gnome/lib
241 )
243 FIND_LIBRARY(GTK2_GLIB_LIBRARY
244 NAMES
245 glib-2.0
246 PATHS
247 ${_GLIB2_LIBDIR}
248 /usr/lib
249 /usr/local/lib
250 /usr/openwin/lib
251 /usr/X11R6/lib
252 /opt/gnome/lib
253 )
255 FIND_LIBRARY(GTK2_Xi_LIBRARY
256 NAMES
257 Xi
258 PATHS
259 /usr/lib
260 /usr/local/lib
261 /usr/openwin/lib
262 /usr/X11R6/lib
263 /opt/gnome/lib
264 )
266 FIND_LIBRARY(GTK2_GTHREAD_LIBRARY
267 NAMES
268 gthread-2.0
269 PATHS
270 /usr/lib
271 /usr/local/lib
272 /usr/openwin/lib
273 /usr/X11R6/lib
274 /opt/gnome/lib
275 )
278 FIND_LIBRARY(GTK2_GOBJECT_LIBRARY
279 NAMES
280 gobject-2.0
281 PATHS
282 /usr/lib
283 /usr/local/lib
284 /usr/openwin/lib
285 /usr/X11R6/lib
286 /opt/gnome/lib
287 )
289 IF(GTK2_GTK_INCLUDE_PATH)
290 IF(GTK2_GLIBCONFIG_INCLUDE_PATH)
291 IF(GTK2_GLIB_INCLUDE_PATH)
292 IF(GTK2_GTK_LIBRARY)
293 IF(GTK2_GLIB_LIBRARY)
294 IF(GTK2_PANGO_INCLUDE_PATH)
295 IF(GTK2_ATK_INCLUDE_PATH)
296 IF(GTK2_CAIRO_INCLUDE_PATH)
297 # Assume that if gtk and glib were found, the other
298 # supporting libraries have also been found.
300 SET(GTK2_FOUND TRUE)
302 SET(GTK2_INCLUDE_DIRS
303 ${GTK2_GTK_INCLUDE_PATH}
304 ${GTK2_GLIBCONFIG_INCLUDE_PATH}
305 ${GTK2_GLIB_INCLUDE_PATH}
306 ${GTK2_PANGO_INCLUDE_PATH}
307 ${GTK2_GDKCONFIG_INCLUDE_PATH}
308 ${GTK2_ATK_INCLUDE_PATH}
309 ${GTK2_CAIRO_INCLUDE_PATH}
310 )
312 SET(GTK2_LIBRARIES
313 ${GTK2_GTK_LIBRARY}
314 ${GTK2_GDK_LIBRARY}
315 ${GTK2_GLIB_LIBRARY}
316 )
317 #${GTK2_GOBJECT_LIBRARY})
319 IF(GTK2_GMODULE_LIBRARY)
320 SET(GTK2_LIBRARIES
321 ${GTK2_LIBRARIES}
322 ${GTK2_GMODULE_LIBRARY}
323 )
324 ENDIF(GTK2_GMODULE_LIBRARY)
326 IF(GTK2_GTHREAD_LIBRARY)
327 SET(GTK2_LIBRARIES
328 ${GTK2_LIBRARIES}
329 ${GTK2_GTHREAD_LIBRARY}
330 )
331 SET(GTK2_LIBRARIES ${GTK2_LIBRARIES})
332 ENDIF(GTK2_GTHREAD_LIBRARY)
333 ELSE(GTK2_CAIRO_INCLUDE_PATH)
334 MESSAGE(STATUS "Can not find cairo")
335 ENDIF(GTK2_CAIRO_INCLUDE_PATH)
336 ELSE(GTK2_ATK_INCLUDE_PATH)
337 MESSAGE(STATUS "Can not find atk")
338 ENDIF(GTK2_ATK_INCLUDE_PATH)
339 ELSE(GTK2_PANGO_INCLUDE_PATH)
340 MESSAGE(STATUS "Can not find pango includes")
341 ENDIF(GTK2_PANGO_INCLUDE_PATH)
342 ELSE(GTK2_GLIB_LIBRARY)
343 MESSAGE(STATUS "Can not find glib lib")
344 ENDIF(GTK2_GLIB_LIBRARY)
345 ELSE(GTK2_GTK_LIBRARY)
346 MESSAGE(STATUS "Can not find gtk lib")
347 ENDIF(GTK2_GTK_LIBRARY)
348 ELSE(GTK2_GLIB_INCLUDE_PATH)
349 MESSAGE(STATUS "Can not find glib includes")
350 ENDIF(GTK2_GLIB_INCLUDE_PATH)
351 ELSE(GTK2_GLIBCONFIG_INCLUDE_PATH)
352 MESSAGE(STATUS "Can not find glibconfig")
353 ENDIF(GTK2_GLIBCONFIG_INCLUDE_PATH)
354 ELSE (GTK2_GTK_INCLUDE_PATH)
355 MESSAGE(STATUS "Can not find gtk includes")
356 ENDIF (GTK2_GTK_INCLUDE_PATH)
358 IF (GTK2_FOUND)
359 IF (NOT GTK2_FIND_QUIETLY)
360 MESSAGE(STATUS "Found GTK2: ${GTK2_LIBRARIES}")
361 ENDIF (NOT GTK2_FIND_QUIETLY)
362 ELSE (GTK2_FOUND)
363 IF (GTK2_FIND_REQUIRED)
364 MESSAGE(SEND_ERROR "Could NOT find GTK2")
365 ENDIF (GTK2_FIND_REQUIRED)
366 ENDIF (GTK2_FOUND)
368 MARK_AS_ADVANCED(
369 GTK2_GDK_LIBRARY
370 GTK2_GLIB_INCLUDE_PATH
371 GTK2_GLIB_LIBRARY
372 GTK2_GLIBCONFIG_INCLUDE_PATH
373 GTK2_GMODULE_LIBRARY
374 GTK2_GTHREAD_LIBRARY
375 GTK2_Xi_LIBRARY
376 GTK2_GTK_INCLUDE_PATH
377 GTK2_GTK_LIBRARY
378 GTK2_GTKGL_INCLUDE_PATH
379 GTK2_GTKGL_LIBRARY
380 GTK2_ATK_INCLUDE_PATH
381 GTK2_GDKCONFIG_INCLUDE_PATH
382 #GTK2_GOBJECT_LIBRARY
383 GTK2_PANGO_INCLUDE_PATH
384 )
385 ENDIF (GTK2_LIBRARIES AND GTK2_INCLUDE_DIRS)
387 # vim:et ts=2 sw=2 comments=\:\#