Code

Cmake: more fixes plus a patch for OSX paths by Henrik Gustafsson
[inkscape.git] / CMakeScripts / FindGTK2.cmake
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=\:\#