summaryrefslogtreecommitdiff
path: root/libxklavier/Makefile.am
blob: c9c1bbe419619871ff253521936bd20a840084c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
if LIBXKBFILE_PRESENT
  LIBXKBFILE_PRESENT_CFLAG = -DLIBXKBFILE_PRESENT=1
  LIBXKBFILE_PRESENT_LDFLAGS = -lxkbfile
endif

if ENABLE_XKB_SUPPORT
  ENABLE_XKB_SUPPORT_CFLAG = -DENABLE_XKB_SUPPORT=1
else
  ENABLE_XKB_SUPPORT_CFLAG = -DDISABLE_XKB_SUPPORT=1
endif

if ENABLE_XMODMAP_SUPPORT
  ENABLE_XMODMAP_SUPPORT_CFLAG = -DENABLE_XMODMAP_SUPPORT=1
else
  ENABLE_XMODMAP_SUPPORT_CFLAG = -DDISABLE_XMODMAP_SUPPORT=1
endif

AM_CFLAGS=-Wall -DDATA_DIR=\"$(datadir)/$(PACKAGE)\" \
  -I. -I$(top_srcdir) $(X_CFLAGS) \
  $(XML_CFLAGS) $(GLIB_CFLAGS) $(XINPUT_CFLAGS) \
  $(LIBXKBFILE_PRESENT_CFLAG) \
  $(ENABLE_XKB_SUPPORT_CFLAG) \
  $(ENABLE_XMODMAP_SUPPORT_CFLAG)

lib_LTLIBRARIES = libxklavier.la
noinst_HEADERS = xklavier_private.h xklavier_private_xkb.h xklavier_private_xmm.h
xklavier_headers = xkl_engine.h xkl_config_item.h xkl_config_registry.h \
	xkl_config_rec.h xkl_engine_marshal.h xklavier.h

BUILT_SOURCES = $(xklavier_built_headers) $(xklavier_built_cfiles)

xklavier_built_headers = xkl-enum-types.h
xklavier_built_cfiles = xkl-enum-types.c
xklavierincdir = $(includedir)/libxklavier
xklavierinc_HEADERS = $(xklavier_headers) $(xklavier_built_headers)

libxklavier_la_SOURCES = $(xklavier_built_cfiles) xklavier.c xklavier_evt.c xklavier_config.c xklavier_config_iso.c \
	xklavier_xkb.c xklavier_evt_xkb.c xklavier_config_xkb.c xklavier_toplevel.c \
	xklavier_xmm.c xklavier_xmm_opts.c xklavier_evt_xmm.c xklavier_config_xmm.c \
	xklavier_util.c xklavier_props.c xklavier_dump.c xkl_engine_marshal.c \
	$(noinst_HEADERS) $(xklavierinc_HEADERS) 
libxklavier_la_LDFLAGS = -version-info @VERSION_INFO@ -no-undefined -export-symbols $(srcdir)/libxklavier.public
libxklavier_la_LIBADD = \
 $(XML_LIBS) $(GLIB_LIBS) $(XINPUT_LIBS) \
 $(LIBXKBFILE_PRESENT_LDFLAGS) \
 $(X_LIBS) -lX11 $(LIBICONV) 

EXTRA_DIST=marshal.list libxklavier.public

GLIB_GENMARSHAL = `$(PKG_CONFIG) --variable=glib_genmarshal glib-2.0`

xkl_engine_marshal.h: marshal.list
	$(GLIB_GENMARSHAL) --prefix=xkl_engine $(srcdir)/marshal.list --header > xkl_engine_marshal.h

xkl_engine_marshal.c: xkl_engine_marshal.h
	$(GLIB_GENMARSHAL) --prefix=xkl_engine $(srcdir)/marshal.list --body > xkl_engine_marshal.c

xkl-enum-types.h: stamp-xkl-enum-types.h
	@true
