configure.ac 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714
  1. dnl Process this file with autoconf to produce a configure script.
  2. AC_INIT([Linux-PAM], [1.5.2], , [Linux-PAM])
  3. AC_CONFIG_SRCDIR([conf/pam_conv1/pam_conv_y.y])
  4. AC_CONFIG_AUX_DIR([build-aux])
  5. AM_INIT_AUTOMAKE([-Wall -Wno-portability])
  6. AC_PREREQ([2.61])
  7. AC_CONFIG_HEADERS([config.h])
  8. AC_CONFIG_MACRO_DIR([m4])
  9. AC_CANONICAL_HOST
  10. AC_SUBST(PACKAGE)
  11. AC_SUBST(VERSION)
  12. dnl
  13. dnl By default, everything under PAM is installed below /usr.
  14. dnl
  15. AC_PREFIX_DEFAULT(/usr)
  16. dnl and some hacks to use /etc and /lib
  17. test "${prefix}" = "NONE" && prefix="/usr"
  18. if test ${prefix} = '/usr'
  19. then
  20. dnl If we use /usr as prefix, use /etc for config files
  21. if test ${sysconfdir} = '${prefix}/etc'
  22. then
  23. sysconfdir="/etc"
  24. fi
  25. if test ${libdir} = '${exec_prefix}/lib'
  26. then
  27. case "$host_cpu" in
  28. x86_64|ppc64|s390x|sparc64)
  29. libdir="/lib64" ;;
  30. *)
  31. libdir="/lib" ;;
  32. esac
  33. fi
  34. if test ${sbindir} = '${exec_prefix}/sbin'
  35. then
  36. sbindir="/sbin"
  37. fi
  38. dnl If we use /usr as prefix, use /usr/share/man for manual pages
  39. if test ${mandir} = '${prefix}/man'
  40. then
  41. mandir='${prefix}/share/man'
  42. fi
  43. dnl Add security to include directory
  44. if test ${includedir} = '${prefix}/include'
  45. then
  46. includedir="${prefix}/include/security"
  47. fi
  48. dnl Add /var directory
  49. if test ${localstatedir} = '${prefix}/var'
  50. then
  51. localstatedir="/var"
  52. fi
  53. fi
  54. dnl This should be called before any macros that run the C compiler.
  55. AC_USE_SYSTEM_EXTENSIONS
  56. LT_INIT([disable-static])
  57. AC_ENABLE_STATIC([no])
  58. AC_ENABLE_SHARED([yes])
  59. dnl Checks for programs.
  60. AC_PROG_CC
  61. AC_PROG_YACC
  62. AM_PROG_LEX
  63. AC_PROG_INSTALL
  64. AC_PROG_LN_S
  65. AC_PROG_MAKE_SET
  66. AM_PROG_CC_C_O
  67. PAM_LD_AS_NEEDED
  68. PAM_LD_NO_UNDEFINED
  69. PAM_LD_O1
  70. PAM_LD_Z_NOW
  71. dnl Largefile support
  72. AC_SYS_LARGEFILE
  73. pam_WARN_LANG_FLAGS
  74. if test "x${CC_FOR_BUILD+set}" != "xset" ; then
  75. if test "x$cross_compiling" = "xyes" ; then
  76. AC_CHECK_PROGS(CC_FOR_BUILD, gcc cc)
  77. else
  78. CC_FOR_BUILD=${CC}
  79. fi
  80. fi
  81. AC_MSG_CHECKING([for CC_FOR_BUILD])
  82. AC_MSG_RESULT([$CC_FOR_BUILD])
  83. AC_SUBST(CC_FOR_BUILD)
  84. if test "x${BUILD_CPPFLAGS+set}" != "xset" ; then
  85. if test "x$cross_compiling" = "xyes" ; then
  86. BUILD_CPPFLAGS=
  87. else
  88. BUILD_CPPFLAGS=${CPPFLAGS}
  89. fi
  90. fi
  91. AC_SUBST(BUILD_CPPFLAGS)
  92. if test "x${BUILD_CFLAGS+set}" != "xset" ; then
  93. if test "x$cross_compiling" = "xyes" ; then
  94. BUILD_CFLAGS=
  95. else
  96. BUILD_CFLAGS=${CFLAGS}
  97. fi
  98. fi
  99. AC_SUBST(BUILD_CFLAGS)
  100. if test "x${BUILD_LDFLAGS+set}" != "xset" ; then
  101. if test "x$cross_compiling" = "xyes" ; then
  102. BUILD_LDFLAGS=
  103. else
  104. BUILD_LDFLAGS=${LDFLAGS}
  105. fi
  106. fi
  107. AC_SUBST(BUILD_LDFLAGS)
  108. PAM_ATTRIBUTE_UNUSED
  109. dnl
  110. dnl Check if --version-script is supported by ld
  111. dnl
  112. AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
  113. [cat > conftest.s <<EOF
  114. ${libc_cv_dot_text}
  115. _sym:
  116. .symver _sym,sym@VERS
  117. EOF
  118. if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
  119. libc_cv_asm_symver_directive=yes
  120. else
  121. libc_cv_asm_symver_directive=no
  122. fi
  123. rm -f conftest*])
  124. AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
  125. if test $libc_cv_asm_symver_directive = yes; then
  126. cat > conftest.s <<EOF
  127. ${libc_cv_dot_text}
  128. _sym:
  129. .symver _sym,sym@VERS
  130. EOF
  131. cat > conftest.map <<EOF
  132. VERS_1 {
  133. global: sym;
  134. };
  135. VERS_2 {
  136. global: sym;
  137. } VERS_1;
  138. EOF
  139. if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD;
  140. then
  141. if AC_TRY_COMMAND([${CC-cc} $CFLAGS $LDFLAGS -shared
  142. -o conftest.so conftest.o
  143. -nostartfiles -nostdlib
  144. -Wl,--version-script,conftest.map
  145. 1>&AS_MESSAGE_LOG_FD]);
  146. then
  147. libc_cv_ld_version_script_option=yes
  148. else
  149. libc_cv_ld_version_script_option=no
  150. fi
  151. else
  152. libc_cv_ld_version_script_option=no
  153. fi
  154. else
  155. libc_cv_ld_version_script_option=no
  156. fi
  157. rm -f conftest*])
  158. AM_CONDITIONAL([HAVE_VERSIONING],
  159. [test "$libc_cv_ld_version_script_option" = "yes"])
  160. AC_ARG_ENABLE([pie],
  161. [AS_HELP_STRING([--disable-pie],
  162. [disable position-independent executables (PIE)])],
  163. [], [enable_pie=check])
  164. case "$enable_pie" in
  165. no) ;;
  166. yes|check)
  167. dnl Check for -fpie/-pie support
  168. AC_CACHE_CHECK([for -fpie/-pie support],
  169. [pam_cv_pie],
  170. [saved_CFLAGS="$CFLAGS"
  171. saved_LDFLAGS="$LDFLAGS"
  172. CFLAGS="$CFLAGS -fpie"
  173. LDFLAGS="$LDFLAGS -pie"
  174. AC_LINK_IFELSE([AC_LANG_PROGRAM(,)],
  175. [pam_cv_pie=yes],
  176. [pam_cv_pie=no])
  177. LDFLAGS="$saved_LDFLAGS"
  178. CFLAGS="$saved_CFLAGS"])
  179. AS_IF([test "$pam_cv_pie" = yes],
  180. [enable_pie=yes],
  181. [AS_IF([test "$enable_pie" = yes],
  182. [AC_MSG_FAILURE([requested -fpie/-pie support not found])],
  183. [enable_pie=no])])
  184. ;;
  185. *) AC_MSG_ERROR([bad value $enable_pie for --enable-pie option]) ;;
  186. esac
  187. AS_IF([test "$enable_pie" = yes],
  188. [PIE_CFLAGS="-fpie"
  189. PIE_LDFLAGS="-pie"],
  190. [PIE_CFLAGS=
  191. PIE_LDFLAGS=])
  192. EXE_CFLAGS="$PIE_CFLAGS"
  193. EXE_LDFLAGS="$PIE_LDFLAGS $ZNOW_LDFLAGS"
  194. AC_SUBST(EXE_CFLAGS)
  195. AC_SUBST(EXE_LDFLAGS)
  196. dnl
  197. dnl options and defaults
  198. dnl
  199. AC_ARG_ENABLE([doc],
  200. AS_HELP_STRING([--disable-doc],[Do not generate or install documentation]),
  201. WITH_DOC=$enableval, WITH_DOC=yes)
  202. AM_CONDITIONAL([HAVE_DOC], [test "x$WITH_DOC" = "xyes"])
  203. AC_ARG_ENABLE([prelude],
  204. AS_HELP_STRING([--disable-prelude],[do not use prelude]),
  205. WITH_PRELUDE=$enableval, WITH_PRELUDE=yes)
  206. if test "$WITH_PRELUDE" = "yes" ; then
  207. AM_PATH_LIBPRELUDE([0.9.0])
  208. if test "$LIBPRELUDE_CONFIG" != "no" ; then
  209. LIBPRELUDE_CFLAGS="$LIBPRELUDE_CFLAGS -DPRELUDE=1"
  210. fi
  211. fi
  212. dnl lots of debugging information goes to /var/run/pam-debug.log
  213. AC_ARG_ENABLE([debug],
  214. AS_HELP_STRING([--enable-debug],[specify you are building with debugging on]))
  215. if test x"$enable_debug" = x"yes" ; then
  216. AC_DEFINE([PAM_DEBUG],,
  217. [lots of stuff gets written to /var/run/pam-debug.log])
  218. fi
  219. AC_ARG_ENABLE(securedir,
  220. AS_HELP_STRING([--enable-securedir=DIR],[path to location of PAMs @<:@default=$libdir/security@:>@]),
  221. SECUREDIR=$enableval, SECUREDIR=$libdir/security)
  222. AC_SUBST(SECUREDIR)
  223. AC_ARG_ENABLE([isadir],
  224. AS_HELP_STRING([--enable-isadir=DIR],[path to arch-specific module files @<:@default=../../(basename of $libdir)/security@:>@]),
  225. ISA=$enableval,
  226. ISA=../../`basename $libdir`/security)
  227. unset mylibdirbase
  228. AC_DEFINE_UNQUOTED(_PAM_ISA,"$ISA",[Define to the path, relative to SECUREDIR, where PAMs specific to this architecture can be found.])
  229. AC_MSG_RESULT([Defining \$ISA to "$ISA"])
  230. AC_ARG_ENABLE(sconfigdir,
  231. AS_HELP_STRING([--enable-sconfigdir=DIR],[path to module conf files @<:@default=$sysconfdir/security@:>@]),
  232. SCONFIGDIR=$enableval, SCONFIGDIR=$sysconfdir/security)
  233. AC_SUBST(SCONFIGDIR)
  234. AC_ARG_ENABLE(pamlocking,
  235. AS_HELP_STRING([--enable-pamlocking],[configure libpam to observe a global authentication lock]))
  236. if test x"$enable_pamlocking" = "xyes"; then
  237. AC_DEFINE([PAM_LOCKING],,
  238. [libpam should observe a global authentication lock])
  239. fi
  240. AC_ARG_ENABLE(read-both-confs,
  241. AS_HELP_STRING([--enable-read-both-confs],[read both /etc/pam.d and /etc/pam.conf files]))
  242. if test x"$enable_read_both_confs" = "xyes"; then
  243. AC_DEFINE([PAM_READ_BOTH_CONFS],,
  244. [read both /etc/pam.d and /etc/pam.conf files])
  245. fi
  246. AC_ARG_ENABLE([lckpwdf],
  247. AS_HELP_STRING([--disable-lckpwdf],[do not use the lckpwdf function]),
  248. WITH_LCKPWDF=$enableval, WITH_LCKPWDF=yes)
  249. if test "$WITH_LCKPWDF" = "yes" ; then
  250. AC_DEFINE([USE_LCKPWDF], 1,
  251. [Define to 1 if the lckpwdf function should be used])
  252. fi
  253. AC_CHECK_HEADERS(paths.h)
  254. AC_ARG_WITH(mailspool,
  255. [ --with-mailspool path to mail spool directory
  256. [default _PATH_MAILDIR if defined in paths.h, otherwise /var/spool/mail]],
  257. with_mailspool=${withval})
  258. if test x$with_mailspool != x ; then
  259. pam_mail_spool="\"$with_mailspool\""
  260. else
  261. AC_RUN_IFELSE([AC_LANG_SOURCE([[
  262. #include <paths.h>
  263. int main() {
  264. #ifdef _PATH_MAILDIR
  265. exit(0);
  266. #else
  267. exit(1);
  268. #endif
  269. }]])],[pam_mail_spool="_PATH_MAILDIR"],[pam_mail_spool="\"/var/spool/mail\""],[pam_mail_spool="\"/var/spool/mail\""])
  270. fi
  271. AC_DEFINE_UNQUOTED(PAM_PATH_MAILDIR, $pam_mail_spool,
  272. [Path where mails are stored])
  273. AC_ARG_WITH(xauth,
  274. [ --with-xauth additional path to check for xauth when it is called from pam_xauth
  275. [added to the default of /usr/X11R6/bin/xauth, /usr/bin/xauth, /usr/bin/X11/xauth]],
  276. pam_xauth_path=${withval})
  277. if test x$with_xauth = x ; then
  278. AC_PATH_PROG(pam_xauth_path, xauth)
  279. dnl There is no sense in adding the first default path
  280. if test x$pam_xauth_path = x/usr/X11R6/bin/xauth ; then
  281. unset pam_xauth_path
  282. fi
  283. fi
  284. if test x$pam_xauth_path != x ; then
  285. AC_DEFINE_UNQUOTED(PAM_PATH_XAUTH, "$pam_xauth_path",
  286. [Additional path of xauth executable])
  287. fi
  288. dnl Checks for the existence of libdl - in musl its a part of libc
  289. saved_LIBS="$LIBS"
  290. AC_SEARCH_LIBS([dlopen], [dl])
  291. LIBS="$saved_LIBS"
  292. case "$ac_cv_search_dlopen" in
  293. no) AC_MSG_FAILURE([failed to find dlopen]) ;;
  294. -l*) LIBDL="$ac_cv_search_dlopen" ;;
  295. *) LIBDL= ;;
  296. esac
  297. AC_SUBST(LIBDL)
  298. dnl Look for Linux Auditing library - see documentation
  299. AC_ARG_ENABLE([audit],
  300. AS_HELP_STRING([--disable-audit],[do not enable audit support]),
  301. WITH_LIBAUDIT=$enableval, WITH_LIBAUDIT=yes)
  302. if test x"$WITH_LIBAUDIT" != xno ; then
  303. AC_CHECK_HEADER([libaudit.h],
  304. [AC_CHECK_LIB(audit, audit_log_acct_message, LIBAUDIT=-laudit, LIBAUDIT="")
  305. AC_CHECK_TYPE([struct audit_tty_status],
  306. [HAVE_AUDIT_TTY_STATUS=yes],
  307. [HAVE_AUDIT_TTY_STATUS=""],
  308. [#include <libaudit.h>])]
  309. )
  310. if test -n "$LIBAUDIT" && test "$ac_cv_header_libaudit_h" != "no" ; then
  311. AC_DEFINE([HAVE_LIBAUDIT], 1, [Define to 1 if audit support should be compiled in.])
  312. fi
  313. if test -n "$HAVE_AUDIT_TTY_STATUS" ; then
  314. AC_CHECK_MEMBERS([struct audit_tty_status.log_passwd], [],
  315. AC_MSG_WARN([audit_tty_status.log_passwd is not available. The log_passwd option is disabled.]),
  316. [[#include <libaudit.h>]])
  317. fi
  318. else
  319. LIBAUDIT=""
  320. fi
  321. AC_SUBST(LIBAUDIT)
  322. AC_CHECK_HEADERS(crypt.h)
  323. BACKUP_LIBS=$LIBS
  324. LIBCRYPT=""
  325. PKG_CHECK_MODULES([CRYPT], [libcrypt], [
  326. CFLAGS="$CFLAGS $CRYPT_CFLAGS"
  327. CPPFLAGS="$CPPFLAGS $CRYPT_CFLAGS"
  328. LIBS="$LIBS $CRYPT_LIBS"
  329. LIBCRYPT="$CRYPT_LIBS"
  330. ], [
  331. AC_SEARCH_LIBS([crypt_gensalt_rn],[crypt])
  332. case "$ac_cv_search_crypt_gensalt_rn" in
  333. -l*) LIBCRYPT="$ac_cv_search_crypt_gensalt_rn" ;;
  334. no) AC_SEARCH_LIBS([crypt_r],[crypt])
  335. case "$ac_cv_search_crypt_r" in
  336. -l*) LIBCRYPT="$ac_cv_search_crypt_r" ;;
  337. no ) AC_SEARCH_LIBS([crypt],[crypt])
  338. case "$ac_cv_search_crypt" in
  339. -l*) LIBCRYPT="$ac_cv_search_crypt" ;;
  340. esac ;;
  341. esac ;;
  342. esac
  343. ])
  344. AC_CHECK_FUNCS([crypt_r])
  345. LIBS=$BACKUP_LIBS
  346. AC_SUBST(LIBCRYPT)
  347. AC_ARG_WITH([randomdev], AS_HELP_STRING([--with-randomdev=(<path>|yes|no)],[use specified random device instead of /dev/urandom or 'no' to disable]), opt_randomdev=$withval)
  348. if test "$opt_randomdev" = yes || test -z "$opt_randomdev"; then
  349. opt_randomdev="/dev/urandom"
  350. elif test "$opt_randomdev" = no; then
  351. opt_randomdev=
  352. fi
  353. if test -n "$opt_randomdev"; then
  354. AC_DEFINE_UNQUOTED(PAM_PATH_RANDOMDEV, "$opt_randomdev", [Random device path.])
  355. fi
  356. dnl check for libdb or libndbm as fallback. Some libndbm compat
  357. dnl libraries are unusable, so try libdb first.
  358. AC_ARG_ENABLE([db],
  359. AS_HELP_STRING([--enable-db=(db|ndbm|yes|no)],[Default behavior 'yes', which is to check for libdb first, followed by ndbm. Use 'no' to disable db support.]),
  360. WITH_DB=$enableval, WITH_DB=yes)
  361. AC_ARG_WITH([db-uniquename],
  362. AS_HELP_STRING([--with-db-uniquename=extension],[Unique name for db libraries and functions.]))
  363. if test x"$WITH_DB" != xno ; then
  364. if test x"$WITH_DB" = xyes || test x"$WITH_DB" = xdb ; then
  365. old_libs=$LIBS
  366. LIBS="$LIBS -ldb$with_db_uniquename"
  367. AC_CHECK_FUNCS([db_create$with_db_uniquename db_create dbm_store$with_db_uniquename dbm_store],
  368. [LIBDB="-ldb$with_db_uniquename"; break])
  369. LIBS=$old_libs
  370. fi
  371. if test -z "$LIBDB" ; then
  372. AC_CHECK_LIB([ndbm],[dbm_store], LIBDB="-lndbm", LIBDB="")
  373. if test -n "$LIBDB" ; then
  374. AC_CHECK_HEADERS(ndbm.h)
  375. fi
  376. else
  377. AC_CHECK_HEADERS(db.h)
  378. fi
  379. fi
  380. AC_SUBST(LIBDB)
  381. AC_ARG_ENABLE([nis],
  382. AS_HELP_STRING([--disable-nis], [Disable building NIS/YP support in pam_unix]))
  383. AS_IF([test "x$enable_nis" != "xno"], [
  384. old_CFLAGS=$CFLAGS
  385. old_CPPFLAGS=$CPPFLAGS
  386. old_LIBS=$LIBS
  387. dnl if there's libtirpc available, prefer that over the system
  388. dnl implementation.
  389. PKG_CHECK_MODULES([TIRPC], [libtirpc], [
  390. CFLAGS="$CFLAGS $TIRPC_CFLAGS"
  391. CPPFLAGS="$CPPFLAGS $TIRPC_CFLAGS"
  392. LIBS="$LIBS $TIRPC_LIBS"
  393. ], [:;])
  394. PKG_CHECK_MODULES([NSL], [libnsl], [],
  395. [AC_CHECK_LIB([nsl],[yp_match],[NSL_LIBS="-lnsl"],[NSL_LIBS=""])])
  396. CFLAGS="$CFLAGS $NSL_CFLAGS"
  397. CPPFLAGS="$CPPFLAGS $NSL_CFLAGS"
  398. LIBS="$LIBS $NSL_LIBS"
  399. AC_CHECK_FUNCS([yp_get_default_domain yperr_string yp_master yp_bind yp_match yp_unbind])
  400. AC_CHECK_FUNCS([getrpcport rpcb_getaddr])
  401. AC_CHECK_HEADERS([rpc/rpc.h rpcsvc/ypclnt.h rpcsvc/yp_prot.h])
  402. AC_CHECK_DECLS([getrpcport], , , [
  403. #if HAVE_RPC_RPC_H
  404. # include <rpc/rpc.h>
  405. #endif
  406. ])
  407. CFLAGS="$old_CFLAGS"
  408. CPPFLAGS="$old_CPPFLAGS"
  409. LIBS="$old_LIBS"
  410. ])
  411. AC_SUBST([NIS_CFLAGS])
  412. AC_SUBST([NIS_LIBS])
  413. AC_ARG_ENABLE([usergroups],
  414. AS_HELP_STRING([--enable-usergroups], [sets the usergroups option default to enabled]),
  415. [WITH_USERGROUPS=$enableval], WITH_USERGROUPS=no)
  416. if test "$WITH_USERGROUPS" = "yes" ; then
  417. AC_DEFINE([DEFAULT_USERGROUPS_SETTING], 1,
  418. [Defines the value usergroups option should have by default])
  419. else
  420. AC_DEFINE([DEFAULT_USERGROUPS_SETTING], 0,
  421. [Defines the value usergroups option should have by default])
  422. fi
  423. AC_ARG_ENABLE([selinux],
  424. AS_HELP_STRING([--disable-selinux],[do not use SELinux]),
  425. WITH_SELINUX=$enableval, WITH_SELINUX=yes)
  426. if test "$WITH_SELINUX" = "yes" ; then
  427. AC_CHECK_LIB([selinux],[getfilecon], LIBSELINUX="-lselinux", LIBSELINUX="")
  428. else
  429. LIBSELINUX=""
  430. fi
  431. AC_SUBST(LIBSELINUX)
  432. if test -n "$LIBSELINUX" ; then
  433. AC_DEFINE([WITH_SELINUX], 1, [Defined if SE Linux support is compiled in])
  434. BACKUP_LIBS=$LIBS
  435. LIBS="$LIBS $LIBSELINUX"
  436. AC_CHECK_FUNCS(setkeycreatecon)
  437. AC_CHECK_FUNCS(getseuser)
  438. LIBS=$BACKUP_LIBS
  439. fi
  440. AC_ARG_ENABLE([econf],
  441. AS_HELP_STRING([--disable-econf], [do not use libeconf]),
  442. [WITH_ECONF=$enableval], WITH_ECONF=yes)
  443. if test "$WITH_ECONF" = "yes" ; then
  444. PKG_CHECK_MODULES([ECONF], [libeconf], [],
  445. [AC_CHECK_LIB([econf],[econf_readDirs],[ECONF_LIBS="-leconf"],[ECONF_LIBS=""])])
  446. if test -n "$ECONF_LIBS" ; then
  447. ECONF_CFLAGS="-DUSE_ECONF=1 $ECONF_CFLAGS"
  448. fi
  449. fi
  450. AC_SUBST([ECONF_CFLAGS])
  451. AC_SUBST([ECONF_LIBS])
  452. AC_ARG_ENABLE([vendordir],
  453. AS_HELP_STRING([--enable-vendordir=DIR], [Directory for distribution provided configuration files]),,[])
  454. if test -n "$enable_vendordir"; then
  455. AC_DEFINE_UNQUOTED([VENDORDIR], ["$enable_vendordir"],
  456. [Directory for distribution provided configuration files])
  457. STRINGPARAM_VENDORDIR="--stringparam vendordir '$enable_vendordir'"
  458. else
  459. STRINGPARAM_VENDORDIR="--stringparam vendordir '<vendordir>'"
  460. fi
  461. AC_SUBST([STRINGPARAM_VENDORDIR])
  462. AC_ARG_ENABLE([openssl],
  463. AS_HELP_STRING([--enable-openssl],[use OpenSSL crypto libraries]),
  464. [OPENSSL_ENABLED=$enableval], OPENSSL_ENABLED=no)
  465. if test "$OPENSSL_ENABLED" = "yes" ; then
  466. AC_CHECK_LIB([crypto], [EVP_MAC_CTX_new],
  467. [CRYPTO_LIBS="-lcrypto"
  468. use_openssl=yes
  469. AC_DEFINE([WITH_OPENSSL], 1, [OpenSSL provides crypto algorithm for hmac])
  470. STRINGPARAM_HMAC="--stringparam profile.condition 'openssl_hmac'"],
  471. [CRYPTO_LIBS=""
  472. STRINGPARAM_HMAC="--stringparam profile.condition 'no_openssl_hmac'"])
  473. fi
  474. AC_SUBST([CRYPTO_LIBS])
  475. AC_SUBST([STRINGPARAM_HMAC])
  476. AM_CONDITIONAL([COND_USE_OPENSSL], [test "x$use_openssl" = "xyes"])
  477. dnl Checks for header files.
  478. AC_HEADER_DIRENT
  479. AC_HEADER_STDC
  480. AC_HEADER_SYS_WAIT
  481. AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/file.h sys/ioctl.h sys/time.h syslog.h net/if.h termio.h unistd.h sys/fsuid.h inittypes.h)
  482. dnl For module/pam_lastlog
  483. AC_CHECK_HEADERS(lastlog.h utmp.h utmpx.h)
  484. dnl Checks for typedefs, structures, and compiler characteristics.
  485. AC_C_BIGENDIAN
  486. AC_C_CONST
  487. AC_TYPE_UID_T
  488. AC_TYPE_OFF_T
  489. AC_TYPE_PID_T
  490. AC_TYPE_SIZE_T
  491. AC_HEADER_TIME
  492. AC_STRUCT_TM
  493. dnl Checks for library functions.
  494. AC_TYPE_GETGROUPS
  495. AC_PROG_GCC_TRADITIONAL
  496. AC_FUNC_MEMCMP
  497. AC_FUNC_VPRINTF
  498. AC_CHECK_FUNCS(fseeko getdomainname gethostname gettimeofday lckpwdf mkdir select)
  499. AC_CHECK_FUNCS(strcspn strdup strspn strstr strtol uname)
  500. AC_CHECK_FUNCS(getutent_r getpwnam_r getpwuid_r getgrnam_r getgrgid_r getspnam_r getmntent_r)
  501. AC_CHECK_FUNCS(getgrouplist getline getdelim)
  502. AC_CHECK_FUNCS(inet_ntop inet_pton innetgr)
  503. AC_CHECK_FUNCS(quotactl)
  504. AC_CHECK_FUNCS(unshare)
  505. AC_CHECK_FUNCS([ruserok_af ruserok], [break])
  506. BACKUP_LIBS=$LIBS
  507. LIBS="$LIBS -lutil"
  508. AC_CHECK_FUNCS([logwtmp])
  509. LIBS=$BACKUP_LIBS
  510. AC_ARG_ENABLE([regenerate-docu],
  511. AS_HELP_STRING([--disable-regenerate-docu],[Don't re-build documentation from XML sources]),
  512. [enable_docu=$enableval], [enable_docu=yes])
  513. dnl
  514. dnl Check for xsltproc
  515. dnl
  516. AC_PATH_PROG([XSLTPROC], [xsltproc])
  517. if test -z "$XSLTPROC"; then
  518. enable_docu=no
  519. fi
  520. AC_PATH_PROG([XMLLINT], [xmllint],[/bin/true])
  521. dnl check for DocBook DTD and stylesheets in the local catalog.
  522. JH_CHECK_XML_CATALOG([-//OASIS//DTD DocBook XML V4.4//EN],
  523. [DocBook XML DTD V4.4], [], enable_docu=no)
  524. JH_CHECK_XML_CATALOG([http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl],
  525. [DocBook XSL Stylesheets], [], enable_docu=no)
  526. AC_PATH_PROG([BROWSER], [w3m])
  527. if test -n "$BROWSER"; then
  528. BROWSER="$BROWSER -T text/html -dump"
  529. else
  530. AC_PATH_PROG([BROWSER], [elinks])
  531. if test -n "$BROWSER"; then
  532. BROWSER="$BROWSER -no-numbering -no-references -dump"
  533. else
  534. enable_docu=no
  535. fi
  536. fi
  537. AC_PATH_PROG([FO2PDF], [fop])
  538. AM_CONDITIONAL(ENABLE_REGENERATE_MAN, test x$enable_docu != xno && test x$enable_doc != xno)
  539. AM_CONDITIONAL(ENABLE_GENERATE_PDF, test -n "$FO2PDF")
  540. AM_GNU_GETTEXT_VERSION([0.18.3])
  541. AM_GNU_GETTEXT([external])
  542. AC_CHECK_FUNCS(dngettext)
  543. AH_BOTTOM([#ifdef ENABLE_NLS
  544. #include <libintl.h>
  545. #define _(msgid) dgettext(PACKAGE, msgid)
  546. #define N_(msgid) msgid
  547. #else
  548. #define _(msgid) (msgid)
  549. #define N_(msgid) msgid
  550. #endif /* ENABLE_NLS */])
  551. dnl
  552. dnl Check for the availability of the kernel key management facility
  553. dnl - The pam_keyinit module only requires the syscalls, not the error codes
  554. dnl
  555. AC_CHECK_DECL(__NR_keyctl, [have_key_syscalls=1],[have_key_syscalls=0],[#include <sys/syscall.h>])
  556. dnl
  557. dnl Get values for default uid ranges in login.defs used in pam_usertype
  558. dnl
  559. AC_ARG_WITH([uidmin], AS_HELP_STRING([--with-uidmin=<number>],[default value for regular user min uid (1000)]), opt_uidmin=$withval)
  560. test -n "$opt_uidmin" ||
  561. opt_uidmin=1000
  562. AC_DEFINE_UNQUOTED(PAM_USERTYPE_UIDMIN, $opt_uidmin, [Minimum regular user uid.])
  563. AC_ARG_WITH([sysuidmin], AS_HELP_STRING([--with-sysuidmin=<number>],[default value for system user min uid (101)]), opt_sysuidmin=$withval)
  564. test -n "$opt_sysuidmin" ||
  565. opt_sysuidmin=101
  566. AC_DEFINE_UNQUOTED(PAM_USERTYPE_SYSUIDMIN, $opt_sysuidmin, [Minimum system user uid.])
  567. AC_ARG_WITH([kernel-overflow-uid], AS_HELP_STRING([--with-kernel-overflow-uid=<number>],[kernel overflow uid, default (uint16_t)-2=65534]), opt_kerneloverflowuid=$withval)
  568. test -n "$opt_kerneloverflowuid" ||
  569. opt_kerneloverflowuid=65534
  570. AC_DEFINE_UNQUOTED(PAM_USERTYPE_OVERFLOW_UID, $opt_kerneloverflowuid, [Kernel overflow uid.])
  571. AC_ARG_WITH([systemdunitdir],
  572. AS_HELP_STRING([--with-systemdunitdir=DIR], [path to systemd service directory]),
  573. [],
  574. [
  575. PKG_CHECK_EXISTS([systemd],
  576. [with_systemdunitdir=$($PKG_CONFIG --variable=systemdunitdir systemd)],
  577. [with_systemdunitdir='${prefix}/lib/systemd/system'])
  578. ])
  579. AC_SUBST([systemdunitdir], [$with_systemdunitdir])
  580. AC_ARG_ENABLE([unix],
  581. [AS_HELP_STRING([--disable-unix],
  582. [do not build pam_unix module])],
  583. [], [enable_unix=yes])
  584. case "$enable_unix" in
  585. yes|no) ;;
  586. *) AC_MSG_ERROR([bad value $enable_unix for --enable-unix option]) ;;
  587. esac
  588. AC_ARG_WITH([misc-conv-bufsize],
  589. AS_HELP_STRING([--with-misc-conv-bufsize=<number>],
  590. [Size of input buffer for libpam_misc's misc_conv() conversation function, default=4096]),
  591. [],
  592. [with_misc_conv_bufsize=4096])
  593. AC_DEFINE_UNQUOTED(PAM_MISC_CONV_BUFSIZE, $with_misc_conv_bufsize, [libpam_misc misc_conv() buffer size.])
  594. AM_CONDITIONAL([COND_BUILD_PAM_KEYINIT], [test "$have_key_syscalls" = 1])
  595. AM_CONDITIONAL([COND_BUILD_PAM_LASTLOG], [test "$ac_cv_func_logwtmp" = yes])
  596. AM_CONDITIONAL([COND_BUILD_PAM_NAMESPACE], [test "$ac_cv_func_unshare" = yes])
  597. AM_CONDITIONAL([COND_BUILD_PAM_RHOSTS], [test "$ac_cv_func_ruserok_af" = yes || test "$ac_cv_func_ruserok" = yes])
  598. AM_CONDITIONAL([COND_BUILD_PAM_SELINUX], [test -n "$LIBSELINUX"])
  599. AM_CONDITIONAL([COND_BUILD_PAM_SEPERMIT], [test -n "$LIBSELINUX"])
  600. AM_CONDITIONAL([COND_BUILD_PAM_SETQUOTA], [test "$ac_cv_func_quotactl" = yes])
  601. AM_CONDITIONAL([COND_BUILD_PAM_TTY_AUDIT], [test "$HAVE_AUDIT_TTY_STATUS" = yes])
  602. AM_CONDITIONAL([COND_BUILD_PAM_UNIX], [test "$enable_unix" = yes])
  603. AM_CONDITIONAL([COND_BUILD_PAM_USERDB], [test -n "$LIBDB"])
  604. dnl Files to be created from when we run configure
  605. AC_CONFIG_FILES([Makefile libpam/Makefile libpamc/Makefile libpamc/test/Makefile \
  606. libpam_misc/Makefile conf/Makefile conf/pam_conv1/Makefile \
  607. libpam/pam.pc libpam_misc/pam_misc.pc libpamc/pamc.pc \
  608. po/Makefile.in \
  609. Make.xml.rules \
  610. modules/Makefile \
  611. modules/pam_access/Makefile \
  612. modules/pam_debug/Makefile modules/pam_deny/Makefile \
  613. modules/pam_echo/Makefile modules/pam_env/Makefile \
  614. modules/pam_faildelay/Makefile modules/pam_faillock/Makefile \
  615. modules/pam_filter/Makefile modules/pam_filter/upperLOWER/Makefile \
  616. modules/pam_ftp/Makefile modules/pam_group/Makefile \
  617. modules/pam_issue/Makefile modules/pam_keyinit/Makefile \
  618. modules/pam_lastlog/Makefile modules/pam_limits/Makefile \
  619. modules/pam_listfile/Makefile modules/pam_localuser/Makefile \
  620. modules/pam_loginuid/Makefile modules/pam_mail/Makefile \
  621. modules/pam_mkhomedir/Makefile modules/pam_motd/Makefile \
  622. modules/pam_namespace/Makefile \
  623. modules/pam_namespace/pam_namespace_helper modules/pam_namespace/pam_namespace.service \
  624. modules/pam_nologin/Makefile modules/pam_permit/Makefile \
  625. modules/pam_pwhistory/Makefile modules/pam_rhosts/Makefile \
  626. modules/pam_rootok/Makefile modules/pam_exec/Makefile \
  627. modules/pam_securetty/Makefile modules/pam_selinux/Makefile \
  628. modules/pam_sepermit/Makefile modules/pam_setquota/Makefile \
  629. modules/pam_shells/Makefile modules/pam_stress/Makefile \
  630. modules/pam_succeed_if/Makefile modules/pam_time/Makefile \
  631. modules/pam_timestamp/Makefile modules/pam_tty_audit/Makefile \
  632. modules/pam_umask/Makefile \
  633. modules/pam_unix/Makefile modules/pam_userdb/Makefile \
  634. modules/pam_usertype/Makefile \
  635. modules/pam_warn/Makefile modules/pam_wheel/Makefile \
  636. modules/pam_xauth/Makefile doc/Makefile doc/specs/Makefile \
  637. doc/man/Makefile doc/sag/Makefile doc/adg/Makefile \
  638. doc/mwg/Makefile examples/Makefile tests/Makefile \
  639. xtests/Makefile])
  640. AC_OUTPUT