Preparing for 4.9.1.1
[platform/upstream/rpm.git] / configure.ac
index 5e10426..624a66e 100644 (file)
@@ -1,8 +1,9 @@
 AC_PREREQ(2.61)
-AC_INIT(rpm, 4.7.0, rpm-maint@lists.rpm.org)
+AC_INIT(rpm, 4.9.1.1, rpm-maint@lists.rpm.org)
 
 AC_CONFIG_SRCDIR([rpmqv.c])
 AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_MACRO_DIR([m4])
 
 AM_INIT_AUTOMAKE([1.10 foreign tar-ustar dist-bzip2 subdir-objects nostdinc])
 
@@ -12,6 +13,8 @@ AC_USE_SYSTEM_EXTENSIONS
 
 AC_DISABLE_STATIC
 
+PKG_PROG_PKG_CONFIG
+
 dnl Checks for programs.
 AC_PROG_CXX
 AC_PROG_AWK
@@ -23,6 +26,7 @@ AC_PROG_MAKE_SET
 AC_PROG_LIBTOOL
 AC_PROG_YACC
 
+AC_SUBST(__CC, $CC)
 AC_PROG_CC_C99
 if test "$ac_cv_prog_cc_c99" = no; then
     AC_MSG_ERROR([ISO C99 capable compiler required])
@@ -34,7 +38,7 @@ if test "$GCC" = yes; then
     CFLAGS="$CFLAGS -fPIC -DPIC -D_REENTRANT -Wall -Wpointer-arith -Wmissing-prototypes -Wno-char-subscripts"
     # XXX disabled for now due to noise from NSPR headers
     # CFLAGS="$CFLAGS -Wstrict-prototypes"
-    cflags_to_try="-fno-strict-aliasing -fstack-protector"
+    cflags_to_try="-fno-strict-aliasing -fstack-protector -Wempty-body -Wno-unused-but-set-variable"
     AC_MSG_CHECKING([supported compiler flags])
     old_cflags=$CFLAGS
     echo
@@ -59,7 +63,7 @@ AC_MSG_CHECKING(POSIX chmod)
 touch foo.chmodtest
 chmod 744 foo.chmodtest
 chmod +X foo.chmodtest 2>/dev/null
-a=`ls -l foo.chmodtest | awk '{print $1}'`
+a=`ls -l foo.chmodtest | awk '{print substr($1,1,10)}'`
 rm -f foo.chmodtest
 if test "$a" = "-rwxr-xr-x"; then
     AC_MSG_RESULT(yes)
@@ -70,45 +74,6 @@ else
 fi
 AC_SUBST(FIXPERMS)
 
