Blame configure.ac

Packit 6bd9ab
# configure.ac - process this file with autoconf to produce configure
Packit 6bd9ab
#
Packit 6bd9ab
# Copyright (C) 2006 Luke Howard
Packit 6bd9ab
# Copyright (C) 2006 West Consulting
Packit 6bd9ab
# Copyright (C) 2006-2018 Arthur de Jong
Packit 6bd9ab
#
Packit 6bd9ab
# This library is free software; you can redistribute it and/or
Packit 6bd9ab
# modify it under the terms of the GNU Lesser General Public
Packit 6bd9ab
# License as published by the Free Software Foundation; either
Packit 6bd9ab
# version 2.1 of the License, or (at your option) any later version.
Packit 6bd9ab
#
Packit 6bd9ab
# This library is distributed in the hope that it will be useful,
Packit 6bd9ab
# but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 6bd9ab
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 6bd9ab
# Lesser General Public License for more details.
Packit 6bd9ab
#
Packit 6bd9ab
# You should have received a copy of the GNU Lesser General Public
Packit 6bd9ab
# License along with this library; if not, write to the Free Software
Packit 6bd9ab
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
Packit 6bd9ab
# 02110-1301 USA
Packit 6bd9ab
Packit 6bd9ab
AC_PREREQ(2.61)
Packit 6bd9ab
AC_COPYRIGHT(
Packit 6bd9ab
[Copyright (C) 2006 Luke Howard
Packit 6bd9ab
Copyright (C) 2006 West Consulting
Packit 6bd9ab
Copyright (C) 2006-2018 Arthur de Jong
Packit 6bd9ab
Packit 6bd9ab
This configure script is derived from configure.ac which is free software;
Packit 6bd9ab
you can redistribute it and/or modify it under the terms of the GNU Lesser
Packit 6bd9ab
General Public License as published by the Free Software Foundation; either
Packit 6bd9ab
version 2.1 of the License, or (at your option) any later version. See the
Packit 6bd9ab
configure.ac file for more details.])
Packit 6bd9ab
Packit 6bd9ab
# initialize and set version and bugreport address
Packit 6bd9ab
AC_INIT([nss-pam-ldapd],
Packit 6bd9ab
        [0.9.9],
Packit 6bd9ab
        [nss-pam-ldapd-users@lists.arthurdejong.org],,
Packit 6bd9ab
        [https://arthurdejong.org/nss-pam-ldapd/])
Packit 6bd9ab
RELEASE_MONTH="Feb 2018"
Packit 6bd9ab
AC_SUBST(RELEASE_MONTH)
Packit 6bd9ab
AC_CONFIG_SRCDIR([nslcd.h])
Packit 6bd9ab
AC_CONFIG_MACRO_DIR([m4])
Packit 6bd9ab
Packit 6bd9ab
# some initialisation
Packit 6bd9ab
AC_CANONICAL_TARGET
Packit 6bd9ab
AC_PREFIX_DEFAULT()
Packit 6bd9ab
AC_CONFIG_LIBOBJ_DIR([compat])
Packit 6bd9ab
Packit 6bd9ab
# display notice and initialize automake
Packit 6bd9ab
AC_MSG_NOTICE([configuring AC_PACKAGE_TARNAME AC_PACKAGE_VERSION])
Packit 6bd9ab
AM_INIT_AUTOMAKE([1.11.2 check-news gnu std-options color-tests --warnings=all])
Packit 6bd9ab
Packit 6bd9ab
# create a config.h file (Automake will add -DHAVE_CONFIG_H)
Packit 6bd9ab
AC_CONFIG_HEADERS([config.h])
Packit 6bd9ab
Packit 6bd9ab
# check for programs
Packit 6bd9ab
AC_PROG_CC
Packit 6bd9ab
AC_PROG_CPP
Packit 6bd9ab
AC_PROG_INSTALL
Packit 6bd9ab
AC_PROG_RANLIB
Packit 6bd9ab
AM_PROG_CC_C_O
Packit 6bd9ab
AC_USE_SYSTEM_EXTENSIONS
Packit 6bd9ab
AC_PROG_LN_S
Packit 6bd9ab
AM_PROG_AR
Packit 6bd9ab
Packit 6bd9ab
# checks for tool to convert docbook to man
Packit 6bd9ab
genman="no"
Packit 6bd9ab
AC_PATH_PROGS(DOCBOOK2X_MAN, docbook2x-man)
Packit 6bd9ab
AC_MSG_CHECKING([for tool to (re)generate man pages])
Packit 6bd9ab
if test "x${DOCBOOK2X_MAN}" != x
Packit 6bd9ab
then
Packit 6bd9ab
  genman="${DOCBOOK2X_MAN}"
Packit 6bd9ab
fi
Packit 6bd9ab
AC_MSG_RESULT($genman)
Packit 6bd9ab
AM_CONDITIONAL([GENMAN], [test "x${genman}" != "xno"])
Packit 6bd9ab
if test "x${genman}" = "xno"
Packit 6bd9ab
then
Packit 6bd9ab
  AC_MSG_WARN([docbook2x-man not found: not (re)generating man pages])
Packit 6bd9ab
fi
Packit 6bd9ab
Packit 6bd9ab
# check whether to install manual pages
Packit 6bd9ab
AC_MSG_CHECKING([whether to install man pages])
Packit 6bd9ab
instman="no"
Packit 6bd9ab
if [test "x${genman}" != "xno" || ls  "${srcdir}/man/"*.? > /dev/null 2>&1]
Packit 6bd9ab
then
Packit 6bd9ab
  instman="yes"
Packit 6bd9ab
fi
Packit 6bd9ab
AC_MSG_RESULT($instman)
Packit 6bd9ab
AM_CONDITIONAL([INSTMAN], [test "x${instman}" != "xno"])
Packit 6bd9ab
if test "x${instman}" = "xno"
Packit 6bd9ab
then
Packit 6bd9ab
  AC_MSG_WARN([not installing man pages (no generator and not pre-generated)])
Packit 6bd9ab
fi
Packit 6bd9ab
Packit 6bd9ab
# check for Python and modules
Packit 6bd9ab
AM_PATH_PYTHON(2.5,, [:])
Packit 6bd9ab
AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != ":"])
Packit 6bd9ab
if test "x$PYTHON" != "x:"
Packit 6bd9ab
then
Packit 6bd9ab
  AX_PYTHON_MODULE(argparse)
Packit 6bd9ab
fi
Packit 6bd9ab
Packit 6bd9ab
# check for debugging options
Packit 6bd9ab
AC_ARG_ENABLE(debug,
Packit 6bd9ab
              AS_HELP_STRING([--enable-debug],
Packit 6bd9ab
                             [enable extensive debugging and logging]),
Packit 6bd9ab
              [if test "x$enableval" != "xno" ; then CFLAGS="-g -DDEBUG $CFLAGS" ; fi])
Packit 6bd9ab
Packit 6bd9ab
# check for extra compiler warnings
Packit 6bd9ab
DESIRED_CFLAGS=""
Packit 6bd9ab
AC_ARG_ENABLE(warnings,
Packit 6bd9ab
              AS_HELP_STRING([--enable-warnings],
Packit 6bd9ab
                             [enable extra compiler warnings (gcc)]),
Packit 6bd9ab
              [if test "x$enableval" != "no"
Packit 6bd9ab
               then
Packit 6bd9ab
                 CFLAGS="$CFLAGS -pedantic -Wall -Wshadow -Wpointer-arith -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Waggregate-return -Wmissing-declarations -Wunused -Wformat=2 -Wswitch-default -Wswitch-enum -Wfloat-equal -Wbad-function-cast -Wredundant-decls"
Packit 6bd9ab
                 DESIRED_CFLAGS="$DESIRED_CFLAGS -Wextra -Wdeclaration-after-statement -Werror-implicit-function-declaration -Werror=implicit"
Packit 6bd9ab
               fi])
Packit 6bd9ab
test_gcc_flag() {
Packit 6bd9ab
  AC_LANG_CONFTEST([AC_LANG_PROGRAM()])
Packit 6bd9ab
  $CC -c conftest.c $CFLAGS $@ > /dev/null 2> /dev/null
Packit 6bd9ab
  ret=$?
Packit 6bd9ab
  rm -f conftest.o
Packit 6bd9ab
  return $ret
Packit 6bd9ab
}
Packit 6bd9ab
for flag in $DESIRED_CFLAGS
Packit 6bd9ab
do
Packit 6bd9ab
  AC_MSG_CHECKING([whether $CC accepts $flag])
Packit 6bd9ab
  if test_gcc_flag $flag
Packit 6bd9ab
  then
Packit 6bd9ab
    CFLAGS="$CFLAGS $flag"
Packit 6bd9ab
    AC_MSG_RESULT([yes])
Packit 6bd9ab
  else
Packit 6bd9ab
    AC_MSG_RESULT([no])
Packit 6bd9ab
  fi
Packit 6bd9ab
done
Packit 6bd9ab
Packit 6bd9ab
# check for Position Independent Code compiler option
Packit 6bd9ab
PIC_CFLAGS=""
Packit 6bd9ab
if test "$ac_cv_c_compiler_gnu" = "yes"
Packit 6bd9ab
then
Packit 6bd9ab
  PIC_CFLAGS="-fPIC"
Packit 6bd9ab
else
Packit 6bd9ab
  case "$target_os" in
Packit 6bd9ab
    sysv5*) PIC_CFLAGS="-KPIC" ;;
Packit 6bd9ab
  esac
