csomh / source-git / rpm

Forked from source-git/rpm 4 years ago
Clone
2ff057
AC_PREREQ(2.61)
2ff057
AC_INIT(rpm, 4.14.2, rpm-maint@lists.rpm.org)
2ff057
2ff057
AC_CONFIG_SRCDIR([rpmqv.c])
2ff057
AC_CONFIG_HEADERS([config.h])
2ff057
AC_CONFIG_MACRO_DIR([m4])
2ff057
2ff057
AM_INIT_AUTOMAKE([1.10 foreign tar-pax dist-bzip2 subdir-objects nostdinc])
2ff057
dnl Allow silent build on automake versions that support it
2ff057
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES])
2ff057
2ff057
AC_CONFIG_TESTDIR(tests)
2ff057
2ff057
AC_USE_SYSTEM_EXTENSIONS
2ff057
2ff057
AC_DISABLE_STATIC
2ff057
2ff057
PKG_PROG_PKG_CONFIG
2ff057
2ff057
dnl Checks for programs.
2ff057
AC_PROG_CXX
2ff057
AC_PROG_AWK
2ff057
AC_PROG_CC
2ff057
AC_PROG_CPP
2ff057
AC_PROG_INSTALL
2ff057
AC_PROG_LN_S
2ff057
AC_PROG_MAKE_SET
2ff057
AC_PROG_LIBTOOL
2ff057
AC_PROG_YACC
2ff057
2ff057
AC_SUBST(__CC, $CC)
2ff057
AC_PROG_CC_C99
2ff057
if test "$ac_cv_prog_cc_c99" = no; then
2ff057
    AC_MSG_ERROR([ISO C99 capable compiler required])
2ff057
fi
2ff057
2ff057
AS=${AS-as}
2ff057
AC_SUBST(AS)
2ff057
if test "$GCC" = yes; then
2ff057
    cflags_to_try="-fno-strict-aliasing -fstack-protector -Wempty-body"
2ff057
    AC_MSG_CHECKING([supported compiler flags])
2ff057
    old_cflags=$CFLAGS
2ff057
    echo
2ff057
    for flag in $cflags_to_try; do
2ff057
        CFLAGS="$CFLAGS $flag -Werror"
2ff057
        AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[#include <alloca.h>
2ff057
						alloca(100);]])],[
2ff057
                echo "   $flag"
2ff057
                RPMCFLAGS="$RPMCFLAGS $flag"
2ff057
        ],[])
2ff057
        CFLAGS=$old_cflags
2ff057
    done
2ff057
    RPMCFLAGS="-fPIC -DPIC -D_REENTRANT -Wall -Wpointer-arith -Wmissing-prototypes -Wstrict-prototypes $RPMCFLAGS"
2ff057
fi
2ff057
AC_SUBST(RPMCFLAGS)
2ff057
2ff057
AC_SYS_LARGEFILE
2ff057
2ff057
dnl
2ff057
dnl look for POSIX chmod attributes
2ff057
dnl
2ff057
AC_MSG_CHECKING(POSIX chmod)
2ff057
touch foo.chmodtest
2ff057
chmod 744 foo.chmodtest
2ff057
chmod +X foo.chmodtest 2>/dev/null
2ff057
a=`ls -l foo.chmodtest | awk '{print substr($1,1,10)}'`
2ff057
rm -f foo.chmodtest
2ff057
if test "$a" = "-rwxr-xr-x"; then
2ff057
    AC_MSG_RESULT(yes)
2ff057
    FIXPERMS=a+rX,u+w,g-w,o-w 
2ff057
else
2ff057
    AC_MSG_RESULT(no (tell your OS vendor about GNU fileutils))
2ff057
    FIXPERMS=a+r,u+w,g-w,o-w 
2ff057
fi
2ff057
AC_SUBST(FIXPERMS)
2ff057
2ff057
dnl AM_DISABLE_SHARED
2ff057
AM_PROG_LIBTOOL
2ff057
2ff057
AC_CHECK_TOOL(AR, ar, :)
2ff057
2ff057
dnl
2ff057
dnl use defaults if cross-compiling, otherwise use the default path.
2ff057
dnl
2ff057
if test "$cross_compiling" = "yes"; then
2ff057
    MYPATH=":"
2ff057
else
2ff057
    MYPATH=$PATH
2ff057
fi
2ff057
2ff057
dnl
2ff057
dnl Find some common programs
2ff057
dnl
2ff057
AC_PATH_PROGS(__7ZIP, [7zip 7za 7z], /usr/bin/7za, $MYPATH)
2ff057
AC_PATH_PROG(__BZIP2, bzip2, /usr/bin/bzip2, $MYPATH)
2ff057
AC_PATH_PROG(__CAT, cat, /bin/cat, $MYPATH)
2ff057
AC_PATH_PROG(__CHGRP, chgrp, /bin/chgrp, $MYPATH)
2ff057
AC_PATH_PROG(__CHMOD, chmod, /bin/chmod, $MYPATH)
2ff057
AC_PATH_PROG(__CHOWN, chown, /bin/chown, $MYPATH)
2ff057
AC_PATH_PROG(__CP, cp, /bin/cp, $MYPATH)
2ff057
AC_PATH_PROG(__CPIO, cpio, /bin/cpio, $MYPATH)
2ff057
AC_PATH_PROG(__CURL, curl, /usr/bin/curl, $MYPATH)
2ff057
AC_PATH_PROG(__FILE, file, /usr/bin/file, $MYPATH)
2ff057
AC_PATH_PROGS(__GPG, gpg2 gpg, /usr/bin/gpg2, $MYPATH)
2ff057
AC_PATH_PROG(__GREP, grep, /bin/grep, $MYPATH)
2ff057
AC_PATH_PROG(__GZIP, gzip, /bin/gzip, $MYPATH)
2ff057
AC_PATH_PROG(__UNZIP, unzip, /usr/bin/unzip, $MYPATH)
2ff057
AC_PATH_PROG(__ID, id, /usr/bin/id, $MYPATH)
2ff057
AC_PATH_PROG(__INSTALL, install, /usr/bin/install, $MYPATH)
2ff057
AC_PATH_PROG(__LRZIP, lrzip, /usr/bin/lrzip, $MYPATH)
2ff057
AC_PATH_PROG(__LZIP, lzip, /usr/bin/lzip, $MYPATH)
2ff057
AC_PATH_PROG(__XZ, xz, /usr/bin/xz, $MYPATH)
2ff057
AC_PATH_PROG(__GEM, gem, /usr/bin/gem, $MYPATH)
2ff057
AC_PATH_PROG(__MAKE, make, /usr/bin/make, $MYPATH)
2ff057
AC_PATH_PROG(__MKDIR, mkdir, /bin/mkdir, $MYPATH)
2ff057
AC_PATH_PROG(__MV, mv, /bin/mv, $MYPATH)
2ff057
AC_PATH_PROG(__PATCH, patch, /usr/bin/patch, $MYPATH)
2ff057
AC_PATH_PROG(__RESTORECON, restorecon, /sbin/restorecon, $MYPATH)
2ff057
AC_MSG_CHECKING(old version of patch)
2ff057
    PATCHVERSION=`patch --version 2>&1`
2ff057
2ff057
    if test "$PATCHVERSION" = "Patch version 2.1"; then