-dnl
-dnl see if we have a mkdir that supports `-p'.
-dnl
-AC_PATH_PROGS(RPM_MKDIR, mkdir, mkdir)
-AC_MSG_CHECKING(if $RPM_MKDIR supports -p)
-rm -rf conftest
-$RPM_MKDIR -p conftest/a 2>/dev/null
-if test $? = 0 ; then
-       rmdir conftest/a 2>/dev/null
-       if test $? = 0  ; then
-               :
-       else
-               RPM_MKDIR_P=0
-       fi
-
-       rmdir conftest 2>/dev/null
-       if test $? = 0 ; then
-               RPM_MKDIR_P="$RPM_MKDIR -p"
-       else
-               RPM_MKDIR_P=0
-       fi
-else
-       RPM_MKDIR_P=0
-fi
-
-if test X"$RPM_MKDIR_P" = X0 ; then
-       AC_MSG_RESULT(no)
-       RPM_MKDIR_P="`echo ${prefix}/lib/rpm/mkinstalldirs`"
-else
-       AC_MSG_RESULT(yes)
-fi
-dnl
-dnl substitute this into config.h, so the C source picks it up.
-dnl
-AC_DEFINE_UNQUOTED(RPM_MKDIR_P, "${RPM_MKDIR_P}",
-[A full path to a program, possibly with arguments, that will create a
-   directory and all necessary parent directories, ala 'mkdir -p'])
-AC_SUBST(RPM_MKDIR_P)
-
 dnl AM_DISABLE_SHARED
 AM_PROG_LIBTOOL
 
@@ -139,24 +104,16 @@ AC_PATH_PROG(__GPG, gpg, /usr/bin/gpg, $MYPATH)
 AC_PATH_PROG(__GREP, grep, /bin/grep, $MYPATH)
 AC_PATH_PROG(__GZIP, gzip, /bin/gzip, $MYPATH)
 AC_PATH_PROG(__UNZIP, unzip, /usr/bin/unzip, $MYPATH)
-
 AC_PATH_PROG(__ID, id, /usr/bin/id, $MYPATH)
-AC_MSG_CHECKING(checking whether id supports -u)
-    if ${__ID} -u 2>&1 > /dev/null ; then
-       __ID_U="%{__id} -u"
-       AC_MSG_RESULT(yes)
-    else
-       __ID_U="%{__id} | %{__sed} 's/[[^=]]*=\\\\([[0-9]][[0-9]]*\\\\).*$/\\\\1/'"
-       AC_MSG_RESULT(no)
-    fi
-AC_SUBST(__ID_U)
-
 AC_PATH_PROG(__INSTALL, install, /usr/bin/install, $MYPATH)
-AC_PATH_PROG(__LZMA, lzma, /usr/bin/lzma, $MYPATH)
+AC_PATH_PROG(__LRZIP, lrzip, /usr/bin/lrzip, $MYPATH)
+AC_PATH_PROG(__LZIP, lzip, /usr/bin/lzip, $MYPATH)
+AC_PATH_PROG(__XZ, xz, /usr/bin/xz, $MYPATH)
 AC_PATH_PROG(__MAKE, make, /usr/bin/make, $MYPATH)
 AC_PATH_PROG(__MKDIR, mkdir, /bin/mkdir, $MYPATH)
 AC_PATH_PROG(__MV, mv, /bin/mv, $MYPATH)
 AC_PATH_PROG(__PATCH, patch, /usr/bin/patch, $MYPATH)
+AC_PATH_PROG(__RESTORECON, restorecon, /sbin/restorecon, $MYPATH)
 AC_MSG_CHECKING(old version of patch)
     PATCHVERSION=`patch --version 2>&1`
 
@@ -174,6 +131,7 @@ AC_PATH_PROG(__PYTHON, python, /usr/bin/python, $MYPATH)
 AC_PATH_PROG(__RM, rm, /bin/rm, $MYPATH)
 AC_PATH_PROG(__RSH, rsh, /usr/bin/rsh, $MYPATH)
 AC_PATH_PROG(__SED, sed, /bin/sed, $MYPATH)
+AC_PATH_PROG(__SEMODULE, semodule, /usr/bin/semodule, $MYPATH)
 AC_PATH_PROG(__SSH, ssh, /usr/bin/ssh, $MYPATH)
 AC_PATH_PROG(__TAR, tar, /bin/tar, $MYPATH)
 
@@ -182,6 +140,19 @@ AC_PATH_PROG(__NM, nm, /usr/bin/nm, $MYPATH)
 AC_PATH_PROG(__OBJCOPY, objcopy, /usr/bin/objcopy, $MYPATH)
 AC_PATH_PROG(__OBJDUMP, objdump, /usr/bin/objdump, $MYPATH)
 AC_PATH_PROG(__STRIP, strip, /usr/bin/strip, $MYPATH)
+AC_PATH_PROG(__FAKECHROOT, fakechroot, /usr/bin/fakechroot, $MYPATH)
+
+dnl see if we have a mkdir that supports `-p' for rpmbuild's purposes
+AC_PROG_MKDIR_P
+if ! echo $MKDIR_P | grep -q mkdir; then 
+  __MKDIR_P="`echo ${prefix}/lib/rpm/mkinstalldirs`"
+else
+  __MKDIR_P=$MKDIR_P
+fi
+AC_DEFINE_UNQUOTED(__MKDIR_P, "${__MKDIR_P}",
+[A full path to a program, possibly with arguments, that will create a
+   directory and all necessary parent directories, ala 'mkdir -p'])
+AC_SUBST(__MKDIR_P)
 
 #=================
 # Check for zlib library. 
@@ -199,6 +170,8 @@ AC_CHECK_HEADERS([zlib.h],[
 dnl zlib-1.0.4 has not gzseek
     AC_CHECK_LIB(${zlib}, gzseek, [AC_DEFINE(HAVE_GZSEEK, 1, [Define as 1 if your zlib has gzseek()])])
   ])
+],[
+  AC_MSG_ERROR([missing required header zlib.h])
 ])
 
 AC_SUBST(WITH_ZLIB_INCLUDE)
@@ -222,7 +195,7 @@ AC_SUBST(WITH_BZ2_LIB)
 # Check for lzma library.
 
 AC_CHECK_HEADERS([lzma.h],[
-  AC_CHECK_LIB(lzma, lzma_auto_decoder, [WITH_LZMA_LIB=-llzma])
+  AC_CHECK_LIB(lzma, lzma_easy_encoder, [WITH_LZMA_LIB=-llzma])
 ])
 AC_SUBST(WITH_LZMA_LIB)
 
@@ -234,24 +207,10 @@ dnl
 
 dnl Checks for libraries.
 
