1# Written by Simon Josefsson <simon@yubico.com>.
2# Copyright (c) 2006-2014 Yubico AB
3# All rights reserved.
4#
5# Redistribution and use in source and binary forms, with or without
6# modification, are permitted provided that the following conditions are
7# met:
8#
9#     * Redistributions of source code must retain the above copyright
10#       notice, this list of conditions and the following disclaimer.
11#
12#     * Redistributions in binary form must reproduce the above
13#       copyright notice, this list of conditions and the following
14#       disclaimer in the documentation and/or other materials provided
15#       with the distribution.
16#
17# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
29SUBDIRS = . tests
30
31ACLOCAL_AMFLAGS = -I m4
32
33AM_CFLAGS = $(WARN_CFLAGS)
34AM_CPPFLAGS = @YKPERS_CFLAGS@
35
36libdir = $(PAMDIR)
37
38lib_LTLIBRARIES = pam_yubico.la
39
40pam_yubico_la_SOURCES = drop_privs.h drop_privs.c
41# XXX add -Wl,-x too?  PAM documentation suggests it.
42pam_yubico_la_LIBADD = @LTLIBYUBIKEY@ @LTLIBYKCLIENT@ @LIBLDAP@ @LIBPAM@
43pam_yubico_la_LIBADD += libpam_util.la libpam_real.la
44pam_yubico_la_LDFLAGS = -module -avoid-version
45
46noinst_LTLIBRARIES = libpam_util.la libpam_real.la
47libpam_util_la_SOURCES = util.c util.h
48libpam_util_la_LIBADD = @LTLIBYUBIKEY@ @YKPERS_LIBS@
49
50libpam_real_la_SOURCES = pam_yubico.c
51
52# The command line tools.
53
54if YKPERS
55bin_PROGRAMS = ykpamcfg
56endif
57
58ykpamcfg_SOURCES = ykpamcfg.c
59ykpamcfg_LDADD = libpam_util.la
60
61if YKPERS
62dist_man1_MANS = ykpamcfg.1
63endif
64
65dist_man8_MANS = pam_yubico.8
66DISTCLEANFILES = $(dist_man1_MANS) $(dist_man8_MANS)
67
68MANSOURCES = pam_yubico.8.txt ykpamcfg.1.txt
69EXTRA_DIST = doc/Authentication_Using_Challenge-Response.adoc doc/MacOS_X_Challenge-Response.adoc doc/Two_Factor_PAM_Configuration.adoc doc/Ubuntu_FreeRadius_YubiKey.adoc doc/YubiKey_and_FreeRADIUS_1FA_via_PAM.adoc doc/YubiKey_and_FreeRADIUS_via_PAM.adoc doc/YubiKey_and_OpenVPN_via_PAM.adoc doc/Yubikey_and_Radius_via_PAM.adoc doc/Yubikey_and_SELinux_on_Fedora_18_and_up.adoc doc/Yubikey_and_SSH_via_PAM.adoc
70EXTRA_DIST += $(MANSOURCES)
71EXTRA_DIST += tests/aux/ykval.pl tests/aux/ldap.pl tests/aux/authfile
72
73SUFFIXES = .1.txt .1 .8.txt .8
74.1.txt.1:
75	$(A2X) -L --format=manpage -a revdate="Version $(VERSION)" $<
76
77.8.txt.8:
78	$(A2X) -L --format=manpage -a revdate="Version $(VERSION)" $<
79
80
81if ENABLE_COV
82AM_CFLAGS += --coverage
83AM_LDFLAGS = --coverage
84
85cov-reset:
86	rm -fr coverage
87	find . -name "*.gcda" -exec rm {} \;
88	lcov --directory . --zerocounters
89
90cov-report:
91	mkdir -p coverage
92	lcov --compat-libtool --directory . --capture --output-file coverage/app.info
93	lcov --extract coverage/app.info '*.c' --output-file coverage/app2.info
94	genhtml -o coverage/ coverage/app2.info
95
96cov:
97	make cov-report
98
99clean-local:
100	make cov-reset
101
102check:
103	make cov
104endif
105
106if ENABLE_CPPCHECK
107cppcheck:
108	$(CPPCHECK) -q -v -f --enable=all $(DEFS) .
109endif
110
111# Release
112
113ChangeLog:
114	cd $(srcdir) && git2cl > ChangeLog
115
116check-doc-dist:
117	perl -pe "s,^EXTRA_DIST = .*,EXTRA_DIST = `cd $(srcdir) && ls doc/*.adoc | xargs echo`," < $(srcdir)/Makefile.am > check-doc-dist.tmp
118	diff -ur $(srcdir)/Makefile.am check-doc-dist.tmp || \
119		(rm -f check-doc-dist.tmp; echo 'error: please update $(srcdir)/Makefile.am to include all docs'; exit 1)
120	rm -f check-doc-dist.tmp
121
122PROJECT = yubico-pam
123
124release:
125	@if test -z "$(KEYID)"; then \
126		echo "Try this instead:"; \
127		echo "  make release KEYID=[PGPKEYID]"; \
128		echo "For example:"; \
129		echo "  make release KEYID=2117364A"; \
130		exit 1; \
131	fi
132	@head -3 $(srcdir)/NEWS | grep -q "Version $(VERSION) .released `date -I`" || \
133		(echo 'error: Update date/version in $(srcdir)/NEWS.'; exit 1)
134	@if test ! -d "$(YUBICO_WWW_REPO)"; then \
135		echo "WWW repo not found!"; \
136		echo "Make sure that YUBICO_WWW_REPO is set"; \
137		exit 1; \
138		fi
139	rm -f ChangeLog
140	make check-doc-dist ChangeLog distcheck
141	gpg --detach-sign --default-key $(KEYID) $(PACKAGE)-$(VERSION).tar.gz
142	gpg --verify $(PACKAGE)-$(VERSION).tar.gz.sig
143	cd $(srcdir) && git push
144	cd $(srcdir) && git tag -u $(KEYID) -m $(VERSION) $(VERSION)
145	cd $(srcdir) && git push --tags
146	$(YUBICO_WWW_REPO)/publish $(PROJECT) $(VERSION) $(PACKAGE)-$(VERSION).tar.gz*
147