Packit 6bd9ab
fi
Packit 6bd9ab
AC_SUBST(PIC_CFLAGS)
Packit 6bd9ab
Packit 6bd9ab
# add --disable-maintainer-mode option
Packit 6bd9ab
AM_MAINTAINER_MODE([enable])
Packit 6bd9ab
Packit 6bd9ab
# check whether the NSS module should be built
Packit 6bd9ab
AC_MSG_CHECKING([whether to build the NSS module])
Packit 6bd9ab
AC_ARG_ENABLE(nss,
Packit 6bd9ab
              AS_HELP_STRING([--disable-nss],
Packit 6bd9ab
                             [build the NSS module @<:@enabled@:>@]),,
Packit 6bd9ab
              [enable_nss="yes"])
Packit 6bd9ab
AC_MSG_RESULT($enable_nss)
Packit 6bd9ab
AM_CONDITIONAL([ENABLE_NSS], [test "x$enable_nss" = "xyes"])
Packit 6bd9ab
Packit 6bd9ab
# check whether the PAM module should be built
Packit 6bd9ab
AC_MSG_CHECKING([whether to build the PAM module])
Packit 6bd9ab
AC_ARG_ENABLE(pam,
Packit 6bd9ab
              AS_HELP_STRING([--disable-pam],
Packit 6bd9ab
                             [build the PAM module @<:@enabled@:>@]),,
Packit 6bd9ab
              [enable_pam="yes"])
Packit 6bd9ab
AC_MSG_RESULT($enable_pam)
Packit 6bd9ab
AM_CONDITIONAL([ENABLE_PAM], [test "x$enable_pam" = "xyes"])
Packit 6bd9ab
Packit 6bd9ab
# check whether command-line utilities should be built
Packit 6bd9ab
AC_MSG_CHECKING([whether to build the command-line utilities])
Packit 6bd9ab
AC_ARG_ENABLE(utils,
Packit 6bd9ab
              AS_HELP_STRING([--disable-utils],
Packit 6bd9ab
                             [build the the command-line utilities @<:@auto@:>@]),,
Packit 6bd9ab
              [enable_utils="auto"])
Packit 6bd9ab
if test "x$enable_utils" = "xauto"
Packit 6bd9ab
then
Packit 6bd9ab
  if test "x$PYTHON" != "x:" && test "$HAVE_PYMOD_ARGPARSE" = "yes"
Packit 6bd9ab
  then
Packit 6bd9ab
    enable_utils="yes"
Packit 6bd9ab
  else
Packit 6bd9ab
    enable_utils="no"
Packit 6bd9ab
  fi
Packit 6bd9ab
fi
Packit 6bd9ab
AC_MSG_RESULT($enable_utils)
Packit 6bd9ab
AM_CONDITIONAL([ENABLE_UTILS], [test "x$enable_utils" = "xyes"])
Packit 6bd9ab
Packit 6bd9ab
# check whether the nslcd daemon should be built
Packit 6bd9ab
AC_MSG_CHECKING([whether to build the nslcd daemon])
Packit 6bd9ab
AC_ARG_ENABLE(nslcd,
Packit 6bd9ab
              AS_HELP_STRING([--disable-nslcd],
Packit 6bd9ab
                             [build the nslcd daemon @<:@enabled@:>@]),,
Packit 6bd9ab
              [enable_nslcd="yes"])
Packit 6bd9ab
AC_MSG_RESULT($enable_nslcd)
Packit 6bd9ab
AM_CONDITIONAL([ENABLE_NSLCD], [test "x$enable_nslcd" = "xyes"])
Packit 6bd9ab
Packit 6bd9ab
# check whether the Python version of the nslcd daemon should be built
Packit 6bd9ab
AC_MSG_CHECKING([whether to build the pynslcd daemon])
Packit 6bd9ab
AC_ARG_ENABLE(pynslcd,
Packit 6bd9ab
              AS_HELP_STRING([--enable-pynslcd],
Packit 6bd9ab
                             [build the pynslcd daemon @<:@disabled@:>@]),,
Packit 6bd9ab
              [enable_pynslcd="no"])
Packit 6bd9ab
AC_MSG_RESULT($enable_pynslcd)
Packit 6bd9ab
AM_CONDITIONAL([ENABLE_PYNSLCD], [test "x$enable_pynslcd" = "xyes"])
Packit 6bd9ab
if test "x$enable_pynslcd" = "xyes"
Packit 6bd9ab
then
Packit 6bd9ab
  AC_MSG_WARN([the pynslcd daemon is experimental])
Packit 6bd9ab
fi
Packit 6bd9ab
Packit 6bd9ab
# check whether SASL support should be enabled
Packit 6bd9ab
AC_MSG_CHECKING([whether to enable SASL support])
Packit 6bd9ab
AC_ARG_ENABLE(sasl,
Packit 6bd9ab
              AS_HELP_STRING([--disable-sasl],
Packit 6bd9ab
                             [disable SASL support @<:@enabled@:>@]),
Packit 6bd9ab
              [enable_sasl=$enableval],
Packit 6bd9ab
              [enable_sasl="yes"])
Packit 6bd9ab
AC_MSG_RESULT($enable_sasl)
Packit 6bd9ab
Packit 6bd9ab
# check whether Kerberos support should be enabled
Packit 6bd9ab
AC_MSG_CHECKING([whether to enable Kerberos support])
Packit 6bd9ab
AC_ARG_ENABLE(kerberos,
Packit 6bd9ab
              AS_HELP_STRING([--disable-kerberos],
Packit 6bd9ab
                             [disable Kerberos support @<:@enabled@:>@]),
Packit 6bd9ab
              [enable_kerberos=$enableval],
Packit 6bd9ab
              [enable_kerberos="yes"])
Packit 6bd9ab
AC_MSG_RESULT($enable_kerberos)
Packit 6bd9ab
Packit 6bd9ab
# check whether configfile options should be checked
Packit 6bd9ab
AC_MSG_CHECKING([whether to check configfile options])
Packit 6bd9ab
AC_ARG_ENABLE(configfile_checking,
Packit 6bd9ab
              AS_HELP_STRING([--disable-configfile-checking],
Packit 6bd9ab
                             [check configfile options @<:@enabled@:>@]),
Packit 6bd9ab
              [configfile_checking=$enableval],
Packit 6bd9ab
              [configfile_checking="yes"])
Packit 6bd9ab
AC_MSG_RESULT($configfile_checking)
Packit 6bd9ab
if test "x$configfile_checking" = "xyes"
Packit 6bd9ab
then
Packit 6bd9ab
  AC_DEFINE(ENABLE_CONFIGFILE_CHECKING, 1 ,[Whether to check configfile options.])
Packit 6bd9ab
fi
Packit 6bd9ab
Packit 6bd9ab
# check the name of the configuration file
Packit 6bd9ab
AC_ARG_WITH(ldap-conf-file,
Packit 6bd9ab
            AS_HELP_STRING([--with-ldap-conf-file=PATH],
Packit 6bd9ab
                           [path to nslcd configuration file @<:@/etc/nslcd.conf@:>@]),
Packit 6bd9ab
            [ NSLCD_CONF_PATH="$with_ldap_conf_file" ],
Packit 6bd9ab
            [ NSLCD_CONF_PATH="/etc/nslcd.conf" ])
Packit 6bd9ab
AC_DEFINE_UNQUOTED(NSLCD_CONF_PATH, "$NSLCD_CONF_PATH", [Path to nslcd configuration file.])
Packit 6bd9ab
AC_SUBST(NSLCD_CONF_PATH)
Packit 6bd9ab
Packit 6bd9ab
# check the name of the file with a bindpw value
Packit 6bd9ab
AC_ARG_WITH(bindpw-file,
Packit 6bd9ab
            AS_HELP_STRING([--with-bindpw-file=PATH],
Packit 6bd9ab
                           [path to file with value for bindpw @<:@disabled@:>@]),
Packit 6bd9ab
            [ NSLCD_BINDPW_PATH="$with_bindpw_file"
Packit 6bd9ab
              AC_DEFINE_UNQUOTED(NSLCD_BINDPW_PATH, "$NSLCD_BINDPW_PATH", [Path to bindpw value.])
Packit 6bd9ab
              AC_SUBST(NSLCD_BINDPW_PATH)
Packit 6bd9ab
            ])
Packit 6bd9ab
Packit 6bd9ab
# where should the pidfile be written
Packit 6bd9ab
AC_ARG_WITH(nslcd-pidfile,
Packit 6bd9ab
            AS_HELP_STRING([--with-nslcd-pidfile=PATH],
Packit 6bd9ab
                           [path to pidfile @<:@/var/run/nslcd/nslcd.pid@:>@]),
Packit 6bd9ab
            [ NSLCD_PIDFILE="$with_nslcd_pidfile" ],
Packit 6bd9ab
            [ NSLCD_PIDFILE="/var/run/nslcd/nslcd.pid" ])
Packit 6bd9ab
AC_DEFINE_UNQUOTED(NSLCD_PIDFILE, "$NSLCD_PIDFILE", [The location of the pidfile used for checking availability of the nslcd.])
Packit 6bd9ab
AC_SUBST(NSLCD_PIDFILE)
Packit 6bd9ab
Packit 6bd9ab
# where is the socket used for communication
Packit 6bd9ab
AC_ARG_WITH(nslcd-socket,
Packit 6bd9ab
            AS_HELP_STRING([--with-nslcd-socket=PATH],
Packit 6bd9ab
                           [path to socket @<:@/var/run/nslcd/socket@:>@]),
Packit 6bd9ab
            [ NSLCD_SOCKET="$with_nslcd_socket" ],
Packit 6bd9ab
            [ NSLCD_SOCKET="/var/run/nslcd/socket" ])