-AC_CHECK_FUNC(setreuid, [], [
-    AC_CHECK_LIB(ucb, setreuid, [if echo $LIBS | grep -- -lucb >/dev/null ;then :; else LIBS="$LIBS -lc -lucb" USEUCB=y;fi])
-])
-
-AC_CHECK_FUNC(rand, [], [
-    AC_CHECK_LIB(rand, rand, [])
+AC_CHECK_FUNC(gethostname, [], [
+    AC_CHECK_LIB(nsl, gethostname)
 ])
 
-AC_CHECK_FUNC(getdomainname, [], [
-    AC_CHECK_LIB(nsl, getdomainname)
-])
-AC_CHECK_FUNC(socket, [], [
-    AC_CHECK_LIB(socket, socket)
-])
-
-AC_CHECK_HEADERS(error.h)
-AC_CHECK_FUNCS(error)
-
 AC_CHECK_HEADERS(poll.h)
 
 AC_CHECK_HEADERS(pthread.h)
@@ -264,8 +223,7 @@ AC_CHECK_LIB(pthread, pthread_mutex_trylock, [], [
 ])
 
 AC_SEARCH_LIBS(aio_read, [c rt aio posix4])
-
-AC_CHECK_FUNCS(vsnprintf snprintf)
+AC_SEARCH_LIBS(dlopen, [dl])
 
 dnl Temporary hack for MiNT.  Some functions (writev, snprintf) are
 dnl not in the libc but in libport (for political reasons).  This check
@@ -276,7 +234,6 @@ AC_CHECK_LIB(port, writev)
 
 #=================
 # Check for libelf library. Prefer external, otherwise none.
-WITH_LIBELF_INCLUDE=
 WITH_LIBELF_LIB=
 AC_CHECK_HEADER([libelf.h])
 AC_CHECK_HEADERS([gelf.h], [
@@ -286,7 +243,6 @@ AC_CHECK_HEADERS([gelf.h], [
            WITH_LIBELF=yes
        ])
 ])
-AC_SUBST(WITH_LIBELF_INCLUDE)
 AC_SUBST(WITH_LIBELF_LIB)
 AM_CONDITIONAL(LIBELF,[test "$WITH_LIBELF" = yes])
 
@@ -353,7 +309,7 @@ AC_SUBST(WITH_POPT_LIB)
 
 #=================
 # Process --with/without-external-db
-AC_ARG_WITH(external_db, [  --with-external-db      build against an external Berkeley db],
+AC_ARG_WITH(external_db, [AS_HELP_STRING([--with-external-db],[build against an external Berkeley db])],
 [case "$with_external_db" in
 yes|no) ;;
 *) AC_MSG_ERROR([invalid argument to --with-external-db]) ;;
@@ -363,24 +319,16 @@ esac],
 case "$with_external_db" in
 yes )
   AC_CHECK_HEADERS([db.h],[
-    AC_CHECK_TYPE([db_threadid_t],[],
-      [AC_MSG_WARN([missing type db_threadid_t])],
-      [#include <db.h>])
-    save_LIBS="$LIBS"
-    AC_CHECK_LIB([db],[db_create],[],[
-      AC_MSG_ERROR([missing db_create in libdb])
-      ])
-    AC_CHECK_LIB([db],[db_env_create],[],[
-      AC_MSG_ERROR([missing db_env_create in libdb])
-      ])
-    AC_CHECK_LIB([db],[db_env_set_func_fsync],[],[
-      AC_MSG_ERROR([missing db_env_set_func_fsync in libdb])
-      ])
-    AC_CHECK_LIB([db],[db_strerror],[],[
-      AC_MSG_ERROR([missing db_strerror in libdb])
+    AC_PREPROC_IFELSE([
+      AC_LANG_SOURCE([
+       #include <db.h>
+       #if ((DB_VERSION_MAJOR < 4) || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR < 5))
+       #error Berkeley DB too old
+       #endif
       ])
-    WITH_DB_LIB=-ldb
-    LIBS="$save_LIBS"
+    ],[ WITH_DB_LIB=-ldb ], 
+      [ AC_MSG_ERROR([Berkeley DB version >= 4.5 required])
+    ])
   ],[
     AC_MSG_ERROR([missing required header db.h])
   ])
@@ -396,69 +344,24 @@ esac
 
 AC_SUBST([WITH_DB_LIB])
 
-#=================
-# Check for sqlite3 library.
-AC_ARG_ENABLE(sqlite3, [  --enable-sqlite3        enable sqlite3 support],
-[case "$enable_sqlite3" in
-yes|no) ;;
-*) AC_MSG_ERROR([invalid argument to --enable-sqlite3])
-  ;;
-esac],
-[enable_sqlite3=no])
-
-WITH_SQLITE3_INCLUDE=
-WITH_SQLITE3_LIB=
-WITH_SQLITE3=no
-AS_IF([test "$enable_sqlite3" = yes],[
-  AC_CHECK_HEADERS([sqlite3.h],
-  [ AC_CHECK_LIB(sqlite3, sqlite3_open, [
-      WITH_SQLITE3_INCLUDE=
-      WITH_SQLITE3_LIB="-lsqlite3"
-      WITH_SQLITE3=yes
-    ],[
-      AC_MSG_ERROR([missing libsqlite3])
-    ])
-  ],[
-    AC_MSG_ERROR([missing sqlite3.h])
-  ])
-])
-
-AC_SUBST(WITH_SQLITE3_INCLUDE)
-AC_SUBST(WITH_SQLITE3_LIB)
-AM_CONDITIONAL([SQLITE3],[test "$WITH_SQLITE3" = yes])
-
-#=================
-
-dnl AmigaOS and IXEmul have a fork() dummy
-  case "$host" in
-    m68k-*-amigaos ) 
-       echo "Building for AmigaOS: using vfork() instead of fork()"; 
-       CFLAGS="$CFLAGS -Dfork=vfork" 
-       ;;
-  esac
-
 AM_GNU_GETTEXT_VERSION([0.16.1])
 AM_GNU_GETTEXT([external])
 
 dnl Checks for header files we can live without.
 AC_HEADER_STDC
 AC_HEADER_MAJOR
-AC_HEADER_DIRENT
-AC_HEADER_TIME
+AC_STRUCT_DIRENT_D_TYPE
 
-AC_CHECK_HEADERS(locale.h)
 AC_CHECK_HEADERS(limits.h)
-AC_CHECK_HEADERS(fcntl.h getopt.h grp.h memory.h netdb.h pwd.h utime.h)
+AC_CHECK_HEADERS(fcntl.h getopt.h memory.h)
 
-AC_CHECK_HEADERS(sys/ipc.h sys/socket.h sys/select.h)
-AC_CHECK_HEADERS(sys/types.h sys/stdtypes.h)
-AC_CHECK_HEADERS(sys/mman.h sys/resource.h sys/utsname.h sys/wait.h)
+AC_CHECK_HEADERS(sys/ipc.h)
+AC_CHECK_HEADERS(sys/utsname.h)
 
-AC_CHECK_HEADERS(netinet/in_systm.h)
-AC_CHECK_HEADERS(mntent.h sys/mnttab.h sys/systemcfg.h)
-AC_CHECK_HEADERS(sys/mount.h sys/mntctl.h sys/param.h sys/vmount.h)
+AC_CHECK_HEADERS(sys/systemcfg.h)
+AC_CHECK_HEADERS(sys/param.h)
 AC_CHECK_HEADERS(libio.h)
-AC_CHECK_HEADERS(err.h mcheck.h)
+AC_CHECK_HEADERS(mcheck.h)
 
 AC_CHECK_HEADERS(glob.h)
 
@@ -581,44 +484,7 @@ main() {
 ])
 fi
 
-AC_C_INLINE
-
 dnl look for libc features
-PROVIDES_ERRNO=no
-AC_MSG_CHECKING(if <netdb.h> defines h_errno)
-AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[printf("%d",h_errno)]])],[PROVIDES_ERRNO=yes],[])
-AC_MSG_RESULT($PROVIDES_ERRNO)
-if test $PROVIDES_ERRNO = yes; then
-       AC_DEFINE(HAVE_HERRNO, 1, [ Define as 1 if <netdb.h> defines h_errno])
-fi
-
-dnl If a system doesn't have S_IFSOCK, define it as 0 which will
-dnl make S_ISSOCK always return false (nice, eh?)
-AC_MSG_CHECKING(if <sys/stat.h> defines S_IFSOCK)
-AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[printf("%d", S_IFSOCK)]])],[HAS_S_IFSOCK=yes],[HAS_S_IFSOCK=no])
-AC_MSG_RESULT($HAS_S_IFSOCK)
-if test $HAS_S_IFSOCK = yes; then
-       AC_DEFINE(HAVE_S_IFSOCK, 1, [Define as 1 if <sys/stat.h> defines S_IFSOCK])
-fi
-
-dnl Some Unix's are missing S_ISLNK, S_ISSOCK
-AC_MSG_CHECKING(if <sys/stat.h> defines S_ISLNK)
-AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[printf("%d", S_ISLNK(0755))]])],[HAS_S_ISLNK=yes],[HAS_S_ISLNK=no])
-AC_MSG_RESULT($HAS_S_ISLNK)
-if test $HAS_S_ISLNK = yes; then
-       AC_DEFINE(HAVE_S_ISLNK, 1, [Define as 1 if <sys/stat.h> defines S_ISLNK])
-fi
-
-AC_MSG_CHECKING(if <sys/stat.h> defines S_ISSOCK)
-AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[printf("%d", S_ISSOCK(0755))]])],[HAS_S_ISSOCK=yes],[HAS_S_ISSOCK=no])
-AC_MSG_RESULT($HAS_S_ISSOCK)
-if test $HAS_S_ISSOCK = yes; then
-       AC_DEFINE(HAVE_S_ISSOCK, 1, [Define as 1 if <sys/stat.h> defines S_ISSOCK])
-fi
-
-AC_MSG_CHECKING(if timezone is defined)
-AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[printf("%ld", timezone)]])],[HAS_TIMEZONE=yes],[HAS_TIMEZONE=no])
-AC_MSG_RESULT($HAS_TIMEZONE)
 
 dnl Check for missing typedefs
 AC_TYPE_MODE_T
