1
2inc_HEADERS += \
3	p11-kit/deprecated.h \
4	p11-kit/iter.h \
5	p11-kit/p11-kit.h \
6	p11-kit/pin.h \
7	p11-kit/remote.h \
8	p11-kit/uri.h \
9	$(NULL)
10
11COMMON_SRCS = \
12	p11-kit/util.c \
13	p11-kit/conf.c p11-kit/conf.h \
14	p11-kit/iter.c \
15	p11-kit/log.c p11-kit/log.h \
16	p11-kit/filter.c p11-kit/filter.h \
17	p11-kit/modules.c p11-kit/modules.h \
18	p11-kit/pkcs11.h \
19	p11-kit/pin.c \
20	p11-kit/pkcs11.h \
21	p11-kit/private.h \
22	p11-kit/messages.c \
23	p11-kit/rpc-transport.c p11-kit/rpc.h \
24	p11-kit/rpc-message.c p11-kit/rpc-message.h \
25	p11-kit/rpc-client.c \
26	p11-kit/uri.c \
27	p11-kit/virtual.c p11-kit/virtual.h \
28	p11-kit/virtual-fixed.h \
29	$(inc_HEADERS)
30
31BUILT_SOURCES += \
32	p11-kit/virtual-fixed-generated.h \
33	$(NULL)
34
35p11-kit/virtual.c: p11-kit/virtual-fixed-generated.h
36
37CLEANFILES += \
38	p11-kit/virtual-fixed-generated.h \
39	$(NULL)
40
41p11-kit/virtual-fixed-generated.h: Makefile
42	$(AM_V_GEN)rm -f $@-t $@ && \
43	{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
44	  echo; \
45	  counter=0; \
46	  while test $$counter -lt $(closures); do \
47	    echo "P11_VIRTUAL_FIXED_FUNCTIONS($$counter)"; \
48	    counter=`expr $$counter + 1`; \
49	  done; \
50	  echo; \
51	  echo "CK_FUNCTION_LIST p11_virtual_fixed[P11_VIRTUAL_MAX_FIXED] = {"; \
52	  counter=0; \
53	  while test $$counter -lt $(closures); do \
54	    echo "	P11_VIRTUAL_FIXED_INITIALIZER($$counter),"; \
55	    counter=`expr $$counter + 1`; \
56	  done; \
57	  echo '};'; \
58	  echo; \
59	  counter=0; \
60	  while test $$counter -lt $(closures); do \
61	    echo "P11_VIRTUAL_FIXED_GET_FUNCTION_LIST($$counter)"; \
62	    counter=`expr $$counter + 1`; \
63	  done; \
64	} > $@-t && \
65	mv -f $@-t $@
66
67lib_LTLIBRARIES += \
68	libp11-kit.la
69
70COMMON_CFLAGS = \
71	-DP11_SYSTEM_CONFIG_FILE=\""$(p11_system_config_file)"\" \
72	-DP11_SYSTEM_CONFIG_MODULES=\""$(p11_system_config_modules)"\" \
73	-DP11_PACKAGE_CONFIG_MODULES=\""$(p11_package_config_modules)"\" \
74	-DP11_USER_CONFIG_FILE=\""$(p11_user_config_file)"\" \
75	-DP11_USER_CONFIG_MODULES=\""$(p11_user_config_modules)"\" \
76	-DP11_MODULE_PATH=\""$(p11_module_path)"\" \
77	$(LIBFFI_CFLAGS) \
78	$(NULL)
79
80COMMON_LIBS = \
81	libp11-common.la \
82	libp11-library.la \
83	$(LIBFFI_LIBS) \
84	$(LTLIBINTL) \
85	$(NULL)
86
87libp11_kit_la_CFLAGS = $(COMMON_CFLAGS)
88
89libp11_kit_la_LDFLAGS = \
90	-no-undefined \
91	-version-info $(P11KIT_LT_RELEASE)
92
93if HAVE_LD_VERSION_SCRIPT
94libp11_kit_la_LDFLAGS += -Wl,--version-script=$(srcdir)/p11-kit/libp11-kit.map
95else
96libp11_kit_la_LDFLAGS += -export-symbols-regex '^C_GetFunctionList|^p11_kit_'
97endif
98
99libp11_kit_la_SOURCES = \
100	p11-kit/proxy.c p11-kit/proxy.h p11-kit/proxy-init.c \
101	p11-kit/rpc-server.c \
102	$(NULL)
103
104libp11_kit_la_LIBADD = \
105	libp11-kit-internal.la \
106	$(COMMON_LIBS) \
107	$(NULL)
108
109noinst_LTLIBRARIES += \
110	libp11-kit-internal.la \
111	$(NULL)
112
113check_LTLIBRARIES += \
114	libp11-kit-testable.la \
115	libp11-kit-pkcs11-gnu.la \
116	$(NULL)
117
118libp11_kit_internal_la_LDFLAGS = -no-undefined
119libp11_kit_internal_la_CFLAGS = $(COMMON_CFLAGS)
120libp11_kit_internal_la_SOURCES = $(COMMON_SRCS)
121
122libp11_kit_testable_la_LDFLAGS = -no-undefined
123libp11_kit_testable_la_SOURCES = \
124	$(libp11_kit_internal_la_SOURCES) \
125	$(libp11_kit_la_SOURCES) \
126	$(NULL)
127libp11_kit_testable_la_LIBADD = $(COMMON_LIBS)
128
129pkcs11_gnu_sources = \
130	p11-kit/uri.gnu.c \
131	p11-kit/iter.gnu.c \
132	p11-kit/pin.gnu.c \
133	$(NULL)
134
135BUILT_SOURCES += $(pkcs11_gnu_sources)
136CLEANFILES += $(pkcs11_gnu_sources)
137
138p11-kit/uri.gnu.c: p11-kit/uri.h
139p11-kit/iter.gnu.c: p11-kit/iter.h
140p11-kit/pin.gnu.c: p11-kit/pin.h
141
142SUFFIXES += .h .gnu.c
143.h.gnu.c:
144	$(AM_V_GEN) src=$<; dst=$@; rm -f $@-t $@ && \
145	{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
146	  echo; \
147	  echo '#include <stdlib.h>'; \
148	  echo '#include "p11-kit/p11-kit.h"'; \
149	  cat $$src; \
150	  echo "void *$${dst}_funcs[] = {" | sed 's/[^][ *a-z0-9_={]/_/g'; \
151	  sed -n -e '/^typedef/d' -e 's/.* \(p11_kit_[^ ]*\) *(.*/	\1,/p' $<; \
152	  echo '};'; \
153	} > $@-t && \
154	mv -f $@-t $@
155
156libp11_kit_pkcs11_gnu_la_LDFLAGS = -no-undefined
157libp11_kit_pkcs11_gnu_la_SOURCES = $(pkcs11_gnu_sources)
158libp11_kit_pkcs11_gnu_la_CFLAGS = -DCRYPTOKI_GNU=1 -DP11_KIT_FUTURE_UNSTABLE_API=1
159
160if OS_WIN32
161
162libp11_kit_testable_la_CFLAGS = \
163	-DP11_SYSTEM_CONFIG_FILE=\""$(abs_top_srcdir)/p11-kit/fixtures/system-pkcs11.conf"\" \
164	-DP11_SYSTEM_CONFIG_MODULES=\""$(abs_top_srcdir)/p11-kit/fixtures/system-modules/win32"\" \
165	-DP11_PACKAGE_CONFIG_MODULES=\""$(abs_top_srcdir)/p11-kit/fixtures/package-modules/win32"\" \
166	-DP11_USER_CONFIG_FILE=\""$(abs_top_srcdir)/p11-kit/fixtures/user-pkcs11.conf"\" \
167	-DP11_USER_CONFIG_MODULES=\""$(abs_top_srcdir)/p11-kit/fixtures/user-modules/win32"\" \
168	-DP11_MODULE_PATH=\""$(abs_top_builddir)/.libs"\" \
169	$(LIBFFI_CFLAGS) \
170	$(NULL)
171
172else
173
174libp11_kit_testable_la_CFLAGS = \
175	-DP11_SYSTEM_CONFIG_FILE=\""$(abs_top_srcdir)/p11-kit/fixtures/system-pkcs11.conf"\" \
176	-DP11_SYSTEM_CONFIG_MODULES=\""$(abs_top_srcdir)/p11-kit/fixtures/system-modules"\" \
177	-DP11_PACKAGE_CONFIG_MODULES=\""$(abs_top_srcdir)/p11-kit/fixtures/package-modules"\" \
178	-DP11_USER_CONFIG_FILE=\""$(abs_top_srcdir)/p11-kit/fixtures/user-pkcs11.conf"\" \
179	-DP11_USER_CONFIG_MODULES=\""$(abs_top_srcdir)/p11-kit/fixtures/user-modules"\" \
180	-DP11_MODULE_PATH=\""$(abs_top_builddir)/.libs"\" \
181	$(LIBFFI_CFLAGS) \
182	$(NULL)
183
184# Proxy module is actually same as library, so install a link
185install-exec-hook:
186	for i in so dylib; do \
187		test -f $(DESTDIR)$(libdir)/libp11-kit.$$i && \
188			$(LN_S) -f `readlink $(DESTDIR)$(libdir)/libp11-kit.$$i` $(DESTDIR)$(libdir)/p11-kit-proxy.$$i || true; \
189	done
190	$(MKDIR_P) $(DESTDIR)$(p11_package_config_modules)
191
192uninstall-local:
193	for i in so dylib; do \
194		rm -f $(DESTDIR)$(libdir)/p11-kit-proxy.$$i; \
195	done
196
197endif
198
199if !OS_WIN32
200module_LTLIBRARIES += \
201	p11-kit-client.la
202
203p11_kit_client_la_LDFLAGS = \
204	-no-undefined -module -avoid-version \
205	-version-info $(P11KIT_LT_RELEASE) \
206	-export-symbols-regex '^C_GetFunctionList' \
207	$(NULL)
208
209p11_kit_client_la_CFLAGS = $(COMMON_CFLAGS)
210
211p11_kit_client_la_SOURCES = \
212	p11-kit/client.c p11-kit/client.h p11-kit/client-init.c \
213	$(NULL)
214
215p11_kit_client_la_LIBADD = $(libp11_kit_la_LIBADD)
216endif
217
218pkgconfigdir = $(libdir)/pkgconfig
219pkgconfig_DATA = p11-kit/p11-kit-1.pc
220
221exampledir = $(p11_system_config)
222example_DATA = p11-kit/pkcs11.conf.example
223
224EXTRA_DIST += \
225	p11-kit/docs.h \
226	p11-kit/gen-pkcs11-gnu.sh \
227	p11-kit/gen-virtual-fixed.sh \
228	p11-kit/meson.build \
229	p11-kit/meson_post_install.sh \
230	p11-kit/libp11-kit.map \
231	p11-kit/libp11-kit-0.dll.def \
232	p11-kit/p11-module.map \
233	p11-kit/p11-module.def \
234	p11-kit/pkcs11-gnu.c \
235	$(NULL)
236
237bin_PROGRAMS += p11-kit/p11-kit
238
239p11_kit_p11_kit_SOURCES = \
240	p11-kit/lists.c \
241	p11-kit/p11-kit.c \
242	$(NULL)
243
244p11_kit_p11_kit_LDADD = \
245	libp11-kit.la \
246	libp11-tool.la \
247	libp11-common.la \
248	$(LTLIBINTL) \
249	$(NULL)
250
251if WITH_BASH_COMPLETION
252bashcomp_DATA += bash-completion/p11-kit
253endif
254
255private_PROGRAMS += p11-kit/p11-kit-remote
256
257p11_kit_p11_kit_remote_SOURCES = \
258	p11-kit/remote.c \
259	$(NULL)
260
261p11_kit_p11_kit_remote_LDADD = \
262	libp11-tool.la \
263	libp11-common.la \
264	libp11-kit.la \
265	$(NULL)
266
267check_PROGRAMS += p11-kit/p11-kit-remote-testable
268p11_kit_p11_kit_remote_testable_SOURCES = $(p11_kit_p11_kit_remote_SOURCES)
269
270p11_kit_p11_kit_remote_testable_LDADD = \
271	libp11-tool.la \
272	libp11-common.la \
273	libp11-kit-testable.la \
274	$(NULL)
275
276private_PROGRAMS += p11-kit/p11-kit-server
277
278p11_kit_p11_kit_server_SOURCES = \
279	p11-kit/server.c \
280	$(NULL)
281
282p11_kit_p11_kit_server_LDADD = \
283	libp11-tool.la \
284	libp11-common.la \
285	libp11-kit.la \
286	$(LIBSYSTEMD_LIBS) \
287	$(NULL)
288
289p11_kit_p11_kit_server_CFLAGS = \
290	-DP11_KIT_REMOTE=\"p11-kit-remote\" \
291	$(COMMON_CFLAGS) \
292	$(LIBSYSTEMD_CFLAGS) \
293	$(NULL)
294
295check_PROGRAMS += p11-kit/p11-kit-server-testable
296p11_kit_p11_kit_server_testable_SOURCES = $(p11_kit_p11_kit_server_SOURCES)
297
298p11_kit_p11_kit_server_testable_LDADD = \
299	libp11-tool.la \
300	libp11-common.la \
301	libp11-kit-testable.la \
302	$(LIBSYSTEMD_LIBS) \
303	$(NULL)
304
305p11_kit_p11_kit_server_testable_CFLAGS = \
306	-DP11_KIT_REMOTE=\"p11-kit-remote-testable\" \
307	$(COMMON_CFLAGS) \
308	$(LIBSYSTEMD_CFLAGS) \
309	$(NULL)
310
311if WITH_SYSTEMD
312p11-kit/p11-kit-server.service: p11-kit/p11-kit-server.service.in
313	$(AM_V_GEN)rm -f $@-t $@ && \
314	sed 's|@bindir[@]|$(bindir)|g' $< > $@-t && \
315	mv -f $@-t $@
316
317CLEANFILES += p11-kit/p11-kit-server.service
318
319systemduserunit_DATA = \
320	p11-kit/p11-kit-server.socket \
321	p11-kit/p11-kit-server.service \
322	$(NULL)
323endif
324
325EXTRA_DIST += p11-kit/p11-kit-server.socket p11-kit/p11-kit-server.service.in
326
327# Tests ----------------------------------------------------------------
328
329p11_kit_LIBS = \
330	libp11-kit-testable.la \
331	libp11-test.la \
332	libp11-common.la \
333	$(LTLIBINTL)
334
335c_tests += \
336	test-progname \
337	test-util \
338	test-conf \
339	test-uri \
340	test-pin \
341	test-init \
342	test-modules \
343	test-deprecated \
344	test-proxy \
345	test-iter \
346	test-rpc \
347	$(NULL)
348
349if !OS_WIN32
350c_tests += test-server
351sh_tests += p11-kit/test-server.sh
352endif
353
354test_conf_SOURCES = p11-kit/test-conf.c
355test_conf_LDADD = $(p11_kit_LIBS)
356
357test_deprecated_SOURCES = p11-kit/test-deprecated.c
358test_deprecated_LDADD = $(p11_kit_LIBS)
359test_deprecated_CFLAGS = $(AM_CPPFLAGS) $(libp11_kit_testable_la_CFLAGS)
360
361test_init_SOURCES = p11-kit/test-init.c
362test_init_LDADD = $(p11_kit_LIBS)
363test_init_CFLAGS = $(AM_CPPFLAGS) $(libp11_kit_testable_la_CFLAGS)
364
365test_iter_SOURCES = p11-kit/test-iter.c
366test_iter_LDADD = $(p11_kit_LIBS)
367
368test_modules_SOURCES = p11-kit/test-modules.c
369test_modules_LDADD = $(p11_kit_LIBS)
370
371test_pin_SOURCES = p11-kit/test-pin.c
372test_pin_LDADD = $(p11_kit_LIBS)
373
374test_progname_SOURCES = p11-kit/test-progname.c
375test_progname_LDADD = $(p11_kit_LIBS)
376
377test_proxy_SOURCES = p11-kit/test-proxy.c
378test_proxy_LDADD = $(p11_kit_LIBS)
379
380test_rpc_SOURCES = p11-kit/test-rpc.c
381test_rpc_LDADD = $(p11_kit_LIBS)
382
383test_server_SOURCES = p11-kit/test-server.c
384test_server_LDADD = $(p11_kit_LIBS)
385test_server_CFLAGS = $(AM_CPPFLAGS) $(libp11_kit_testable_la_CFLAGS)
386
387test_uri_SOURCES = p11-kit/test-uri.c
388test_uri_LDADD = $(p11_kit_LIBS)
389
390test_util_SOURCES = p11-kit/test-util.c
391test_util_LDADD = $(p11_kit_LIBS)
392
393check_PROGRAMS += \
394	p11-kit/print-messages \
395	p11-kit/frob-setuid
396
397p11_kit_print_messages_SOURCES = p11-kit/print-messages.c
398p11_kit_print_messages_LDADD = $(p11_kit_LIBS)
399
400sh_tests += p11-kit/test-messages.sh
401
402p11_kit_frob_setuid_SOURCES = p11-kit/frob-setuid.c
403p11_kit_frob_setuid_LDADD = $(p11_kit_LIBS)
404
405c_tests += \
406	test-virtual \
407	test-managed \
408	test-log \
409	test-filter \
410	test-transport \
411	$(NULL)
412
413test_log_SOURCES = p11-kit/test-log.c
414test_log_LDADD = $(p11_kit_LIBS)
415
416test_filter_SOURCES = p11-kit/test-filter.c
417test_filter_LDADD = $(p11_kit_LIBS)
418
419test_managed_SOURCES = p11-kit/test-managed.c
420test_managed_LDADD = $(p11_kit_LIBS)
421
422test_transport_SOURCES = p11-kit/test-transport.c
423test_transport_LDADD = $(p11_kit_LIBS)
424test_transport_CFLAGS = $(AM_CPPFLAGS) $(libp11_kit_testable_la_CFLAGS)
425
426test_virtual_SOURCES = p11-kit/test-virtual.c
427test_virtual_LDADD = $(p11_kit_LIBS)
428
429check_LTLIBRARIES += \
430	mock-one.la \
431	mock-two.la \
432	mock-three.la \
433	mock-four.la \
434	mock-five.la \
435	mock-seven.la \
436	mock-eight.la \
437	mock-nine.la \
438	mock-ten.la
439
440mock_one_la_SOURCES = p11-kit/mock-module-ep.c
441mock_one_la_LIBADD = libp11-test.la libp11-common.la
442mock_one_la_LDFLAGS = \
443	-module -avoid-version -rpath /nowhere \
444	-no-undefined -export-symbols-regex 'C_GetFunctionList'
445
446mock_two_la_SOURCES = p11-kit/mock-module-ep2.c
447mock_two_la_LDFLAGS = $(mock_one_la_LDFLAGS)
448mock_two_la_LIBADD = $(mock_one_la_LIBADD)
449
450mock_three_la_SOURCES = $(mock_one_la_SOURCES)
451mock_three_la_LDFLAGS = $(mock_one_la_LDFLAGS)
452mock_three_la_LIBADD = $(mock_one_la_LIBADD)
453
454mock_four_la_SOURCES = $(mock_one_la_SOURCES)
455mock_four_la_LDFLAGS = $(mock_one_la_LDFLAGS)
456mock_four_la_LIBADD = $(mock_one_la_LIBADD)
457
458mock_five_la_SOURCES = p11-kit/mock-module-ep3.c
459mock_five_la_LDFLAGS = $(mock_one_la_LDFLAGS)
460mock_five_la_LIBADD = $(mock_one_la_LIBADD)
461
462if !OS_WIN32
463check_LTLIBRARIES += mock-six.la
464mock_six_la_SOURCES = p11-kit/mock-module-ep4.c
465mock_six_la_LDFLAGS = $(mock_one_la_LDFLAGS)
466mock_six_la_LIBADD = $(mock_one_la_LIBADD)
467endif
468
469mock_seven_la_SOURCES = p11-kit/mock-module-ep5.c
470mock_seven_la_LDFLAGS = $(mock_one_la_LDFLAGS)
471mock_seven_la_LIBADD = $(mock_one_la_LIBADD)
472
473mock_eight_la_SOURCES = p11-kit/mock-module-ep6.c
474mock_eight_la_LDFLAGS = $(mock_one_la_LDFLAGS)
475mock_eight_la_LIBADD = $(mock_one_la_LIBADD)
476
477mock_nine_la_SOURCES = p11-kit/mock-module-ep7.c
478mock_nine_la_LDFLAGS = $(mock_one_la_LDFLAGS)
479mock_nine_la_LIBADD = $(mock_one_la_LIBADD)
480
481mock_ten_la_SOURCES = p11-kit/mock-module-ep8.c
482mock_ten_la_LDFLAGS = $(mock_one_la_LDFLAGS)
483mock_ten_la_LIBADD = $(mock_one_la_LIBADD)
484
485EXTRA_DIST += \
486	p11-kit/fixtures \
487	p11-kit/test-mock.c \
488	p11-kit/test-messages.sh \
489	p11-kit/test-server.sh \
490	$(NULL)
491