1*3ba4c8c8SDag-Erling SmørgravAC_PREREQ([2.69]) 2*3ba4c8c8SDag-Erling SmørgravAC_INIT([OpenPAM], [20230627], [des@des.no], [openpam], [https://openpam.org/]) 3f7e6344dSDag-Erling SmørgravAC_CONFIG_SRCDIR([lib/libpam/pam_start.c]) 47f106882SDag-Erling SmørgravAC_CONFIG_MACRO_DIR([m4]) 57f106882SDag-Erling SmørgravAM_INIT_AUTOMAKE([foreign]) 67f106882SDag-Erling SmørgravAM_CONFIG_HEADER([config.h]) 7b33ab329SDag-Erling Smørgrav 87f106882SDag-Erling Smørgrav# C compiler and features 9fe980754SDag-Erling SmørgravAC_LANG(C) 10*3ba4c8c8SDag-Erling SmørgravAC_PROG_CC([clang gcc cc]) 117f106882SDag-Erling SmørgravAC_PROG_CC_STDC 127f106882SDag-Erling SmørgravAC_PROG_CPP 13*3ba4c8c8SDag-Erling SmørgravAC_PROG_CXX([clang++ g++ c++]) 147f106882SDag-Erling SmørgravAC_GNU_SOURCE 157f106882SDag-Erling SmørgravAC_C_CONST 167f106882SDag-Erling SmørgravAC_C_RESTRICT 17b33ab329SDag-Erling SmørgravAC_C_VOLATILE 18*3ba4c8c8SDag-Erling SmørgravAX_COMPILER_VENDOR 197f106882SDag-Erling Smørgrav 207f106882SDag-Erling Smørgrav# libtool 217f106882SDag-Erling SmørgravLT_PREREQ([2.2.6]) 227f106882SDag-Erling SmørgravLT_INIT([disable-static dlopen]) 237f106882SDag-Erling Smørgrav 2423d17223SDag-Erling Smørgrav# pkg-config 2523d17223SDag-Erling SmørgravAX_PROG_PKG_CONFIG 2623d17223SDag-Erling Smørgrav 277f106882SDag-Erling Smørgrav# other programs 287f106882SDag-Erling SmørgravAC_PROG_INSTALL 29b33ab329SDag-Erling Smørgrav 30b33ab329SDag-Erling SmørgravLIB_MAJ=2 31b33ab329SDag-Erling SmørgravAC_SUBST(LIB_MAJ) 32b33ab329SDag-Erling SmørgravAC_DEFINE_UNQUOTED(LIB_MAJ, $LIB_MAJ, [OpenPAM library major number]) 33b33ab329SDag-Erling Smørgrav 347f106882SDag-Erling SmørgravAC_ARG_ENABLE([debug], 35fe980754SDag-Erling Smørgrav AC_HELP_STRING([--enable-debug], 36ce77a8d6SDag-Erling Smørgrav [turn debugging macros on]), 37ce77a8d6SDag-Erling Smørgrav AC_DEFINE(OPENPAM_DEBUG, 1, [Turn debugging macros on])) 38fe980754SDag-Erling Smørgrav 397f106882SDag-Erling SmørgravAC_ARG_ENABLE([unversioned-modules], 40b33ab329SDag-Erling Smørgrav AC_HELP_STRING([--disable-unversioned-modules], 41b33ab329SDag-Erling Smørgrav [support loading of unversioned modules]), 427f106882SDag-Erling Smørgrav [AS_IF([test x"$enableval" = x"no"], [ 43b33ab329SDag-Erling Smørgrav AC_DEFINE(DISABLE_UNVERSIONED_MODULES, 44b33ab329SDag-Erling Smørgrav 1, 45b33ab329SDag-Erling Smørgrav [Whether loading unversioned modules support is disabled]) 467f106882SDag-Erling Smørgrav ])]) 47b33ab329SDag-Erling Smørgrav 487f106882SDag-Erling SmørgravAC_ARG_WITH([modules-dir], 49b33ab329SDag-Erling Smørgrav AC_HELP_STRING([--with-modules-dir=DIR], 50b33ab329SDag-Erling Smørgrav [OpenPAM modules directory]), 517f106882SDag-Erling Smørgrav [AS_IF([test x"$withval" != x"no"], [ 52b33ab329SDag-Erling Smørgrav OPENPAM_MODULES_DIR="$withval" 537f106882SDag-Erling Smørgrav AC_DEFINE_UNQUOTED(OPENPAM_MODULES_DIR, 54ce77a8d6SDag-Erling Smørgrav "${OPENPAM_MODULES_DIR%/}", 557f106882SDag-Erling Smørgrav [OpenPAM modules directory]) 56ce77a8d6SDag-Erling Smørgrav ])]) 57b33ab329SDag-Erling SmørgravAC_SUBST(OPENPAM_MODULES_DIR) 58ce77a8d6SDag-Erling SmørgravAM_CONDITIONAL([CUSTOM_MODULES_DIR], [test x"$OPENPAM_MODULES_DIR" != x""]) 59b33ab329SDag-Erling Smørgrav 607f106882SDag-Erling SmørgravAC_ARG_WITH([doc], 617f106882SDag-Erling Smørgrav AC_HELP_STRING([--without-doc], [do not build documentation]), 627f106882SDag-Erling Smørgrav [], 63fe980754SDag-Erling Smørgrav [with_doc=yes]) 647f106882SDag-Erling SmørgravAM_CONDITIONAL([WITH_DOC], [test x"$with_doc" = x"yes"]) 65b33ab329SDag-Erling Smørgrav 667f106882SDag-Erling SmørgravAC_ARG_WITH([pam-unix], 67f3b0ac34SDag-Erling Smørgrav AC_HELP_STRING([--with-pam-unix], [build sample pam_unix(8) module]), 687f106882SDag-Erling Smørgrav [], 69b33ab329SDag-Erling Smørgrav [with_pam_unix=no]) 707f106882SDag-Erling SmørgravAM_CONDITIONAL([WITH_PAM_UNIX], [test x"$with_pam_unix" = x"yes"]) 71b33ab329SDag-Erling Smørgrav 727f106882SDag-Erling SmørgravAC_ARG_WITH(pamtest, 73f3b0ac34SDag-Erling Smørgrav AC_HELP_STRING([--with-pamtest], [build test application]), 747f106882SDag-Erling Smørgrav [], 757f106882SDag-Erling Smørgrav [with_pamtest=no]) 767f106882SDag-Erling SmørgravAM_CONDITIONAL([WITH_PAMTEST], [test x"$with_pamtest" = x"yes"]) 777f106882SDag-Erling Smørgrav 78fe980754SDag-Erling SmørgravAC_ARG_WITH(su, 79f3b0ac34SDag-Erling Smørgrav AC_HELP_STRING([--with-su], [build sample su(1) implementation]), 807f106882SDag-Erling Smørgrav [], 81fe980754SDag-Erling Smørgrav [with_su=no]) 827f106882SDag-Erling SmørgravAM_CONDITIONAL([WITH_SU], [test x"$with_su" = x"yes"]) 83fe980754SDag-Erling Smørgrav 84f3b0ac34SDag-Erling SmørgravAC_ARG_WITH(system-libpam, 85f3b0ac34SDag-Erling Smørgrav AC_HELP_STRING([--with-system-libpam], [use system libpam]), 86f3b0ac34SDag-Erling Smørgrav [], 87f3b0ac34SDag-Erling Smørgrav [with_system_libpam=no]) 88f3b0ac34SDag-Erling SmørgravAM_CONDITIONAL([WITH_SYSTEM_LIBPAM], [test x"$with_system_libpam" = x"yes"]) 89f3b0ac34SDag-Erling Smørgrav 907f106882SDag-Erling SmørgravAC_CHECK_HEADERS([crypt.h]) 91b33ab329SDag-Erling Smørgrav 92ce77a8d6SDag-Erling SmørgravAC_CHECK_FUNCS([asprintf vasprintf]) 93ce77a8d6SDag-Erling SmørgravAC_CHECK_FUNCS([dlfunc fdlopen]) 94ce77a8d6SDag-Erling SmørgravAC_CHECK_FUNCS([fpurge]) 95ce77a8d6SDag-Erling SmørgravAC_CHECK_FUNCS([setlogmask]) 96d64f4044SDag-Erling SmørgravAC_CHECK_FUNCS([strlcat strlcmp strlcpy strlset]) 97b33ab329SDag-Erling Smørgrav 987f106882SDag-Erling Smørgravsaved_LIBS="${LIBS}" 997f106882SDag-Erling SmørgravLIBS="" 1007f106882SDag-Erling SmørgravAC_CHECK_LIB([dl], [dlopen]) 1017f106882SDag-Erling SmørgravDL_LIBS="${LIBS}" 1027f106882SDag-Erling SmørgravLIBS="${saved_LIBS}" 103b33ab329SDag-Erling SmørgravAC_SUBST(DL_LIBS) 104b33ab329SDag-Erling Smørgrav 1057f106882SDag-Erling Smørgravsaved_LIBS="${LIBS}" 1067f106882SDag-Erling SmørgravLIBS="" 107f3b0ac34SDag-Erling SmørgravAC_CHECK_LIB([pam], [pam_start]) 108f3b0ac34SDag-Erling SmørgravSYSTEM_LIBPAM="${LIBS}" 109f3b0ac34SDag-Erling SmørgravLIBS="${saved_LIBS}" 110f3b0ac34SDag-Erling SmørgravAC_SUBST(SYSTEM_LIBPAM) 111f3b0ac34SDag-Erling Smørgrav 11223d17223SDag-Erling SmørgravAX_PKG_CONFIG_CHECK([cryb-test], 11323d17223SDag-Erling Smørgrav [AC_MSG_NOTICE([Cryb test framework found, unit tests enabled.])], 11423d17223SDag-Erling Smørgrav [AC_MSG_WARN([Cryb test framework not found, unit tests disabled.])]) 115f3b0ac34SDag-Erling SmørgravAM_CONDITIONAL([WITH_TEST], [test x"$CRYB_TEST_LIBS" != x""]) 116f3b0ac34SDag-Erling Smørgrav 1177f106882SDag-Erling SmørgravAC_ARG_ENABLE([developer-warnings], 118fe980754SDag-Erling Smørgrav AS_HELP_STRING([--enable-developer-warnings], [enable strict warnings (default is NO)]), 119a45fd132SDimitry Andric [CFLAGS="${CFLAGS} -Wall -Wextra -Wcast-qual"]) 1207f106882SDag-Erling SmørgravAC_ARG_ENABLE([debugging-symbols], 121fe980754SDag-Erling Smørgrav AS_HELP_STRING([--enable-debugging-symbols], [enable debugging symbols (default is NO)]), 1227f106882SDag-Erling Smørgrav [CFLAGS="${CFLAGS} -O0 -g -fno-inline"]) 1237f106882SDag-Erling SmørgravAC_ARG_ENABLE([werror], 124fe980754SDag-Erling Smørgrav AS_HELP_STRING([--enable-werror], [use -Werror (default is NO)]), 1257f106882SDag-Erling Smørgrav [CFLAGS="${CFLAGS} -Werror"]) 126fe980754SDag-Erling Smørgrav 127*3ba4c8c8SDag-Erling SmørgravAC_ARG_ENABLE([code-coverage], 128*3ba4c8c8SDag-Erling Smørgrav AS_HELP_STRING([--enable-code-coverage], 129*3ba4c8c8SDag-Erling Smørgrav [enable code coverage])) 130*3ba4c8c8SDag-Erling SmørgravAS_IF([test x"$enable_code_coverage" = x"yes"], [ 131*3ba4c8c8SDag-Erling Smørgrav AM_COND_IF([WITH_TEST], [ 132*3ba4c8c8SDag-Erling Smørgrav AS_IF([test x"$ax_cv_c_compiler_vendor" = x"clang"], [ 133*3ba4c8c8SDag-Erling Smørgrav CFLAGS="${CFLAGS} -fprofile-instr-generate -fcoverage-mapping" 134*3ba4c8c8SDag-Erling Smørgrav clang_code_coverage="yes" 135*3ba4c8c8SDag-Erling Smørgrav AC_SUBST([clang_ver], [${CC#clang}]) 136*3ba4c8c8SDag-Erling Smørgrav ], [ 137*3ba4c8c8SDag-Erling Smørgrav AC_MSG_ERROR([code coverage is only supported with clang]) 138*3ba4c8c8SDag-Erling Smørgrav ]) 139*3ba4c8c8SDag-Erling Smørgrav AC_DEFINE([WITH_CODE_COVERAGE], [1], [Define to 1 if code coverage is enabled]) 140*3ba4c8c8SDag-Erling Smørgrav AC_MSG_NOTICE([code coverage enabled]) 141*3ba4c8c8SDag-Erling Smørgrav ], [ 142*3ba4c8c8SDag-Erling Smørgrav AC_MSG_ERROR([code coverage requires unit tests]) 143*3ba4c8c8SDag-Erling Smørgrav ]) 144*3ba4c8c8SDag-Erling Smørgrav]) 145*3ba4c8c8SDag-Erling SmørgravAM_CONDITIONAL([WITH_CODE_COVERAGE], [test x"$enable_code_coverage" = x"yes"]) 146*3ba4c8c8SDag-Erling SmørgravAM_CONDITIONAL([CLANG_CODE_COVERAGE], [test x"$clang_code_coverage" = x"yes"]) 147*3ba4c8c8SDag-Erling Smørgrav 148fe980754SDag-Erling SmørgravAC_CONFIG_FILES([ 1492f3ed619SDag-Erling Smørgrav Makefile 150fe980754SDag-Erling Smørgrav bin/Makefile 1512f3ed619SDag-Erling Smørgrav bin/openpam_dump_policy/Makefile 1527f106882SDag-Erling Smørgrav bin/pamtest/Makefile 153b33ab329SDag-Erling Smørgrav bin/su/Makefile 1542f3ed619SDag-Erling Smørgrav doc/Makefile 1552f3ed619SDag-Erling Smørgrav doc/man/Makefile 156*3ba4c8c8SDag-Erling Smørgrav freebsd/Makefile 157b33ab329SDag-Erling Smørgrav include/Makefile 158b33ab329SDag-Erling Smørgrav include/security/Makefile 159ce77a8d6SDag-Erling Smørgrav lib/Makefile 160f7e6344dSDag-Erling Smørgrav lib/libpam/Makefile 161f3b0ac34SDag-Erling Smørgrav misc/Makefile 162b33ab329SDag-Erling Smørgrav modules/Makefile 163b33ab329SDag-Erling Smørgrav modules/pam_deny/Makefile 164b33ab329SDag-Erling Smørgrav modules/pam_permit/Makefile 165f3b0ac34SDag-Erling Smørgrav modules/pam_return/Makefile 1662f3ed619SDag-Erling Smørgrav modules/pam_unix/Makefile 1672f3ed619SDag-Erling Smørgrav t/Makefile 168fe980754SDag-Erling Smørgrav]) 169f3b0ac34SDag-Erling SmørgravAC_CONFIG_FILES([misc/coverity.sh],[chmod +x misc/coverity.sh]) 170b33ab329SDag-Erling SmørgravAC_OUTPUT 171