2ff057
	AC_DEFINE(HAVE_OLDPATCH_21, 1,
2ff057
		[Define if the patch call you'll be using is 2.1 or older])
2ff057
	AC_MSG_RESULT(patch older then 2.2 found)
2ff057
    else
2ff057
	AC_MSG_RESULT(patch later then 2.2 found)
2ff057
    fi
2ff057
2ff057
AC_PATH_PROG(__PERL, perl, /usr/bin/perl, $MYPATH)
2ff057
AC_PATH_PROG(__PGP, pgp, /usr/bin/pgp, $MYPATH)
2ff057
AC_PATH_PROG(__PYTHON, python, /usr/bin/python, $MYPATH) 
2ff057
AC_PATH_PROG(__RM, rm, /bin/rm, $MYPATH)
2ff057
AC_PATH_PROG(__RSH, rsh, /usr/bin/rsh, $MYPATH)
2ff057
AC_PATH_PROG(__SED, sed, /bin/sed, $MYPATH)
2ff057
AC_PATH_PROG(__SEMODULE, semodule, /usr/bin/semodule, $MYPATH)
2ff057
AC_PATH_PROG(__SSH, ssh, /usr/bin/ssh, $MYPATH)
2ff057
AC_PATH_PROG(__TAR, tar, /bin/tar, $MYPATH)
2ff057
AC_PATH_PROG(__ZSTD, zstd, /usr/bin/zstd, $MYPATH)
2ff057
2ff057
AC_PATH_PROG(__LD, ld, /usr/bin/ld, $MYPATH)
2ff057
AC_PATH_PROG(__NM, nm, /usr/bin/nm, $MYPATH)
2ff057
AC_PATH_PROG(__OBJCOPY, objcopy, /usr/bin/objcopy, $MYPATH)
2ff057
AC_PATH_PROG(__OBJDUMP, objdump, /usr/bin/objdump, $MYPATH)
2ff057
AC_PATH_PROG(__STRIP, strip, /usr/bin/strip, $MYPATH)
2ff057
2ff057
AC_PATH_PROG(__GIT, git, /usr/bin/git, $MYPATH)
2ff057
AC_PATH_PROG(__HG, hg, /usr/bin/hg, $MYPATH)
2ff057
AC_PATH_PROG(__BZR, bzr, /usr/bin/bzr, $MYPATH)
2ff057
AC_PATH_PROG(__QUILT, quilt, /usr/bin/quilt, $MYPATH)
2ff057
2ff057
AC_PATH_PROG(__FAKECHROOT, fakechroot, no, $MYPATH)
2ff057
AM_CONDITIONAL(HAVE_FAKECHROOT, [test "$__FAKECHROOT" != "no"])
2ff057
2ff057
dnl see if we have a mkdir that supports `-p' for rpmbuild's purposes
2ff057
AC_PROG_MKDIR_P
2ff057
if ! echo $MKDIR_P | grep -q mkdir; then 
2ff057
  __MKDIR_P="`echo ${prefix}/lib/rpm/mkinstalldirs`"
2ff057
else
2ff057
  __MKDIR_P=$MKDIR_P
2ff057
fi
2ff057
AC_DEFINE_UNQUOTED(__MKDIR_P, "${__MKDIR_P}",
2ff057
[A full path to a program, possibly with arguments, that will create a
2ff057
   directory and all necessary parent directories, ala 'mkdir -p'])
2ff057
AC_SUBST(__MKDIR_P)
2ff057
2ff057
#=================
2ff057
# Check for zlib library. 
2ff057
2ff057
WITH_ZLIB_INCLUDE=
2ff057
WITH_ZLIB_LIB=
2ff057
2ff057
AC_CHECK_HEADERS([zlib.h],[
2ff057
  AS_IF([test -z "${WITH_ZLIB_LIB}"],[
2ff057
    for zlib in z gz ; do
2ff057
      AC_CHECK_LIB(${zlib}, gzread, 
2ff057
	[WITH_ZLIB_LIB="-l${zlib}"; break])
2ff057
    done
2ff057
2ff057
dnl zlib-1.0.4 has not gzseek
2ff057
    AC_CHECK_LIB(${zlib}, gzseek, [AC_DEFINE(HAVE_GZSEEK, 1, [Define as 1 if your zlib has gzseek()])])
2ff057
  ])
2ff057
],[
2ff057
  AC_MSG_ERROR([missing required header zlib.h])
2ff057
])
2ff057
2ff057
AC_SUBST(WITH_ZLIB_INCLUDE)
2ff057
AC_SUBST(WITH_ZLIB_LIB)
2ff057
2ff057
#=================
2ff057
# Check for bzip2 library.
2ff057
2ff057
AC_CHECK_HEADERS([bzlib.h],[
2ff057
  AC_CHECK_LIB(bz2, BZ2_bzread, [WITH_BZ2_LIB=-lbz2])
2ff057
])
2ff057
AC_SUBST(WITH_BZ2_LIB)
2ff057
2ff057
#=================
2ff057
# Check for lzma library.
2ff057
2ff057
AC_CHECK_HEADERS([lzma.h],[
2ff057
  AC_CHECK_LIB(lzma, lzma_easy_encoder, [WITH_LZMA_LIB=-llzma])
2ff057
])
2ff057
AC_SUBST(WITH_LZMA_LIB)
2ff057
2ff057
#=================
2ff057
# Check for zstd.
2ff057
2ff057
AC_ARG_ENABLE([zstd],
2ff057
              [AS_HELP_STRING([--enable-zstd=@<:@yes/no/auto@:>@],
2ff057
                              [build without zstd support (default=auto)])],
2ff057
              [enable_zstd="$enableval"],
2ff057
              [enable_zstd=auto])
2ff057
2ff057
AS_IF([test "x$enable_zstd" != "xno"], [
2ff057
  PKG_CHECK_MODULES([ZSTD], [libzstd], [have_zstd=yes], [have_zstd=no])
2ff057
  AS_IF([test "$enable_zstd" = "yes"], [
2ff057
    if test "$have_zstd" = "no"; then
2ff057
      AC_MSG_ERROR([--enable-zstd specified, but not available])
2ff057
    fi
2ff057
  ])
2ff057
])
2ff057
2ff057
if test "x$have_zstd" = "xyes"; then
2ff057
  AC_DEFINE([HAVE_ZSTD], [1], [Define if libzstd is available])
2ff057
  ZSTD_REQUIRES=libzstd
2ff057
  AC_SUBST(ZSTD_REQUIRES)
2ff057
fi
2ff057
AM_CONDITIONAL([HAVE_ZSTD], [test "x$have_zstd" = "xyes"])
2ff057
2ff057
#=================
2ff057
2ff057
dnl
2ff057
dnl Check for features
2ff057
dnl
2ff057
2ff057
dnl Checks for libraries.
2ff057
2ff057
AC_CHECK_FUNC(gethostname, [], [
2ff057
    AC_CHECK_LIB(nsl, gethostname)
2ff057
])
2ff057
2ff057
AC_CHECK_HEADERS(pthread.h)
2ff057
2ff057
AC_CHECK_LIB(pthread, pthread_mutex_trylock, [], [
2ff057
  dnl OSF 5.0 has the the symbols prefixed with __ in libpthread.
2ff057
  AC_CHECK_LIB(pthread, __pthread_mutex_trylock, [], [
2ff057
    AC_CHECK_LIB(thread, mutex_lock)
2ff057
  ])
2ff057
])
2ff057
2ff057
AC_SEARCH_LIBS(dlopen, [dl])
2ff057
2ff057
#=================
2ff057
# Check for libelf library. Prefer external, otherwise none.
2ff057
WITH_LIBELF_LIB=
2ff057
AC_CHECK_HEADER([libelf.h])
2ff057
AC_CHECK_HEADERS([gelf.h], [
2ff057
	AC_CHECK_LIB(elf, gelf_getvernaux, [
2ff057
	    AC_DEFINE(HAVE_LIBELF, 1, [Define to 1 if you have the 'elf' library (-lelf).])
2ff057
	    WITH_LIBELF_LIB="-lelf"
2ff057
	    WITH_LIBELF=yes
2ff057
	])
2ff057
])
2ff057
AC_SUBST(WITH_LIBELF_LIB)
2ff057
AM_CONDITIONAL(LIBELF,[test "$WITH_LIBELF" = yes])
2ff057
2ff057
AC_CHECK_HEADERS([dwarf.h], [
2ff057
  WITH_LIBDWARF=yes
2ff057
])
2ff057
AM_CONDITIONAL(LIBDWARF,[test "$WITH_LIBDWARF" = yes])
2ff057
2ff057
#=================
2ff057
# Select crypto library
2ff057
AC_ARG_WITH(crypto,
2ff057
            [AC_HELP_STRING([--with-crypto=CRYPTO_LIB],
2ff057
                            [The cryptographic library to use (nss|beecrypt|openssl). The default is nss.])
2ff057
                            ],[],
2ff057
                            [with_crypto=nss])
2ff057
2ff057
# Refuse to proceed if someone specified --with-beecrypt (removed)
2ff057
AC_ARG_WITH(beecrypt,
2ff057
    [AC_HELP_STRING([--with-beecrypt (OBSOLETE)], [Obsolete argument. Use --with-crypto=beecrypt])
2ff057
    ],[AC_MSG_ERROR([--with-beecrypt no longer supported. Use --with-crypto=beecrypt])],
2ff057
    [])
2ff057
2ff057
# Check for beecrypt library if requested.
2ff057
AC_ARG_WITH(internal_beecrypt, [  --with-internal-beecrypt build with internal beecrypt library ],,[with_internal_beecrypt=no])
2ff057
AM_CONDITIONAL([WITH_INTERNAL_BEECRYPT],[test "$with_internal_beecrypt" = yes])
2ff057
if test "$with_internal_beecrypt" = yes ; then
2ff057
  with_crypto=beecrypt
2ff057
fi
2ff057
AM_CONDITIONAL([WITH_BEECRYPT],[test "$with_crypto" = beecrypt])
2ff057
2ff057
WITH_BEECRYPT_INCLUDE=
2ff057
WITH_BEECRYPT_LIB=
2ff057
if test "$with_crypto" = beecrypt ; then
2ff057
  AC_DEFINE(WITH_BEECRYPT, 1, [Build with beecrypt instead of nss3 support?])
2ff057
  if test "$with_internal_beecrypt" = yes ; then
2ff057
    WITH_BEECRYPT_INCLUDE="-I\$(top_srcdir)/beecrypt"
2ff057
    AC_DEFINE(HAVE_BEECRYPT_API_H, 1, [Define to 1 if you have the <beecrypt/api.h> header file.])
2ff057
  else
2ff057
    AC_CHECK_LIB(beecrypt, mpfprintln, [
2ff057
      WITH_BEECRYPT_LIB="-lbeecrypt"
2ff057
    ],[
2ff057
      AC_MSG_ERROR([missing required library 'beecrypt'])
2ff057
    ])
2ff057
    AC_CHECK_HEADER([beecrypt/api.h], [AC_DEFINE(HAVE_BEECRYPT_API_H, 1, [Define to 1 if you have the <beecrypt/api.h> header file.])
2ff057
    ])
2ff057
  fi
2ff057
fi
2ff057
AC_SUBST(WITH_BEECRYPT_LIB)
2ff057
AC_SUBST(WITH_BEECRYPT_INCLUDE)
2ff057
Panu Matilainen d6b3d4
Panu Matilainen d6b3d4
#=================
Panu Matilainen d6b3d4
# Check for audit library.
Panu Matilainen d6b3d4
AC_ARG_WITH(audit,
Panu Matilainen d6b3d4
AS_HELP_STRING([--with-audit],[log results using Linux Audit]),
Panu Matilainen d6b3d4
with_audit=$withval,
Panu Matilainen d6b3d4
with_audit=auto)
Panu Matilainen d6b3d4
Panu Matilainen d6b3d4
WITH_AUDIT_LIB=
Panu Matilainen d6b3d4
AS_IF([test "x$with_audit" != xno],[
Panu Matilainen d6b3d4
    AC_SEARCH_LIBS([audit_open],[audit],[
Panu Matilainen d6b3d4
    WITH_AUDIT_LIB="$ac_res"
Panu Matilainen d6b3d4
    AC_DEFINE(WITH_AUDIT, 1, [libaudit support])
Panu Matilainen d6b3d4
    ],
Panu Matilainen d6b3d4
       [if test "x$with_audit" != xauto; then
Panu Matilainen d6b3d4
		AC_MSG_ERROR([missing audit library])
Panu Matilainen d6b3d4
	fi
Panu Matilainen d6b3d4
    ])
Panu Matilainen d6b3d4
])
Panu Matilainen d6b3d4
AC_SUBST(WITH_AUDIT_LIB)
Panu Matilainen d6b3d4
2ff057
#=================
2ff057
# Check for OpenSSL library.
2ff057
# We need evp.h from OpenSSL.
2ff057
2ff057
WITH_OPENSSL_INCLUDE=
2ff057
WITH_OPENSSL_LIB=
2ff057
if test "$with_crypto" = openssl; then
2ff057
# If we have pkgconfig make sure CPPFLAGS are setup correctly for the OpenSSL
2ff057
# -I include path.
2ff057
AC_PATH_TOOL([PKGCONFIG], [pkg-config], [no], [$PATH:/usr/bin:/usr/local/bin])
2ff057
if test "x$PKGCONFIG" != "xno"; then
2ff057
  CPPFLAGS="$CPPFLAGS $($PKGCONFIG --cflags libcrypto)"
2ff057
  WITH_OPENSSL_LIB=$($PKGCONFIG --libs libcrypto)
2ff057
else
2ff057
  WITH_OPENSSL_LIB=-lcrypto
2ff057
fi
2ff057
2ff057
AC_CHECK_HEADERS([openssl/evp.h], [], [
2ff057
  AC_MSG_ERROR([missing required OpenSSL header])
2ff057
])
2ff057
AC_CHECK_HEADERS([openssl/rsa.h], [], [
2ff057
  AC_MSG_ERROR([missing required OpenSSL header])
2ff057
])
2ff057
AC_CHECK_HEADERS([openssl/dsa.h], [], [
2ff057
  AC_MSG_ERROR([missing required OpenSSL header])
2ff057
])
2ff057
2ff057
AC_CHECK_LIB(crypto, EVP_DigestInit_ex, [], [
2ff057
  AC_MSG_ERROR([required OpenSSL library 'libcrypto' missing or too old])
2ff057
])
2ff057
2ff057
AC_CHECK_LIB(crypto, EVP_MD_CTX_new, [
2ff057
    AC_DEFINE(HAVE_EVP_MD_CTX_NEW, 1, [Define to 1 if OpenSSL has EVP_MD_CTX_new])
2ff057
    AC_SUBST(HAVE_EVP_MD_CTX_NEW, [1])
2ff057
  ], [
2ff057
  AC_CHECK_LIB(crypto, EVP_MD_CTX_create, [], [
2ff057
      AC_MSG_ERROR([required OpenSSL library 'libcrypto' missing or too old])
2ff057
  ])
2ff057
])
2ff057
2ff057
AC_CHECK_LIB(crypto, EVP_PKEY_CTX_new, [], [
2ff057
  AC_MSG_ERROR([required OpenSSL library 'libcrypto' missing or too old])
2ff057
])
2ff057
2ff057
AC_CHECK_LIB(crypto, DSA_set0_key, [
2ff057
    AC_DEFINE(HAVE_DSA_SET0_KEY, 1, [Define to 1 if OpenSSL has DSA_set0_key])
2ff057
    AC_SUBST(HAVE_DSA_SET0_KEY, [1])
2ff057
    ], []
2ff057
)
2ff057
2ff057
AC_CHECK_LIB(crypto, DSA_set0_pqg, [
2ff057
    AC_DEFINE(HAVE_DSA_SET0_PQG, 1, [Define to 1 if OpenSSL has DSA_set0_pqg])
2ff057
    AC_SUBST(HAVE_DSA_SET0_PQG, [1])
2ff057
    ], []
2ff057
)
2ff057
2ff057
AC_CHECK_LIB(crypto, DSA_SIG_set0, [
2ff057
    AC_DEFINE(HAVE_DSA_SIG_SET0, 1, [Define to 1 if OpenSSL has DSA_SIG_set0])
2ff057
    AC_SUBST(HAVE_DSA_SIG_SET0, [1])
2ff057
    ], []
2ff057
)
2ff057
2ff057
AC_CHECK_LIB(crypto, RSA_set0_key, [
2ff057
    AC_DEFINE(HAVE_RSA_SET0_KEY, 1, [Define to 1 if OpenSSL has RSA_set0_key])
2ff057
    AC_SUBST(HAVE_RSA_SET0_KEY, [1])
2ff057
    ], []
2ff057
)
2ff057
2ff057
AC_CHECK_LIB(crypto, BN_bn2binpad, [
2ff057
    AC_DEFINE(HAVE_BN2BINPAD, 1, [Define to 1 if OpenSSL has BN_bn2binpad])
2ff057
    AC_SUBST(HAVE_BN2BINPAD, [1])
2ff057
    ], []
2ff057
)
2ff057
2ff057
fi
2ff057
2ff057
AM_CONDITIONAL([WITH_OPENSSL],[test "$with_crypto" = openssl])
2ff057
AC_SUBST(WITH_OPENSSL_INCLUDE)
2ff057
AC_SUBST(WITH_OPENSSL_LIB)
2ff057
2ff057
#=================
2ff057
# Check for NSS library.
2ff057
# We need nss.h from NSS which needs nspr.h. Unfortunately both glibc and NSS
2ff057
# have a header named nss.h... so make extra check for NSS's sechash.h
2ff057
# which we use too and hopefully is slightly more unique to NSS.
2ff057
WITH_NSS_INCLUDE=
2ff057
WITH_NSS_LIB=
2ff057
if test "$with_crypto" = nss; then
2ff057
# If we have pkgconfig make sure CPPFLAGS are setup correctly for the nss
2ff057
# -I include path. Otherwise the below checks will fail because nspr.h
2ff057
# cannot be found.
2ff057
AC_PATH_TOOL([PKGCONFIG], [pkg-config], [no], [$PATH:/usr/bin:/usr/local/bin])
2ff057
if test "x$PKGCONFIG" != "xno"; then
2ff057
  CPPFLAGS="$CPPFLAGS $($PKGCONFIG --cflags nss)"
2ff057
fi
2ff057
AC_CHECK_HEADERS([nspr.h nss.h sechash.h], [], [
2ff057
  AC_MSG_ERROR([missing required NSPR / NSS header])
2ff057
])
2ff057
AC_CHECK_LIB(nss3, VFY_VerifyDigestDirect, [
2ff057
  WITH_NSS_LIB=-lnss3
2ff057
  AC_CHECK_LIB(nss3, NSS_InitContext, [
2ff057
    AC_DEFINE(HAVE_NSS_INITCONTEXT, 1, [Define to 1 if NSS has NSS_InitContext])
2ff057
    AC_SUBST(HAVE_NSS_INITCONTEXT, [1])
2ff057
  ])
2ff057
], [
2ff057
  AC_MSG_ERROR([required NSS library 'nss3' missing or too old])
2ff057
])
2ff057
fi
2ff057
AC_SUBST(WITH_NSS_INCLUDE)
2ff057
AC_SUBST(WITH_NSS_LIB)
2ff057
2ff057
#=================
2ff057
# Check for magic library.
2ff057
WITH_MAGIC_INCLUDE=
2ff057
WITH_MAGIC_LIB=
2ff057
2ff057
AC_CHECK_HEADER([magic.h], [
2ff057
    AC_CHECK_LIB(magic, magic_open, [
2ff057
      WITH_MAGIC_INCLUDE=
2ff057
      WITH_MAGIC_LIB="-lmagic"
2ff057
    ],[
2ff057
      AC_MSG_ERROR([missing required library 'libmagic']) 
2ff057
    ])
2ff057
],[
2ff057
      AC_MSG_ERROR([missing required header magic.h]) 
2ff057
])
2ff057
2ff057
AC_SUBST(WITH_MAGIC_INCLUDE)
2ff057
AC_SUBST(WITH_MAGIC_LIB)
2ff057
2ff057
#=================
2ff057
# Check for popt library.
2ff057
WITH_POPT_INCLUDE=
2ff057
WITH_POPT_LIB=
2ff057
2ff057
AC_CHECK_HEADER([popt.h], [
2ff057
  AC_CHECK_LIB(popt, poptGetContext, [
2ff057
      WITH_POPT_INCLUDE=
2ff057
      WITH_POPT_LIB="-lpopt"
2ff057
  ],[
2ff057
    AC_MSG_ERROR([missing required library popt])
2ff057
  ])
2ff057
],[
2ff057
  AC_MSG_ERROR([missing required header popt.h])
2ff057
])
2ff057
2ff057
AC_SUBST(WITH_POPT_INCLUDE)
2ff057
AC_SUBST(WITH_POPT_LIB)
2ff057
2ff057
#=================
2ff057
# Check for libarchive library.
2ff057
AC_ARG_WITH([archive], [AS_HELP_STRING([--with-archive], [build rpm2archive - requires libarchive])],
2ff057
            [],
2ff057
            [with_archive=yes])
2ff057
2ff057
WITH_ARCHIVE_INCLUDE=
2ff057
WITH_ARCHIVE_LIB=
2ff057
AS_IF([test "$with_archive" != no],[
2ff057
  AC_CHECK_HEADER([archive.h], [
2ff057
    AC_CHECK_LIB(archive, archive_write_open_filename, [
2ff057
      WITH_ARCHIVE_INCLUDE=
2ff057
      WITH_ARCHIVE_LIB="-larchive"
2ff057
    ],[
2ff057
      AC_MSG_ERROR([missing required library 'libarchive'])
2ff057
    ])
2ff057
],[
2ff057
      AC_MSG_ERROR([missing required header archive.h])
2ff057
  ])
2ff057
])
2ff057
2ff057
AC_SUBST(WITH_ARCHIVE_INCLUDE)
2ff057
AC_SUBST(WITH_ARCHIVE_LIB)
2ff057
AM_CONDITIONAL(WITH_ARCHIVE,[test "$with_archive" = yes])
2ff057
2ff057
#=================
2ff057
# Check for elfutils libdw library with dwelf_elf_gnu_build_id.
2ff057
WITH_LIBDW_LIB=
2ff057
HAVE_LIBDW_STRTAB=
2ff057
AS_IF([test "$WITH_LIBELF" = yes],[
2ff057
  AC_CHECK_HEADERS([elfutils/libdwelf.h],[
2ff057
    # dwelf_elf_gnu_build_id was introduced in elfutils 0.159
2ff057
    AC_CHECK_LIB(dw, dwelf_elf_gnu_build_id, [
2ff057
      AC_DEFINE(HAVE_LIBDW, 1,
2ff057
                [Define to 1 if you have elfutils libdw library])
2ff057
      WITH_LIBDW_LIB="-ldw"
2ff057
      WITH_LIBDW=yes
2ff057
      # If possible we also want the strtab functions from elfutils 0.167.
2ff057
      # But we can fall back on the (unsupported) ebl alternatives if not.
2ff057
      AC_CHECK_LIB(dw, dwelf_strtab_init, [HAVE_LIBDW_STRTAB=yes])
Panu Matilainen 14de97
      # whether libdw supports compressed ELF objects
Panu Matilainen 14de97
      AC_CHECK_LIB(dw, dwelf_elf_begin, [
Panu Matilainen 14de97
                   AC_DEFINE(HAVE_DWELF_ELF_BEGIN, 1, [Have dwelf_elf_begin?])
Panu Matilainen 14de97
      ])
2ff057
    ])
2ff057
  ])
2ff057
])
2ff057
AC_SUBST(WITH_LIBDW_LIB)
2ff057
AM_CONDITIONAL(LIBDW,[test "$WITH_LIBDW" = yes])
2ff057
AM_CONDITIONAL(HAVE_LIBDW_STRTAB,[test "$HAVE_LIBDW_STRTAB" = yes])
2ff057
2ff057
#=================
2ff057
# Process --with/without-external-db
2ff057
AC_ARG_WITH(external_db, [AS_HELP_STRING([--with-external-db],[build against an external Berkeley db])],
2ff057
[case "$with_external_db" in
2ff057
yes|no) ;;
2ff057
*) AC_MSG_ERROR([invalid argument to --with-external-db]) ;;
2ff057
esac],
2ff057
[with_external_db=maybe])
2ff057
2ff057
case "$with_external_db" in
2ff057
yes )
2ff057
  AC_CHECK_HEADERS([db.h],[
2ff057
    AC_PREPROC_IFELSE([
2ff057
      AC_LANG_SOURCE([
2ff057
	#include <db.h>
2ff057
	#if ((DB_VERSION_MAJOR < 4) || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR < 5))
2ff057
	#error Berkeley DB too old
2ff057
	#endif
2ff057
      ])
2ff057
    ],[ WITH_DB_LIB=-ldb ], 
2ff057
      [ AC_MSG_ERROR([Berkeley DB version >= 4.5 required])
2ff057
    ])
2ff057
  ],[
2ff057
    AC_MSG_ERROR([missing required header db.h])
2ff057
  ])
2ff057
  ;;
2ff057
no|maybe )
2ff057
  # Try internal database first, then fall back to external
2ff057
  # unless --without-external-db (no) was explicitly given.
2ff057
  if [ test -x db/dist/configure ]; then
2ff057
    AC_DEFINE(HAVE_DB_H, 1, [Define if you have the <db3/db.h> header file])
2ff057
  else
2ff057
    case "$with_external_db" in
2ff057
    maybe)
2ff057
      AC_CHECK_HEADERS([db.h],[
2ff057
        AC_PREPROC_IFELSE([
2ff057
          AC_LANG_SOURCE([
2ff057
	    #include <db.h>
2ff057
	    #if ((DB_VERSION_MAJOR < 4) || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR < 5))
2ff057
	    #error Berkeley DB too old
2ff057
	    #endif
2ff057
          ])
2ff057
        ],[ WITH_DB_LIB=-ldb ],
2ff057
          [ AC_MSG_ERROR([Berkeley DB version >= 4.5 required])
2ff057
        ])
2ff057
      ],[
2ff057
        AC_MSG_ERROR([missing required header db.h])
2ff057
      ])
2ff057
    ;;
2ff057
    no)
2ff057
      AC_MSG_ERROR([internal Berkeley DB directory not present, see INSTALL])
2ff057
    ;;
2ff057
    esac
2ff057
  fi
2ff057
  ;;
2ff057
esac
2ff057
2ff057
AC_SUBST([WITH_DB_LIB])
2ff057
2ff057
#=================
2ff057
# Process --enable-ndb
2ff057
AC_ARG_ENABLE([ndb], [AS_HELP_STRING([--enable-ndb (EXPERIMENTAL)],[enable the new rpm database format])],
2ff057
[case "$enable_ndb" in
2ff057
yes|no) ;;
2ff057
*) AC_MSG_ERROR([invalid argument to --enable-ndb])
2ff057
  ;;
2ff057
esac],
2ff057
[enable_ndb=no])
2ff057
AS_IF([test "$enable_ndb" = yes],[
2ff057
  AC_CHECK_FUNCS([mremap],
2ff057
    [AC_DEFINE(ENABLE_NDB, 1, [Enable new rpm database format?])],
2ff057
    [AC_MSG_ERROR([mremap function required by ndb])],
2ff057
    [#include <sys/mman.h>])
2ff057
])
2ff057
AM_CONDITIONAL([NDB], [test "$enable_ndb" = yes])
2ff057
2ff057
#=================
2ff057
# Check for LMDB support
2ff057
AC_ARG_ENABLE([lmdb],
2ff057
              [AS_HELP_STRING([--enable-lmdb=@<:@yes/no/auto@:>@ (EXPERIMENTAL)],
2ff057
                              [build with LMDB rpm database format support (default=auto)])],
2ff057
              [enable_lmdb="$enableval"],
2ff057
              [enable_lmdb=auto])
2ff057
2ff057
AS_IF([test "x$enable_lmdb" != "xno"], [
2ff057
  PKG_CHECK_MODULES([LMDB], [lmdb], [have_lmdb=yes], [have_lmdb=no])
2ff057
  AS_IF([test "$enable_lmdb" = "yes"], [
2ff057
    if test "$have_lmdb" = "no"; then
2ff057
      AC_MSG_ERROR([--enable-lmdb specified, but not available])
2ff057
    fi
2ff057
  ])
2ff057
])
2ff057
2ff057
if test "x$have_lmdb" = "xyes"; then
2ff057
  AC_DEFINE([WITH_LMDB], [1], [Define if LMDB is available])
2ff057
  LMDB_REQUIRES=lmdb
2ff057
  AC_SUBST(LMDB_REQUIRES)
2ff057
fi
2ff057
AM_CONDITIONAL([LMDB], [test "x$have_lmdb" = "xyes"])
2ff057
2ff057
AM_GNU_GETTEXT_VERSION([0.16.1])
2ff057
AM_GNU_GETTEXT([external])
2ff057
AM_ICONV
2ff057
2ff057
dnl Checks for header files we can live without.
2ff057
AC_HEADER_STDC
2ff057
dnl glibc and autoconf don't really play well together.
2ff057
dnl glibc will produce a warning when including the wrong header.
2ff057
dnl but still define major and minor. Causing us to include the header
2ff057
dnl that produces a giant warning for each major/minor use.
2ff057
dnl Use -Werror to work around that.
2ff057
old_CFLAGS=$CFLAGS
2ff057
CFLAGS="$CFLAGS -Werror"
2ff057
AC_HEADER_MAJOR
2ff057
CFLAGS=$old_CFLAGS
2ff057
AC_STRUCT_DIRENT_D_TYPE
2ff057
2ff057
AC_CHECK_HEADERS(limits.h)
2ff057
AC_CHECK_HEADERS(fcntl.h getopt.h)
2ff057
2ff057
AC_CHECK_HEADERS(sys/utsname.h)
2ff057
2ff057
AC_CHECK_HEADERS(sys/systemcfg.h)
2ff057
AC_CHECK_HEADERS(sys/param.h)
2ff057
AC_CHECK_HEADERS(sys/auxv.h)
2ff057
2ff057
dnl statfs portability fiddles.
2ff057
dnl
2ff057
dnl We should really emulate/steal sections of the statfs and struct statfs
2ff057
dnl checks from GNU fileutils.
2ff057
dnl
2ff057
AC_MSG_CHECKING(for struct statfs)
2ff057
2ff057
dnl
2ff057
dnl this is easier than nesting AC_TRY_COMPILEs...
2ff057
dnl
2ff057
found_struct_statfs=no
2ff057
2ff057
if test X$found_struct_statfs = Xno ; then
2ff057
dnl Solaris 2.6+ wants to use statvfs
2ff057
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2ff057
#ifdef HAVE_SYS_TYPES_H
2ff057
#include <sys/types.h>
2ff057
#endif
2ff057
#include <sys/statvfs.h> ]], [[struct statvfs sfs;]])],[AC_MSG_RESULT(in sys/statvfs.h)
2ff057
	AC_DEFINE(STATFS_IN_SYS_STATVFS, 1,
2ff057
		[statfs in <sys/statvfs.h> (for solaris 2.6+ systems)])
2ff057
	found_struct_statfs=yes],[])
2ff057
fi
2ff057
2ff057
if test X$found_struct_statfs = Xno ; then
2ff057
dnl first try including sys/vfs.h
2ff057
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2ff057
#ifdef HAVE_SYS_TYPES_H
2ff057
#include <sys/types.h>
2ff057
#endif
2ff057
#include <sys/vfs.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/vfs.h)
2ff057
	AC_DEFINE(STATFS_IN_SYS_VFS, 1, [statfs in <sys/vfs.h> (for linux systems)])
2ff057
	found_struct_statfs=yes],[])
2ff057
fi
2ff057
2ff057
if test X$found_struct_statfs = Xno ; then
2ff057
dnl ...next try including sys/mount.h
2ff057
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2ff057
#ifdef HAVE_SYS_TYPES_H
2ff057
#include <sys/types.h>
2ff057
#endif
2ff057
#ifdef HAVE_SYS_PARAM_H
2ff057
#include <sys/param.h>
2ff057
#endif
2ff057
#include <sys/mount.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/mount.h)
2ff057
	AC_DEFINE(STATFS_IN_SYS_MOUNT, 1, [statfs in <sys/mount.h> (for Digital Unix 4.0D systems)])
2ff057
	found_struct_statfs=yes],[])
2ff057
fi
2ff057
2ff057
if test X$found_struct_statfs = Xno ; then
2ff057
dnl ...still no joy.  Try sys/statfs.h
2ff057
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2ff057
#ifdef HAVE_SYS_TYPES_H
2ff057
#include <sys/types.h>
2ff057
#endif
2ff057
#include <sys/statfs.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/statfs.h)
2ff057
	AC_DEFINE(STATFS_IN_SYS_STATFS, 1, [statfs in <sys/statfs.h> (for Irix 6.4 systems)])
2ff057
	found_struct_statfs=yes],[])
2ff057
fi
2ff057
2ff057
if test X$found_struct_statfs = Xno ; then
2ff057
dnl ...no luck.  Warn the user of impending doom.
2ff057
AC_MSG_WARN(not found)
2ff057
fi
2ff057
2ff057
dnl
2ff057
dnl if we found the struct, see if it has the f_bavail member.  Some OSes
2ff057
dnl don't, including IRIX 6.5+
2ff057
dnl
2ff057
if test X$found_struct_statfs = Xyes ; then
2ff057
AC_MSG_CHECKING(for f_bavail member in struct statfs)
2ff057
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2ff057
#ifdef HAVE_SYS_TYPES_H
2ff057
#include <sys/types.h>
2ff057
#endif
2ff057
#if STATFS_IN_SYS_STATVFS
2ff057
# include <sys/statvfs.h>
2ff057
  typedef struct statvfs STATFS_t;
2ff057
#else
2ff057
  typedef struct statfs STATFS_t;
2ff057
# if STATFS_IN_SYS_VFS
2ff057
#  include <sys/vfs.h>
2ff057
# elif STATFS_IN_SYS_MOUNT
2ff057
#  include <sys/mount.h>
2ff057
# elif STATFS_IN_SYS_STATFS
2ff057
#  include <sys/statfs.h>
2ff057
# endif
2ff057
#endif ]], [[STATFS_t sfs;
2ff057
	sfs.f_bavail = 0;]])],[AC_MSG_RESULT(yes)
2ff057
	AC_DEFINE(STATFS_HAS_F_BAVAIL, 1, [Define if struct statfs has the f_bavail member])],[AC_MSG_RESULT(no)
2ff057
])
2ff057
fi
2ff057
2ff057
if test X$found_struct_statfs = Xyes ; then
2ff057
dnl
2ff057
dnl now check to see if we have the 4-argument variant of statfs()
2ff057
dnl this pretty much requires AC_RUN_IFELSE([AC_LANG_SOURCE([[]])],[],[],[])
2ff057
dnl
2ff057
AC_MSG_CHECKING([if statfs() requires 4 arguments])
2ff057
AC_RUN_IFELSE([AC_LANG_SOURCE([[
2ff057
#ifdef HAVE_SYS_TYPES_H
2ff057
#include <sys/types.h>
2ff057
#endif
2ff057
#ifdef STATFS_IN_SYS_VFS
2ff057
#include <sys/vfs.h>
2ff057
#elif STATFS_IN_SYS_MOUNT
2ff057
#include <sys/mouht.h>
2ff057
#elif STATFS_IN_SYS_STATFS
2ff057
#include <sys/statfs.h>
2ff057
#endif
2ff057
main() {
2ff057
	struct statfs sfs;
2ff057
	exit (statfs(".", &sfs, sizeof(sfs), 0));
2ff057
}
2ff057
]])],[AC_MSG_RESULT(yes)
2ff057
	AC_DEFINE(STAT_STATFS4, 1, [Define if the statfs() call takes 4 arguments])],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)
2ff057
])
2ff057
fi
2ff057
2ff057
dnl look for libc features
2ff057
2ff057
dnl Check for missing typedefs
2ff057
AC_TYPE_MODE_T
2ff057
AC_TYPE_OFF_T
2ff057
AC_TYPE_PID_T
2ff057
AC_TYPE_SIZE_T
2ff057
2ff057
dnl Checks for library functions.
2ff057
AC_CHECK_FUNCS(putenv)
2ff057
AC_CHECK_FUNCS(mempcpy)
2ff057
AC_CHECK_FUNCS(fdatasync)
2ff057
AC_CHECK_DECLS(fdatasync, [], [], [#include <unistd.h>])
2ff057
AC_CHECK_FUNCS(lutimes)
2ff057
AC_CHECK_FUNCS(mergesort)
2ff057
AC_CHECK_FUNCS(getauxval)
2ff057
AC_CHECK_FUNCS(setprogname, [], [], [#include <stdlib.h>])
2ff057
2ff057
AC_MSG_CHECKING([whether __progname is defined])
2ff057
AC_LINK_IFELSE([AC_LANG_PROGRAM([extern const char *__progname;],
2ff057
	   [if (*__progname == 0) return 0;])],
2ff057
	   AC_DEFINE([HAVE___PROGNAME], [1], [Define if __progname is defined])
2ff057
	   AC_MSG_RESULT([yes]),
2ff057
	   AC_MSG_RESULT([no]))
2ff057
2ff057
AC_REPLACE_FUNCS(stpcpy stpncpy)
2ff057
2ff057
AC_CHECK_FUNCS([secure_getenv __secure_getenv])
2ff057
2ff057
AC_CHECK_FUNCS(
2ff057
   [mkstemp getcwd basename dirname realpath setenv unsetenv regcomp lchown \
2ff057
    utimes getline],
2ff057
   [], [AC_MSG_ERROR([function required by rpm])])
2ff057
2ff057
AC_LIBOBJ(fnmatch)
2ff057
2ff057
dnl check if python is requested
2ff057
AC_ARG_ENABLE(python, [AS_HELP_STRING([--enable-python],[build rpm python bindings])],
2ff057
[case "$enable_python" in
2ff057
yes|no) ;;
2ff057
*) AC_MSG_ERROR([invalid argument to --enable-python])
2ff057
  ;;
2ff057
esac],
2ff057
[enable_python=no])
2ff057
2ff057
WITH_PYTHON_SUBPACKAGE=0
2ff057
AS_IF([test "$enable_python" = yes],[
Panu Matilainen 3300c2
  AM_PATH_PYTHON([2.7],[
2ff057
    PKG_CHECK_MODULES([PYTHON], [python-${PYTHON_VERSION}], [WITH_PYTHON_SUBPACKAGE=1])
2ff057
    AC_SUBST(PYTHON_CFLAGS)
2ff057
    AC_SUBST(PYTHON_LIB)
2ff057
  ])
2ff057
])
2ff057
2ff057
AM_CONDITIONAL(ENABLE_PYTHON,[test "$WITH_PYTHON_SUBPACKAGE" = 1])
2ff057
2ff057
AC_PATH_PROG(DOXYGEN, doxygen, no)
2ff057
dnl
2ff057
dnl Only build internal API + source hacking docs on request
2ff057
dnl
2ff057
AC_ARG_WITH(hackingdocs, [AS_HELP_STRING([--with-hackingdocs],[build rpm hacking docs])],,[with_hackingdocs=no])
2ff057
2ff057
case "$with_hackingdocs" in
2ff057
auto)
2ff057
  AS_IF([test "$DOXYGEN" = no],[with_hackingdocs=no],[with_hackingdocs=no])
2ff057
  ;;
2ff057
yes)
2ff057
  AS_IF([test "$DOXYGEN" = no],
2ff057
    [AC_MSG_ERROR([rpm hacking docs eeds doxygen in PATH])])
2ff057
  ;;
2ff057
esac
2ff057
AC_CHECK_PROG(HAVE_DOT,[dot],[YES],[NO])
2ff057
2ff057
WITH_SELINUX_LIB=
2ff057
AC_ARG_WITH(selinux, [AS_HELP_STRING([--with-selinux],[build with selinux support])],
2ff057
[case "$with_selinux" in
2ff057
yes|no) ;;
2ff057
*) AC_MSG_ERROR([invalid argument to --with-selinux])
2ff057
  ;;
2ff057
esac],
2ff057
[with_selinux=no])
2ff057
2ff057
AS_IF([test "$with_selinux" = yes],[
2ff057
  AC_CHECK_HEADER([selinux/selinux.h],[
2ff057
    save_LIBS="$LIBS"
2ff057
    AC_CHECK_LIB([selinux],[is_selinux_enabled],[],[
2ff057
      AC_MSG_ERROR([--with-selinux given, but is_selinux_enabled not found in libselinux])])
2ff057
    AC_CHECK_LIB([selinux],[selinux_getpolicytype],[],[
2ff057
      AC_MSG_ERROR([--with-selinux given, but selinux_getpolicytype not found in libselinux])])
2ff057
    AC_CHECK_LIB([selinux],[selinux_reset_config],[],[
2ff057
      AC_MSG_ERROR([--with-selinux given, but selinux_reset_config not found in libselinux])])
2ff057
    AC_CHECK_LIB([selinux],[setexecfilecon],[
2ff057
      AC_DEFINE([HAVE_SETEXECFILECON],[1],[Define to 1 if SELinux setexecfilecon is present])])
2ff057
    LIBS="$save_LIBS"
2ff057
  ],[
2ff057
    AC_MSG_ERROR([--with-selinux given, but selinux/selinux.h not found])
2ff057
  ])
2ff057
2ff057
  AC_CHECK_HEADER([selinux/label.h],[
2ff057
    save_LIBS="$LIBS"
2ff057
    AC_CHECK_LIB([selinux],[selabel_close],[],[
2ff057
      AC_MSG_ERROR([--with-selinux given, but selabel_close not found in libselinux])])
2ff057
    AC_CHECK_LIB([selinux],[selabel_lookup_raw],[],[
2ff057
      AC_MSG_ERROR([--with-selinux given, but selabel_lookup_raw not found in libselinux])])
2ff057
    AC_CHECK_LIB([selinux],[selabel_open],[],[
2ff057
      AC_MSG_ERROR([--with-selinux given, but selabel_open not found in libselinux])])
2ff057
    LIBS="$save_LIBS"
2ff057
  ],[
2ff057
    AC_MSG_ERROR([--with-selinux given, but selinux/label.h not found])
2ff057
  ])
2ff057
])
2ff057
2ff057
AS_IF([test "$with_selinux" = yes],[
2ff057
  AC_DEFINE(WITH_SELINUX, 1, [Build with selinux support?])
2ff057
  WITH_SELINUX_LIB="-lselinux"
2ff057
])
2ff057
AC_SUBST(WITH_SELINUX_LIB)
2ff057
AC_SUBST(WITH_SEMANAGE_LIB)
2ff057
AM_CONDITIONAL(SELINUX,[test "$with_selinux" = yes])
2ff057
2ff057
# libimaevm
2ff057
with_iamevm=no
2ff057
AC_ARG_WITH(imaevm, [AS_HELP_STRING([--with-imaevm],[build with imaevm support])])
2ff057
if test "$with_imaevm" = yes ; then
2ff057
  AC_MSG_CHECKING([libimaevm >= 1.0])
2ff057
  AC_COMPILE_IFELSE(
2ff057
    [AC_LANG_PROGRAM(
2ff057
      [[#include <imaevm.h>]],
2ff057
      [[return sign_hash(NULL, NULL, 0, NULL, NULL, NULL);]]
2ff057
    )],
2ff057
    [AC_MSG_RESULT(yes)
2ff057
     AC_DEFINE(WITH_IMAEVM, 1, [Build with imaevm support?])
2ff057
     WITH_IMAEVM_LIB="-limaevm"
2ff057
    ],
2ff057
    [AC_MSG_ERROR([libimaevm not present or too old (< 1.0)])]
2ff057
  )
2ff057
fi
2ff057
AM_CONDITIONAL(WITH_IMAEVM,[test "$with_imaevm" = yes])
2ff057
AC_SUBST(WITH_IMAEVM_LIB)
2ff057
2ff057
# libcap
2ff057
WITH_CAP_LIB=
2ff057
AC_ARG_WITH(cap, [AS_HELP_STRING([--with-cap],[build with capability support])],
2ff057
[case "$with_cap" in
2ff057
yes|no) ;;
2ff057
*) AC_MSG_ERROR([invalid argument to --with-cap])
2ff057
  ;;
2ff057
esac],
2ff057
[with_cap=no])
2ff057
2ff057
AS_IF([test "$with_cap" = yes],[
2ff057
  AC_CHECK_HEADER([sys/capability.h],[
2ff057
    AC_CHECK_LIB(cap,[cap_get_file], [
2ff057
      with_cap=yes
2ff057
      save_LIBS="$LIBS"
2ff057
      AC_CHECK_LIB(cap,[cap_compare], [
2ff057
        AC_DEFINE(HAVE_CAP_COMPARE, 1, [Have cap_compare function?])
2ff057
      ])
2ff057
      LIBS="$save_LIBS"
2ff057
    ],[
2ff057
      AC_MSG_ERROR([--with-cap given, but libcap not found])])
2ff057
  ],[
2ff057
    AC_MSG_ERROR([--with-cap given, but sys/capability.h not found])
2ff057
  ])
2ff057
])
2ff057
2ff057
AS_IF([test "$with_cap" = yes],[
2ff057
  AC_DEFINE(WITH_CAP, 1, [Build with capability support?])
2ff057
  WITH_CAP_LIB="-lcap"
2ff057
])
2ff057
AC_SUBST(WITH_CAP_LIB)
2ff057
AM_CONDITIONAL(CAP,[test "$with_cap" = yes])
2ff057
2ff057
WITH_ACL_LIB=
2ff057
AC_ARG_WITH(acl, [AS_HELP_STRING([--with-acl],[build with acl support])],
2ff057
[case "$with_acl" in
2ff057
yes|no) ;;
2ff057
*) AC_MSG_ERROR([invalid argument to --with-acl])
2ff057
  ;;
2ff057
esac],
2ff057
[with_acl=no])
2ff057
2ff057
AS_IF([test "$with_acl" = yes],[
2ff057
  dnl verification uses non-portable acl_equiv_mode() 
2ff057
  AC_CHECK_HEADER([acl/libacl.h],[
2ff057
    AC_CHECK_LIB(acl,[acl_equiv_mode],[with_acl=yes],[
2ff057
      AC_MSG_ERROR([--with-acl given, but libacl not found or not suitable])])
2ff057
  ],[
2ff057
    AC_MSG_ERROR([--with-acl given, but acl/libacl.h not found])
2ff057
  ])
2ff057
])
2ff057
2ff057
AS_IF([test "$with_acl" = yes],[
2ff057
  AC_DEFINE(WITH_ACL, 1, [Build with acl support?])
2ff057
  WITH_ACL_LIB="-lacl"
2ff057
])
2ff057
AC_SUBST(WITH_ACL_LIB)
2ff057
AM_CONDITIONAL(ACL,[test "$with_acl" = yes])
2ff057
2ff057
AC_ARG_WITH([lua], [AS_HELP_STRING([--with-lua], [build with lua support])],
2ff057
            [],
2ff057
            [with_lua=yes])
2ff057
2ff057
AS_IF([test "$with_lua" != no],[
2ff057
  PKG_CHECK_MODULES([LUA],
2ff057
    [lua >= 5.1],
2ff057
    [AC_DEFINE(WITH_LUA, 1, [Build with lua support?])],
2ff057
    [AC_MSG_ERROR([lua not present (--without-lua to disable)])])
2ff057
  AC_SUBST(LUA_CFLAGS)
2ff057
  AC_SUBST(LUA_LIBS)
2ff057
])
2ff057
AM_CONDITIONAL(WITH_LUA,[test "$with_lua" = yes])
2ff057
2ff057
AC_ARG_ENABLE(plugins, [AS_HELP_STRING([--disable-plugins],[build without plugin support])],,[enable_plugins=yes])
2ff057
AS_IF([test "$enable_plugins" = yes],[
2ff057
  AC_DEFINE(ENABLE_PLUGINS, 1, [Build with plugin support?])
2ff057
])
2ff057
AM_CONDITIONAL(ENABLE_PLUGINS,[test "$enable_plugins" = yes])
2ff057
2ff057
AC_ARG_ENABLE(inhibit_plugin, [AS_HELP_STRING([--disable-inhibit-plugin],[build without systemd inhibit plugin])],,[enable_inhibit_plugin=yes])
2ff057
AS_IF([test "$enable_inhibit_plugin" = yes],[
2ff057
  AC_DEFINE(ENABLE_INHIBIT_PLUGIN, 1, [Build with systemd inhibit plugin?])
2ff057
])
2ff057
AM_CONDITIONAL(ENABLE_INHIBIT_PLUGIN,[test "$enable_inhibit_plugin" = yes])
2ff057
2ff057
with_dbus=no
2ff057
AS_IF([test "$enable_plugins" != no],[
2ff057
 AS_IF([test "$enable_inhibit_plugin" != no],[
2ff057
  PKG_CHECK_MODULES([DBUS],
2ff057
    [dbus-1 >= 1.3],
2ff057
    [AC_DEFINE(DBUS, 1, [Build with dbus support?]) with_dbus=yes],
2ff057
    [with_dbus=no])
2ff057
  AC_SUBST(DBUS_CFLAGS)
2ff057
  AC_SUBST(DBUS_LIBS)
2ff057
 ])
2ff057
])
2ff057
AM_CONDITIONAL(DBUS, [test "$with_dbus" = yes])
2ff057
2ff057
AS_IF([test "$enable_plugins" != no],[
2ff057
  AC_CHECK_FUNCS(lsetxattr, [], [], [#include <sys/xattr.h>])
2ff057
])
2ff057
AM_CONDITIONAL(IMA, [test "x$ac_cv_func_lsetxattr" = xyes])
2ff057
2ff057
with_dmalloc=no
2ff057
AC_ARG_WITH(dmalloc, [AS_HELP_STRING([--with-dmalloc],[build with dmalloc debugging support])])
2ff057
if test "$with_dmalloc" = yes ; then
2ff057
  AC_DEFINE(DMALLOC, 1, [Build with dmalloc support?])
2ff057
  LIBS="$LIBS -ldmalloc"
2ff057
fi
2ff057
2ff057
user_with_uid0=$(awk -F: '$3==0 {print $1;exit}' /etc/passwd)
2ff057
group_with_gid0=$(awk -F: '$3==0 {print $1;exit}' /etc/group)
2ff057
AC_DEFINE_UNQUOTED([UID_0_USER],["$user_with_uid0"],[Get the user name having userid 0])
2ff057
AC_DEFINE_UNQUOTED([GID_0_GROUP],["$group_with_gid0"],[Get the group name having groupid 0])
2ff057
2ff057
#
2ff057
# get rid of the 4-th tuple, if config.guess returned "linux-gnu" for host_os
2ff057
#
2ff057
host_os_gnu=-gnu
2ff057
if echo "$host_os" | grep '.*-gnulibc1' > /dev/null ; then
2ff057
	host_os=`echo "${host_os}" | sed 's/-gnulibc1$//'`
2ff057
fi
2ff057
if echo "$host_os" | grep '.*-gnueabi' > /dev/null ; then
2ff057
	host_os=`echo "${host_os}" | sed 's/-gnueabi$//'`
2ff057
	host_os_gnu=-gnueabi
2ff057
fi
2ff057
if echo "$host_os" | grep '.*-gnu' > /dev/null ; then
2ff057
	host_os=`echo "${host_os}" | sed 's/-gnu$//'`
2ff057
fi
2ff057
2ff057
changequote(<, >)
2ff057
host_os_exact="${host_os}"
2ff057
host_os_major=`echo "${host_os}" | sed 's/\..*$//'`
2ff057
host_os_noversion=`echo "${host_os}" | sed 's/[0-9]*\..*$//'`
2ff057
changequote([, ])
2ff057
2ff057
dnl permit overriding build_vendor for "canonical rpm vendor"
2ff057
RPMCANONVENDOR="$build_vendor"
2ff057
AC_ARG_WITH([vendor], 
2ff057
  AS_HELP_STRING([--with-vendor=VENDOR], [specify rpm vendor name]),
2ff057
  [RPMCANONVENDOR=$withval])
2ff057
AC_DEFINE_UNQUOTED([RPMCANONVENDOR],["${RPMCANONVENDOR}"],[canonical vendor])
2ff057
	   
2ff057
RPMCANONOS="$host_os_noversion"
2ff057
RPMCANONGNU="$host_os_gnu"
2ff057
AC_SUBST(RPMCANONVENDOR)
2ff057
AC_SUBST(RPMCANONOS)
2ff057
AC_SUBST(RPMCANONGNU)
2ff057
2ff057
RUNDIR="/run"
2ff057
AC_ARG_WITH([rundir], 
2ff057
  AS_HELP_STRING([--with-rundir=RUNDIR], [specify run-time variable directory]),
2ff057
  [RUNDIR=$withval])
2ff057
AC_DEFINE_UNQUOTED([RUNDIR],["${RUNDIR}"],[run-time variable directory])
2ff057
AC_SUBST(RUNDIR)
2ff057
2ff057
if test X"$prefix" = XNONE ; then
2ff057
    usrprefix="$ac_default_prefix"
2ff057
else
2ff057
    usrprefix=$prefix
2ff057
fi
2ff057
2ff057
RPMCONFIGDIR="`echo ${usrprefix}/lib/rpm`"
2ff057
AC_SUBST(RPMCONFIGDIR)
2ff057
2ff057
AC_SUBST(OBJDUMP)
2ff057
2ff057
if test "$with_external_db" = no; then
2ff057
    AC_CONFIG_SUBDIRS(db3)
2ff057
fi
2ff057
2ff057
AM_CONDITIONAL([WITH_INTERNAL_DB],[test "$with_external_db" = no])
2ff057
AM_CONDITIONAL([DOXYGEN],[test "$DOXYGEN" != no])
2ff057
AM_CONDITIONAL([HACKINGDOCS],[test "$with_hackingdocs" = yes])
2ff057
2ff057
AC_PATH_PROG(AUTOM4TE,autom4te,:)
2ff057
2ff057
AC_SUBST([dirstamp],[\${am__leading_dot}dirstamp])
2ff057
2ff057
AC_CONFIG_FILES([Makefile
2ff057
	rpmio/Makefile lib/Makefile build/Makefile sign/Makefile
2ff057
	po/Makefile.in scripts/Makefile fileattrs/Makefile
2ff057
	misc/Makefile 
2ff057
	doc/Makefile
2ff057
	python/Makefile
2ff057
 	luaext/Makefile
2ff057
 	tests/Makefile
2ff057
 	plugins/Makefile
2ff057
	python/setup.py
2ff057
  ])
2ff057
AC_OUTPUT