1dnl
2dnl libnkutils - Miscellaneous utilities
3dnl
4dnl Copyright © 2011-2017 Quentin "Sardem FF7" Glidic
5dnl
6dnl Permission is hereby granted, free of charge, to any person obtaining a copy
7dnl of this software and associated documentation files (the "Software"), to deal
8dnl in the Software without restriction, including without limitation the rights
9dnl to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10dnl copies of the Software, and to permit persons to whom the Software is
11dnl furnished to do so, subject to the following conditions:
12dnl
13dnl The above copyright notice and this permission notice shall be included in
14dnl all copies or substantial portions of the Software.
15dnl
16dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17dnl IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18dnl FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19dnl AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20dnl LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21dnl OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22dnl THE SOFTWARE.
23dnl
24
25
26# NK_INIT([modules])
27#     modules                       A list of modules to enable (shorthand for NK_ENABLE_MODULES)
28AC_DEFUN([NK_INIT], [
29    AC_REQUIRE([AC_HEADER_STDC])
30    AC_REQUIRE([PKG_PROG_PKG_CONFIG])
31
32    nk_glib_min_version="2.40"
33    nk_xkbcommon_min_version="0.4.1"
34
35    m4_map_args_w(_NK_MODULES, [_NK_MODULE_INIT(AS_TR_SH(], [))])
36    AC_CONFIG_COMMANDS_PRE([
37        AC_CHECK_HEADERS([locale.h])
38        AS_IF([test x${ac_cv_header_string_h} != xyes], [AC_MSG_ERROR([libnkutils: string.h is required])])
39        PKG_CHECK_MODULES([_NKUTILS_INTERNAL_GLIB], [glib-2.0 >= ${nk_glib_min_version}])
40        PKG_CHECK_MODULES([_NKUTILS_INTERNAL_TEST], [gobject-2.0])
41        m4_map_args_w(_NK_MODULES, [_NK_MODULE_CHECK(], [)])
42    ])
43
44    m4_ifnblank([$1], [NK_ENABLE_MODULES([$1])])
45    AM_XSLTPROCFLAGS="${AM_XSLTPROCFLAGS} "'${NKUTILS_XSLTPROCFLAGS}'
46
47    AM_CONDITIONAL([NK_ENABLE_UUID_LIBUUID], [test x${nk_uuid_libuuid} = xyes])
48    AM_CONDITIONAL([NK_ENABLE_UUID_APR_UTIL], [test x${nk_uuid_apr_util} = xyes])
49
50    m4_define([NK_INIT])
51])
52
53# NK_ENABLE_MODULES(modules)
54#     modules  A list of modules to enable
55AC_DEFUN([NK_ENABLE_MODULES], [
56    m4_map_args_w([$1], [_NK_ENABLE_MODULE(], [)])
57])
58
59m4_define([_NK_MODULES], [uuid enum token colour gtk-settings xdg-de xdg-theme bindings])
60
61
62# auto-enable
63m4_define([_nk_dependent_enum], [token xdg-de xdg-theme bindings])
64m4_define([_nk_dependent_gtk_settings], [xdg-theme bindings])
65m4_define([_nk_dependent_xdg_de], [xdg-theme bindings])
66
67
68
69AC_DEFUN([_NK_MODULE_INIT], [
70    nk_module_][$1][_enable=no
71])
72
73AC_DEFUN([_NK_MODULE_CHECK], [
74    AM_CONDITIONAL([NK_ENABLE_]AS_TR_CPP([$1]), [test x${nk_module_]AS_TR_SH([$1])[_enable} = xyes]_NK_MODULE_CHECK_DEPENDENT([_nk_dependent_]AS_TR_SH([$1])))
75])
76
77AC_DEFUN([_NK_MODULE_CHECK_DEPENDENT], [m4_ifdef([$1], m4_map_args_w($1, [[ -o x${nk_module_]AS_TR_SH(], [)[_enable} = xyes]]))])
78
79
80AC_DEFUN([_NK_ENABLE_MODULE], [
81    m4_if(m4_index(_NK_MODULES, [$1]), [-1], [AC_MSG_ERROR([libnkutils: No ][$1][ module])])
82    m4_ifdef([_NK_]AS_TR_CPP([$1])[_CHECK], [_NK_]AS_TR_CPP([$1])[_CHECK])
83    [nk_module_]AS_TR_SH([$1])[_enable=yes]
84])
85
86# Special dependencies
87AC_DEFUN([_NK_UUID_CHECK], [
88    PKG_CHECK_MODULES([_NKUTILS_INTERNAL_UUID_LIBUUID], [uuid], [nk_uuid_libuuid=yes], [nk_uuid_libuuid=no])
89    PKG_CHECK_MODULES([_NKUTILS_INTERNAL_UUID_APR_UTIL], [apr-util-1], [nk_uuid_apr_util=yes], [
90        PKG_CHECK_MODULES([_NKUTILS_INTERNAL_UUID_APR_UTIL], [apr-util], [nk_uuid_apr_util=yes], [nk_uuid_apr_util=no])
91    ])
92    AS_IF([test x${nk_uuid_libuuid} != xyes -a x${nk_uuid_apr_util} != xyes], [AC_MSG_ERROR([libnkutils: A UUID library is required])])
93])
94
95AC_DEFUN([_NK_XDG_THEME_CHECK], [
96    PKG_CHECK_MODULES([_NKUTILS_INTERNAL_GIO], [gio-2.0])
97    PKG_CHECK_MODULES([_NKUTILS_INTERNAL_GOBJECT], [gobject-2.0])
98])
99
100AC_DEFUN([_NK_BINDINGS_CHECK], [
101    PKG_CHECK_MODULES([_NKUTILS_INTERNAL_XKBCOMMON], [xkbcommon >= ${nk_xkbcommon_min_version}])
102    PKG_CHECK_EXISTS([xkbcommon >= 0.7.0], [
103        AC_DEFINE([NK_XKBCOMMON_HAS_COMPOSE], [1], [b])
104        AC_DEFINE([NK_XKBCOMMON_HAS_CONSUMED2], [1], [b])
105    ], [
106        PKG_CHECK_EXISTS([xkbcommon >= 0.5.0], [
107            AC_DEFINE([NK_XKBCOMMON_HAS_COMPOSE], [1], [b])
108        ])
109    ])
110])
111