@@ -627,28 +493,18 @@ AC_TYPE_PID_T
 AC_TYPE_SIZE_T
 
 dnl Checks for library functions.
-AC_FUNC_VPRINTF
-dnl XXX don't want to re-enable code that's been unused for years at this
-dnl point, but should offer good performance improvements, check after
-dnl 4.4.2.1...
-dnl AC_FUNC_MMAP
+AC_FUNC_MMAP
 
-AC_CHECK_FUNCS(getaddrinfo getnameinfo inet_aton)
 AC_CHECK_FUNCS(mtrace)
-AC_CHECK_FUNCS(strndup strerror)
+AC_CHECK_FUNCS(putenv)
 
-AC_REPLACE_FUNCS(basename getcwd getwd)
-AC_REPLACE_FUNCS(putenv realpath setenv)
-AC_REPLACE_FUNCS(stpcpy stpncpy strcspn)
-AC_REPLACE_FUNCS(strdup strtol strtoul strspn strstr)
+AC_REPLACE_FUNCS(stpcpy stpncpy)
 
 AC_CHECK_FUNCS(__secure_getenv)
 
-AC_CHECK_FUNCS(regcomp)
-
-AC_CHECK_FUNCS(ftok)
-
-AC_CHECK_FUNCS([mkstemp], [], [AC_MSG_ERROR([mkstemp() is required by rpm])])
+AC_CHECK_FUNCS(
+   [mkstemp getcwd basename dirname realpath setenv unsetenv regcomp lchown],
+   [], [AC_MSG_ERROR([function required by rpm])])
 
 dnl XXX Glob *is* broken on linux with libc5, solaris and possibly aix when
 dnl %files gets something like
