Changeset View
Changeset View
Standalone View
Standalone View
cmake/FindGLib.cmake
- This file was added.
1 | # FindGLib.cmake | ||||
---|---|---|---|---|---|
2 | # <https://github.com/nemequ/gnome-cmake> | ||||
3 | # | ||||
4 | # CMake support for GLib/GObject/GIO. | ||||
5 | # | ||||
6 | # License: | ||||
7 | # | ||||
8 | # Copyright (c) 2016 Evan Nemerson <evan@nemerson.com> | ||||
9 | # | ||||
10 | # Permission is hereby granted, free of charge, to any person | ||||
11 | # obtaining a copy of this software and associated documentation | ||||
12 | # files (the "Software"), to deal in the Software without | ||||
13 | # restriction, including without limitation the rights to use, copy, | ||||
14 | # modify, merge, publish, distribute, sublicense, and/or sell copies | ||||
15 | # of the Software, and to permit persons to whom the Software is | ||||
16 | # furnished to do so, subject to the following conditions: | ||||
17 | # | ||||
18 | # The above copyright notice and this permission notice shall be | ||||
19 | # included in all copies or substantial portions of the Software. | ||||
20 | # | ||||
21 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||||
22 | # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||||
23 | # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||||
24 | # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | ||||
25 | # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | ||||
26 | # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
27 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||
28 | # DEALINGS IN THE SOFTWARE. | ||||
29 | | ||||
30 | find_package(PkgConfig) | ||||
31 | | ||||
32 | if(PKG_CONFIG_FOUND) | ||||
33 | pkg_search_module(GLib_PKG glib-2.0) | ||||
34 | endif() | ||||
35 | | ||||
36 | find_library(GLib_LIBRARY glib-2.0 HINTS ${GLib_PKG_LIBRARY_DIRS}) | ||||
37 | set(GLib glib-2.0) | ||||
38 | | ||||
39 | if(GLib_LIBRARY AND NOT GLib_FOUND) | ||||
40 | add_library(${GLib} SHARED IMPORTED) | ||||
41 | set_property(TARGET ${GLib} PROPERTY IMPORTED_LOCATION "${GLib_LIBRARY}") | ||||
42 | set_property(TARGET ${GLib} PROPERTY INTERFACE_COMPILE_OPTIONS "${GLib_PKG_CFLAGS_OTHER}") | ||||
43 | | ||||
44 | find_path(GLib_INCLUDE_DIRS "glib.h" | ||||
45 | HINTS ${GLib_PKG_INCLUDE_DIRS} | ||||
46 | PATH_SUFFIXES "glib-2.0") | ||||
47 | | ||||
48 | get_filename_component(GLib_LIBDIR "${GLib}" DIRECTORY) | ||||
49 | find_path(GLib_CONFIG_INCLUDE_DIR "glibconfig.h" | ||||
50 | HINTS | ||||
51 | ${GLib_LIBDIR} | ||||
52 | ${GLib_PKG_INCLUDE_DIRS} | ||||
53 | PATHS | ||||
54 | "${CMAKE_LIBRARY_PATH}" | ||||
55 | PATH_SUFFIXES | ||||
56 | "glib-2.0/include" | ||||
57 | "glib-2.0") | ||||
58 | unset(GLib_LIBDIR) | ||||
59 | | ||||
60 | if(GLib_CONFIG_INCLUDE_DIR) | ||||
61 | file(STRINGS "${GLib_CONFIG_INCLUDE_DIR}/glibconfig.h" GLib_MAJOR_VERSION REGEX "^#define GLIB_MAJOR_VERSION +([0-9]+)") | ||||
62 | string(REGEX REPLACE "^#define GLIB_MAJOR_VERSION ([0-9]+)$" "\\1" GLib_MAJOR_VERSION "${GLib_MAJOR_VERSION}") | ||||
63 | file(STRINGS "${GLib_CONFIG_INCLUDE_DIR}/glibconfig.h" GLib_MINOR_VERSION REGEX "^#define GLIB_MINOR_VERSION +([0-9]+)") | ||||
64 | string(REGEX REPLACE "^#define GLIB_MINOR_VERSION ([0-9]+)$" "\\1" GLib_MINOR_VERSION "${GLib_MINOR_VERSION}") | ||||
65 | file(STRINGS "${GLib_CONFIG_INCLUDE_DIR}/glibconfig.h" GLib_MICRO_VERSION REGEX "^#define GLIB_MICRO_VERSION +([0-9]+)") | ||||
66 | string(REGEX REPLACE "^#define GLIB_MICRO_VERSION ([0-9]+)$" "\\1" GLib_MICRO_VERSION "${GLib_MICRO_VERSION}") | ||||
67 | set(GLib_VERSION "${GLib_MAJOR_VERSION}.${GLib_MINOR_VERSION}.${GLib_MICRO_VERSION}") | ||||
68 | unset(GLib_MAJOR_VERSION) | ||||
69 | unset(GLib_MINOR_VERSION) | ||||
70 | unset(GLib_MICRO_VERSION) | ||||
71 | | ||||
72 | list(APPEND GLib_INCLUDE_DIRS ${GLib_CONFIG_INCLUDE_DIR}) | ||||
73 | set_property(TARGET ${GLib} PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${GLib_INCLUDE_DIRS}") | ||||
74 | endif() | ||||
75 | endif() | ||||
76 | | ||||
77 | include(FindPackageHandleStandardArgs) | ||||
78 | find_package_handle_standard_args(GLib | ||||
79 | REQUIRED_VARS | ||||
80 | GLib_LIBRARY | ||||
81 | GLib_INCLUDE_DIRS | ||||
82 | VERSION_VAR | ||||
83 | GLib_VERSION) |