]> eyrie.org Git - kerberos/krb5-strength.git/commitdiff
Rewrite and simplify CrackLib Autoconf macro
authorRuss Allbery <eagle@eyrie.org>
Sun, 17 May 2020 01:55:28 +0000 (18:55 -0700)
committerRuss Allbery <eagle@eyrie.org>
Sun, 17 May 2020 01:55:28 +0000 (18:55 -0700)
Make use of the lib-helper.m4 framework and move the extra tests
we were doing in configure.ac into cracklib.m4.

configure.ac
m4/cracklib.m4

index ced8dabb6f049969eee2a653bd4aa7150d78fd14..f2f3e5e16d54ba518b084c81f03e68742c5d5eca 100644 (file)
@@ -38,12 +38,6 @@ AC_PATH_PROG([PATH_VALGRIND], [valgrind])
 dnl External libraries.
 RRA_LIB_CDB_OPTIONAL
 RRA_LIB_CRACKLIB
-AS_IF([test x"$rra_system_cracklib" = xyes],
-    [RRA_LIB_CRACKLIB_SWITCH
-     AC_CHECK_HEADERS([crack.h])
-     RRA_LIB_CRACKLIB_RESTORE
-     AC_DEFINE([HAVE_SYSTEM_CRACKLIB], 1,
-        [Define if using the system CrackLib.])])
 RRA_LIB_KRB5
 RRA_LIB_KRB5_SWITCH
 AC_CHECK_HEADERS([krb5/pwqual_plugin.h], [], [], [RRA_INCLUDES_KRB5])
index 6732ee0c813f711bd0ed12e7f14f4e83a6b003f8..f83b0664c31db1889b3ded46a30837c1bb3248ba 100644 (file)
@@ -15,7 +15,7 @@ dnl remctl libraries, saving the current values first, and
 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>
@@ -29,81 +29,47 @@ dnl
 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])])