Packit 6bd9ab
AC_DEFINE_UNQUOTED(NSLCD_SOCKET, "$NSLCD_SOCKET", [The location of the socket used for communicating.])
Packit 6bd9ab
AC_SUBST(NSLCD_SOCKET)
Packit 6bd9ab
Packit 6bd9ab
# the directory PAM librabries are expected to be placed into
Packit 6bd9ab
AC_MSG_CHECKING([location for PAM module])
Packit 6bd9ab
AC_ARG_WITH(pam-seclib-dir,
Packit 6bd9ab
            AS_HELP_STRING([--with-pam-seclib-dir=PAM_SECLIB_DIR],
Packit 6bd9ab
                           [path to PAM security library @<:@auto@:>@]),
Packit 6bd9ab
            [ PAM_SECLIB_DIR="$with_pam_seclib_dir" ],
Packit 6bd9ab
            [ PAM_SECLIB_DIR="auto" ])
Packit 6bd9ab
if test "x$PAM_SECLIB_DIR" = "xauto"
Packit 6bd9ab
then
Packit 6bd9ab
  case "$target_os" in
Packit 6bd9ab
    solaris*) PAM_SECLIB_DIR="/usr/lib/security" ;;
Packit 6bd9ab
    freebsd*|dragonfly*) PAM_SECLIB_DIR="/usr/lib" ;;
Packit 6bd9ab
    *)        PAM_SECLIB_DIR="/lib/security" ;;
Packit 6bd9ab
  esac
Packit 6bd9ab
fi
Packit 6bd9ab
AC_MSG_RESULT($PAM_SECLIB_DIR)
Packit 6bd9ab
AC_DEFINE_UNQUOTED(PAM_SECLIB_DIR, "$PAM_SECLIB_DIR", [path to PAM security library])
Packit 6bd9ab
AC_SUBST(PAM_SECLIB_DIR)
Packit 6bd9ab
Packit 6bd9ab
# the name to use for the NSS module
Packit 6bd9ab
AC_MSG_CHECKING([name of NSS and PAM modules])
Packit 6bd9ab
AC_ARG_WITH(module-name,
Packit 6bd9ab
            AS_HELP_STRING([--with-module-name=NAME],
Packit 6bd9ab
                           [name of NSS and PAM modules @<:@ldap@:>@]),
Packit 6bd9ab
            [ MODULE_NAME="$with_module_name" ],
Packit 6bd9ab
            [ MODULE_NAME="ldap" ])
Packit 6bd9ab
            # FIXME: this does not work
Packit 6bd9ab
AC_MSG_RESULT($MODULE_NAME)
Packit 6bd9ab
AC_DEFINE_UNQUOTED(MODULE_NAME, "$MODULE_NAME", [The name of the NSS and PAM modules.])
Packit 6bd9ab
AC_DEFINE_UNQUOTED(NSS_NAME(NAME), [_nss_${MODULE_NAME}_##NAME], [Expand to NSS symbol name.])
Packit 6bd9ab
AC_DEFINE_UNQUOTED(PAM_NAME(NAME), [_pam_${MODULE_NAME}_##NAME], [Expand to PAM symbol name.])
Packit 6bd9ab
AC_SUBST(MODULE_NAME)
Packit 6bd9ab
Packit 6bd9ab
# the SONAME to use for the NSS module
Packit 6bd9ab
AC_MSG_CHECKING([soname of NSS module])
Packit 6bd9ab
AC_ARG_WITH(nss-ldap-soname,
Packit 6bd9ab
            AS_HELP_STRING([--with-nss-ldap-soname=SONAME],
Packit 6bd9ab
                           [name of NSS module @<:@auto@:>@]),
Packit 6bd9ab
            [ NSS_LDAP_SONAME="$with_nss_ldap_soname" ],
Packit 6bd9ab
            [ NSS_LDAP_SONAME="auto" ])
Packit 6bd9ab
if test "x$NSS_LDAP_SONAME" = "xauto"
Packit 6bd9ab
then
Packit 6bd9ab
  case "$target_os" in
Packit 6bd9ab
    solaris*) NSS_LDAP_SONAME="nss_$MODULE_NAME.so.1" ;;
Packit 6bd9ab
    freebsd*|dragonfly*) NSS_LDAP_SONAME="nss_$MODULE_NAME.so.1" ;;
Packit 6bd9ab
    *)        NSS_LDAP_SONAME="libnss_$MODULE_NAME.so.2" ;;
Packit 6bd9ab
  esac
Packit 6bd9ab
fi
Packit 6bd9ab
AC_MSG_RESULT($NSS_LDAP_SONAME)
Packit 6bd9ab
AC_DEFINE_UNQUOTED(NSS_LDAP_SONAME, "$NSS_LDAP_SONAME", [The SONAME of the NSS library module.])
Packit 6bd9ab
AC_SUBST(NSS_LDAP_SONAME)
Packit 6bd9ab
Packit 6bd9ab
# the SONAME to use for the PAM module
Packit 6bd9ab
AC_MSG_CHECKING([soname of PAM module])
Packit 6bd9ab
AC_ARG_WITH(pam-ldap-soname,
Packit 6bd9ab
            AS_HELP_STRING([--with-pam-ldap-soname=SONAME],
Packit 6bd9ab
                           [name of PAM module @<:@auto@:>@]),
Packit 6bd9ab
            [ PAM_LDAP_SONAME="$with_pam_ldap_soname" ],
Packit 6bd9ab
            [ PAM_LDAP_SONAME="auto" ])
Packit 6bd9ab
if test "x$PAM_LDAP_SONAME" = "xauto"
Packit 6bd9ab
then
Packit 6bd9ab
  case "$target_os" in
Packit 6bd9ab
    solaris*) PAM_LDAP_SONAME="pam_$MODULE_NAME.so.1" ;;
Packit 6bd9ab
    *)        PAM_LDAP_SONAME="pam_$MODULE_NAME.so" ;;
Packit 6bd9ab
  esac
Packit 6bd9ab
fi
Packit 6bd9ab
AC_MSG_RESULT($PAM_LDAP_SONAME)
Packit 6bd9ab
AC_SUBST(PAM_LDAP_SONAME)
Packit 6bd9ab
Packit 6bd9ab
# check which modules should be build
Packit 6bd9ab
AC_ARG_WITH(nss-maps,
Packit 6bd9ab
            AS_HELP_STRING([--with-nss-maps=MAP LIST],
Packit 6bd9ab
                           [comma separated list of NSS maps to build @<:@all@:>@]),,
Packit 6bd9ab
            [ with_nss_maps="all" ])
