Changeset View
Changeset View
Standalone View
Standalone View
cmake/modules/FindGTK2.cmake
- This file was added.
1 | # - FindGTK2.cmake | ||||
---|---|---|---|---|---|
2 | # This module can find the GTK2 widget libraries and several of its other | ||||
3 | # optional components like gtkmm, glade, and glademm. | ||||
4 | # | ||||
5 | # NOTE: If you intend to use version checking, CMake 2.6.2 or later is | ||||
6 | # required. | ||||
7 | # | ||||
8 | # Specify one or more of the following components | ||||
9 | # as you call this find module. See example below. | ||||
10 | # | ||||
11 | # gtk | ||||
12 | # gtkmm | ||||
13 | # glade | ||||
14 | # glademm | ||||
15 | # | ||||
16 | # The following variables will be defined for your use | ||||
17 | # | ||||
18 | # GTK2_FOUND - Were all of your specified components found? | ||||
19 | # GTK2_INCLUDE_DIRS - All include directories | ||||
20 | # GTK2_LIBRARIES - All libraries | ||||
21 | # | ||||
22 | # GTK2_VERSION - The version of GTK2 found (x.y.z) | ||||
23 | # GTK2_MAJOR_VERSION - The major version of GTK2 | ||||
24 | # GTK2_MINOR_VERSION - The minor version of GTK2 | ||||
25 | # GTK2_PATCH_VERSION - The patch version of GTK2 | ||||
26 | # | ||||
27 | # Optional variables you can define prior to calling this module: | ||||
28 | # | ||||
29 | # GTK2_DEBUG - Enables verbose debugging of the module | ||||
30 | # GTK2_SKIP_MARK_AS_ADVANCED - Disable marking cache variables as advanced | ||||
31 | # GTK2_ADDITIONAL_SUFFIXES - Allows defining additional directories to | ||||
32 | # search for include files | ||||
33 | # | ||||
34 | #================= | ||||
35 | # Example Usage: | ||||
36 | # | ||||
37 | # Call find_package() once, here are some examples to pick from: | ||||
38 | # | ||||
39 | # Require GTK 2.6 or later | ||||
40 | # find_package(GTK2 2.6 REQUIRED gtk) | ||||
41 | # | ||||
42 | # Require GTK 2.10 or later and Glade | ||||
43 | # find_package(GTK2 2.10 REQUIRED gtk glade) | ||||
44 | # | ||||
45 | # Search for GTK/GTKMM 2.8 or later | ||||
46 | # find_package(GTK2 2.8 COMPONENTS gtk gtkmm) | ||||
47 | # | ||||
48 | # if(GTK2_FOUND) | ||||
49 | # include_directories(${GTK2_INCLUDE_DIRS}) | ||||
50 | # add_executable(mygui mygui.cc) | ||||
51 | # target_link_libraries(mygui ${GTK2_LIBRARIES}) | ||||
52 | # endif() | ||||
53 | # | ||||
54 | | ||||
55 | #============================================================================= | ||||
56 | # Copyright 2009 Kitware, Inc. | ||||
57 | # Copyright 2008-2009 Philip Lowman <philip@yhbt.com> | ||||
58 | # | ||||
59 | # Distributed under the OSI-approved BSD License (the "License"); | ||||
60 | # see accompanying file Copyright.txt for details. | ||||
61 | # | ||||
62 | # This software is distributed WITHOUT ANY WARRANTY; without even the | ||||
63 | # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||||
64 | # See the License for more information. | ||||
65 | #============================================================================= | ||||
66 | # (To distribute this file outside of CMake, substitute the full | ||||
67 | # License text for the above reference.) | ||||
68 | | ||||
69 | # Version 1.3 (11/9/2010) (CMake 2.8.4) | ||||
70 | # * 11429: Add support for detecting GTK2 built with Visual Studio 10. | ||||
71 | # Thanks to Vincent Levesque for the patch. | ||||
72 | | ||||
73 | # Version 1.2 (8/30/2010) (CMake 2.8.3) | ||||
74 | # * Merge patch for detecting gdk-pixbuf library (split off | ||||
75 | # from core GTK in 2.21). Thanks to Vincent Untz for the patch | ||||
76 | # and Ricardo Cruz for the heads up. | ||||
77 | # Version 1.1 (8/19/2010) (CMake 2.8.3) | ||||
78 | # * Add support for detecting GTK2 under macports (thanks to Gary Kramlich) | ||||
79 | # Version 1.0 (8/12/2010) (CMake 2.8.3) | ||||
80 | # * Add support for detecting new pangommconfig.h header file | ||||
81 | # (Thanks to Sune Vuorela & the Debian Project for the patch) | ||||
82 | # * Add support for detecting fontconfig.h header | ||||
83 | # * Call find_package(Freetype) since it's required | ||||
84 | # * Add support for allowing users to add additional library directories | ||||
85 | # via the GTK2_ADDITIONAL_SUFFIXES variable (kind of a future-kludge in | ||||
86 | # case the GTK developers change versions on any of the directories in the | ||||
87 | # future). | ||||
88 | # Version 0.8 (1/4/2010) | ||||
89 | # * Get module working under MacOSX fink by adding /sw/include, /sw/lib | ||||
90 | # to PATHS and the gobject library | ||||
91 | # Version 0.7 (3/22/09) | ||||
92 | # * Checked into CMake CVS | ||||
93 | # * Added versioning support | ||||
94 | # * Module now defaults to searching for GTK if COMPONENTS not specified. | ||||
95 | # * Added HKCU prior to HKLM registry key and GTKMM specific environment | ||||
96 | # variable as per mailing list discussion. | ||||
97 | # * Added lib64 to include search path and a few other search paths where GTK | ||||
98 | # may be installed on Unix systems. | ||||
99 | # * Switched to lowercase CMake commands | ||||
100 | # * Prefaced internal variables with _GTK2 to prevent collision | ||||
101 | # * Changed internal macros to functions | ||||
102 | # * Enhanced documentation | ||||
103 | # Version 0.6 (1/8/08) | ||||
104 | # Added GTK2_SKIP_MARK_AS_ADVANCED option | ||||
105 | # Version 0.5 (12/19/08) | ||||
106 | # Second release to cmake mailing list | ||||
107 | | ||||
108 | #============================================================= | ||||
109 | # _GTK2_GET_VERSION | ||||
110 | # Internal function to parse the version number in gtkversion.h | ||||
111 | # _OUT_major = Major version number | ||||
112 | # _OUT_minor = Minor version number | ||||
113 | # _OUT_micro = Micro version number | ||||
114 | # _gtkversion_hdr = Header file to parse | ||||
115 | #============================================================= | ||||
116 | function(_GTK2_GET_VERSION _OUT_major _OUT_minor _OUT_micro _gtkversion_hdr) | ||||
117 | file(READ ${_gtkversion_hdr} _contents) | ||||
118 | if(_contents) | ||||
119 | string(REGEX REPLACE ".*#define GTK_MAJOR_VERSION[ \t]+\\(([0-9]+)\\).*" "\\1" ${_OUT_major} "${_contents}") | ||||
120 | string(REGEX REPLACE ".*#define GTK_MINOR_VERSION[ \t]+\\(([0-9]+)\\).*" "\\1" ${_OUT_minor} "${_contents}") | ||||
121 | string(REGEX REPLACE ".*#define GTK_MICRO_VERSION[ \t]+\\(([0-9]+)\\).*" "\\1" ${_OUT_micro} "${_contents}") | ||||
122 | | ||||
123 | if(NOT ${_OUT_major} MATCHES "[0-9]+") | ||||
124 | message(FATAL_ERROR "Version parsing failed for GTK2_MAJOR_VERSION!") | ||||
125 | endif() | ||||
126 | if(NOT ${_OUT_minor} MATCHES "[0-9]+") | ||||
127 | message(FATAL_ERROR "Version parsing failed for GTK2_MINOR_VERSION!") | ||||
128 | endif() | ||||
129 | if(NOT ${_OUT_micro} MATCHES "[0-9]+") | ||||
130 | message(FATAL_ERROR "Version parsing failed for GTK2_MICRO_VERSION!") | ||||
131 | endif() | ||||
132 | | ||||
133 | set(${_OUT_major} ${${_OUT_major}} PARENT_SCOPE) | ||||
134 | set(${_OUT_minor} ${${_OUT_minor}} PARENT_SCOPE) | ||||
135 | set(${_OUT_micro} ${${_OUT_micro}} PARENT_SCOPE) | ||||
136 | else() | ||||
137 | message(FATAL_ERROR "Include file ${_gtkversion_hdr} does not exist") | ||||
138 | endif() | ||||
139 | endfunction() | ||||
140 | | ||||
141 | #============================================================= | ||||
142 | # _GTK2_FIND_INCLUDE_DIR | ||||
143 | # Internal function to find the GTK include directories | ||||
144 | # _var = variable to set | ||||
145 | # _hdr = header file to look for | ||||
146 | #============================================================= | ||||
147 | function(_GTK2_FIND_INCLUDE_DIR _var _hdr) | ||||
148 | | ||||
149 | if(GTK2_DEBUG) | ||||
150 | message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] " | ||||
151 | "_GTK2_FIND_INCLUDE_DIR( ${_var} ${_hdr} )") | ||||
152 | endif() | ||||
153 | | ||||
154 | set(_relatives | ||||
155 | # If these ever change, things will break. | ||||
156 | ${GTK2_ADDITIONAL_SUFFIXES} | ||||
157 | glibmm-2.4 | ||||
158 | glib-2.0 | ||||
159 | atk-1.0 | ||||
160 | atkmm-1.6 | ||||
161 | cairo | ||||
162 | cairomm-1.0 | ||||
163 | gdk-pixbuf-2.0 | ||||
164 | gdkmm-2.4 | ||||
165 | giomm-2.4 | ||||
166 | gtk-2.0 | ||||
167 | gtkmm-2.4 | ||||
168 | libglade-2.0 | ||||
169 | libglademm-2.4 | ||||
170 | pango-1.0 | ||||
171 | pangomm-1.4 | ||||
172 | sigc++-2.0 | ||||
173 | ) | ||||
174 | | ||||
175 | set(_suffixes) | ||||
176 | foreach(_d ${_relatives}) | ||||
177 | list(APPEND _suffixes ${_d}) | ||||
178 | list(APPEND _suffixes ${_d}/include) # for /usr/lib/gtk-2.0/include | ||||
179 | endforeach() | ||||
180 | | ||||
181 | if(GTK2_DEBUG) | ||||
182 | message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] " | ||||
183 | "include suffixes = ${_suffixes}") | ||||
184 | endif() | ||||
185 | | ||||
186 | find_path(${_var} ${_hdr} | ||||
187 | PATHS | ||||
188 | /usr/local/lib64 | ||||
189 | /usr/local/lib | ||||
190 | /usr/lib64 | ||||
191 | /usr/lib | ||||
192 | /opt/gnome/include | ||||
193 | /opt/gnome/lib | ||||
194 | /opt/openwin/include | ||||
195 | /usr/openwin/lib | ||||
196 | /sw/include | ||||
197 | /sw/lib | ||||
198 | /opt/local/include | ||||
199 | /opt/local/lib | ||||
200 | /usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}/ | ||||
201 | $ENV{GTKMM_BASEPATH}/include | ||||
202 | $ENV{GTKMM_BASEPATH}/lib | ||||
203 | [HKEY_CURRENT_USER\\SOFTWARE\\gtkmm\\2.4;Path]/include | ||||
204 | [HKEY_CURRENT_USER\\SOFTWARE\\gtkmm\\2.4;Path]/lib | ||||
205 | [HKEY_LOCAL_MACHINE\\SOFTWARE\\gtkmm\\2.4;Path]/include | ||||
206 | [HKEY_LOCAL_MACHINE\\SOFTWARE\\gtkmm\\2.4;Path]/lib | ||||
207 | PATH_SUFFIXES | ||||
208 | ${_suffixes} | ||||
209 | ) | ||||
210 | | ||||
211 | if(${_var}) | ||||
212 | set(GTK2_INCLUDE_DIRS ${GTK2_INCLUDE_DIRS} ${${_var}} PARENT_SCOPE) | ||||
213 | if(NOT GTK2_SKIP_MARK_AS_ADVANCED) | ||||
214 | mark_as_advanced(${_var}) | ||||
215 | endif() | ||||
216 | endif() | ||||
217 | | ||||
218 | endfunction(_GTK2_FIND_INCLUDE_DIR) | ||||
219 | | ||||
220 | #============================================================= | ||||
221 | # _GTK2_FIND_LIBRARY | ||||
222 | # Internal function to find libraries packaged with GTK2 | ||||
223 | # _var = library variable to create | ||||
224 | #============================================================= | ||||
225 | function(_GTK2_FIND_LIBRARY _var _lib _expand_vc _append_version) | ||||
226 | | ||||
227 | if(GTK2_DEBUG) | ||||
228 | message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] " | ||||
229 | "_GTK2_FIND_LIBRARY( ${_var} ${_lib} ${_expand_vc} ${_append_version} )") | ||||
230 | endif() | ||||
231 | | ||||
232 | # Not GTK versions per se but the versions encoded into Windows | ||||
233 | # import libraries (GtkMM 2.14.1 has a gtkmm-vc80-2_4.lib for example) | ||||
234 | # Also the MSVC libraries use _ for . (this is handled below) | ||||
235 | set(_versions 2.20 2.18 2.16 2.14 2.12 | ||||
236 | 2.10 2.8 2.6 2.4 2.2 2.0 | ||||
237 | 1.20 1.18 1.16 1.14 1.12 | ||||
238 | 1.10 1.8 1.6 1.4 1.2 1.0) | ||||
239 | | ||||
240 | set(_library) | ||||
241 | set(_library_d) | ||||
242 | | ||||
243 | set(_library ${_lib}) | ||||
244 | | ||||
245 | if(_expand_vc AND MSVC) | ||||
246 | # Add vc80/vc90/vc100 midfixes | ||||
247 | if(MSVC80) | ||||
248 | set(_library ${_library}-vc80) | ||||
249 | elseif(MSVC90) | ||||
250 | set(_library ${_library}-vc90) | ||||
251 | elseif(MSVC10) | ||||
252 | set(_library ${_library}-vc100) | ||||
253 | endif() | ||||
254 | set(_library_d ${_library}-d) | ||||
255 | endif() | ||||
256 | | ||||
257 | if(GTK2_DEBUG) | ||||
258 | message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] " | ||||
259 | "After midfix addition = ${_library} and ${_library_d}") | ||||
260 | endif() | ||||
261 | | ||||
262 | set(_lib_list) | ||||
263 | set(_libd_list) | ||||
264 | if(_append_version) | ||||
265 | foreach(_ver ${_versions}) | ||||
266 | list(APPEND _lib_list "${_library}-${_ver}") | ||||
267 | list(APPEND _libd_list "${_library_d}-${_ver}") | ||||
268 | endforeach() | ||||
269 | else() | ||||
270 | set(_lib_list ${_library}) | ||||
271 | set(_libd_list ${_library_d}) | ||||
272 | endif() | ||||
273 | | ||||
274 | if(GTK2_DEBUG) | ||||
275 | message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] " | ||||
276 | "library list = ${_lib_list} and library debug list = ${_libd_list}") | ||||
277 | endif() | ||||
278 | | ||||
279 | # For some silly reason the MSVC libraries use _ instead of . | ||||
280 | # in the version fields | ||||
281 | if(_expand_vc AND MSVC) | ||||
282 | set(_no_dots_lib_list) | ||||
283 | set(_no_dots_libd_list) | ||||
284 | foreach(_l ${_lib_list}) | ||||
285 | string(REPLACE "." "_" _no_dots_library ${_l}) | ||||
286 | list(APPEND _no_dots_lib_list ${_no_dots_library}) | ||||
287 | endforeach() | ||||
288 | # And for debug | ||||
289 | set(_no_dots_libsd_list) | ||||
290 | foreach(_l ${_libd_list}) | ||||
291 | string(REPLACE "." "_" _no_dots_libraryd ${_l}) | ||||
292 | list(APPEND _no_dots_libd_list ${_no_dots_libraryd}) | ||||
293 | endforeach() | ||||
294 | | ||||
295 | # Copy list back to original names | ||||
296 | set(_lib_list ${_no_dots_lib_list}) | ||||
297 | set(_libd_list ${_no_dots_libd_list}) | ||||
298 | endif() | ||||
299 | | ||||
300 | if(GTK2_DEBUG) | ||||
301 | message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] " | ||||
302 | "While searching for ${_var}, our proposed library list is ${_lib_list}") | ||||
303 | endif() | ||||
304 | | ||||
305 | find_library(${_var} | ||||
306 | NAMES ${_lib_list} | ||||
307 | PATHS | ||||
308 | /opt/gnome/lib | ||||
309 | /opt/gnome/lib64 | ||||
310 | /usr/openwin/lib | ||||
311 | /usr/openwin/lib64 | ||||
312 | /sw/lib | ||||
313 | $ENV{GTKMM_BASEPATH}/lib | ||||
314 | [HKEY_CURRENT_USER\\SOFTWARE\\gtkmm\\2.4;Path]/lib | ||||
315 | [HKEY_LOCAL_MACHINE\\SOFTWARE\\gtkmm\\2.4;Path]/lib | ||||
316 | ) | ||||
317 | | ||||
318 | if(_expand_vc AND MSVC) | ||||
319 | if(GTK2_DEBUG) | ||||
320 | message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] " | ||||
321 | "While searching for ${_var}_DEBUG our proposed library list is ${_libd_list}") | ||||
322 | endif() | ||||
323 | | ||||
324 | find_library(${_var}_DEBUG | ||||
325 | NAMES ${_libd_list} | ||||
326 | PATHS | ||||
327 | $ENV{GTKMM_BASEPATH}/lib | ||||
328 | [HKEY_CURRENT_USER\\SOFTWARE\\gtkmm\\2.4;Path]/lib | ||||
329 | [HKEY_LOCAL_MACHINE\\SOFTWARE\\gtkmm\\2.4;Path]/lib | ||||
330 | ) | ||||
331 | | ||||
332 | if(${_var} AND ${_var}_DEBUG) | ||||
333 | if(NOT GTK2_SKIP_MARK_AS_ADVANCED) | ||||
334 | mark_as_advanced(${_var}_DEBUG) | ||||
335 | endif() | ||||
336 | set(GTK2_LIBRARIES ${GTK2_LIBRARIES} optimized ${${_var}} debug ${${_var}_DEBUG}) | ||||
337 | set(GTK2_LIBRARIES ${GTK2_LIBRARIES} PARENT_SCOPE) | ||||
338 | endif() | ||||
339 | else() | ||||
340 | if(NOT GTK2_SKIP_MARK_AS_ADVANCED) | ||||
341 | mark_as_advanced(${_var}) | ||||
342 | endif() | ||||
343 | set(GTK2_LIBRARIES ${GTK2_LIBRARIES} ${${_var}}) | ||||
344 | set(GTK2_LIBRARIES ${GTK2_LIBRARIES} PARENT_SCOPE) | ||||
345 | # Set debug to release | ||||
346 | set(${_var}_DEBUG ${${_var}}) | ||||
347 | set(${_var}_DEBUG ${${_var}} PARENT_SCOPE) | ||||
348 | endif() | ||||
349 | endfunction(_GTK2_FIND_LIBRARY) | ||||
350 | | ||||
351 | #============================================================= | ||||
352 | | ||||
353 | # | ||||
354 | # main() | ||||
355 | # | ||||
356 | | ||||
357 | set(GTK2_FOUND) | ||||
358 | set(GTK2_INCLUDE_DIRS) | ||||
359 | set(GTK2_LIBRARIES) | ||||
360 | | ||||
361 | if(NOT GTK2_FIND_COMPONENTS) | ||||
362 | # Assume they only want GTK | ||||
363 | set(GTK2_FIND_COMPONENTS gtk) | ||||
364 | endif() | ||||
365 | | ||||
366 | # | ||||
367 | # If specified, enforce version number | ||||
368 | # | ||||
369 | if(GTK2_FIND_VERSION) | ||||
370 | cmake_minimum_required(VERSION 2.6.2) | ||||
371 | set(GTK2_FAILED_VERSION_CHECK true) | ||||
372 | if(GTK2_DEBUG) | ||||
373 | message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] " | ||||
374 | "Searching for version ${GTK2_FIND_VERSION}") | ||||
375 | endif() | ||||
376 | _GTK2_FIND_INCLUDE_DIR(GTK2_GTK_INCLUDE_DIR gtk/gtk.h) | ||||
377 | if(GTK2_GTK_INCLUDE_DIR) | ||||
378 | _GTK2_GET_VERSION(GTK2_MAJOR_VERSION | ||||
379 | GTK2_MINOR_VERSION | ||||
380 | GTK2_PATCH_VERSION | ||||
381 | ${GTK2_GTK_INCLUDE_DIR}/gtk/gtkversion.h) | ||||
382 | set(GTK2_VERSION | ||||
383 | ${GTK2_MAJOR_VERSION}.${GTK2_MINOR_VERSION}.${GTK2_PATCH_VERSION}) | ||||
384 | if(GTK2_FIND_VERSION_EXACT) | ||||
385 | if(GTK2_VERSION VERSION_EQUAL GTK2_FIND_VERSION) | ||||
386 | set(GTK2_FAILED_VERSION_CHECK false) | ||||
387 | endif() | ||||
388 | else() | ||||
389 | if(GTK2_VERSION VERSION_EQUAL GTK2_FIND_VERSION OR | ||||
390 | GTK2_VERSION VERSION_GREATER GTK2_FIND_VERSION) | ||||
391 | set(GTK2_FAILED_VERSION_CHECK false) | ||||
392 | endif() | ||||
393 | endif() | ||||
394 | else() | ||||
395 | # If we can't find the GTK include dir, we can't do version checking | ||||
396 | if(GTK2_FIND_REQUIRED AND NOT GTK2_FIND_QUIETLY) | ||||
397 | message(FATAL_ERROR "Could not find GTK2 include directory") | ||||
398 | endif() | ||||
399 | return() | ||||
400 | endif() | ||||
401 | | ||||
402 | if(GTK2_FAILED_VERSION_CHECK) | ||||
403 | if(GTK2_FIND_REQUIRED AND NOT GTK2_FIND_QUIETLY) | ||||
404 | if(GTK2_FIND_VERSION_EXACT) | ||||
405 | message(FATAL_ERROR "GTK2 version check failed. Version ${GTK2_VERSION} was found, version ${GTK2_FIND_VERSION} is needed exactly.") | ||||
406 | else() | ||||
407 | message(FATAL_ERROR "GTK2 version check failed. Version ${GTK2_VERSION} was found, at least version ${GTK2_FIND_VERSION} is required") | ||||
408 | endif() | ||||
409 | endif() | ||||
410 | | ||||
411 | # If the version check fails, exit out of the module here | ||||
412 | return() | ||||
413 | endif() | ||||
414 | endif() | ||||
415 | | ||||
416 | # | ||||
417 | # Find all components | ||||
418 | # | ||||
419 | | ||||
420 | # find_package(Freetype) | ||||
421 | # list(APPEND GTK2_INCLUDE_DIRS ${FREETYPE_INCLUDE_DIRS}) | ||||
422 | # list(APPEND GTK2_LIBRARIES ${FREETYPE_LIBRARIES}) | ||||
423 | | ||||
424 | foreach(_GTK2_component ${GTK2_FIND_COMPONENTS}) | ||||
425 | if(_GTK2_component STREQUAL "gtk") | ||||
426 | _GTK2_FIND_INCLUDE_DIR(GTK2_GLIB_INCLUDE_DIR glib.h) | ||||
427 | _GTK2_FIND_INCLUDE_DIR(GTK2_GLIBCONFIG_INCLUDE_DIR glibconfig.h) | ||||
428 | _GTK2_FIND_LIBRARY (GTK2_GLIB_LIBRARY glib false true) | ||||
429 | | ||||
430 | _GTK2_FIND_INCLUDE_DIR(GTK2_GOBJECT_INCLUDE_DIR gobject/gobject.h) | ||||
431 | _GTK2_FIND_LIBRARY (GTK2_GOBJECT_LIBRARY gobject false true) | ||||
432 | | ||||
433 | _GTK2_FIND_INCLUDE_DIR(GTK2_GDK_PIXBUF_INCLUDE_DIR gdk-pixbuf/gdk-pixbuf.h) | ||||
434 | _GTK2_FIND_LIBRARY (GTK2_GDK_PIXBUF_LIBRARY gdk_pixbuf false true) | ||||
435 | | ||||
436 | _GTK2_FIND_INCLUDE_DIR(GTK2_GDK_INCLUDE_DIR gdk/gdk.h) | ||||
437 | _GTK2_FIND_INCLUDE_DIR(GTK2_GDKCONFIG_INCLUDE_DIR gdkconfig.h) | ||||
438 | _GTK2_FIND_INCLUDE_DIR(GTK2_GTK_INCLUDE_DIR gtk/gtk.h) | ||||
439 | | ||||
440 | if(UNIX) | ||||
441 | _GTK2_FIND_LIBRARY (GTK2_GDK_LIBRARY gdk-x11 false true) | ||||
442 | _GTK2_FIND_LIBRARY (GTK2_GTK_LIBRARY gtk-x11 false true) | ||||
443 | else() | ||||
444 | _GTK2_FIND_LIBRARY (GTK2_GDK_LIBRARY gdk-win32 false true) | ||||
445 | _GTK2_FIND_LIBRARY (GTK2_GTK_LIBRARY gtk-win32 false true) | ||||
446 | endif() | ||||
447 | | ||||
448 | _GTK2_FIND_INCLUDE_DIR(GTK2_CAIRO_INCLUDE_DIR cairo.h) | ||||
449 | _GTK2_FIND_LIBRARY (GTK2_CAIRO_LIBRARY cairo false false) | ||||
450 | | ||||
451 | _GTK2_FIND_INCLUDE_DIR(GTK2_FONTCONFIG_INCLUDE_DIR fontconfig/fontconfig.h) | ||||
452 | | ||||
453 | _GTK2_FIND_INCLUDE_DIR(GTK2_PANGO_INCLUDE_DIR pango/pango.h) | ||||
454 | _GTK2_FIND_LIBRARY (GTK2_PANGO_LIBRARY pango false true) | ||||
455 | | ||||
456 | _GTK2_FIND_INCLUDE_DIR(GTK2_ATK_INCLUDE_DIR atk/atk.h) | ||||
457 | _GTK2_FIND_LIBRARY (GTK2_ATK_LIBRARY atk false true) | ||||
458 | | ||||
459 | _GTK2_FIND_INCLUDE_DIR(GTK2_GIO_INCLUDE_DIR gio/gio.h) | ||||
460 | _GTK2_FIND_LIBRARY (GTK2_GIO_LIBRARY gio false true) | ||||
461 | | ||||
462 | | ||||
463 | elseif(_GTK2_component STREQUAL "gtkmm") | ||||
464 | | ||||
465 | _GTK2_FIND_INCLUDE_DIR(GTK2_GLIBMM_INCLUDE_DIR glibmm.h) | ||||
466 | _GTK2_FIND_INCLUDE_DIR(GTK2_GLIBMMCONFIG_INCLUDE_DIR glibmmconfig.h) | ||||
467 | _GTK2_FIND_LIBRARY (GTK2_GLIBMM_LIBRARY glibmm true true) | ||||
468 | | ||||
469 | _GTK2_FIND_INCLUDE_DIR(GTK2_GDKMM_INCLUDE_DIR gdkmm.h) | ||||
470 | _GTK2_FIND_INCLUDE_DIR(GTK2_GDKMMCONFIG_INCLUDE_DIR gdkmmconfig.h) | ||||
471 | _GTK2_FIND_LIBRARY (GTK2_GDKMM_LIBRARY gdkmm true true) | ||||
472 | | ||||
473 | _GTK2_FIND_INCLUDE_DIR(GTK2_GTKMM_INCLUDE_DIR gtkmm.h) | ||||
474 | _GTK2_FIND_INCLUDE_DIR(GTK2_GTKMMCONFIG_INCLUDE_DIR gtkmmconfig.h) | ||||
475 | _GTK2_FIND_LIBRARY (GTK2_GTKMM_LIBRARY gtkmm true true) | ||||
476 | | ||||
477 | _GTK2_FIND_INCLUDE_DIR(GTK2_CAIROMM_INCLUDE_DIR cairomm/cairomm.h) | ||||
478 | _GTK2_FIND_LIBRARY (GTK2_CAIROMM_LIBRARY cairomm true true) | ||||
479 | | ||||
480 | _GTK2_FIND_INCLUDE_DIR(GTK2_PANGOMM_INCLUDE_DIR pangomm.h) | ||||
481 | _GTK2_FIND_INCLUDE_DIR(GTK2_PANGOMMCONFIG_INCLUDE_DIR pangommconfig.h) | ||||
482 | _GTK2_FIND_LIBRARY (GTK2_PANGOMM_LIBRARY pangomm true true) | ||||
483 | | ||||
484 | _GTK2_FIND_INCLUDE_DIR(GTK2_SIGC++_INCLUDE_DIR sigc++/sigc++.h) | ||||
485 | _GTK2_FIND_INCLUDE_DIR(GTK2_SIGC++CONFIG_INCLUDE_DIR sigc++config.h) | ||||
486 | _GTK2_FIND_LIBRARY (GTK2_SIGC++_LIBRARY sigc true true) | ||||
487 | | ||||
488 | _GTK2_FIND_INCLUDE_DIR(GTK2_GIOMM_INCLUDE_DIR giomm.h) | ||||
489 | _GTK2_FIND_INCLUDE_DIR(GTK2_GIOMMCONFIG_INCLUDE_DIR giommconfig.h) | ||||
490 | _GTK2_FIND_LIBRARY (GTK2_GIOMM_LIBRARY giomm true true) | ||||
491 | | ||||
492 | _GTK2_FIND_INCLUDE_DIR(GTK2_ATKMM_INCLUDE_DIR atkmm.h) | ||||
493 | _GTK2_FIND_LIBRARY (GTK2_ATKMM_LIBRARY atkmm true true) | ||||
494 | | ||||
495 | elseif(_GTK2_component STREQUAL "glade") | ||||
496 | | ||||
497 | _GTK2_FIND_INCLUDE_DIR(GTK2_GLADE_INCLUDE_DIR glade/glade.h) | ||||
498 | _GTK2_FIND_LIBRARY (GTK2_GLADE_LIBRARY glade false true) | ||||
499 | | ||||
500 | elseif(_GTK2_component STREQUAL "glademm") | ||||
501 | | ||||
502 | _GTK2_FIND_INCLUDE_DIR(GTK2_GLADEMM_INCLUDE_DIR libglademm.h) | ||||
503 | _GTK2_FIND_INCLUDE_DIR(GTK2_GLADEMMCONFIG_INCLUDE_DIR libglademmconfig.h) | ||||
504 | _GTK2_FIND_LIBRARY (GTK2_GLADEMM_LIBRARY glademm true true) | ||||
505 | | ||||
506 | else() | ||||
507 | message(FATAL_ERROR "Unknown GTK2 component ${_component}") | ||||
508 | endif() | ||||
509 | endforeach() | ||||
510 | | ||||
511 | # | ||||
512 | # Solve for the GTK2 version if we haven't already | ||||
513 | # | ||||
514 | if(NOT GTK2_FIND_VERSION AND GTK2_GTK_INCLUDE_DIR) | ||||
515 | _GTK2_GET_VERSION(GTK2_MAJOR_VERSION | ||||
516 | GTK2_MINOR_VERSION | ||||
517 | GTK2_PATCH_VERSION | ||||
518 | ${GTK2_GTK_INCLUDE_DIR}/gtk/gtkversion.h) | ||||
519 | set(GTK2_VERSION ${GTK2_MAJOR_VERSION}.${GTK2_MINOR_VERSION}.${GTK2_PATCH_VERSION}) | ||||
520 | endif() | ||||
521 | | ||||
522 | # | ||||
523 | # Try to enforce components | ||||
524 | # | ||||
525 | | ||||
526 | set(_GTK2_did_we_find_everything true) # This gets set to GTK2_FOUND | ||||
527 | | ||||
528 | include(FindPackageHandleStandardArgs) | ||||
529 | | ||||
530 | foreach(_GTK2_component ${GTK2_FIND_COMPONENTS}) | ||||
531 | string(TOUPPER ${_GTK2_component} _COMPONENT_UPPER) | ||||
532 | | ||||
533 | if(_GTK2_component STREQUAL "gtk") | ||||
534 | FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTK2_${_COMPONENT_UPPER} "Some or all of the gtk libraries were not found." | ||||
535 | GTK2_GTK_LIBRARY | ||||
536 | GTK2_GTK_INCLUDE_DIR | ||||
537 | | ||||
538 | GTK2_GLIB_INCLUDE_DIR | ||||
539 | GTK2_GLIBCONFIG_INCLUDE_DIR | ||||
540 | GTK2_GLIB_LIBRARY | ||||
541 | | ||||
542 | GTK2_GDK_INCLUDE_DIR | ||||
543 | GTK2_GDKCONFIG_INCLUDE_DIR | ||||
544 | GTK2_GDK_LIBRARY | ||||
545 | | ||||
546 | GTK2_GIO_INCLUDE_DIR | ||||
547 | GTK2_GIO_LIBRARY | ||||
548 | ) | ||||
549 | elseif(_GTK2_component STREQUAL "gtkmm") | ||||
550 | FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTK2_${_COMPONENT_UPPER} "Some or all of the gtkmm libraries were not found." | ||||
551 | GTK2_GTKMM_LIBRARY | ||||
552 | GTK2_GTKMM_INCLUDE_DIR | ||||
553 | GTK2_GTKMMCONFIG_INCLUDE_DIR | ||||
554 | | ||||
555 | GTK2_GLIBMM_INCLUDE_DIR | ||||
556 | GTK2_GLIBMMCONFIG_INCLUDE_DIR | ||||
557 | GTK2_GLIBMM_LIBRARY | ||||
558 | | ||||
559 | GTK2_GDKMM_INCLUDE_DIR | ||||
560 | GTK2_GDKMMCONFIG_INCLUDE_DIR | ||||
561 | GTK2_GDKMM_LIBRARY | ||||
562 | ) | ||||
563 | elseif(_GTK2_component STREQUAL "glade") | ||||
564 | FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTK2_${_COMPONENT_UPPER} "The glade library was not found." | ||||
565 | GTK2_GLADE_LIBRARY | ||||
566 | GTK2_GLADE_INCLUDE_DIR | ||||
567 | ) | ||||
568 | elseif(_GTK2_component STREQUAL "glademm") | ||||
569 | FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTK2_${_COMPONENT_UPPER} "The glademm library was not found." | ||||
570 | GTK2_GLADEMM_LIBRARY | ||||
571 | GTK2_GLADEMM_INCLUDE_DIR | ||||
572 | GTK2_GLADEMMCONFIG_INCLUDE_DIR | ||||
573 | ) | ||||
574 | endif() | ||||
575 | | ||||
576 | if(NOT GTK2_${_COMPONENT_UPPER}_FOUND) | ||||
577 | set(_GTK2_did_we_find_everything false) | ||||
578 | endif() | ||||
579 | endforeach() | ||||
580 | | ||||
581 | if(_GTK2_did_we_find_everything AND NOT GTK2_VERSION_CHECK_FAILED) | ||||
582 | set(GTK2_FOUND true) | ||||
583 | else() | ||||
584 | # Unset our variables. | ||||
585 | set(GTK2_FOUND false) | ||||
586 | set(GTK2_VERSION) | ||||
587 | set(GTK2_VERSION_MAJOR) | ||||
588 | set(GTK2_VERSION_MINOR) | ||||
589 | set(GTK2_VERSION_PATCH) | ||||
590 | set(GTK2_INCLUDE_DIRS) | ||||
591 | set(GTK2_LIBRARIES) | ||||
592 | endif() | ||||
593 | | ||||
594 | if(GTK2_INCLUDE_DIRS) | ||||
595 | list(REMOVE_DUPLICATES GTK2_INCLUDE_DIRS) | ||||
596 | endif() | ||||
597 | |