1#  Copyright (C) 2014-2018 Yubico AB - See COPYING
2
3SUBDIRS = . pamu2fcfg tests
4
5if ENABLE_FUZZING
6SUBDIRS += fuzz
7endif
8
9ACLOCAL_AMFLAGS = -I m4
10
11AM_CFLAGS = $(CWFLAGS) $(CSFLAGS)
12AM_CPPFLAGS = $(LIBFIDO2_CFLAGS) $(LIBCRYPTO_CFLAGS)
13if ENABLE_FUZZING
14AM_CPPFLAGS += -fsanitize=fuzzer-no-link
15endif
16
17pampluginexecdir = $(PAMDIR)
18pampluginexec_LTLIBRARIES = pam_u2f.la
19
20pam_u2f_la_SOURCES = pam-u2f.c
21pam_u2f_la_SOURCES += util.c util.h
22pam_u2f_la_SOURCES += drop_privs.h
23pam_u2f_la_SOURCES += b64.c b64.h
24pam_u2f_la_SOURCES += explicit_bzero.c
25
26pam_u2f_la_LIBADD = -lpam
27pam_u2f_la_LIBADD += $(LIBFIDO2_LIBS) $(LIBCRYPTO_LIBS)
28pam_u2f_la_LDFLAGS = -module -avoid-version
29
30if ENABLE_FUZZING
31pam_u2f_la_SOURCES += fuzz/wrap.c
32pam_u2f_la_LDFLAGS += -Wl,--wrap=strdup
33pam_u2f_la_LDFLAGS += -Wl,--wrap=calloc
34pam_u2f_la_LDFLAGS += -Wl,--wrap=malloc
35pam_u2f_la_LDFLAGS += -Wl,--wrap=open
36pam_u2f_la_LDFLAGS += -Wl,--wrap=close
37pam_u2f_la_LDFLAGS += -Wl,--wrap=fdopen
38pam_u2f_la_LDFLAGS += -Wl,--wrap=fstat
39pam_u2f_la_LDFLAGS += -Wl,--wrap=read
40pam_u2f_la_LDFLAGS += -Wl,--wrap=gethostname
41pam_u2f_la_LDFLAGS += -Wl,--wrap=getpwnam_r
42pam_u2f_la_LDFLAGS += -Wl,--wrap=getpwuid_r
43pam_u2f_la_LDFLAGS += -Wl,--wrap=geteuid
44pam_u2f_la_LDFLAGS += -Wl,--wrap=secure_getenv
45pam_u2f_la_LDFLAGS += -Wl,--wrap=pam_get_user
46pam_u2f_la_LDFLAGS += -Wl,--wrap=pam_get_item
47pam_u2f_la_LDFLAGS += -Wl,--wrap=pam_modutil_drop_priv
48pam_u2f_la_LDFLAGS += -Wl,--wrap=pam_modutil_regain_priv
49pam_u2f_la_LDFLAGS += -Wl,--wrap=BIO_new
50pam_u2f_la_LDFLAGS += -Wl,--wrap=BIO_write
51pam_u2f_la_LDFLAGS += -Wl,--wrap=BIO_read
52pam_u2f_la_LDFLAGS += -Wl,--wrap=BIO_ctrl
53pam_u2f_la_LDFLAGS += -Wl,--wrap=BIO_new_mem_buf
54pam_u2f_la_LDFLAGS += -Wl,--wrap=EC_KEY_new_by_curve_name
55pam_u2f_la_LDFLAGS += -Wl,--wrap=EC_KEY_get0_group
56pam_u2f_la_LDFLAGS += -Wl,--wrap=fido_dev_open
57pam_u2f_la_LDFLAGS += -Wl,--wrap=fido_dev_info_manifest
58endif
59
60DEFS = -DDEBUG_PAM -DPAM_DEBUG @DEFS@
61
62if ENABLE_MAN
63dist_man8_MANS = $(top_builddir)/man/pam_u2f.8
64DISTCLEANFILES = $(dist_man8_MANS)
65
66MANSOURCES = $(top_builddir)/man/pam_u2f.8.txt
67EXTRA_DIST = $(MANSOURCES)
68
69SUFFIXES = .8.txt .8
70
71.8.txt.8:
72	$(A2X) --format=manpage -L -a revdate="Version $(VERSION)" $<
73endif
74
75# Release
76
77# XXX: make distcheck happy with install location of pam_u2f.so
78AM_DISTCHECK_CONFIGURE_FLAGS = --with-pam-dir='/$$(prefix)/$(PAMDIR)'
79
80install-exec-hook:
81	rm -f $(DESTDIR)$(pampluginexecdir)/pam_u2f.la
82	chmod -f 644 $(DESTDIR)$(pampluginexecdir)/pam_u2f.so || true
83
84uninstall-hook:
85	rm -f $(DESTDIR)$(pampluginexecdir)/pam_u2f.so
86
87indent:
88	clang-format -i *.c *.h pamu2fcfg/*.c pamu2fcfg/*.h
89
90ChangeLog:
91	cd $(srcdir) && git2cl > ChangeLog
92
93PROJECT = pam-u2f
94
95release:
96	@if test ! -d "$(YUBICO_WWW_REPO)"; then \
97		echo "WWW repo not found!"; \
98		echo "Make sure that YUBICO_WWW_REPO is set"; \
99		exit 1; \
100	fi
101	@if test -z "$(KEYID)"; then \
102		echo "Try this instead:"; \
103		echo "  make release KEYID=[PGPKEYID]"; \
104		echo "For example:"; \
105		echo "  make release KEYID=2117364A"; \
106		exit 1; \
107	fi
108	@head -5 $(srcdir)/NEWS | \
109		grep -q "Version $(VERSION) .released `date -I`" || \
110		(echo 'error: Update date/version in $(srcdir)/NEWS.'; exit 1)
111	rm -f $(srcdir)/ChangeLog
112	make ChangeLog distcheck
113	gpg --detach-sign --default-key $(KEYID) $(PACKAGE)-$(VERSION).tar.gz
114	gpg --verify $(PACKAGE)-$(VERSION).tar.gz.sig
115	cd $(srcdir) && git push
116	cd $(srcdir) && git tag -u $(KEYID) -m $(VERSION) $(PACKAGE)-$(VERSION)
117	cd $(srcdir) && git push --tags
118	$(YUBICO_WWW_REPO)/publish $(PROJECT) $(VERSION) $(PACKAGE)-$(VERSION).tar.gz*
119