Packit 6bd9ab
Packit 6bd9ab
# checks for availability of header files
Packit 6bd9ab
AC_CHECK_HEADERS([ctype.h strings.h pthread.h pthread_np.h fcntl.h limits.h])
Packit 6bd9ab
AC_CHECK_HEADERS([nss.h nss_common.h grp.h shadow.h aliases.h netdb.h rpc/rpcent.h])
Packit 6bd9ab
AC_CHECK_HEADERS([netinet/ether.h arpa/inet.h netinet/in.h])
Packit 6bd9ab
AC_CHECK_HEADERS([nsswitch.h nss_dbdefs.h])
Packit 6bd9ab
AC_CHECK_HEADERS([sys/socket.h sys/un.h sys/ucred.h ucred.h sys/param.h sys/time.h])
Packit 6bd9ab
AC_CHECK_HEADERS([getopt.h syslog.h stddef.h])
Packit 6bd9ab
Packit 6bd9ab
# other general checks
Packit 6bd9ab
AC_C_INLINE
Packit 6bd9ab
AC_C_CONST
Packit 6bd9ab
Packit 6bd9ab
# checks for availability of common functions
Packit 6bd9ab
AC_CHECK_FUNCS([sigaction snprintf])
Packit 6bd9ab
AC_SEARCH_LIBS(socket, socket)
Packit 6bd9ab
AC_CHECK_FUNCS([strcasecmp strncasecmp strchr strcspn strspn strtol strtoul strtoull strndup])
Packit 6bd9ab
AC_CHECK_FUNCS([malloc realloc atexit])
Packit 6bd9ab
AC_FUNC_FORK
Packit 6bd9ab
AC_CHECK_FUNCS(__assert_fail)
Packit 6bd9ab
AC_SEARCH_LIBS(clock_gettime, rt)
Packit 6bd9ab
AC_CHECK_FUNCS([setusershell getusershell endusershell getgrouplist])
Packit 6bd9ab
AC_CHECK_DECLS([setusershell, getusershell, endusershell])
Packit 6bd9ab
Packit 6bd9ab
# checks for types
Packit 6bd9ab
AC_TYPE_MODE_T
Packit 6bd9ab
AC_TYPE_SIZE_T
Packit 6bd9ab
AC_TYPE_UID_T
Packit 6bd9ab
AC_TYPE_PID_T
Packit 6bd9ab
AC_TYPE_INT32_T
Packit 6bd9ab
AC_TYPE_UINT8_T
Packit 6bd9ab
AC_TYPE_UINT16_T
Packit 6bd9ab
AC_TYPE_UINT32_T
Packit 6bd9ab
AC_CHECK_SIZEOF(unsigned int)
Packit 6bd9ab
AC_CHECK_SIZEOF(unsigned long int)
Packit 6bd9ab
AC_CHECK_SIZEOF(unsigned long long int)
Packit 6bd9ab
AC_CHECK_SIZEOF(uid_t)
Packit 6bd9ab
AC_CHECK_SIZEOF(gid_t)
Packit 6bd9ab
AX_TLS()
Packit 6bd9ab
AC_CHECK_TYPES(suseconds_t)
Packit 6bd9ab
Packit 6bd9ab
# check for support for the struct ether_addr structure
Packit 6bd9ab
AC_CHECK_TYPES(struct ether_addr,,, [
Packit 6bd9ab
    #include <sys/types.h>
Packit 6bd9ab
    #include <sys/socket.h>
Packit 6bd9ab
    #include <net/if.h>
Packit 6bd9ab
    #include <netinet/in.h>
Packit 6bd9ab
    #include <netinet/if_ether.h>
Packit 6bd9ab
    #ifdef HAVE_NETINET_ETHER_H
Packit 6bd9ab
    #include <netinet/ether.h>
Packit 6bd9ab
    #endif])
Packit 6bd9ab
Packit 6bd9ab
# check for ether_aton and ether_ntoa functions
Packit 6bd9ab
AC_CHECK_FUNCS(ether_aton ether_ntoa ether_aton_r ether_ntoa_r)
Packit 6bd9ab
AC_CHECK_DECLS([ether_aton, ether_ntoa],,, [
Packit 6bd9ab
    #include <sys/types.h>
Packit 6bd9ab
    #include <sys/socket.h>
Packit 6bd9ab
    #include <net/if.h>
Packit 6bd9ab
    #include <netinet/in.h>
Packit 6bd9ab
    #include <netinet/if_ether.h>
Packit 6bd9ab
    #ifdef HAVE_NETINET_ETHER_H
Packit 6bd9ab
    #include <netinet/ether.h>
Packit 6bd9ab
    #endif])
Packit 6bd9ab
Packit 6bd9ab
# check to see if socklen_t is defined
Packit 6bd9ab
AC_CHECK_TYPE(socklen_t,,
Packit 6bd9ab
    AC_DEFINE(socklen_t, size_t, [Define to `size_t' if not defined elswhere.]), [
Packit 6bd9ab
    #include <sys/types.h>
Packit 6bd9ab
    #include <sys/socket.h>])
Packit 6bd9ab
Packit 6bd9ab
# check the return type of setnetgrent()
Packit 6bd9ab
AC_CACHE_CHECK(
Packit 6bd9ab
    [return type of setnetgrent],
Packit 6bd9ab
    nss_pam_ldapd_cv_setnetgrent_type,
Packit 6bd9ab
    [AC_COMPILE_IFELSE(
Packit 6bd9ab
        [AC_LANG_PROGRAM([[
Packit 6bd9ab
            #include <netdb.h>
Packit 6bd9ab
            ]], [[
Packit 6bd9ab
            return setnetgrent(0);
Packit 6bd9ab
            ]])],
Packit 6bd9ab
        [nss_pam_ldapd_cv_setnetgrent_type=int],
Packit 6bd9ab
        [nss_pam_ldapd_cv_setnetgrent_type=void]) ])
Packit 6bd9ab
if test "x$nss_pam_ldapd_cv_setnetgrent_type" = "xvoid"
Packit 6bd9ab
then
Packit 6bd9ab
  AC_DEFINE(SETNETGRENT_RETURNS_VOID, 1,
Packit 6bd9ab
            [Define to 1 if setnetgrent() returns void.])
Packit 6bd9ab
fi
Packit 6bd9ab
Packit 6bd9ab
# NSS module-specific tests
Packit 6bd9ab
if test "x$enable_nss" = "xyes"
Packit 6bd9ab
then
Packit 6bd9ab
  # save CFLAGS and LIBS to restore later
Packit 6bd9ab
  nss_save_CFLAGS="$CFLAGS"
Packit 6bd9ab
  nss_save_LIBS="$LIBS"
Packit 6bd9ab
Packit 6bd9ab
  # check for a definition of struct aliasent
Packit 6bd9ab
  AC_CHECK_TYPES(struct aliasent,,, [
Packit 6bd9ab
      #ifdef HAVE_ALIASES_H
Packit 6bd9ab
      #include <aliases.h>
Packit 6bd9ab
      #endif])
Packit 6bd9ab
Packit 6bd9ab
  # check for a definition of struct etherent
Packit 6bd9ab
  AC_CHECK_TYPES(struct etherent,,, [
Packit 6bd9ab
    #include <sys/socket.h>
Packit 6bd9ab
    #include <net/if.h>
Packit 6bd9ab
    #include <netinet/in.h>
Packit 6bd9ab
    #include <netinet/if_ether.h>
Packit 6bd9ab
    #ifdef HAVE_NETINET_ETHER_H
Packit 6bd9ab
    #include <netinet/ether.h>
Packit 6bd9ab
    #endif])
Packit 6bd9ab
Packit 6bd9ab
  # check if struct passwd has a pw_class member
Packit 6bd9ab
  AC_CHECK_MEMBERS([struct passwd.pw_class],,, [
Packit 6bd9ab
      #include <pwd.h>])
Packit 6bd9ab
Packit 6bd9ab
  # check for a definition of struct rpcent
Packit 6bd9ab
  AC_CHECK_TYPES(struct rpcent,,, [
Packit 6bd9ab
      #include <netdb.h>
Packit 6bd9ab
      #ifdef HAVE_RPC_RPCENT_H
Packit 6bd9ab
      #include <rpc/rpcent.h>
Packit 6bd9ab
      #endif])
Packit 6bd9ab
Packit 6bd9ab
  # check for a definition of struct spwd
Packit 6bd9ab
  AC_CHECK_TYPES(struct spwd,,, [
Packit 6bd9ab
      #ifdef HAVE_NSS_H
Packit 6bd9ab
      #include <nss.h>
Packit 6bd9ab
      #endif
Packit 6bd9ab
      #ifdef HAVE_NSS_COMMON_H
Packit 6bd9ab
      #include <nss_common.h>
Packit 6bd9ab
      #endif
Packit 6bd9ab
      #include <pwd.h>
Packit 6bd9ab
      #ifdef HAVE_SHADOW_H
Packit 6bd9ab
      #include <shadow.h>
Packit 6bd9ab
      #endif])
Packit 6bd9ab
Packit 6bd9ab
  # check for a definition of enum nss_status and nss_backend_t
Packit 6bd9ab
  AC_CHECK_TYPES([enum nss_status, nss_backend_t],,, [
Packit 6bd9ab
      #ifdef HAVE_NSS_H
Packit 6bd9ab
      #include <nss.h>
Packit 6bd9ab
      #endif
Packit 6bd9ab
      #ifdef HAVE_NSS_COMMON_H
Packit 6bd9ab
      #include <nss_common.h>
Packit 6bd9ab
      #endif
Packit 6bd9ab
      #ifdef HAVE_NSS_DBDEFS_H
Packit 6bd9ab
      #include <nss_dbdefs.h>
Packit 6bd9ab
      #endif
Packit 6bd9ab
      #ifdef HAVE_NSSWITCH_H
Packit 6bd9ab
      #include <nsswitch.h>
Packit 6bd9ab
      #endif])
Packit 6bd9ab
Packit 6bd9ab
  # check if struct nss_XbyY_args has a returnlen attribute
Packit 6bd9ab
  AC_CHECK_MEMBERS([struct nss_XbyY_args.returnlen],,, [[
Packit 6bd9ab
      #ifdef HAVE_NSS_H
Packit 6bd9ab
      #include <nss.h>
Packit 6bd9ab
      #endif
Packit 6bd9ab
      #ifdef HAVE_NSS_COMMON_H
Packit 6bd9ab
      #include <nss_common.h>
Packit 6bd9ab
      #endif
Packit 6bd9ab
      #ifdef HAVE_NSS_DBDEFS_H
Packit 6bd9ab
      #include <nss_dbdefs.h>
Packit 6bd9ab
      #endif
Packit 6bd9ab
      #ifdef HAVE_NSSWITCH_H
Packit 6bd9ab
      #include <nsswitch.h>
Packit 6bd9ab
      #endif]])
Packit 6bd9ab
Packit 6bd9ab
  # check which NSS flavour to build
Packit 6bd9ab
  AC_MSG_CHECKING([which NSS flavour to build])
Packit 6bd9ab
  AC_ARG_WITH(nss-flavour,
Packit 6bd9ab
              AS_HELP_STRING([--with-nss-flavour=auto|glibc|solaris|freebsd],
Packit 6bd9ab
                             [the libc flavour to build our NSS module for @<:@auto@:>@]),,
Packit 6bd9ab
              with_nss_flavour=auto)
Packit 6bd9ab
  if test "x$with_nss_flavour" = "xauto"
Packit 6bd9ab
  then
Packit 6bd9ab
    # do the guessing game
Packit 6bd9ab
    case "$target_os" in
Packit 6bd9ab
      solaris*) with_nss_flavour=solaris ;;
Packit 6bd9ab
      freebsd*|dragonfly*) with_nss_flavour=freebsd ;;
Packit 6bd9ab
      *)        with_nss_flavour=glibc ;;
Packit 6bd9ab
    esac
Packit 6bd9ab
  fi
Packit 6bd9ab
  AC_MSG_RESULT($with_nss_flavour)
Packit 6bd9ab
  case "$with_nss_flavour" in
Packit 6bd9ab
    glibc)   AC_DEFINE(NSS_FLAVOUR_GLIBC, 1, [Whether to use the Glibc NSS interface flavour.]) ;;
Packit 6bd9ab
    solaris) AC_DEFINE(NSS_FLAVOUR_SOLARIS, 1, [Whether to use the Solaris NSS interface flavour.]) ;;
Packit 6bd9ab
    freebsd) AC_DEFINE(NSS_FLAVOUR_FREEBSD, 1, [Whether to use the FreeBSD NSS interface flavour.]) ;;
Packit 6bd9ab
  esac
Packit 6bd9ab
  NSS_FLAVOUR="$with_nss_flavour"
Packit 6bd9ab
  AC_SUBST(NSS_FLAVOUR)
Packit 6bd9ab
Packit 6bd9ab
  # check which module source files to use
Packit 6bd9ab
  AC_MSG_CHECKING([which NSS maps to build])
Packit 6bd9ab
  if test "x$with_nss_maps" = "xall"
Packit 6bd9ab
  then
Packit 6bd9ab
    case "$with_nss_flavour" in
Packit 6bd9ab
      glibc)   with_nss_maps="aliases,ethers,group,hosts,netgroup,networks,passwd,protocols,rpc,services,shadow" ;;
Packit 6bd9ab
      solaris) with_nss_maps="ethers,group,hosts,netgroup,networks,passwd,protocols,rpc,services,shadow" ;;
Packit 6bd9ab
      freebsd) with_nss_maps="group,hosts,passwd" ;;
Packit 6bd9ab
    esac
Packit 6bd9ab
  fi
Packit 6bd9ab
  AC_MSG_RESULT($with_nss_maps)
Packit 6bd9ab
  NSS_MODULE_OBJS="$(echo "$with_nss_maps " | sed 's/,/ /g;s/  */.$(OBJEXT) /g')"
Packit 6bd9ab
  AC_SUBST(NSS_MODULE_OBJS)
Packit 6bd9ab
Packit 6bd9ab
  # find out how to link the library
Packit 6bd9ab
  nss_ldap_so_LINK="\$(CCLD) \$(AM_CFLAGS) \$(CFLAGS) \$(nss_ldap_so_LDFLAGS) \$(LDFLAGS) -o \$@"
Packit 6bd9ab
  case "$target_os" in
Packit 6bd9ab
  solaris*)
Packit 6bd9ab
    if test "x$GCC" = xyes
Packit 6bd9ab
    then
Packit 6bd9ab
      nss_ldap_so_LINK="/usr/ccs/bin/ld -Bdirect -z nodelete -Bdynamic -M exports.map -G -o \$@"
Packit 6bd9ab
    else
Packit 6bd9ab
      nss_ldap_so_LDFLAGS="-Wl,-Bdirect -Wl,-z,nodelete -Wl,-Bdynamic -Wl,-M,exports.map -Wl,-G"
Packit 6bd9ab
    fi
Packit 6bd9ab
    ;;
Packit 6bd9ab
  *)
Packit 6bd9ab
    nss_ldap_so_LDFLAGS="-shared -Wl,-h,\$(NSS_LDAP_SONAME) -Wl,--version-script,exports.map"
Packit 6bd9ab
    ;;
Packit 6bd9ab
  esac
Packit 6bd9ab
  AC_SUBST(nss_ldap_so_LDFLAGS)
Packit 6bd9ab
  AC_SUBST(nss_ldap_so_LINK)
Packit 6bd9ab
Packit 6bd9ab
  # restore CFLAGS and LIBS
Packit 6bd9ab
  CFLAGS="$nss_save_CFLAGS"
Packit 6bd9ab
  LIBS="$nss_save_LIBS"
Packit 6bd9ab
fi
Packit 6bd9ab
Packit 6bd9ab
# PAM module-specific tests
Packit 6bd9ab
if test "x$enable_pam" = "xyes"
Packit 6bd9ab
then
Packit 6bd9ab
  # save CFLAGS and LIBS to restore later
Packit 6bd9ab
  pam_save_CFLAGS="$CFLAGS"
Packit 6bd9ab
  pam_save_LIBS="$LIBS"
Packit 6bd9ab
Packit 6bd9ab
  # check for headers
Packit 6bd9ab
  AC_CHECK_HEADERS(security/pam_appl.h)
Packit 6bd9ab
  AC_CHECK_HEADERS(security/pam_modules.h,,, [
Packit 6bd9ab
      #ifdef HAVE_SECURITY_PAM_APPL_H
Packit 6bd9ab
      #include <security/pam_appl.h>
Packit 6bd9ab
      #endif
Packit 6bd9ab
      ])
Packit 6bd9ab
  AC_CHECK_HEADERS(pam/pam_modules.h)
Packit 6bd9ab
  AC_CHECK_HEADERS(security/pam_ext.h)
Packit 6bd9ab
  AC_CHECK_HEADERS(security/pam_modutil.h)
Packit 6bd9ab
Packit 6bd9ab
  # at least one of security/pam_modules.h or pam/pam_modules.h is required
Packit 6bd9ab
  if test "x$ac_cv_header_security_pam_modules_h" != "xyes" && \
Packit 6bd9ab
     test "x$ac_cv_header_pam_pam_modules_h" != "xyes"
Packit 6bd9ab
  then
Packit 6bd9ab
    AC_MSG_ERROR(PAM header files are missing)
Packit 6bd9ab
  fi
Packit 6bd9ab
Packit 6bd9ab
  # find pam library
Packit 6bd9ab
  AC_SEARCH_LIBS(pam_get_data, pam,, AC_MSG_ERROR(no PAM library available))
Packit 6bd9ab
Packit 6bd9ab
  # replace some PAM functions if they are unavailable
Packit 6bd9ab
  AC_REPLACE_FUNCS(pam_get_authtok pam_prompt)
Packit 6bd9ab
  AC_CHECK_FUNCS(pam_modutil_getpwnam pam_syslog)
Packit 6bd9ab
  AC_CHECK_DECLS([pam_info, pam_error],,, [
Packit 6bd9ab
     #ifdef HAVE_SECURITY_PAM_APPL_H
Packit 6bd9ab
     #include <security/pam_appl.h>
Packit 6bd9ab
     #endif
Packit 6bd9ab
     #ifndef HAVE_PAM_PAM_MODULES_H
Packit 6bd9ab
     #include <security/pam_modules.h>
Packit 6bd9ab
     #ifdef HAVE_SECURITY_PAM_EXT_H
Packit 6bd9ab
     #include <security/pam_ext.h>
Packit 6bd9ab
     #endif
Packit 6bd9ab
     #else
Packit 6bd9ab
     #include <pam/pam_modules.h>
Packit 6bd9ab
     #endif
Packit 6bd9ab
     #ifdef HAVE_SECURITY_PAM_MODUTIL_H
Packit 6bd9ab
     #include <security/pam_modutil.h>
Packit 6bd9ab
     #endif])
Packit 6bd9ab
Packit 6bd9ab
  # find out how to link the library
Packit 6bd9ab
  pam_ldap_so_LINK="\$(CCLD) \$(AM_CFLAGS) \$(CFLAGS) \$(pam_ldap_so_LDFLAGS) \$(LDFLAGS) -o \$@"
Packit 6bd9ab
  case "$target_os" in
Packit 6bd9ab
  solaris*)
Packit 6bd9ab
    if test "x$GCC" = xyes
Packit 6bd9ab
    then
Packit 6bd9ab
      pam_ldap_so_LINK="/usr/ccs/bin/ld -Bdirect -z nodelete -Bdynamic -M \$(srcdir)/pam_ldap.map -G -o \$@"
Packit 6bd9ab
    else
Packit 6bd9ab
      pam_ldap_so_LDFLAGS="-shared -Wl,-Bdirect -Wl,-z,nodelete -Wl,-Bdynamic -Wl,-M,\$(srcdir)/pam_ldap.map -Wl,-G"
Packit 6bd9ab
    fi
Packit 6bd9ab
    ;;
Packit 6bd9ab
  *)
Packit 6bd9ab
    pam_ldap_so_LDFLAGS="-shared -Wl,--version-script,\$(srcdir)/pam_ldap.map"
Packit 6bd9ab
    ;;
Packit 6bd9ab
  esac
Packit 6bd9ab
  AC_SUBST(pam_ldap_so_LDFLAGS)
Packit 6bd9ab
  AC_SUBST(pam_ldap_so_LINK)
Packit 6bd9ab
Packit 6bd9ab
  # check argument type of pam_get_item()
Packit 6bd9ab
  AC_CACHE_CHECK(
Packit 6bd9ab
      [argument type of pam_get_item],
Packit 6bd9ab
      nss_pam_ldapd_cv_pam_get_item_arg3_type,
Packit 6bd9ab
      [AC_COMPILE_IFELSE(
Packit 6bd9ab
          [AC_LANG_PROGRAM([[
Packit 6bd9ab
              #ifdef HAVE_SECURITY_PAM_APPL_H
Packit 6bd9ab
              #include <security/pam_appl.h>
Packit 6bd9ab
              #endif
Packit 6bd9ab
              #ifndef HAVE_PAM_PAM_MODULES_H
Packit 6bd9ab
              #include <security/pam_modules.h>
Packit 6bd9ab
              #ifdef HAVE_SECURITY_PAM_EXT_H
Packit 6bd9ab
              #include <security/pam_ext.h>
Packit 6bd9ab
              #endif
Packit 6bd9ab
              #else
Packit 6bd9ab
              #include <pam/pam_modules.h>
Packit 6bd9ab
              #endif
Packit 6bd9ab
              #ifdef HAVE_SECURITY_PAM_MODUTIL_H
Packit 6bd9ab
              #include <security/pam_modutil.h>
Packit 6bd9ab
              #endif
Packit 6bd9ab
              extern int pam_get_item(const pam_handle_t *pamh, int item_type, const void **item);
Packit 6bd9ab
              ]], [])],
Packit 6bd9ab
          [nss_pam_ldapd_cv_pam_get_item_arg3_type="const void **"],
Packit 6bd9ab
          [nss_pam_ldapd_cv_pam_get_item_arg3_type="void **"]) ])
Packit 6bd9ab
  PAM_ITEM_CONST=""
Packit 6bd9ab
  if test "$nss_pam_ldapd_cv_pam_get_item_arg3_type" = "const void **"
Packit 6bd9ab
  then
Packit 6bd9ab
    PAM_ITEM_CONST="const"
Packit 6bd9ab
  fi
Packit 6bd9ab
  AC_DEFINE_UNQUOTED(PAM_ITEM_CONST, [$PAM_ITEM_CONST],
Packit 6bd9ab
                     [Define to empty if pam_get_item() doesn't take `const` parameter.])
Packit 6bd9ab
Packit 6bd9ab
  # restore CFLAGS and LIBS
Packit 6bd9ab
  CFLAGS="$pam_save_CFLAGS"
Packit 6bd9ab
  LIBS="$pam_save_LIBS"
Packit 6bd9ab
fi
Packit 6bd9ab
Packit 6bd9ab
# utils-specific tests
Packit 6bd9ab
if test "x$enable_utils" = "xyes"
Packit 6bd9ab
then
Packit 6bd9ab
  # check Python interpreter
Packit 6bd9ab
  AM_PATH_PYTHON(2.5,, AC_MSG_ERROR([Python is required]))
Packit 6bd9ab
  AX_PYTHON_MODULE(argparse)
Packit 6bd9ab
  if test "x$HAVE_PYMOD_ARGPARSE" != "xyes"
Packit 6bd9ab
  then
Packit 6bd9ab
    AC_MSG_WARN(Required Python modules missing)
Packit 6bd9ab
  fi
Packit 6bd9ab
fi
Packit 6bd9ab
Packit 6bd9ab
# nslcd daemon-specific tests
Packit 6bd9ab
if test "x$enable_nslcd" = "xyes"
Packit 6bd9ab
then
Packit 6bd9ab
  # save CFLAGS and LIBS to restore later
Packit 6bd9ab
  nslcd_save_CFLAGS="$CFLAGS"
Packit 6bd9ab
  nslcd_save_LIBS="$LIBS"
Packit 6bd9ab
Packit 6bd9ab
  # check header files
Packit 6bd9ab
  AC_CHECK_HEADERS(lber.h)
Packit 6bd9ab
  AC_CHECK_HEADERS(ldap.h,, test "x$enable_nslcd" = "xyes" && AC_MSG_ERROR([could not locate <ldap.h>]), [
Packit 6bd9ab
      #if HAVE_LBER_H
Packit 6bd9ab
      #include <lber.h>
Packit 6bd9ab
      #endif
Packit 6bd9ab
      ])
Packit 6bd9ab
  AC_CHECK_HEADERS(ldap_ssl.h)
Packit 6bd9ab
  AC_CHECK_HEADERS(gssldap.h)
Packit 6bd9ab
  if test "x$enable_sasl" = "xyes"
Packit 6bd9ab
  then
Packit 6bd9ab
    AC_CHECK_HEADERS(sasl.h sasl/sasl.h)
Packit 6bd9ab
    AC_CHECK_HEADERS(gsssasl.h)
Packit 6bd9ab
  fi
Packit 6bd9ab
  if test "x$enable_kerberos" = "xyes"
Packit 6bd9ab
  then
Packit 6bd9ab
    AC_CHECK_HEADERS(gssapi/gssapi.h gssapi/gssapi_generic.h gssapi/gssapi_krb5.h gssapi.h krb5.h)
Packit 6bd9ab
  fi
Packit 6bd9ab
  AC_CHECK_HEADERS(regex.h)
Packit 6bd9ab
Packit 6bd9ab
  # checks for availability of system libraries for nslcd
Packit 6bd9ab
  AC_SEARCH_LIBS(gethostbyname, nsl socket)
Packit 6bd9ab
  AC_SEARCH_LIBS(hstrerror, resolv)
Packit 6bd9ab
  AC_SEARCH_LIBS(dlopen, dl)
Packit 6bd9ab
Packit 6bd9ab
  # check for availability of functions
Packit 6bd9ab
  AC_CHECK_FUNCS(initgroups setgroups execvp execvpe)
Packit 6bd9ab
  AC_CHECK_FUNCS(getpeereid)
Packit 6bd9ab
  AC_CHECK_FUNCS(getpeerucred)
Packit 6bd9ab
  AC_CHECK_FUNCS(__nss_configure_lookup)
Packit 6bd9ab
  AC_CHECK_FUNCS(getenv putenv clearenv)
Packit 6bd9ab
  AC_CHECK_FUNCS(dlopen dlsym dlerror)
Packit 6bd9ab
  AC_CHECK_FUNCS(regcomp regexec regerror)
Packit 6bd9ab
  AC_CHECK_FUNCS(hstrerror)
Packit 6bd9ab
Packit 6bd9ab
  # replace some functions if they are not on the system
Packit 6bd9ab
  AC_REPLACE_FUNCS(getopt_long)
Packit 6bd9ab
  AC_REPLACE_FUNCS(strndup)
Packit 6bd9ab
Packit 6bd9ab
  # replace ether_aton_r() if not found
Packit 6bd9ab
  AC_CHECK_FUNCS(ether_aton_r,, [AC_LIBOBJ(ether)])
Packit 6bd9ab
Packit 6bd9ab
  # check to see if struct sockaddr_storage is defined
Packit 6bd9ab
  AC_CHECK_TYPE(struct sockaddr_storage,,
Packit 6bd9ab
      AC_DEFINE(sockaddr_storage, sockaddr_in, [Define to `sockaddr_in' if not defined elsewhere.]), [
Packit 6bd9ab
      #include <sys/types.h>
Packit 6bd9ab
      #include <sys/socket.h>])
Packit 6bd9ab
Packit 6bd9ab
  # check for support for the struct ucred structure
Packit 6bd9ab
  AC_CHECK_TYPE(struct ucred,
Packit 6bd9ab
      AC_DEFINE(HAVE_STRUCT_UCRED, 1, [Define to 1 if you have a `struct ucred' definition.]),, [
Packit 6bd9ab
      #include <sys/socket.h>
Packit 6bd9ab
      #include <sys/un.h>
Packit 6bd9ab
      #include <sys/types.h>])
Packit 6bd9ab
Packit 6bd9ab
  # check threading stuff
Packit 6bd9ab
  AX_PTHREAD(, AC_MSG_ERROR([no support for pthreads]))
Packit 6bd9ab
  pthread_save_CFLAGS="$CFLAGS"
Packit 6bd9ab
  pthread_save_LIBS="$LIBS"
Packit 6bd9ab
  CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
Packit 6bd9ab
  LIBS="$LIBS $PTHREAD_LIBS"
Packit 6bd9ab
  AC_CHECK_FUNCS([pthread_mutex_lock pthread_join pthread_timedjoin_np pthread_atfork])
Packit 6bd9ab
  CFLAGS="$pthread_save_CFLAGS"
Packit 6bd9ab
  LIBS="$pthread_save_LIBS"
Packit 6bd9ab
Packit 6bd9ab
  # also use deprecated LDAP functions
Packit 6bd9ab
  AC_DEFINE(LDAP_DEPRECATED, 1, Define to activate deprecated features in OpenLDAP)
Packit 6bd9ab
  # for compatibility on Solaris
Packit 6bd9ab
  AC_DEFINE(LDAP_REFERRALS, 1, Define to get some functions on Solaris)
Packit 6bd9ab
Packit 6bd9ab
  # search for an LDAP library (only OpenLDAP is tested)
Packit 6bd9ab
  AC_ARG_WITH(ldap-lib,
Packit 6bd9ab
              AS_HELP_STRING([--with-ldap-lib=TYPE],
Packit 6bd9ab
                             [select ldap library (auto|netscape5|netscape4|netscape3|umich|openldap) @<:@auto@:>@]))
Packit 6bd9ab
  if test -z "$with_ldap_lib"
Packit 6bd9ab
  then
Packit 6bd9ab
    with_ldap_lib=auto
Packit 6bd9ab
  fi
Packit 6bd9ab
  if test -z "$found_ldap_lib" -a \( $with_ldap_lib = auto -o $with_ldap_lib = umich -o $with_ldap_lib = openldap \)
Packit 6bd9ab
  then
Packit 6bd9ab
    AC_SEARCH_LIBS(ldap_search_ext, [ldap_r ldap], found_ldap_lib=yes,, )
Packit 6bd9ab
  fi
Packit 6bd9ab
  if test -z "$found_ldap_lib" -a \( $with_ldap_lib = auto -o $with_ldap_lib = netscape5 \)
Packit 6bd9ab
  then
Packit 6bd9ab
    AC_CHECK_LIB(ldap50, main, LIBS="-lldap50 -lssldap50 -lssl3 -lnss3 -lnspr4 -lprldap50 -lplc4 -lplds4 $LIBS" found_ldap_lib=yes,, -lpthread)
Packit 6bd9ab
  fi
Packit 6bd9ab
  if test -z "$found_ldap_lib" -a \( $with_ldap_lib = auto -o $with_ldap_lib = netscape4 \)
Packit 6bd9ab
  then
Packit 6bd9ab
    AC_CHECK_LIB(ldapssl41, main, LIBS="-lldapssl41 -lplc3 -lplds3 -lnspr3 $LIBS" found_ldap_lib=yes,, -lpthread)
Packit 6bd9ab
    if test -z "$found_ldap_lib"
Packit 6bd9ab
    then
Packit 6bd9ab
      AC_CHECK_LIB(ldapssl40, main, LIBS="-lldapssl40 $LIBS" found_ldap_lib=yes,, -lpthread)
Packit 6bd9ab
    fi
Packit 6bd9ab
    if test -z "$found_ldap_lib"
Packit 6bd9ab
    then
Packit 6bd9ab
      AC_CHECK_LIB(ldap41, main, LIBS="-lldap41 $LIBS" found_ldap_lib=yes,, )
Packit 6bd9ab
    fi
Packit 6bd9ab
    if test -z "$found_ldap_lib"
Packit 6bd9ab
    then
Packit 6bd9ab
      AC_CHECK_LIB(ldap40, main, LIBS="-lldap40 $LIBS" found_ldap_lib=yes,, )
Packit 6bd9ab
    fi
Packit 6bd9ab
  fi
Packit 6bd9ab
  if test -z "$found_ldap_lib" -a \( $with_ldap_lib = auto -o $with_ldap_lib = netscape3 \)
Packit 6bd9ab
  then
Packit 6bd9ab
    AC_CHECK_LIB(ldapssl30, main, LIBS="-lldapssl30 $LIBS" found_ldap_lib=yes,, -lpthread)
Packit 6bd9ab
  fi
Packit 6bd9ab
  AC_CHECK_FUNCS(ldap_search_ext,, AC_MSG_ERROR([could not locate a valid LDAP library]))
Packit 6bd9ab
Packit 6bd9ab
  # see if we need a BER library
Packit 6bd9ab
  AC_SEARCH_LIBS(ber_bvfree, lber)
Packit 6bd9ab
Packit 6bd9ab
  # check for extra SASL libraries
Packit 6bd9ab
  if test "$enable_sasl" = "yes"
Packit 6bd9ab
  then
Packit 6bd9ab
    AC_CHECK_TYPE(sasl_interact_t,
Packit 6bd9ab
        AC_DEFINE(HAVE_SASL_INTERACT_T, 1, [Define to 1 if you have a `sasl_interact_t' definition.]),, [
Packit 6bd9ab
        #ifdef HAVE_SASL_SASL_H
Packit 6bd9ab
        #include <sasl/sasl.h>
Packit 6bd9ab
        #elif defined(HAVE_SASL_H)
Packit 6bd9ab
        #include <sasl.h>
Packit 6bd9ab
        #endif])
Packit 6bd9ab
    AC_SEARCH_LIBS(ldap_sasl_interactive_bind_s, sasl2)
Packit 6bd9ab
    AC_CHECK_FUNCS(ldap_sasl_interactive_bind_s)
Packit 6bd9ab
  fi
Packit 6bd9ab
Packit 6bd9ab
  # check for extra Kerberos libraries
Packit 6bd9ab
  if test "$enable_kerberos" = "yes"
Packit 6bd9ab
  then
Packit 6bd9ab
    AC_SEARCH_LIBS(gss_krb5_ccache_name, gssapi gssapi_krb5)
Packit 6bd9ab
    AC_CHECK_FUNCS(gss_krb5_ccache_name)
Packit 6bd9ab
Packit 6bd9ab
    # save CFLAGS and LIBS to restore later
Packit 6bd9ab
    krb5_save_CFLAGS="$CFLAGS"
Packit 6bd9ab
    krb5_save_LIBS="$LIBS"
Packit 6bd9ab
Packit 6bd9ab
    # find library that contains krb5_is_thread_safe
Packit 6bd9ab
    AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'])
Packit 6bd9ab
    AC_CHECK_FUNCS(krb5_is_thread_safe)
Packit 6bd9ab
Packit 6bd9ab
    # see if krb5 is thread safe
Packit 6bd9ab
    if test "x$ac_cv_func_krb5_is_thread_safe" == "xyes"
Packit 6bd9ab
    then
Packit 6bd9ab
      AC_CACHE_CHECK(
Packit 6bd9ab
          [krb5 thread safety],
Packit 6bd9ab
          nslcd_cv_krb5_is_thread_safe,
Packit 6bd9ab
              [AC_RUN_IFELSE(
Packit 6bd9ab
                  [AC_LANG_PROGRAM([[
Packit 6bd9ab
                      #include <krb5.h>
Packit 6bd9ab
                      ]], [[
Packit 6bd9ab
                      if (!krb5_is_thread_safe())
Packit 6bd9ab
                        return 1;
Packit 6bd9ab
                      ]])],
Packit 6bd9ab
                  [nslcd_cv_krb5_is_thread_safe=yes],
Packit 6bd9ab
                  [nslcd_cv_krb5_is_thread_safe=no],
Packit 6bd9ab
                  [nslcd_cv_krb5_is_thread_safe=unknown])])
Packit 6bd9ab
      if test "x$nslcd_cv_krb5_is_thread_safe" == "xno"
Packit 6bd9ab
      then
Packit 6bd9ab
        AC_MSG_WARN([krb5 is NOT thread safe])
Packit 6bd9ab
      fi
Packit 6bd9ab
    fi
Packit 6bd9ab
Packit 6bd9ab
    # restore CFLAGS and LIBS because we don't directly use krb5
Packit 6bd9ab
    CFLAGS="$krb5_save_CFLAGS"
Packit 6bd9ab
    LIBS="$krb5_save_LIBS"
Packit 6bd9ab
Packit 6bd9ab
  fi
Packit 6bd9ab
Packit 6bd9ab
  # check for ldap function availability
Packit 6bd9ab
  AC_CHECK_FUNCS(ber_bvfree ber_free ber_set_option ber_get_enum)
Packit 6bd9ab
  AC_CHECK_FUNCS(ldap_initialize ldap_start_tls_s)
Packit 6bd9ab
  AC_CHECK_FUNCS(ldap_get_option ldap_set_option ldap_set_rebind_proc)
Packit 6bd9ab
  AC_CHECK_FUNCS(ldap_simple_bind_s ldap_sasl_bind ldap_sasl_bind_s ldap_unbind)
Packit 6bd9ab
  AC_CHECK_FUNCS(ldap_search_ext ldap_modify_ext_s ldap_extended_operation_s)
Packit 6bd9ab
  AC_CHECK_FUNCS(ldap_explode_dn ldap_explode_rdn)
Packit 6bd9ab
  AC_CHECK_FUNCS(ldap_domain2hostlist ldap_domain2dn)
Packit 6bd9ab
  AC_CHECK_FUNCS(ldap_result ldap_parse_result ldap_msgfree ldap_memfree)
Packit 6bd9ab
  AC_CHECK_FUNCS(ldap_get_dn ldap_first_attribute ldap_next_attribute)
Packit 6bd9ab
  AC_CHECK_FUNCS(ldap_get_values ldap_value_free)
Packit 6bd9ab
  AC_CHECK_FUNCS(ldap_get_values_len ldap_count_values_len ldap_value_free_len)
Packit 6bd9ab
  AC_CHECK_FUNCS(ldap_err2string ldap_abandon)
Packit 6bd9ab
  AC_CHECK_FUNCS(ldap_control_create ldap_create_control ldap_control_find)
Packit 6bd9ab
  AC_CHECK_FUNCS(ldap_controls_free ldap_control_free ldap_get_entry_controls)
Packit 6bd9ab
  AC_CHECK_FUNCS(ldap_parse_passwordpolicy_control ldap_passwordpolicy_err2txt)
Packit 6bd9ab
  AC_CHECK_FUNCS(ldap_create_deref_control ldap_create_deref_control_value)
Packit 6bd9ab
  AC_CHECK_FUNCS(ldap_parse_deref_control ldap_derefresponse_free)
Packit 6bd9ab
Packit 6bd9ab
  # replace ldap_create_page_control() and ldap_parse_page_control()
Packit 6bd9ab
  AC_CHECK_FUNCS(ldap_create_page_control ldap_parse_page_control,, [AC_LIBOBJ(pagectrl)])
Packit 6bd9ab
  AC_CHECK_DECLS(ldap_extended_operation_s,,, [
Packit 6bd9ab
      #if HAVE_LBER_H
Packit 6bd9ab
      #include <lber.h>
Packit 6bd9ab
      #endif
Packit 6bd9ab
      #include <ldap.h>])
Packit 6bd9ab
Packit 6bd9ab
  # replace other ldap functions
Packit 6bd9ab
  AC_REPLACE_FUNCS(ldap_passwd_s)
Packit 6bd9ab
  AC_REPLACE_FUNCS(ldap_initialize)
Packit 6bd9ab
  AC_REPLACE_FUNCS(ldap_parse_passwordpolicy_control)
Packit 6bd9ab
  AC_REPLACE_FUNCS(ldap_passwordpolicy_err2txt)
Packit 6bd9ab
Packit 6bd9ab
  # check the number of arguments that ldap_set_rebind_proc() uses
Packit 6bd9ab
  AC_CACHE_CHECK(
Packit 6bd9ab
      [number of arguments to ldap_set_rebind_proc],
Packit 6bd9ab
      nss_ldapd_cv_ldap_set_rebind_proc_args,
Packit 6bd9ab
      [AC_COMPILE_IFELSE(
Packit 6bd9ab
          [AC_LANG_PROGRAM([[
Packit 6bd9ab
              #include <lber.h>
Packit 6bd9ab
              #include <ldap.h>
Packit 6bd9ab
              ]], [[
Packit 6bd9ab
              ldap_set_rebind_proc(0, 0, 0);
Packit 6bd9ab
              ]])],
Packit 6bd9ab
          [nss_ldapd_cv_ldap_set_rebind_proc_args=3],
Packit 6bd9ab
          [nss_ldapd_cv_ldap_set_rebind_proc_args=2]) ])
Packit 6bd9ab
  AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $nss_ldapd_cv_ldap_set_rebind_proc_args,
Packit 6bd9ab
                     [Define to the number of arguments to ldap_set_rebindproc.])
Packit 6bd9ab
Packit 6bd9ab
  # check the return type of ldap_set_rebind_proc()
Packit 6bd9ab
  AC_CACHE_CHECK(
Packit 6bd9ab
      [return type of ldap_set_rebind_proc],
Packit 6bd9ab
      nss_ldapd_cv_ldap_set_rebind_proc_type,
Packit 6bd9ab
      [AC_COMPILE_IFELSE(
Packit 6bd9ab
          [AC_LANG_PROGRAM([[
Packit 6bd9ab
              #include <lber.h>
Packit 6bd9ab
              #include <ldap.h>
Packit 6bd9ab
              ]], [[
Packit 6bd9ab
              #if LDAP_SET_REBIND_PROC_ARGS == 3
Packit 6bd9ab
              return ldap_set_rebind_proc(0, 0, 0);
Packit 6bd9ab
              #else
Packit 6bd9ab
              return ldap_set_rebind_proc(0, 0);
Packit 6bd9ab
              #endif
Packit 6bd9ab
              ]])],
Packit 6bd9ab
          [nss_ldapd_cv_ldap_set_rebind_proc_type=int],
Packit 6bd9ab
          [nss_ldapd_cv_ldap_set_rebind_proc_type=void]) ])
Packit 6bd9ab
  if test "x$nss_ldapd_cv_ldap_set_rebind_proc_type" = "xvoid"
Packit 6bd9ab
  then
Packit 6bd9ab
    AC_DEFINE(LDAP_SET_REBIND_PROC_RETURNS_VOID, 1,
Packit 6bd9ab
              [Define to 1 if ldap_set_rebind_proc() returns void.])
Packit 6bd9ab
  fi
Packit 6bd9ab
Packit 6bd9ab
  # check for broken implementations of ldap_create_deref_control()
Packit 6bd9ab
  if test "x$ac_cv_func_ldap_create_deref_control" = "xyes"
Packit 6bd9ab
  then
Packit 6bd9ab
    # this bug cannot be determined on compile time so we run a
Packit 6bd9ab
    # small test program
Packit 6bd9ab
    AC_CACHE_CHECK(
Packit 6bd9ab
        [ldap_create_deref_control() implementation],
Packit 6bd9ab
        nslcd_cv_ldap_create_deref_control_working,
Packit 6bd9ab
            [AC_RUN_IFELSE(
Packit 6bd9ab
                [AC_LANG_PROGRAM([[
Packit 6bd9ab
                    #include <stdio.h>
Packit 6bd9ab
                    #include <lber.h>
Packit 6bd9ab
                    #include <ldap.h>
Packit 6bd9ab
                    ]], [[
Packit 6bd9ab
                    int rc;
Packit 6bd9ab
                    LDAP *ld;
Packit 6bd9ab
                    LDAPControl *ctrls[2] = {NULL, NULL};
Packit 6bd9ab
                    struct LDAPDerefSpec ds[2];
Packit 6bd9ab
                    char *attrs[2] = {"uid", NULL};
Packit 6bd9ab
                    ld = ldap_init("localhost", LDAP_PORT);
Packit 6bd9ab
                    if (ld == NULL)
Packit 6bd9ab
                    {
Packit 6bd9ab
                      fprintf(stderr, "ldap_init() failed\n");
Packit 6bd9ab
                      return 2;
Packit 6bd9ab
                    }
Packit 6bd9ab
                    ds[0].derefAttr = "member";
Packit 6bd9ab
                    ds[0].attributes = attrs;
Packit 6bd9ab
                    ds[1].derefAttr = NULL;
Packit 6bd9ab
                    rc = ldap_create_deref_control(ld, ds, 0, &ctrls[0]);
Packit 6bd9ab
                    if (rc != LDAP_SUCCESS)
Packit 6bd9ab
                    {
Packit 6bd9ab
                      fprintf(stderr, "ldap_create_deref_control() failed: %s\n",
Packit 6bd9ab
                              ldap_err2string(rc));
Packit 6bd9ab
                      return 2;
Packit 6bd9ab
                    }
Packit 6bd9ab
                    if (ldap_control_find(LDAP_CONTROL_X_DEREF, ctrls, NULL) != NULL)
Packit 6bd9ab
                      return 0;
Packit 6bd9ab
                    if (ldap_control_find(LDAP_CONTROL_PAGEDRESULTS, ctrls, NULL) != NULL)
Packit 6bd9ab
                    {
Packit 6bd9ab
                      fprintf(stderr, "ldap_create_deref_control() created LDAP_CONTROL_PAGEDRESULTS control\n");
Packit 6bd9ab
                      return 3;
Packit 6bd9ab
                    }
Packit 6bd9ab
                    fprintf(stderr, "ldap_create_deref_control() created unknown control\n");
Packit 6bd9ab
                    return 2;
Packit 6bd9ab
                    ]])],
Packit 6bd9ab
                [nslcd_cv_ldap_create_deref_control_working=ok],
Packit 6bd9ab
                [if test "$?" -eq 3; then nslcd_cv_ldap_create_deref_control_working=broken
Packit 6bd9ab
                 else nslcd_cv_ldap_create_deref_control_working=unknown; fi],
Packit 6bd9ab
                [nslcd_cv_ldap_create_deref_control_working=cross])])
Packit 6bd9ab
    if test "x$nslcd_cv_ldap_create_deref_control_working" != "xok"
Packit 6bd9ab
    then
Packit 6bd9ab
      AC_MSG_NOTICE([using replacement ldap_create_deref_control()])
Packit 6bd9ab
      AC_LIBOBJ(derefctrl)
Packit 6bd9ab
      AC_DEFINE(REPLACE_LDAP_CREATE_DEREF_CONTROL, 1,
Packit 6bd9ab
                [Define to 1 if ldap_create_deref_control() is broken.])
Packit 6bd9ab
    fi
Packit 6bd9ab
  fi
Packit 6bd9ab
Packit 6bd9ab
  # save nslcd LIBS and CFLAGS and restore originals
Packit 6bd9ab
  nslcd_CFLAGS="$CFLAGS"
Packit 6bd9ab
  nslcd_LIBS="$LIBS"
Packit 6bd9ab
  CFLAGS="$nslcd_save_CFLAGS"
Packit 6bd9ab
  LIBS="$nslcd_save_LIBS"
Packit 6bd9ab
Packit 6bd9ab
  AC_SUBST(nslcd_LIBS)
Packit 6bd9ab
fi
Packit 6bd9ab
Packit 6bd9ab
# pynslcd-specific tests
Packit 6bd9ab
if test "x$enable_pynslcd" = "xyes"
Packit 6bd9ab
then
Packit 6bd9ab
  # check Python interpreter
Packit 6bd9ab
  AM_PATH_PYTHON(2.5,, AC_MSG_ERROR([Python is required]))
Packit 6bd9ab
  AX_PYTHON_MODULE(daemon)
Packit 6bd9ab
  AX_PYTHON_MODULE(fcntl)
Packit 6bd9ab
  AX_PYTHON_MODULE(fnmatch)
Packit 6bd9ab
  AX_PYTHON_MODULE(ldap)
Packit 6bd9ab
  AX_PYTHON_MODULE(sqlite3)
Packit 6bd9ab
  # required by ldap.controls.ppolicy:
Packit 6bd9ab
  AX_PYTHON_MODULE(pyasn1)
Packit 6bd9ab
  AX_PYTHON_MODULE(pyasn1_modules)
Packit 6bd9ab
  if test "x$HAVE_PYMOD_DAEMON" != "xyes" || \
Packit 6bd9ab
     test "x$HAVE_PYMOD_FCNTL" != "xyes" || \
Packit 6bd9ab
     test "x$HAVE_PYMOD_FNMATCH" != "xyes" || \
Packit 6bd9ab
     test "x$HAVE_PYMOD_LDAP" != "xyes" || \
Packit 6bd9ab
     test "x$HAVE_PYMOD_SQLITE3" != "xyes" || \
Packit 6bd9ab
     test "x$HAVE_PYMOD_PYASN1" != "xyes" || \
Packit 6bd9ab
     test "x$HAVE_PYMOD_PYASN1_MODULES" != "xyes"
Packit 6bd9ab
  then
Packit 6bd9ab
    AC_MSG_WARN(Required Python modules missing)
Packit 6bd9ab
  fi
Packit 6bd9ab
  # optional modules
Packit 6bd9ab
  AX_PYTHON_MODULE(setproctitle)
Packit 6bd9ab
fi
Packit 6bd9ab
Packit 6bd9ab
AM_CONDITIONAL([NSS_FLAVOUR_GLIBC], [test "x${with_nss_flavour}" = xglibc])
Packit 6bd9ab
AM_CONDITIONAL([NSS_FLAVOUR_SOLARIS], [test "x${with_nss_flavour}" = xsolaris])
Packit 6bd9ab
AM_CONDITIONAL([NSS_FLAVOUR_FREEBSD], [test "x${with_nss_flavour}" = xfreebsd])
Packit 6bd9ab
Packit 6bd9ab
# generate files
Packit 6bd9ab
AC_CONFIG_FILES([Makefile compat/Makefile common/Makefile nss/Makefile
Packit 6bd9ab
                 pam/Makefile utils/Makefile nslcd/Makefile pynslcd/Makefile
Packit 6bd9ab
                 man/Makefile tests/Makefile])
Packit 6bd9ab
AC_CONFIG_FILES([pynslcd/constants.py], [[
Packit 6bd9ab
(
Packit 6bd9ab
  echo ''
Packit 6bd9ab
  echo '# The following is automatically generated from nslcd.h.'
Packit 6bd9ab
  echo '# See that file for details.'
Packit 6bd9ab
  echo ''
Packit 6bd9ab
  sed -n 's| */\*.*\*/ *||;s/^.define  *\(NSLCD_[A-Z_]*\)  */\1 = /p' "$srcdir"/nslcd.h
Packit 6bd9ab
) >> pynslcd/constants.py]])
Packit 6bd9ab
AC_OUTPUT