1AC_PREREQ(2.60)
2
3define([PACKAGE_VERSION_MAJOR], [0])
4define([PACKAGE_VERSION_MINOR], [3])
5define([PACKAGE_VERSION_FIX], [1])
6define([PACKAGE_SUFFIX], [])
7define([PRODUCT_BUGREPORT], [https://github.com/OpenSC/pam_p11/issues])
8
9AC_INIT([pam_p11],[PACKAGE_VERSION_MAJOR.PACKAGE_VERSION_MINOR.PACKAGE_VERSION_FIX[]PACKAGE_SUFFIX],[PRODUCT_BUGREPORT])
10AC_CONFIG_AUX_DIR([.])
11AM_CONFIG_HEADER([config.h])
12AC_CONFIG_MACRO_DIR([m4])
13AM_INIT_AUTOMAKE
14
15AC_CONFIG_SRCDIR([src/pam_p11.c])
16
17AC_CANONICAL_HOST
18AC_PROG_CC
19PKG_PROG_PKG_CONFIG
20AC_C_BIGENDIAN
21
22AC_ARG_ENABLE(
23	[strict],
24	[AS_HELP_STRING([--disable-strict],[disable strict compile mode @<:@enabled@:>@])],
25	,
26	[enable_strict="yes"]
27)
28
29AC_ARG_ENABLE(
30	[pedantic],
31	[AS_HELP_STRING([--enable-pedantic],[enable pedantic compile mode @<:@disabled@:>@])],
32	,
33	[enable_pedantic="no"]
34)
35
36AC_ARG_WITH(
37	[pamdir],
38	[AS_HELP_STRING([--with-pamdir=PATH],[Specify the directory where PAM modules are stored])],
39	[pamdir="${withval}"],
40	[
41		if test "${prefix}" = "/usr"; then
42			pamdir="/lib${libdir##*/lib}/security"
43		else
44			pamdir="\$(libdir)/security"
45		fi
46	]
47)
48
49AM_GNU_GETTEXT([external])
50AM_GNU_GETTEXT_VERSION(0.18.3)
51
52dnl Add the languages which your application supports here.
53ALL_LINGUAS="de it"
54
55dnl Checks for programs.
56AC_PROG_CPP
57AC_PROG_INSTALL
58AC_PROG_LN_S
59AC_PROG_MKDIR_P
60AC_PROG_SED
61AC_PROG_MAKE_SET
62
63dnl Add libtool support.
64ifdef(
65	[LT_INIT],
66	[LT_INIT],
67	[AC_PROG_LIBTOOL]
68)
69
70PKG_CHECK_MODULES([LIBP11], [libp11 >= 0.2.4],, [AC_MSG_ERROR([libp11 is required])])
71PKG_CHECK_MODULES(
72	[OPENSSL],
73	[libcrypto >= 0.9.7],
74	,
75	[PKG_CHECK_MODULES(
76		[OPENSSL],
77		[openssl >= 0.9.7],
78		,
79		[AC_CHECK_LIB(
80			[crypto],
81			[RSA_version],
82			[OPENSSL_LIBS="-lcrypto"],
83			[AC_MSG_ERROR([Cannot find OpenSSL])]
84		)]
85	)]
86)
87
88saved_LIBS="$LIBS"
89LIBS="$OPENSSL_LIBS $LIBS"
90AC_CHECK_FUNCS(EVP_MD_CTX_new EVP_MD_CTX_free EVP_MD_CTX_reset)
91LIBS="$saved_LIBS"
92
93if test -z "${PAM_LIBS}"; then
94	AC_ARG_VAR([PAM_CFLAGS], [C compiler flags for pam])
95	AC_ARG_VAR([PAM_LIBS], [linker flags for pam])
96	AC_CHECK_LIB(
97		[pam],
98		[pam_authenticate],
99		[PAM_LIBS="-lpam"],
100		[AC_MSG_ERROR([Cannot find pam])]
101	)
102fi
103
104saved_CFLAGS="${CFLAGS}"
105CFLAGS="${CFLAGS} ${OPENSSL_CFLAGS} ${LIBP11_CFLAGS} ${PAM_CFLAGS}"
106LIBS="$LIBS ${OPENSSL_LIBS} ${LIBP11_LIBS} ${PAM_LIBS}"
107
108dnl Checks for header files.
109AC_HEADER_STDC
110AC_HEADER_SYS_WAIT
111AC_CHECK_HEADERS([ \
112	string.h syslog.h fcntl.h unistd.h security/pam_ext.h security/pam_misc.h \
113])
114AC_TYPE_SIZE_T
115AC_FUNC_MALLOC
116AC_FUNC_REALLOC
117AC_FUNC_STAT
118AC_FUNC_VPRINTF
119AC_CHECK_FUNCS([memset strdup strerror PKCS11_enumerate_public_keys PKCS11_is_logged_in pam_vprompt openpam_ttyconv])
120
121AC_CHECK_LIB([pam_misc], [misc_conv])
122AM_CONDITIONAL([HAVE_PAM_MISC], [test "$ac_cv_lib_pam_misc_misc_conv" = yes])
123
124CFLAGS="${saved_CFLAGS}"
125LIBS="$saved_LIBS"
126
127AC_SUBST([pamdir])
128
129if test "${enable_pedantic}" = "yes"; then
130	enable_strict="yes";
131	CFLAGS="${CFLAGS} -pedantic"
132fi
133if test "${enable_strict}" = "yes"; then
134	CFLAGS="${CFLAGS} -Wall -Wextra -Wno-unused-parameter -Werror"
135fi
136
137AC_CONFIG_FILES([
138	Makefile
139	src/Makefile
140	po/Makefile.in
141])
142AC_OUTPUT
143
144cat <<EOF
145
146pam_p11 has been configured with the following options:
147
148
149Version:                 ${PACKAGE_VERSION}
150Libraries:               $(eval eval eval echo "${libdir}")
151
152Host:                    ${host}
153Compiler:                ${CC}
154Preprocessor flags:      ${CPPFLAGS}
155Compiler flags:          ${CFLAGS}
156Linker flags:            ${LDFLAGS}
157Libraries:               ${LIBS}
158
159pamdir                   ${pamdir}
160
161PAM_CFLAGS:              ${PAM_CFLAGS}
162PAM_LIBS:                ${PAM_LIBS}
163LIBP11_CFLAGS:           ${LIBP11_CFLAGS}
164LIBP11_LIBS:             ${LIBP11_LIBS}
165OPENSSL_CFLAGS:          ${OPENSSL_CFLAGS}
166OPENSSL_LIBS:            ${OPENSSL_LIBS}
167
168EOF
169