dnl RRA_LIB_CRACKLIB_RESTORE to restore those settings to before the last
dnl RRA_LIB_CRACKLIB_SWITCH.
dnl
-dnl Depends on RRA_SET_LDFLAGS.
+dnl Depends on the lib-helper.m4 framework.
dnl
dnl Written by Russ Allbery <eagle@eyrie.org>
dnl Copyright 2020 Russ Allbery <eagle@eyrie.org>
dnl SPDX-License-Identifier: FSFULLR
dnl Save the current CPPFLAGS, LDFLAGS, and LIBS settings and switch to
-dnl versions that include the Kerberos v5 flags. Used as a wrapper, with
+dnl versions that include the CrackLib flags. Used as a wrapper, with
dnl RRA_LIB_CRACKLIB_RESTORE, around tests.
-AC_DEFUN([RRA_LIB_CRACKLIB_SWITCH],
-[rra_cracklib_save_CPPFLAGS="$CPPFLAGS"
- rra_cracklib_save_LDFLAGS="$LDFLAGS"
- rra_cracklib_save_LIBS="$LIBS"
- CPPFLAGS="$CRACKLIB_CPPFLAGS $CPPFLAGS"
- LDFLAGS="$CRACKLIB_LDFLAGS $LDFLAGS"
- LIBS="$CRACKLIB_LIBS $LIBS"])
+AC_DEFUN([RRA_LIB_CRACKLIB_SWITCH], [RRA_LIB_HELPER_SWITCH([CRACKLIB])])
dnl Restore CPPFLAGS, LDFLAGS, and LIBS to their previous values (before
dnl RRA_LIB_CRACKLIB_SWITCH was called).
-AC_DEFUN([RRA_LIB_CRACKLIB_RESTORE],
-[CPPFLAGS="$rra_cracklib_save_CPPFLAGS"
- LDFLAGS="$rra_cracklib_save_LDFLAGS"
- LIBS="$rra_cracklib_save_LIBS"])
+AC_DEFUN([RRA_LIB_CRACKLIB_RESTORE], [RRA_LIB_HELPER_RESTORE([CRACKLIB])])
-dnl Set CRACKLIB_CPPFLAGS and CRACKLIB_LDFLAGS based on rra_cracklib_root,
-dnl rra_cracklib_libdir, and rra_cracklib_includedir.
-AC_DEFUN([_RRA_LIB_CRACKLIB_PATHS],
-[AS_IF([test x"$rra_cracklib_libdir" != x],
- [CRACKLIB_LDFLAGS="-L$rra_cracklib_libdir"],
- [AS_IF([test x"$rra_cracklib_root" != x],
- [RRA_SET_LDFLAGS([CRACKLIB_LDFLAGS], [$rra_cracklib_root])])])
- AS_IF([test x"$rra_cracklib_includedir" != x],
- [CRACKLIB_CPPFLAGS="-I$rra_cracklib_includedir"],
- [AS_IF([test x"$rra_cracklib_root" != x],
- [AS_IF([test x"$rra_cracklib_root" != x/usr],
- [CRACKLIB_CPPFLAGS="-I${rra_cracklib_root}/include"])])])])
-
-dnl Sanity-check the results of the CrackLib library search to be sure we can
-dnl really link a CrackLib program.
-AC_DEFUN([_RRA_LIB_CRACKLIB_CHECK],
-[RRA_LIB_CRACKLIB_SWITCH
- AC_CHECK_FUNC([FascistCheck], ,
- [AC_MSG_FAILURE([unable to link with CrackLib library])])
+dnl Checks if CrackLib is present and sets variables as appropriate.
+AC_DEFUN([_RRA_LIB_CRACKLIB_INTERNAL],
+[RRA_LIB_HELPER_PATHS([CRACKLIB])
+ RRA_LIB_CRACKLIB_SWITCH
+ AC_CHECK_LIB([crack], [FascistCheck], [CRACKLIB_LIBS=-lcrack],
+ [AC_MSG_ERROR([cannot find usable CrackLib library])])
+ AC_CHECK_HEADERS([crack.h])
+ AC_DEFINE([HAVE_SYSTEM_CRACKLIB], 1, [Define if using the system CrackLib.])
RRA_LIB_CRACKLIB_RESTORE])
dnl The main macro.
AC_DEFUN([RRA_LIB_CRACKLIB],
-[rra_system_cracklib=
- rra_no_cracklib=
- rra_cracklib_root=
- rra_cracklib_libdir=
- rra_cracklib_includedir=
- CRACKLIB_CPPFLAGS=
- CRACKLIB_LDFLAGS=
- CRACKLIB_LIBS=
- AC_SUBST([CRACKLIB_CPPFLAGS])
- AC_SUBST([CRACKLIB_LDFLAGS])
- AC_SUBST([CRACKLIB_LIBS])
+[RRA_LIB_HELPER_VAR_INIT([CRACKLIB])
AC_ARG_WITH([cracklib],
- [AS_HELP_STRING([--with-cracklib@<:@=DIR@:>@],
+ [AS_HELP_STRING([--with-cracklib][@<:@=DIR@:>@],
[Use system CrackLib instead of embedded copy])],
- [AS_IF([test x"$withval" != xno], [rra_system_cracklib=yes])
- AS_IF([test x"$withval" == xno], [rra_no_cracklib=yes])
- AS_IF([test x"$withval" != xyes && test x"$withval" != xno],
- [rra_cracklib_root="$withval"])])
- AC_ARG_WITH([cracklib-include],
+ [AS_IF([test x"$withval" = xno],
+ [rra_use_CRACKLIB=false],
+ [rra_use_CRACKLIB=true
+ AS_IF([test x"$withval" != xyes], [rra_CRACKLIB_root="$withval"])])])
+ AC_ARG_WITH([cracklib][-include],
[AS_HELP_STRING([--with-cracklib-include=DIR],
[Location of CrackLib headers])],
[AS_IF([test x"$withval" != xyes && test x"$withval" != xno],
- [rra_cracklib_includedir="$withval"])])
+ [rra_CRACKLIB_includedir="$withval"])])
AC_ARG_WITH([cracklib-lib],
[AS_HELP_STRING([--with-cracklib-lib=DIR],
- [Location of cracklib libraries])],
+ [Location of CrackLib libraries])],
[AS_IF([test x"$withval" != xyes && test x"$withval" != xno],
- [rra_cracklib_libdir="$withval"])])
+ [rra_CRACKLIB_libdir="$withval"])])
- AS_IF([test x"$rra_no_cracklib" != xyes],
- [AC_DEFINE([HAVE_CRACKLIB], 1, [Define if CrackLib is available.])])
- AM_CONDITIONAL([EMBEDDED_CRACKLIB],
- [test x"$rra_system_cracklib" != xyes && test x"$rra_no_cracklib" != xyes])
- AS_IF([test x"$rra_system_cracklib" = xyes],
- [_RRA_LIB_CRACKLIB_PATHS
- CRACKLIB_LIBS="-lcrack"
- _RRA_LIB_CRACKLIB_CHECK])])
+ AS_IF([test x"$rra_use_CRACKLIB" != xfalse],
+ [AS_IF([test x"$rra_use_CRACKLIB" != x], [_RRA_LIB_CRACKLIB_INTERNAL])
+ AC_DEFINE([HAVE_CRACKLIB], 1, [Define if CrackLib is available.])])
+ AM_CONDITIONAL([EMBEDDED_CRACKLIB], [test x"$rra_use_CRACKLIB" = x])])