stamp-xkl-enum-types.h: $(xklavier_headers)
	(cd $(srcdir) \
	&& glib-mkenums \
		--fhead "#ifndef __XKL_ENUM_TYPES_H__\n#define __XKL_ENUM_TYPES_H__\n" \
		--fprod "/* enumerations from \"@filename@\" */\n" \
		--vhead "GType @enum_name@_get_type (void);\n#define XKL_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \
		--ftail "#endif /* __XKL_ENUM_TYPES_H__ */" \
		$(xklavier_headers)) > new-xkl-enum-types.h \
	&& (cmp -s new-xkl-enum-types.h xkl-enum-types.h || cp new-xkl-enum-types.h xkl-enum-types.h) \
	&& rm -f new-xkl-enum-types.h \
	&& echo timestamp > $(@F)

xkl-enum-types.c: $(xklavier_headers) xkl-enum-types.h
	(cd $(srcdir) \
	&& glib-mkenums \
		--fhead "#include <libxklavier/xklavier.h>" \
		--fprod "\n/* enumerations from \"@filename@\" */" \
		--vhead "GType\n@enum_name@_get_type (void)\n{\n  static GType etype = 0;\n  if (etype == 0) {\n    static const G@Type@Value values[] = {" \
		--vprod "      { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
		--vtail "      { 0, NULL, NULL }\n    };\n    etype = g_@type@_register_static (\"@EnumName@\", values);\n  }\n  return etype;\n}\n" \
		$(xklavier_headers)) > new-xkl-enum-types.c \
	&& cp new-xkl-enum-types.c $(@F) \
	&& rm -f new-xkl-enum-types.c

DISTCLEANFILES=$(xklavier_built_headers) \
		$(xklavier_built_cfiles) \
		stamp-xkl-enum-types.h \
		xkl_engine_marshal.c \
		xkl_engine_marshal.h
CLEANFILES=

# build intospection typelib
-include $(INTROSPECTION_MAKEFILE)
INTROSPECTION_GIRS =
INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir) --warn-all
INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)

if HAVE_INTROSPECTION
# avoid introspecting private headers
introspection_sources = $(xklavier_headers) $(xklavier_built_headers) $(filter %.c, $(libxklavier_la_SOURCES))

Xkl-1.0.gir: libxklavier.la
Xkl_1_0_gir_INCLUDES = GObject-2.0 xlib-2.0
Xkl_1_0_gir_CFLAGS = -I$(top_srcdir) -I$(top_builddir) $(INCLUDES) $(X_CFLAGS) $(XML_CFLAGS) $(GLIB_CFLAGS) $(XINPUT_CFLAGS)
Xkl_1_0_gir_LIBS = libxklavier.la
Xkl_1_0_gir_FILES = $(xklavier_headers) $(introspection_sources)
Xkl_1_0_gir_EXPORT_PACKAGES = libxklavier
Xkl_1_0_gir_SCANNERFLAGS = --c-include="libxklavier/xklavier.h"
INTROSPECTION_GIRS += Xkl-1.0.gir

girdir = $(datadir)/gir-1.0
gir_DATA = $(INTROSPECTION_GIRS)

typelibdir = $(libdir)/girepository-1.0
typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)

CLEANFILES += $(gir_DATA) $(typelib_DATA)

if ENABLE_VAPIGEN
-include $(VAPIGEN_MAKEFILE)

libxklavier.vapi: Xkl-1.0.gir libxklavier.deps

VAPIGEN_VAPIS = libxklavier.vapi

libxklavier_vapi_DEPS = x11
libxklavier_vapi_FILES = Xkl-1.0.gir

libxklavier.deps:
	$(AM_V_GEN) for pkg in $(libxklavier_vapi_DEPS); do \
		echo $$pkg >> $@; \
	done

vapidir = $(datadir)/vala/vapi
vapi_DATA = $(VAPIGEN_VAPIS) $(VAPIGEN_VAPIS:.vapi=.deps)
endif
endif