pam-modules/configure.ac
2023-06-02 20:27:38 +03:00

272 lines
7.9 KiB
Text

# This file is part of pam-modules. -*- autoconf -*-
# Copyright (C) 2005-2022 Sergey Poznyakoff
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
AC_PREREQ([2.71])
AC_INIT([pam-modules],[2.5.90],[bug-pam-modules@gnu.org.ua])
AC_CONFIG_SRCDIR(pam_fshadow/pam_fshadow.c)
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE([1.16.5 no-exeext tar-ustar dist-xz silent-rules subdir-objects])
AC_CONFIG_HEADERS([config.h])
# Enable silent rules by default:
AM_SILENT_RULES([yes])
dnl Library versioning
AC_SUBST(VI_CURRENT,2)
AC_SUBST(VI_REVISION,0)
AC_SUBST(VI_AGE,0)
dnl Checks for programs.
AC_PROG_CC
AC_PROG_INSTALL
AC_DISABLE_STATIC([])
LT_PREREQ(2.2.5a)
LT_INIT
dnl Checks for libraries.
AC_CHECK_LIB(pam, pam_get_item,:,
[AC_MSG_ERROR([Required library libpam is not found])])
AC_ARG_WITH(crypt-lib,
AS_HELP_STRING([--with-crypt-lib=LIB],
[use -lLIB instead of -lcrypt]),
[cryptlib=$withval],
[cryptlib=crypt])
if test "x$cryptlib" != xno; then
AC_CHECK_LIB($cryptlib, crypt)
fi
AC_SUBST(PAM_MISC)
AH_TEMPLATE([HAVE_PAM_MISC_SETENV],[Define if pam_misc_setenv is available.])
AC_CHECK_LIB(pam_misc, pam_misc_setenv,
[PAM_MISC=-lpam_misc
AC_DEFINE([HAVE_PAM_MISC_SETENV],1)],:,[-lpam])
dnl Checks for header files.
AC_CHECK_HEADERS(security/pam_appl.h security/pam_modules.h,
:,
AC_MSG_ERROR([Required PAM header files not found]))
AC_CHECK_HEADERS(fcntl.h syslog.h unistd.h crypt.h security/_pam_aconf.h \
security/pam_misc.h security/pam_ext.h termios.h \
shadow.h)
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_CHECK_HEADERS([shadow.h])
AC_CHECK_FUNCS(fgetspent)
AC_CHECK_TYPES(struct spwd, , ,
[ #include <shadow.h> ])
AC_CHECK_MEMBERS([struct spwd.sp_expire], , ,
[ #include <shadow.h> ])
dnl Checks for library functions.
AC_CHECK_FUNCS(strerror tcgetattr fgetpwent)
PM_ENABLE(fshadow)
PM_ENABLE(log)
PM_ENABLE(regex)
PM_ENABLE(groupmember)
# Check for SQL support
AC_ARG_WITH(mysql,
AS_HELP_STRING([--without-mysql],
[Configure to work without MySQL]),
[want_mysql=$withval])
AC_ARG_WITH(pgsql,
AS_HELP_STRING([--without-pgsql],
[Configure to work without Postgres]),
[want_pgsql=$withval])
AC_ARG_WITH(postgres,
AS_HELP_STRING([--without-postgres],
[Same as --without-pgsql]),
[want_pgsql=$withval])
AC_ARG_WITH(sql,
AS_HELP_STRING([--without-sql],
[Do not build SQL dependent modules]),
[want_mysql=$withval
want_pgsql=$withval])
PM_ENABLE(mysql, [
if test "$want_mysql" != no; then
PM_CHECK_LIB(mysqlclient, mysql_real_connect, "-lm",
[ AC_DEFINE(USE_SQL_MYSQL,1,
[Define this if you are going to use MySQL])
AC_DEFINE(HAVE_LIBMYSQL,1,
[Define this if you have mysqlclient library])
MYSQLLIBS="$pm_cv_lib_mysqlclient"
SQL_MODULES="$SQL_MODULES pam_mysql.la"
build_mysql=yes ],
[ test "$build_mysql" = yes && AC_MSG_ERROR([cannot build the requested module pam_mysql, because MySQL libraries are not present])
build_mysql=no ],
[/usr/lib/mysql /usr/local/lib/mysql])
fi
])
PM_ENABLE(pgsql, [
if test "$want_pgsql" != no; then
PM_CHECK_LIB(pq, PQconnectStart, [],
[ save_CPPFLAGS=$CPPFLAGS
for dir in /usr/local/pgsql/include /usr/pgsql/include
do
CPPFLAGS="$save_CPPFLAGS -I$dir"
AC_CHECK_HEADER([libpq-fe.h], [break])
CPPFLAGS="$save_CPPFLAGS"
done
AC_DEFINE(USE_SQL_PGSQL,1,
[Define this if you are going to use PostgreSQL])
AC_DEFINE(HAVE_LIBPQ,1,
[Define this if you have libpq])
PGSQLLIBS="$pm_cv_lib_pq"
SQL_MODULES="$SQL_MODULES pam_pgsql.la"
build_pgsql=yes ],
[ test "$build_pgsql" = yes && AC_MSG_ERROR([cannot build the requested module pma_pgsql, because PostgreSQL libraries are not present])
build_pgsql=no ],
[/usr/pgsql/lib /usr/local/pgsql/lib])
fi
])
AC_SUBST(MYSQLLIBS)
AC_SUBST(PGSQLLIBS)
AC_SUBST(SQL_MODULES)
# LDAP support
PM_ENABLE(ldaphome,[
AC_CHECK_LIB(ldap, ldap_bind,
[build_ldaphome=yes],
[if test $build_ldaphome = yes; then
AC_MSG_ERROR([cannot build pam_ldaphome, because the required library libldap is not found])
else
build_ldaphome=no
fi])
])
#
PM_ENABLE(umotd,[
case $build_umotd in
probe)
build_umotd=$ac_cv_header_security_pam_ext_h
;;
yes)
test $ac_cv_header_security_pam_ext_h = no && AC_MSG_ERROR([Cannot build pam_umotd, because the required header security/pam_ext.h is not present])
;;
esac
])
#
AC_CHECK_FUNCS([getdomainname])
PM_ENABLE(innetgr,[
case $build_innetgr in
probe)
AC_CHECK_FUNC([innetgr],[build_innetgr=yes],[build_innetgr=no])
;;
yes)
AC_CHECK_FUNC([innetgr],[],[AC_MSG_ERROR([cannot build the requested module pam_innetgr because function innetgr is not present in libc])])
;;
esac])
## *****************
## debugging support
## *****************
AC_ARG_ENABLE(debug,
AS_HELP_STRING([--enable-debug],[enable debugging mode]),
[if test "$enableval" = yes; then
if test "$GCC" = yes; then
AC_MSG_CHECKING(whether gcc accepts -ggdb)
save_CFLAGS=$CFLAGS
CFLAGS="-ggdb -Wall"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[void f(){}]])],
[AC_MSG_RESULT(yes)],
[if test x"$ac_cv_prog_cc_g" = xyes; then
CFLAGS="-g -Wall"
else
CFLAGS=
fi
AC_MSG_RESULT(no)])
CFLAGS="`echo $save_CFLAGS | sed 's/-O[[0-9]]//g'` $CFLAGS"
AC_DEFINE_UNQUOTED([DEBUG_MODE],1,[Define to enable debugging])
fi
fi])
## **************
## Directories
## **************
PAMDIR='$(prefix)/lib/security'
AC_ARG_WITH(pamdir,
AS_HELP_STRING([--with-pamdir=DIR],[install PAM modiles in DIR (PREFIX/lib/security)]),
[PAMDIR=$withval])
AC_SUBST(PAMDIR)
## **************
## Imprimatur
## **************
IMPRIMATUR_INIT
## **************
## Summary
## **************
AC_CONFIG_COMMANDS([status],[
echo ""
delim="-------------------------------------------------------------------"
echo $delim | tr '-' '*'
echo "Modules to build:"
res=
for module in fshadow regex log pgsql mysql ldaphome umotd groupmember innetgr
do
modname=pam_$module
eval enable=\${build_$module}
str=`echo ${modname}" yes" | sed 's/./-/g'`
dstr=`echo $delim | sed "s/^$str//" | tr '-' '.'`
echo ${modname}$dstr $enable
res="$res$enable"
done
echo $delim | tr '-' '*'
case "$res" in
*yes*) ;;
*)
AC_MSG_ERROR([Nothing to build?])
esac
],[
build_fshadow=$build_fshadow
build_regex=$build_regex
build_log=$build_log
build_pgsql=$build_pgsql
build_mysql=$build_mysql
build_ldaphome=$build_ldaphome
build_umotd=$build_umotd
build_groupmember=$build_groupmember
build_innetgr=$build_innetgr])
AC_CONFIG_FILES([Makefile
doc/Makefile
examples/Makefile
lib/Makefile
pam_fshadow/Makefile
pam_regex/Makefile
pam_log/Makefile
pam_sql/Makefile
pam_ldaphome/Makefile
pam_umotd/Makefile
pam_groupmember/Makefile
pam_innetgr/Makefile
pamck/Makefile])
AC_OUTPUT