@@ -662,7 +518,7 @@ AC_LIBOBJ(glob)
 AC_LIBOBJ(fnmatch)
 
 dnl check if python is requested
-AC_ARG_ENABLE(python, [  --enable-python         build rpm python bindings ],
+AC_ARG_ENABLE(python, [AS_HELP_STRING([--enable-python],[build rpm python bindings])],
 [case "$enable_python" in
 yes|no) ;;
 *) AC_MSG_ERROR([invalid argument to --enable-python])
@@ -671,10 +527,8 @@ esac],
 [enable_python=no])
 
 AS_IF([test "$enable_python" = yes],[
-# rpm-python is based on python-2.5, 
-# with legacy hacks to allow building against python >= 2.3
-  AM_PATH_PYTHON([2.3],[
-    WITH_PYTHON_INCLUDE=`${PYTHON} -c 'from distutils.sysconfig import *; print get_python_inc()'`
+  AM_PATH_PYTHON([2.6],[
+    WITH_PYTHON_INCLUDE=`${PYTHON} -c 'from distutils.sysconfig import *; import sys; sys.stdout.write(get_python_inc())'`
     WITH_PYTHON_SUBPACKAGE=1
     save_CPPFLAGS="$CPPFLAGS"
     CPPFLAGS="$CPPFLAGS -I$WITH_PYTHON_INCLUDE"
@@ -698,13 +552,13 @@ AS_IF([test "$enable_python" = yes],[
 AC_SUBST(WITH_PYTHON_INCLUDE)
 AC_SUBST(WITH_PYTHON_LIB)
 
-AM_CONDITIONAL(PYTHON,[test "$WITH_PYTHON_SUBPACKAGE" = 1])
+AM_CONDITIONAL(ENABLE_PYTHON,[test "$WITH_PYTHON_SUBPACKAGE" = 1])
 
 AC_PATH_PROG(DOXYGEN, doxygen, no)
 dnl
 dnl Only build internal API + source hacking docs on request
 dnl
-AC_ARG_WITH(hackingdocs, [  --with-hackingdocs         build rpm hacking docs ],,[with_hackingdocs=no])
+AC_ARG_WITH(hackingdocs, [AS_HELP_STRING([--with-hackingdocs],[build rpm hacking docs])],,[with_hackingdocs=no])
 
 case "$with_hackingdocs" in
 auto)
@@ -718,7 +572,7 @@ esac
 AC_CHECK_PROG(HAVE_DOT,[dot],[YES],[NO])
 
 WITH_SELINUX_LIB=
-AC_ARG_WITH(selinux, [  --with-selinux          build with selinux support ],
+AC_ARG_WITH(selinux, [AS_HELP_STRING([--with-selinux],[build with selinux support])],
 [case "$with_selinux" in
 yes|no) ;;
 *) AC_MSG_ERROR([invalid argument to --with-selinux])
@@ -728,121 +582,166 @@ esac],
 
 AS_IF([test "$with_selinux" = yes],[
   AC_CHECK_HEADER([selinux/selinux.h],[
-    AC_CHECK_LIB(selinux,[is_selinux_enabled],[with_selinux=yes],[
-      AC_MSG_ERROR([--with-selinux given, but libselinux not found])])
+    save_LIBS="$LIBS"
+    AC_CHECK_LIB([selinux],[is_selinux_enabled],[],[
+      AC_MSG_ERROR([--with-selinux given, but is_selinux_enabled not found in libselinux])])
+    AC_CHECK_LIB([selinux],[selinux_getpolicytype],[],[
+      AC_MSG_ERROR([--with-selinux given, but selinux_getpolicytype not found in libselinux])])
+    AC_CHECK_LIB([selinux],[selinux_reset_config],[],[
+      AC_MSG_ERROR([--with-selinux given, but selinux_reset_config not found in libselinux])])
+    LIBS="$save_LIBS"
   ],[
     AC_MSG_ERROR([--with-selinux given, but selinux/selinux.h not found])
   ])
+
+  AC_CHECK_HEADER([selinux/label.h],[
+    save_LIBS="$LIBS"
+    AC_CHECK_LIB([selinux],[selabel_close],[],[
+      AC_MSG_ERROR([--with-selinux given, but selabel_close not found in libselinux])])
+    AC_CHECK_LIB([selinux],[selabel_lookup_raw],[],[
+      AC_MSG_ERROR([--with-selinux given, but selabel_lookup_raw not found in libselinux])])
+    AC_CHECK_LIB([selinux],[selabel_open],[],[
+      AC_MSG_ERROR([--with-selinux given, but selabel_open not found in libselinux])])
+    LIBS="$save_LIBS"
+  ],[
+    AC_MSG_ERROR([--with-selinux given, but selinux/label.h not found])
+  ])
+
+  dnl FIXME: semanage is only needed for the sepolicy plugin
+  AC_CHECK_HEADER([semanage/semanage.h],[
+    save_LIBS="$LIBS"
+    AC_CHECK_LIB([semanage],[semanage_begin_transaction],[],[
+      AC_MSG_ERROR([--with-selinux given, but semanage_begin_transaction missing in libsemanage])])
+    AC_CHECK_LIB([semanage],[semanage_commit],[],[
+      AC_MSG_ERROR([--with-selinux given, but semanage_commit missing in libsemanage])])
+    AC_CHECK_LIB([semanage],[semanage_connect],[],[
+      AC_MSG_ERROR([--with-selinux given, but semanage_connect missing in libsemanage])])
+    AC_CHECK_LIB([semanage],[semanage_disconnect],[],[
+      AC_MSG_ERROR([--with-selinux given, but semanage_disconnect missing in libsemanage])])
+    AC_CHECK_LIB([semanage],[semanage_handle_create],[],[
+      AC_MSG_ERROR([--with-selinux given, but semanage_handle_create missing in libsemanage])])
+    AC_CHECK_LIB([semanage],[semanage_handle_destroy],[],[
+      AC_MSG_ERROR([--with-selinux given, but semanage_handle_destroy missing in libsemanage])])
+    AC_CHECK_LIB([semanage],[semanage_is_connected],[],[
+      AC_MSG_ERROR([--with-selinux given, but semanage_is_connected missing in libsemanage])])
+    AC_CHECK_LIB([semanage],[semanage_module_install_base_file],[],[
+      AC_MSG_ERROR([--with-selinux given, but semanage_module_install_base_file missing in libsemanage])])
+    AC_CHECK_LIB([semanage],[semanage_module_install_file],[],[
+      AC_MSG_ERROR([--with-selinux given, but semanage_module_install_file missing in libsemanage])])
+    AC_CHECK_LIB([semanage],[semanage_module_remove],[],[
+      AC_MSG_ERROR([--with-selinux given, but semanage_module_remove missing in libsemanage])])
+    AC_CHECK_LIB([semanage],[semanage_select_store],[],[
+      AC_MSG_ERROR([--with-selinux given, but semanage_select_store missing in libsemanage])])
+    AC_CHECK_LIB([semanage],[semanage_set_check_contexts],[],[
+      AC_MSG_ERROR([--with-selinux given, but semanage_set_check_contexts missing in libsemanage])])
+    AC_CHECK_LIB([semanage],[semanage_set_create_store],[],[
+      AC_MSG_ERROR([--with-selinux given, but semanage_set_create_store missing in libsemanage])])
+    AC_CHECK_LIB([semanage],[semanage_set_reload],[],[
+      AC_MSG_ERROR([--with-selinux given, but semanage_set_reload missing in libsemanage])])
+    LIBS="$save_LIBS"
+  ],[
+    AC_MSG_ERROR([--with-selinux given, but semanage/semanage.h not found])
+  ])
 ])
 
 AS_IF([test "$with_selinux" = yes],[
   AC_DEFINE(WITH_SELINUX, 1, [Build with selinux support?])
   WITH_SELINUX_LIB="-lselinux"
+  WITH_SEMANAGE_LIB="-lsemanage"
 ])
 AC_SUBST(WITH_SELINUX_LIB)
+AC_SUBST(WITH_SEMANAGE_LIB)
 AM_CONDITIONAL(SELINUX,[test "$with_selinux" = yes])
 
-WITH_LUA_LIB=
-WITH_LUA_INCLUDE=
-AC_ARG_WITH(lua, [  --with-lua              build with lua support ],,[with_lua=yes])
-AS_IF([test "$with_lua" = yes],[
-  AC_CHECK_HEADER([lua.h],[
-    AC_CHECK_LIB(lua,[luaL_openlibs],[with_lua=yes],[
-      AC_MSG_ERROR([--with-lua given, but liblua not found])
-    ], 
-    [-lm])
+# libcap
+WITH_CAP_LIB=
+AC_ARG_WITH(cap, [AS_HELP_STRING([--with-cap],[build with capability support])],
+[case "$with_cap" in
+yes|no) ;;
+*) AC_MSG_ERROR([invalid argument to --with-cap])
+  ;;
+esac],
+[with_cap=no])
+
+AS_IF([test "$with_cap" = yes],[
+  AC_CHECK_HEADER([sys/capability.h],[
+    AC_CHECK_LIB(cap,[cap_get_file], [
+      with_cap=yes
+      save_LIBS="$LIBS"
+      AC_CHECK_LIB(cap,[cap_compare], [
+        AC_DEFINE(HAVE_CAP_COMPARE, 1, [Have cap_compare function?])
+      ])
+      LIBS="$save_LIBS"
+    ],[
+      AC_MSG_ERROR([--with-cap given, but libcap not found])])
   ],[
-      AC_MSG_ERROR([--with-lua given, but lua.h not found])
+    AC_MSG_ERROR([--with-cap given, but sys/capability.h not found])
   ])
 ])
 
-AS_IF([test "$with_lua" = yes],[
-  AC_DEFINE(WITH_LUA, 1, [Build with lua support?])
-  WITH_LUA_INCLUDE=
-  WITH_LUA_LIB="-llua -lm" 
+AS_IF([test "$with_cap" = yes],[
+  AC_DEFINE(WITH_CAP, 1, [Build with capability support?])
+  WITH_CAP_LIB="-lcap"
 ])
-AC_SUBST(WITH_LUA_LIB)
-AC_SUBST(WITH_LUA_INCLUDE)
-AM_CONDITIONAL(WITH_LUAEXT,[test "$with_lua" = yes])
+AC_SUBST(WITH_CAP_LIB)
+AM_CONDITIONAL(CAP,[test "$with_cap" = yes])
 
-with_dmalloc=no
-AC_ARG_WITH(dmalloc, [  --with-dmalloc          build with dmalloc debugging support ])
-if test "$with_dmalloc" = yes ; then
-  AC_DEFINE(DMALLOC, 1, [Build with dmalloc support?])
-  LIBS="$LIBS -ldmalloc"
-fi
+WITH_ACL_LIB=
+AC_ARG_WITH(acl, [AS_HELP_STRING([--with-acl],[build with acl support])],
+[case "$with_acl" in
+yes|no) ;;
+*) AC_MSG_ERROR([invalid argument to --with-acl])
+  ;;
+esac],
+[with_acl=no])
 
-AC_CHECK_FUNCS(setlocale)
+AS_IF([test "$with_acl" = yes],[
+  dnl verification uses non-portable acl_equiv_mode() 
+  AC_CHECK_HEADER([acl/libacl.h],[
+    AC_CHECK_LIB(acl,[acl_equiv_mode],[with_acl=yes],[
+      AC_MSG_ERROR([--with-acl given, but libacl not found or not suitable])])
+  ],[
+    AC_MSG_ERROR([--with-acl given, but acl/libacl.h not found])
+  ])
+])
 
-AC_CHECK_FUNCS(getpassphrase)
+AS_IF([test "$with_acl" = yes],[
+  AC_DEFINE(WITH_ACL, 1, [Build with acl support?])
+  WITH_ACL_LIB="-lacl"
+])
+AC_SUBST(WITH_ACL_LIB)
+AM_CONDITIONAL(ACL,[test "$with_acl" = yes])
+
+AC_ARG_WITH([lua], [AS_HELP_STRING([--with-lua], [build with lua support])],
+            [],
+            [with_lua=yes])
+
+AS_IF([test "$with_lua" != no],[
+  PKG_CHECK_MODULES([LUA],
+    [lua >= 5.1],
+    [AC_DEFINE(WITH_LUA, 1, [Build with lua support?])],
+    [AC_MSG_ERROR([lua not present (--without-lua to disable)])])
+  AC_SUBST(LUA_CFLAGS)
+  AC_SUBST(LUA_LIBS)
+])
+AM_CONDITIONAL(WITH_LUA,[test "$with_lua" = yes])
 
-AC_CHECK_FUNC(getmntent, AC_DEFINE(HAVE_GETMNTENT, 1, [Define if you have the getmntent() function]), [
-  AC_CHECK_FUNC(mntctl, AC_DEFINE(HAVE_MNTCTL, 1, [Define as 1 if you have mntctl() (only aix?)]),[
-    AC_CHECK_FUNC(getmntinfo, AC_DEFINE(HAVE_GETMNTINFO, 1, [Define as 1 if you have getmntinfo() (Mac OS X)]), [
-      AC_CHECK_FUNC(getmntinfo_r, AC_DEFINE(HAVE_GETMNTINFO_R, 1, [Define as 1 if you have getmntinfo_r() (only osf?)]), [
-        AC_CHECK_LIB(c_r, getmntinfo_r, [LIBS="$LIBS -lc_r"; 
-                                       AC_DEFINE(HAVE_GETMNTINFO_R, 1, [Define as 1 if you have getmntinfo_r() (only osf?)])], [
-                AC_DEFINE([USE_GETMNTENT], 1, [Defined if getmntent replacement is used])
-                 AC_LIBOBJ(getmntent)])
-      ])
-    ])
-  ])
+AC_ARG_ENABLE(plugins, [AS_HELP_STRING([--disable-plugins],[build without plugin support])],,[enable_plugins=yes])
+AS_IF([test "$enable_plugins" = yes],[
+  AC_DEFINE(ENABLE_PLUGINS, 1, [Build with plugin support?])
 ])
+AM_CONDITIONAL(ENABLE_PLUGINS,[test "$enable_plugins" = yes])
 
-AC_CHECK_FUNC(lchown,
-   [__CHOWN_RHF="%{__chown} -Rhf"
-    __CHGRP_RHF="%{__chgrp} -Rhf"
-    AC_DEFINE(HAVE_LCHOWN, 1, [Define as 1 if you have lchown()])],
-   [__CHOWN_RHF="%{__chown} -Rf"
-    __CHGRP_RHF="%{__chgrp} -Rf"
-    dnl Does chown() follow symlinks? This should be a good enough test.
-    AC_MSG_CHECKING(whether chown() follows symlinks)
-    AC_ARG_ENABLE([broken-chown],
-    [  --enable-broken-chown   this system's chown follows symbolic links], 
-           result=$enableval, result=unknown)
-    if echo "$build" | ${EGREP} "(aix)|(hpux)|(linux)" > /dev/null ; then
-       result=yes
-    elif echo "$build" | ${EGREP} "(nextstep)" > /dev/null ; then
-       result=no
-    fi
-    if test $result = unknown; then
-       if test `${__ID} | cut -f2 -d\= | cut -f1 -d\(` = 0; then
-           rm -f foo bar
-           touch foo
-           ln -s foo bar
-           ${__CHOWN} 10 bar
-           if test `ls -l foo | awk '{print $3}'` != "root"; then
-               result=yes
-           else
-               result=no
-           fi
-           ${__RM} -f foo bar
-       else
-           AC_MSG_CHECKING((cannot check by non-root user))
-           result=no
-       fi
-    fi
 
-    AC_MSG_RESULT($result)
-    if test $result = yes; then
-           AC_DEFINE(CHOWN_FOLLOWS_SYMLINK, 1, [Define as 1 if chown() follows symlinks and you don't have lchown()])
-    fi])
-AC_SUBST(__CHOWN_RHF)
-AC_SUBST(__CHGRP_RHF)
-
-if echo "$host_os" | grep sco > /dev/null; then
-       echo "hacking things up for sco"
-       AC_DEFINE(NEED_STRINGS_H, 1, [Define as one if we need to include <strings.h> (along with <string.h>)])
-       AC_DEFINE(HAVE_STRUCT_MNTTAB, 1,
-       [Define as 1 if you have "struct mnttab" (only sco?)])
-elif echo "$host_os" | grep sunos > /dev/null; then
-       echo "hacking things up for sunos"
-       CFLAGS="$CFLAGS -D__USE_FIXED_PROTOTYPES__"
-       AC_DEFINE(NEED_STRINGS_H, 1, [Define as one if we need to include <strings.h> (along with <string.h>)])
-       AC_DEFINE(NEED_MYREALLOC, 1, [Define as 1 if we need myrealloc])
-       AC_LIBOBJ(myrealloc)
+with_dmalloc=no
+AC_ARG_WITH(dmalloc, [AS_HELP_STRING([--with-dmalloc],[build with dmalloc debugging support])])
+if test "$with_dmalloc" = yes ; then
+  AC_DEFINE(DMALLOC, 1, [Build with dmalloc support?])
+  LIBS="$LIBS -ldmalloc"
 fi
 
+AC_CHECK_FUNCS(getpassphrase)
+
 #
 # get rid of the 4-th tuple, if config.guess returned "linux-gnu" for host_os
 #
@@ -968,19 +867,16 @@ AM_CONDITIONAL([HACKINGDOCS],[test "$with_hackingdocs" = yes])
 
 AC_PATH_PROG(AUTOM4TE,autom4te,:)
 
-AS_IF([test "$ac_cv_header_stdint_h" = "yes"],[
-AC_DEFINE([__RPM_USES_STDINT_H__],[1],[if rpm uses stdint.h])
-])
-
 AC_SUBST([dirstamp],[\${am__leading_dot}dirstamp])
 
 AC_CONFIG_FILES([Makefile
-       rpmio/Makefile lib/Makefile build/Makefile
-       po/Makefile.in scripts/Makefile 
+       rpmio/Makefile lib/Makefile build/Makefile sign/Makefile
+       po/Makefile.in scripts/Makefile fileattrs/Makefile
        misc/Makefile 
        doc/Makefile
        python/Makefile
        luaext/Makefile
        tests/Makefile
+       plugins/Makefile
   ])
 AC_OUTPUT