Add librpm-tizen.spec file & Debian packaging.
[tools/librpm-tizen.git] / configure.ac
1 AC_PREREQ(2.61)
2 AC_INIT(rpm, 4.14.1, rpm-maint@lists.rpm.org)
3
4 AC_CONFIG_SRCDIR([rpmqv.c])
5 AC_CONFIG_HEADERS([config.h])
6 AC_CONFIG_MACRO_DIR([m4])
7
8 AM_INIT_AUTOMAKE([1.10 foreign tar-pax dist-bzip2 subdir-objects nostdinc])
9 dnl Allow silent build on automake versions that support it
10 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES])
11
12 AC_CONFIG_TESTDIR(tests)
13
14 AC_USE_SYSTEM_EXTENSIONS
15
16 AC_DISABLE_STATIC
17
18 PKG_PROG_PKG_CONFIG
19
20 dnl Checks for programs.
21 AC_PROG_CXX
22 AC_PROG_AWK
23 AC_PROG_CC
24 AC_PROG_CPP
25 AC_PROG_INSTALL
26 AC_PROG_LN_S
27 AC_PROG_MAKE_SET
28 AC_PROG_LIBTOOL
29 AC_PROG_YACC
30
31 AC_SUBST(__CC, $CC)
32 AC_PROG_CC_C99
33 if test "$ac_cv_prog_cc_c99" = no; then
34     AC_MSG_ERROR([ISO C99 capable compiler required])
35 fi
36
37 AS=${AS-as}
38 AC_SUBST(AS)
39 if test "$GCC" = yes; then
40     cflags_to_try="-fno-strict-aliasing -fstack-protector-strong -Wempty-body"
41     AC_MSG_CHECKING([supported compiler flags])
42     old_cflags=$CFLAGS
43     echo
44     for flag in $cflags_to_try; do
45         CFLAGS="$CFLAGS $flag -Werror"
46         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[#include <alloca.h>
47                                                 alloca(100);]])],[
48                 echo "   $flag"
49                 RPMCFLAGS="$RPMCFLAGS $flag"
50         ],[])
51         CFLAGS=$old_cflags
52     done
53     RPMCFLAGS="-fPIC -DPIC -D_REENTRANT -Wall -Wpointer-arith -Wmissing-prototypes -Wstrict-prototypes $RPMCFLAGS"
54     CFLAGS="$RPMCFLAGS"
55 fi
56 export CFLAGS
57 AC_SUBST(RPMCFLAGS)
58
59 AC_SYS_LARGEFILE
60
61 dnl
62 dnl look for POSIX chmod attributes
63 dnl
64 AC_MSG_CHECKING(POSIX chmod)
65 touch foo.chmodtest
66 chmod 744 foo.chmodtest
67 chmod +X foo.chmodtest 2>/dev/null
68 a=`ls -l foo.chmodtest | awk '{print substr($1,1,10)}'`
69 rm -f foo.chmodtest
70 if test "$a" = "-rwxr-xr-x"; then
71     AC_MSG_RESULT(yes)
72     FIXPERMS=a+rX,u+w,g-w,o-w 
73 else
74     AC_MSG_RESULT(no (tell your OS vendor about GNU fileutils))
75     FIXPERMS=a+r,u+w,g-w,o-w 
76 fi
77 AC_SUBST(FIXPERMS)
78
79 dnl AM_DISABLE_SHARED
80 AM_PROG_LIBTOOL
81
82 AC_CHECK_TOOL(AR, ar, :)
83
84 dnl
85 dnl use defaults if cross-compiling, otherwise use the default path.
86 dnl
87 if test "$cross_compiling" = "yes"; then
88     MYPATH=":"
89 else
90     MYPATH=$PATH
91 fi
92
93 dnl
94 dnl Find some common programs
95 dnl
96 AC_PATH_PROGS(__7ZIP, [7zip 7za 7z], /usr/bin/7za, $MYPATH)
97 AC_PATH_PROG(__BZIP2, bzip2, /usr/bin/bzip2, $MYPATH)
98 AC_PATH_PROG(__CAT, cat, /bin/cat, $MYPATH)
99 AC_PATH_PROG(__CHGRP, chgrp, /bin/chgrp, $MYPATH)
100 AC_PATH_PROG(__CHMOD, chmod, /bin/chmod, $MYPATH)
101 AC_PATH_PROG(__CHOWN, chown, /bin/chown, $MYPATH)
102 AC_PATH_PROG(__CP, cp, /bin/cp, $MYPATH)
103 AC_PATH_PROG(__CPIO, cpio, /bin/cpio, $MYPATH)
104 AC_PATH_PROG(__CURL, curl, /usr/bin/curl, $MYPATH)
105 AC_PATH_PROG(__FILE, file, /usr/bin/file, $MYPATH)
106 AC_PATH_PROGS(__GPG, gpg2 gpg, /usr/bin/gpg2, $MYPATH)
107 AC_PATH_PROG(__GREP, grep, /bin/grep, $MYPATH)
108 AC_PATH_PROG(__GZIP, gzip, /bin/gzip, $MYPATH)
109 AC_PATH_PROG(__UNZIP, unzip, /usr/bin/unzip, $MYPATH)
110 AC_PATH_PROG(__ID, id, /usr/bin/id, $MYPATH)
111 AC_PATH_PROG(__INSTALL, install, /usr/bin/install, $MYPATH)
112 AC_PATH_PROG(__LRZIP, lrzip, /usr/bin/lrzip, $MYPATH)
113 AC_PATH_PROG(__LZIP, lzip, /usr/bin/lzip, $MYPATH)
114 AC_PATH_PROG(__XZ, xz, /usr/bin/xz, $MYPATH)
115 AC_PATH_PROG(__GEM, gem, /usr/bin/gem, $MYPATH)
116 AC_PATH_PROG(__MAKE, make, /usr/bin/make, $MYPATH)
117 AC_PATH_PROG(__MKDIR, mkdir, /bin/mkdir, $MYPATH)
118 AC_PATH_PROG(__MV, mv, /bin/mv, $MYPATH)
119 AC_PATH_PROG(__PATCH, patch, /usr/bin/patch, $MYPATH)
120 AC_PATH_PROG(__RESTORECON, restorecon, /sbin/restorecon, $MYPATH)
121 AC_MSG_CHECKING(old version of patch)
122     PATCHVERSION=`patch --version 2>&1`
123
124     if test "$PATCHVERSION" = "Patch version 2.1"; then
125         AC_DEFINE(HAVE_OLDPATCH_21, 1,
126                 [Define if the patch call you'll be using is 2.1 or older])
127         AC_MSG_RESULT(patch older then 2.2 found)
128     else
129         AC_MSG_RESULT(patch later then 2.2 found)
130     fi
131
132 AC_PATH_PROG(__PERL, perl, /usr/bin/perl, $MYPATH)
133 AC_PATH_PROG(__PGP, pgp, /usr/bin/pgp, $MYPATH)
134 AC_PATH_PROG(__PYTHON, python, /usr/bin/python, $MYPATH) 
135 AC_PATH_PROG(__RM, rm, /bin/rm, $MYPATH)
136 AC_PATH_PROG(__RSH, rsh, /usr/bin/rsh, $MYPATH)
137 AC_PATH_PROG(__SED, sed, /bin/sed, $MYPATH)
138 AC_PATH_PROG(__SEMODULE, semodule, /usr/bin/semodule, $MYPATH)
139 AC_PATH_PROG(__SSH, ssh, /usr/bin/ssh, $MYPATH)
140 AC_PATH_PROG(__TAR, tar, /bin/tar, $MYPATH)
141 AC_PATH_PROG(__ZSTD, zstd, /usr/bin/zstd, $MYPATH)
142
143 AC_PATH_PROG(__LD, ld, /usr/bin/ld, $MYPATH)
144 AC_PATH_PROG(__NM, nm, /usr/bin/nm, $MYPATH)
145 AC_PATH_PROG(__OBJCOPY, objcopy, /usr/bin/objcopy, $MYPATH)
146 AC_PATH_PROG(__OBJDUMP, objdump, /usr/bin/objdump, $MYPATH)
147 AC_PATH_PROG(__STRIP, strip, /usr/bin/strip, $MYPATH)
148
149 AC_PATH_PROG(__GIT, git, /usr/bin/git, $MYPATH)
150 AC_PATH_PROG(__HG, hg, /usr/bin/hg, $MYPATH)
151 AC_PATH_PROG(__BZR, bzr, /usr/bin/bzr, $MYPATH)
152 AC_PATH_PROG(__QUILT, quilt, /usr/bin/quilt, $MYPATH)
153
154 AC_PATH_PROG(__FAKECHROOT, fakechroot, no, $MYPATH)
155 AM_CONDITIONAL(HAVE_FAKECHROOT, [test "$__FAKECHROOT" != "no"])
156
157 dnl see if we have a mkdir that supports `-p' for rpmbuild's purposes
158 AC_PROG_MKDIR_P
159 if ! echo $MKDIR_P | grep -q mkdir; then 
160   __MKDIR_P="`echo ${prefix}/lib/rpm/mkinstalldirs`"
161 else
162   __MKDIR_P=$MKDIR_P
163 fi
164 AC_DEFINE_UNQUOTED(__MKDIR_P, "${__MKDIR_P}",
165 [A full path to a program, possibly with arguments, that will create a
166    directory and all necessary parent directories, ala 'mkdir -p'])
167 AC_SUBST(__MKDIR_P)
168
169 #=================
170 # Check for zlib library. 
171
172 WITH_ZLIB_INCLUDE=
173 WITH_ZLIB_LIB=
174
175 AC_CHECK_HEADERS([zlib.h],[
176   AS_IF([test -z "${WITH_ZLIB_LIB}"],[
177     for zlib in z gz ; do
178       AC_CHECK_LIB(${zlib}, gzread, 
179         [WITH_ZLIB_LIB="-l${zlib}"; break])
180     done
181
182 dnl zlib-1.0.4 has not gzseek
183     AC_CHECK_LIB(${zlib}, gzseek, [AC_DEFINE(HAVE_GZSEEK, 1, [Define as 1 if your zlib has gzseek()])])
184   ])
185 ],[
186   AC_MSG_ERROR([missing required header zlib.h])
187 ])
188
189 AC_SUBST(WITH_ZLIB_INCLUDE)
190 AC_SUBST(WITH_ZLIB_LIB)
191
192 #=================
193 # Check for bzip2 library.
194
195 AC_CHECK_HEADERS([bzlib.h],[
196   AC_CHECK_LIB(bz2, BZ2_bzread, [WITH_BZ2_LIB=-lbz2])
197 ])
198 AC_SUBST(WITH_BZ2_LIB)
199
200 #=================
201 # Check for lzma library.
202
203 AC_CHECK_HEADERS([lzma.h],[
204   AC_CHECK_LIB(lzma, lzma_easy_encoder, [WITH_LZMA_LIB=-llzma])
205 ])
206 AC_SUBST(WITH_LZMA_LIB)
207
208 #=================
209 # Check for zstd.
210
211 AC_ARG_ENABLE([zstd],
212               [AS_HELP_STRING([--enable-zstd=@<:@yes/no/auto@:>@],
213                               [build without zstd support (default=auto)])],
214               [enable_zstd="$enableval"],
215               [enable_zstd=auto])
216
217 AS_IF([test "x$enable_zstd" != "xno"], [
218   PKG_CHECK_MODULES([ZSTD], [libzstd], [have_zstd=yes], [have_zstd=no])
219   AS_IF([test "$enable_zstd" = "yes"], [
220     if test "$have_zstd" = "no"; then
221       AC_MSG_ERROR([--enable-zstd specified, but not available])
222     fi
223   ])
224 ])
225
226 if test "x$have_zstd" = "xyes"; then
227   AC_DEFINE([HAVE_ZSTD], [1], [Define if libzstd is available])
228   ZSTD_REQUIRES=libzstd
229   AC_SUBST(ZSTD_REQUIRES)
230 fi
231 AM_CONDITIONAL([HAVE_ZSTD], [test "x$have_zstd" = "xyes"])
232
233 #=================
234
235 dnl
236 dnl Check for features
237 dnl
238
239 dnl Checks for libraries.
240
241 AC_CHECK_FUNC(gethostname, [], [
242     AC_CHECK_LIB(nsl, gethostname)
243 ])
244
245 AC_CHECK_HEADERS(pthread.h)
246
247 AC_CHECK_LIB(pthread, pthread_mutex_trylock, [], [
248   dnl OSF 5.0 has the the symbols prefixed with __ in libpthread.
249   AC_CHECK_LIB(pthread, __pthread_mutex_trylock, [], [
250     AC_CHECK_LIB(thread, mutex_lock)
251   ])
252 ])
253
254 AC_SEARCH_LIBS(dlopen, [dl])
255
256 #=================
257 # Check for libelf library. Prefer external, otherwise none.
258 WITH_LIBELF_LIB=
259 AC_CHECK_HEADER([libelf.h])
260 AC_CHECK_HEADERS([gelf.h], [
261         AC_CHECK_LIB(elf, gelf_getvernaux, [
262             AC_DEFINE(HAVE_LIBELF, 1, [Define to 1 if you have the 'elf' library (-lelf).])
263             WITH_LIBELF_LIB="-lelf"
264             WITH_LIBELF=yes
265         ])
266 ])
267 AC_SUBST(WITH_LIBELF_LIB)
268 AM_CONDITIONAL(LIBELF,[test "$WITH_LIBELF" = yes])
269
270 AC_CHECK_HEADERS([dwarf.h], [
271   WITH_LIBDWARF=yes
272 ])
273 AM_CONDITIONAL(LIBDWARF,[test "$WITH_LIBDWARF" = yes])
274
275 #=================
276 # Select crypto library
277 AC_ARG_WITH(crypto,
278             [AC_HELP_STRING([--with-crypto=CRYPTO_LIB],
279                             [The cryptographic library to use (nss|beecrypt|openssl). The default is nss.])
280                             ],[],
281                             [with_crypto=nss])
282
283 # Refuse to proceed if someone specified --with-beecrypt (removed)
284 AC_ARG_WITH(beecrypt,
285     [AC_HELP_STRING([--with-beecrypt (OBSOLETE)], [Obsolete argument. Use --with-crypto=beecrypt])
286     ],[AC_MSG_ERROR([--with-beecrypt no longer supported. Use --with-crypto=beecrypt])],
287     [])
288
289 # Check for beecrypt library if requested.
290 AC_ARG_WITH(internal_beecrypt, [  --with-internal-beecrypt build with internal beecrypt library ],,[with_internal_beecrypt=no])
291 AM_CONDITIONAL([WITH_INTERNAL_BEECRYPT],[test "$with_internal_beecrypt" = yes])
292 if test "$with_internal_beecrypt" = yes ; then
293   with_crypto=beecrypt
294 fi
295 AM_CONDITIONAL([WITH_BEECRYPT],[test "$with_crypto" = beecrypt])
296
297 WITH_BEECRYPT_INCLUDE=
298 WITH_BEECRYPT_LIB=
299 if test "$with_crypto" = beecrypt ; then
300   AC_DEFINE(WITH_BEECRYPT, 1, [Build with beecrypt instead of nss3 support?])
301   if test "$with_internal_beecrypt" = yes ; then
302     WITH_BEECRYPT_INCLUDE="-I\$(top_srcdir)/beecrypt"
303     AC_DEFINE(HAVE_BEECRYPT_API_H, 1, [Define to 1 if you have the <beecrypt/api.h> header file.])
304   else
305     AC_CHECK_LIB(beecrypt, mpfprintln, [
306       WITH_BEECRYPT_LIB="-lbeecrypt"
307     ],[
308       AC_MSG_ERROR([missing required library 'beecrypt'])
309     ])
310     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.])
311     ])
312   fi
313 fi
314 AC_SUBST(WITH_BEECRYPT_LIB)
315 AC_SUBST(WITH_BEECRYPT_INCLUDE)
316
317 #=================
318 # Check for OpenSSL library.
319 # We need evp.h from OpenSSL.
320
321 WITH_OPENSSL_INCLUDE=
322 WITH_OPENSSL_LIB=
323 if test "$with_crypto" = openssl; then
324 # If we have pkgconfig make sure CPPFLAGS are setup correctly for the OpenSSL
325 # -I include path.
326 AC_PATH_TOOL([PKGCONFIG], [pkg-config], [no], [$PATH:/usr/bin:/usr/local/bin])
327 if test "x$PKGCONFIG" != "xno"; then
328   CPPFLAGS="$CPPFLAGS $($PKGCONFIG --cflags libcrypto)"
329   WITH_OPENSSL_LIB=$($PKGCONFIG --libs libcrypto)
330 else
331   WITH_OPENSSL_LIB=-lcrypto
332 fi
333
334 AC_CHECK_HEADERS([openssl/evp.h], [], [
335   AC_MSG_ERROR([missing required OpenSSL header])
336 ])
337 AC_CHECK_HEADERS([openssl/rsa.h], [], [
338   AC_MSG_ERROR([missing required OpenSSL header])
339 ])
340 AC_CHECK_HEADERS([openssl/dsa.h], [], [
341   AC_MSG_ERROR([missing required OpenSSL header])
342 ])
343
344 AC_CHECK_LIB(crypto, EVP_DigestInit_ex, [], [
345   AC_MSG_ERROR([required OpenSSL library 'libcrypto' missing or too old])
346 ])
347
348 AC_CHECK_LIB(crypto, EVP_MD_CTX_new, [
349     AC_DEFINE(HAVE_EVP_MD_CTX_NEW, 1, [Define to 1 if OpenSSL has EVP_MD_CTX_new])
350     AC_SUBST(HAVE_EVP_MD_CTX_NEW, [1])
351   ], [
352   AC_CHECK_LIB(crypto, EVP_MD_CTX_create, [], [
353       AC_MSG_ERROR([required OpenSSL library 'libcrypto' missing or too old])
354   ])
355 ])
356
357 AC_CHECK_LIB(crypto, EVP_PKEY_CTX_new, [], [
358   AC_MSG_ERROR([required OpenSSL library 'libcrypto' missing or too old])
359 ])
360
361 AC_CHECK_LIB(crypto, DSA_set0_key, [
362     AC_DEFINE(HAVE_DSA_SET0_KEY, 1, [Define to 1 if OpenSSL has DSA_set0_key])
363     AC_SUBST(HAVE_DSA_SET0_KEY, [1])
364     ], []
365 )
366
367 AC_CHECK_LIB(crypto, DSA_set0_pqg, [
368     AC_DEFINE(HAVE_DSA_SET0_PQG, 1, [Define to 1 if OpenSSL has DSA_set0_pqg])
369     AC_SUBST(HAVE_DSA_SET0_PQG, [1])
370     ], []
371 )
372
373 AC_CHECK_LIB(crypto, DSA_SIG_set0, [
374     AC_DEFINE(HAVE_DSA_SIG_SET0, 1, [Define to 1 if OpenSSL has DSA_SIG_set0])
375     AC_SUBST(HAVE_DSA_SIG_SET0, [1])
376     ], []
377 )
378
379 AC_CHECK_LIB(crypto, RSA_set0_key, [
380     AC_DEFINE(HAVE_RSA_SET0_KEY, 1, [Define to 1 if OpenSSL has RSA_set0_key])
381     AC_SUBST(HAVE_RSA_SET0_KEY, [1])
382     ], []
383 )
384
385 AC_CHECK_LIB(crypto, BN_bn2binpad, [
386     AC_DEFINE(HAVE_BN2BINPAD, 1, [Define to 1 if OpenSSL has BN_bn2binpad])
387     AC_SUBST(HAVE_BN2BINPAD, [1])
388     ], []
389 )
390
391 fi
392
393 AM_CONDITIONAL([WITH_OPENSSL],[test "$with_crypto" = openssl])
394 AC_SUBST(WITH_OPENSSL_INCLUDE)
395 AC_SUBST(WITH_OPENSSL_LIB)
396
397 #=================
398 # Check for NSS library.
399 # We need nss.h from NSS which needs nspr.h. Unfortunately both glibc and NSS
400 # have a header named nss.h... so make extra check for NSS's sechash.h
401 # which we use too and hopefully is slightly more unique to NSS.
402 WITH_NSS_INCLUDE=
403 WITH_NSS_LIB=
404 if test "$with_crypto" = nss; then
405 # If we have pkgconfig make sure CPPFLAGS are setup correctly for the nss
406 # -I include path. Otherwise the below checks will fail because nspr.h
407 # cannot be found.
408 AC_PATH_TOOL([PKGCONFIG], [pkg-config], [no], [$PATH:/usr/bin:/usr/local/bin])
409 if test "x$PKGCONFIG" != "xno"; then
410   CPPFLAGS="$CPPFLAGS $($PKGCONFIG --cflags nss)"
411 fi
412 AC_CHECK_HEADERS([nspr.h nss.h sechash.h], [], [
413   AC_MSG_ERROR([missing required NSPR / NSS header])
414 ])
415 AC_CHECK_LIB(nss3, VFY_VerifyDigestDirect, [
416   WITH_NSS_LIB=-lnss3
417   AC_CHECK_LIB(nss3, NSS_InitContext, [
418     AC_DEFINE(HAVE_NSS_INITCONTEXT, 1, [Define to 1 if NSS has NSS_InitContext])
419     AC_SUBST(HAVE_NSS_INITCONTEXT, [1])
420   ])
421 ], [
422   AC_MSG_ERROR([required NSS library 'nss3' missing or too old])
423 ])
424 fi
425 AC_SUBST(WITH_NSS_INCLUDE)
426 AC_SUBST(WITH_NSS_LIB)
427
428 #=================
429 # Check for magic library.
430 WITH_MAGIC_INCLUDE=
431 WITH_MAGIC_LIB=
432
433 AC_CHECK_HEADER([magic.h], [
434     AC_CHECK_LIB(magic, magic_open, [
435       WITH_MAGIC_INCLUDE=
436       WITH_MAGIC_LIB="-lmagic"
437     ],[
438       AC_MSG_ERROR([missing required library 'libmagic']) 
439     ])
440 ],[
441       AC_MSG_ERROR([missing required header magic.h]) 
442 ])
443
444 AC_SUBST(WITH_MAGIC_INCLUDE)
445 AC_SUBST(WITH_MAGIC_LIB)
446
447 #=================
448 # Check for popt library.
449 WITH_POPT_INCLUDE=
450 WITH_POPT_LIB=
451
452 AC_CHECK_HEADER([popt.h], [
453   AC_CHECK_LIB(popt, poptGetContext, [
454       WITH_POPT_INCLUDE=
455       WITH_POPT_LIB="-lpopt"
456   ],[
457     AC_MSG_ERROR([missing required library popt])
458   ])
459 ],[
460   AC_MSG_ERROR([missing required header popt.h])
461 ])
462
463 AC_SUBST(WITH_POPT_INCLUDE)
464 AC_SUBST(WITH_POPT_LIB)
465
466 #=================
467 # Check for libarchive library.
468 AC_ARG_WITH([archive], [AS_HELP_STRING([--with-archive], [build rpm2archive - requires libarchive])],
469             [],
470             [with_archive=yes])
471
472 WITH_ARCHIVE_INCLUDE=
473 WITH_ARCHIVE_LIB=
474 AS_IF([test "$with_archive" != no],[
475   AC_CHECK_HEADER([archive.h], [
476     AC_CHECK_LIB(archive, archive_write_open_filename, [
477       WITH_ARCHIVE_INCLUDE=
478       WITH_ARCHIVE_LIB="-larchive"
479     ],[
480       AC_MSG_ERROR([missing required library 'libarchive'])
481     ])
482 ],[
483       AC_MSG_ERROR([missing required header archive.h])
484   ])
485 ])
486
487 AC_SUBST(WITH_ARCHIVE_INCLUDE)
488 AC_SUBST(WITH_ARCHIVE_LIB)
489 AM_CONDITIONAL(WITH_ARCHIVE,[test "$with_archive" = yes])
490
491 #=================
492 # Check for elfutils libdw library with dwelf_elf_gnu_build_id.
493 WITH_LIBDW_LIB=
494 HAVE_LIBDW_STRTAB=
495 AS_IF([test "$WITH_LIBELF" = yes],[
496   AC_CHECK_HEADERS([elfutils/libdwelf.h],[
497     # dwelf_elf_gnu_build_id was introduced in elfutils 0.159
498     AC_CHECK_LIB(dw, dwelf_elf_gnu_build_id, [
499       AC_DEFINE(HAVE_LIBDW, 1,
500                 [Define to 1 if you have elfutils libdw library])
501       WITH_LIBDW_LIB="-ldw"
502       WITH_LIBDW=yes
503       # If possible we also want the strtab functions from elfutils 0.167.
504       # But we can fall back on the (unsupported) ebl alternatives if not.
505       AC_CHECK_LIB(dw, dwelf_strtab_init, [HAVE_LIBDW_STRTAB=yes])
506     ])
507   ])
508 ])
509 AC_SUBST(WITH_LIBDW_LIB)
510 AM_CONDITIONAL(LIBDW,[test "$WITH_LIBDW" = yes])
511 AM_CONDITIONAL(HAVE_LIBDW_STRTAB,[test "$HAVE_LIBDW_STRTAB" = yes])
512
513 #=================
514 # Process --with/without-external-db
515 AC_ARG_WITH(external_db, [AS_HELP_STRING([--with-external-db],[build against an external Berkeley db])],
516 [case "$with_external_db" in
517 yes|no) ;;
518 *) AC_MSG_ERROR([invalid argument to --with-external-db]) ;;
519 esac],
520 [with_external_db=no])
521
522 case "$with_external_db" in
523 yes )
524   AC_CHECK_HEADERS([db.h],[
525     AC_PREPROC_IFELSE([
526       AC_LANG_SOURCE([
527         #include <db.h>
528         #if ((DB_VERSION_MAJOR < 4) || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR < 5))
529         #error Berkeley DB too old
530         #endif
531       ])
532     ],[ WITH_DB_LIB=-ldb ],
533       [ AC_MSG_ERROR([Berkeley DB version >= 4.5 required])
534     ])
535   ],[
536     AC_MSG_ERROR([missing required header db.h])
537   ])
538   AC_DEFINE(WITH_EXTERNAL_DB, 1, [Use external db?])
539   ;;
540 no|maybe )
541   # Try internal database first, then fall back to external
542   # unless --without-external-db (no) was explicitly given.
543   if [ test -x db/dist/configure ]; then
544     AC_DEFINE(HAVE_DB_H, 1, [Define if you have the <db3/db.h> header file])
545   else
546     case "$with_external_db" in
547     maybe)
548       AC_CHECK_HEADERS([db.h],[
549         AC_PREPROC_IFELSE([
550           AC_LANG_SOURCE([
551             #include <db.h>
552             #if ((DB_VERSION_MAJOR < 4) || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR < 5))
553             #error Berkeley DB too old
554             #endif
555           ])
556         ],[ WITH_DB_LIB=-ldb ],
557           [ AC_MSG_ERROR([Berkeley DB version >= 4.5 required])
558         ])
559       ],[
560         AC_MSG_ERROR([missing required header db.h])
561       ])
562     ;;
563     no)
564       AC_MSG_ERROR([internal Berkeley DB directory not present, see INSTALL])
565     ;;
566     esac
567   fi
568   ;;
569 esac
570
571 AC_SUBST([WITH_DB_LIB])
572
573 #=================
574 # Process --enable-ndb
575 AC_ARG_ENABLE([ndb], [AS_HELP_STRING([--enable-ndb (EXPERIMENTAL)],[enable the new rpm database format])],
576 [case "$enable_ndb" in
577 yes|no) ;;
578 *) AC_MSG_ERROR([invalid argument to --enable-ndb])
579   ;;
580 esac],
581 [enable_ndb=no])
582 AS_IF([test "$enable_ndb" = yes],[
583   AC_CHECK_FUNCS([mremap],
584     [AC_DEFINE(ENABLE_NDB, 1, [Enable new rpm database format?])],
585     [AC_MSG_ERROR([mremap function required by ndb])],
586     [#include <sys/mman.h>])
587 ])
588 AM_CONDITIONAL([NDB], [test "$enable_ndb" = yes])
589
590 #=================
591 # Check for LMDB support
592 AC_ARG_ENABLE([lmdb],
593               [AS_HELP_STRING([--enable-lmdb=@<:@yes/no/auto@:>@ (EXPERIMENTAL)],
594                               [build with LMDB rpm database format support (default=auto)])],
595               [enable_lmdb="$enableval"],
596               [enable_lmdb=auto])
597
598 AS_IF([test "x$enable_lmdb" != "xno"], [
599   PKG_CHECK_MODULES([LMDB], [lmdb], [have_lmdb=yes], [have_lmdb=no])
600   AS_IF([test "$enable_lmdb" = "yes"], [
601     if test "$have_lmdb" = "no"; then
602       AC_MSG_ERROR([--enable-lmdb specified, but not available])
603     fi
604   ])
605 ])
606
607 if test "x$have_lmdb" = "xyes"; then
608   AC_DEFINE([WITH_LMDB], [1], [Define if LMDB is available])
609   LMDB_REQUIRES=lmdb
610   AC_SUBST(LMDB_REQUIRES)
611 fi
612 AM_CONDITIONAL([LMDB], [test "x$have_lmdb" = "xyes"])
613
614 AM_GNU_GETTEXT_VERSION([0.16.1])
615 AM_GNU_GETTEXT([external])
616 AM_ICONV
617
618 dnl Checks for header files we can live without.
619 AC_HEADER_STDC
620 dnl glibc and autoconf don't really play well together.
621 dnl glibc will produce a warning when including the wrong header.
622 dnl but still define major and minor. Causing us to include the header
623 dnl that produces a giant warning for each major/minor use.
624 dnl Use -Werror to work around that.
625 old_CFLAGS=$CFLAGS
626 CFLAGS="$CFLAGS -Werror"
627 AC_HEADER_MAJOR
628 CFLAGS=$old_CFLAGS
629 AC_STRUCT_DIRENT_D_TYPE
630
631 AC_CHECK_HEADERS(limits.h)
632 AC_CHECK_HEADERS(fcntl.h getopt.h)
633
634 AC_CHECK_HEADERS(sys/utsname.h)
635
636 AC_CHECK_HEADERS(sys/systemcfg.h)
637 AC_CHECK_HEADERS(sys/param.h)
638 AC_CHECK_HEADERS(sys/auxv.h)
639
640 dnl statfs portability fiddles.
641 dnl
642 dnl We should really emulate/steal sections of the statfs and struct statfs
643 dnl checks from GNU fileutils.
644 dnl
645 AC_MSG_CHECKING(for struct statfs)
646
647 dnl
648 dnl this is easier than nesting AC_TRY_COMPILEs...
649 dnl
650 found_struct_statfs=no
651
652 if test X$found_struct_statfs = Xno ; then
653 dnl Solaris 2.6+ wants to use statvfs
654 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
655 #ifdef HAVE_SYS_TYPES_H
656 #include <sys/types.h>
657 #endif
658 #include <sys/statvfs.h> ]], [[struct statvfs sfs;]])],[AC_MSG_RESULT(in sys/statvfs.h)
659         AC_DEFINE(STATFS_IN_SYS_STATVFS, 1,
660                 [statfs in <sys/statvfs.h> (for solaris 2.6+ systems)])
661         found_struct_statfs=yes],[])
662 fi
663
664 if test X$found_struct_statfs = Xno ; then
665 dnl first try including sys/vfs.h
666 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
667 #ifdef HAVE_SYS_TYPES_H
668 #include <sys/types.h>
669 #endif
670 #include <sys/vfs.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/vfs.h)
671         AC_DEFINE(STATFS_IN_SYS_VFS, 1, [statfs in <sys/vfs.h> (for linux systems)])
672         found_struct_statfs=yes],[])
673 fi
674
675 if test X$found_struct_statfs = Xno ; then
676 dnl ...next try including sys/mount.h
677 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
678 #ifdef HAVE_SYS_TYPES_H
679 #include <sys/types.h>
680 #endif
681 #ifdef HAVE_SYS_PARAM_H
682 #include <sys/param.h>
683 #endif
684 #include <sys/mount.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/mount.h)
685         AC_DEFINE(STATFS_IN_SYS_MOUNT, 1, [statfs in <sys/mount.h> (for Digital Unix 4.0D systems)])
686         found_struct_statfs=yes],[])
687 fi
688
689 if test X$found_struct_statfs = Xno ; then
690 dnl ...still no joy.  Try sys/statfs.h
691 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
692 #ifdef HAVE_SYS_TYPES_H
693 #include <sys/types.h>
694 #endif
695 #include <sys/statfs.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/statfs.h)
696         AC_DEFINE(STATFS_IN_SYS_STATFS, 1, [statfs in <sys/statfs.h> (for Irix 6.4 systems)])
697         found_struct_statfs=yes],[])
698 fi
699
700 if test X$found_struct_statfs = Xno ; then
701 dnl ...no luck.  Warn the user of impending doom.
702 AC_MSG_WARN(not found)
703 fi
704
705 dnl
706 dnl if we found the struct, see if it has the f_bavail member.  Some OSes
707 dnl don't, including IRIX 6.5+
708 dnl
709 if test X$found_struct_statfs = Xyes ; then
710 AC_MSG_CHECKING(for f_bavail member in struct statfs)
711 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
712 #ifdef HAVE_SYS_TYPES_H
713 #include <sys/types.h>
714 #endif
715 #if STATFS_IN_SYS_STATVFS
716 # include <sys/statvfs.h>
717   typedef struct statvfs STATFS_t;
718 #else
719   typedef struct statfs STATFS_t;
720 # if STATFS_IN_SYS_VFS
721 #  include <sys/vfs.h>
722 # elif STATFS_IN_SYS_MOUNT
723 #  include <sys/mount.h>
724 # elif STATFS_IN_SYS_STATFS
725 #  include <sys/statfs.h>
726 # endif
727 #endif ]], [[STATFS_t sfs;
728         sfs.f_bavail = 0;]])],[AC_MSG_RESULT(yes)
729         AC_DEFINE(STATFS_HAS_F_BAVAIL, 1, [Define if struct statfs has the f_bavail member])],[AC_MSG_RESULT(no)
730 ])
731 fi
732
733 if test X$found_struct_statfs = Xyes ; then
734 dnl
735 dnl now check to see if we have the 4-argument variant of statfs()
736 dnl this pretty much requires AC_RUN_IFELSE([AC_LANG_SOURCE([[]])],[],[],[])
737 dnl
738 AC_MSG_CHECKING([if statfs() requires 4 arguments])
739 AC_RUN_IFELSE([AC_LANG_SOURCE([[
740 #ifdef HAVE_SYS_TYPES_H
741 #include <sys/types.h>
742 #endif
743 #ifdef STATFS_IN_SYS_VFS
744 #include <sys/vfs.h>
745 #elif STATFS_IN_SYS_MOUNT
746 #include <sys/mouht.h>
747 #elif STATFS_IN_SYS_STATFS
748 #include <sys/statfs.h>
749 #endif
750 main() {
751         struct statfs sfs;
752         exit (statfs(".", &sfs, sizeof(sfs), 0));
753 }
754 ]])],[AC_MSG_RESULT(yes)
755         AC_DEFINE(STAT_STATFS4, 1, [Define if the statfs() call takes 4 arguments])],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)
756 ])
757 fi
758
759 dnl look for libc features
760
761 dnl Check for missing typedefs
762 AC_TYPE_MODE_T
763 AC_TYPE_OFF_T
764 AC_TYPE_PID_T
765 AC_TYPE_SIZE_T
766
767 dnl Checks for library functions.
768 AC_CHECK_FUNCS(putenv)
769 AC_CHECK_FUNCS(mempcpy)
770 AC_CHECK_FUNCS(fdatasync)
771 AC_CHECK_DECLS(fdatasync, [], [], [#include <unistd.h>])
772 AC_CHECK_FUNCS(lutimes)
773 AC_CHECK_FUNCS(mergesort)
774 AC_CHECK_FUNCS(getauxval)
775 AC_CHECK_FUNCS(setprogname, [], [], [#include <stdlib.h>])
776
777 AC_MSG_CHECKING([whether __progname is defined])
778 AC_LINK_IFELSE([AC_LANG_PROGRAM([extern const char *__progname;],
779            [if (*__progname == 0) return 0;])],
780            AC_DEFINE([HAVE___PROGNAME], [1], [Define if __progname is defined])
781            AC_MSG_RESULT([yes]),
782            AC_MSG_RESULT([no]))
783
784 AC_REPLACE_FUNCS(stpcpy stpncpy)
785
786 AC_CHECK_FUNCS([secure_getenv __secure_getenv])
787
788 AC_CHECK_FUNCS(
789    [mkstemp getcwd basename dirname realpath setenv unsetenv regcomp lchown \
790     utimes getline],
791    [], [AC_MSG_ERROR([function required by rpm])])
792
793 AC_LIBOBJ(fnmatch)
794
795 dnl check if python is requested
796 AC_ARG_ENABLE(python, [AS_HELP_STRING([--enable-python],[build rpm python bindings])],
797 [case "$enable_python" in
798 yes|no) ;;
799 *) AC_MSG_ERROR([invalid argument to --enable-python])
800   ;;
801 esac],
802 [enable_python=no])
803
804 WITH_PYTHON_SUBPACKAGE=0
805 AS_IF([test "$enable_python" = yes],[
806   AM_PATH_PYTHON([3.2],[
807     PKG_CHECK_MODULES([PYTHON], [python-${PYTHON_VERSION}], [WITH_PYTHON_SUBPACKAGE=1])
808     AC_SUBST(PYTHON_CFLAGS)
809     AC_SUBST(PYTHON_LIB)
810   ])
811 ])
812
813 AM_CONDITIONAL(ENABLE_PYTHON,[test "$WITH_PYTHON_SUBPACKAGE" = 1])
814
815 AC_PATH_PROG(DOXYGEN, doxygen, no)
816 dnl
817 dnl Only build internal API + source hacking docs on request
818 dnl
819 AC_ARG_WITH(hackingdocs, [AS_HELP_STRING([--with-hackingdocs],[build rpm hacking docs])],,[with_hackingdocs=no])
820
821 case "$with_hackingdocs" in
822 auto)
823   AS_IF([test "$DOXYGEN" = no],[with_hackingdocs=no],[with_hackingdocs=no])
824   ;;
825 yes)
826   AS_IF([test "$DOXYGEN" = no],
827     [AC_MSG_ERROR([rpm hacking docs eeds doxygen in PATH])])
828   ;;
829 esac
830 AC_CHECK_PROG(HAVE_DOT,[dot],[YES],[NO])
831
832 WITH_SELINUX_LIB=
833 AC_ARG_WITH(selinux, [AS_HELP_STRING([--with-selinux],[build with selinux support])],
834 [case "$with_selinux" in
835 yes|no) ;;
836 *) AC_MSG_ERROR([invalid argument to --with-selinux])
837   ;;
838 esac],
839 [with_selinux=no])
840
841 AS_IF([test "$with_selinux" = yes],[
842   AC_CHECK_HEADER([selinux/selinux.h],[
843     save_LIBS="$LIBS"
844     AC_CHECK_LIB([selinux],[is_selinux_enabled],[],[
845       AC_MSG_ERROR([--with-selinux given, but is_selinux_enabled not found in libselinux])])
846     AC_CHECK_LIB([selinux],[selinux_getpolicytype],[],[
847       AC_MSG_ERROR([--with-selinux given, but selinux_getpolicytype not found in libselinux])])
848     AC_CHECK_LIB([selinux],[selinux_reset_config],[],[
849       AC_MSG_ERROR([--with-selinux given, but selinux_reset_config not found in libselinux])])
850     AC_CHECK_LIB([selinux],[setexecfilecon],[
851       AC_DEFINE([HAVE_SETEXECFILECON],[1],[Define to 1 if SELinux setexecfilecon is present])])
852     LIBS="$save_LIBS"
853   ],[
854     AC_MSG_ERROR([--with-selinux given, but selinux/selinux.h not found])
855   ])
856
857   AC_CHECK_HEADER([selinux/label.h],[
858     save_LIBS="$LIBS"
859     AC_CHECK_LIB([selinux],[selabel_close],[],[
860       AC_MSG_ERROR([--with-selinux given, but selabel_close not found in libselinux])])
861     AC_CHECK_LIB([selinux],[selabel_lookup_raw],[],[
862       AC_MSG_ERROR([--with-selinux given, but selabel_lookup_raw not found in libselinux])])
863     AC_CHECK_LIB([selinux],[selabel_open],[],[
864       AC_MSG_ERROR([--with-selinux given, but selabel_open not found in libselinux])])
865     LIBS="$save_LIBS"
866   ],[
867     AC_MSG_ERROR([--with-selinux given, but selinux/label.h not found])
868   ])
869 ])
870
871 AS_IF([test "$with_selinux" = yes],[
872   AC_DEFINE(WITH_SELINUX, 1, [Build with selinux support?])
873   WITH_SELINUX_LIB="-lselinux"
874 ])
875 AC_SUBST(WITH_SELINUX_LIB)
876 AC_SUBST(WITH_SEMANAGE_LIB)
877 AM_CONDITIONAL(SELINUX,[test "$with_selinux" = yes])
878
879
880 WITH_MSM_LIB=
881 AC_ARG_WITH(msm, [AS_HELP_STRING([--with-msm],[build with msm support])],
882 [case "$with_msm" in
883 yes|no) ;;
884 *) AC_MSG_ERROR([invalid argument to --with-msm])
885   ;;
886 esac],
887 [with_msm=no])
888
889 AS_IF([test "$with_msm" = yes],[
890     save_LIBS="$LIBS"
891     AC_CHECK_LIB([xml2],[xmlReaderForMemory],[],[
892       AC_MSG_ERROR([--with-msm given, but xmlReaderForMemory not found in libxml2])])
893     LIBS="$save_LIBS"
894   AC_CHECK_HEADER([sys/capability.h],[
895     save_LIBS="$LIBS"
896     AC_CHECK_LIB([cap],[cap_set_file],[],[
897       AC_MSG_ERROR([--with-msm given, but cap_set_file not found in libcap])])
898     LIBS="$save_LIBS"
899   ],[
900     AC_MSG_ERROR([--with-msm given, but sys/capability.h not found])
901   ])
902
903   PKG_CHECK_MODULES(
904     [LIBXML2],
905     [libxml-2.0 >= 2.0],
906     [AC_DEFINE(WITH_LIBXML2, 1, [Build with libxml2 support])],
907     [AC_MSG_ERROR([--with-msm given, but libxml2 not found])]
908   )
909   AC_SUBST(LIBXML2_CFLAGS)
910   AC_SUBST(LIBXML2_LIBS)
911
912   AC_CHECK_HEADER([sys/xattr.h],[
913     save_LIBS="$LIBS"
914     AC_CHECK_LIB([attr],[setxattr],[],[
915       AC_MSG_ERROR([--with-msm given, but setxattr not found in libattr])])
916     LIBS="$save_LIBS"
917   ],[
918     AC_MSG_ERROR([--with-msm given, but sys/xattr.h not found])
919   ])
920   AC_CHECK_HEADER([uthash.h],[
921     save_LIBS="$LIBS"
922     LIBS="$save_LIBS"
923   ],[
924     AC_MSG_ERROR([--with-msm given, but uthash.h not found])
925   ])
926   AC_CHECK_HEADER([sys/smack.h],[
927      save_LIBS="$LIBS"
928     LIBS="$save_LIBS"
929    ],[
930      AC_MSG_ERROR([--with-msm given, but smack.h not found])
931    ])
932 ])
933
934 AS_IF([test "$with_msm" = yes],[
935   AC_DEFINE(WITH_MSM, 1, [Build with msm support?])
936   WITH_MSM_LIB="`xml2-config --libs` -lcap -lattr -lsmack -lmagic"
937   WITH_MSM_INCLUDE="`xml2-config --cflags`"
938 ])
939 AC_SUBST(WITH_MSM_LIB)
940 AC_SUBST(WITH_MSM_INCLUDE)
941 AM_CONDITIONAL(MSM,[test "$with_msm" = yes])
942
943
944 # libimaevm
945 with_iamevm=no
946 AC_ARG_WITH(imaevm, [AS_HELP_STRING([--with-imaevm],[build with imaevm support])])
947 if test "$with_imaevm" = yes ; then
948   AC_MSG_CHECKING([libimaevm >= 1.0])
949   AC_COMPILE_IFELSE(
950     [AC_LANG_PROGRAM(
951       [[#include <imaevm.h>]],
952       [[return sign_hash(NULL, NULL, 0, NULL, NULL, NULL);]]
953     )],
954     [AC_MSG_RESULT(yes)
955      AC_DEFINE(WITH_IMAEVM, 1, [Build with imaevm support?])
956      WITH_IMAEVM_LIB="-limaevm"
957     ],
958     [AC_MSG_ERROR([libimaevm not present or too old (< 1.0)])]
959   )
960 fi
961 AM_CONDITIONAL(WITH_IMAEVM,[test "$with_imaevm" = yes])
962 AC_SUBST(WITH_IMAEVM_LIB)
963
964 # libcap
965 WITH_CAP_LIB=
966 AC_ARG_WITH(cap, [AS_HELP_STRING([--with-cap],[build with capability support])],
967 [case "$with_cap" in
968 yes|no) ;;
969 *) AC_MSG_ERROR([invalid argument to --with-cap])
970   ;;
971 esac],
972 [with_cap=no])
973
974 AS_IF([test "$with_cap" = yes],[
975   AC_CHECK_HEADER([sys/capability.h],[
976     AC_CHECK_LIB(cap,[cap_get_file], [
977       with_cap=yes
978       save_LIBS="$LIBS"
979       AC_CHECK_LIB(cap,[cap_compare], [
980         AC_DEFINE(HAVE_CAP_COMPARE, 1, [Have cap_compare function?])
981       ])
982       LIBS="$save_LIBS"
983     ],[
984       AC_MSG_ERROR([--with-cap given, but libcap not found])])
985   ],[
986     AC_MSG_ERROR([--with-cap given, but sys/capability.h not found])
987   ])
988 ])
989
990 AS_IF([test "$with_cap" = yes],[
991   AC_DEFINE(WITH_CAP, 1, [Build with capability support?])
992   WITH_CAP_LIB="-lcap"
993 ])
994 AC_SUBST(WITH_CAP_LIB)
995 AM_CONDITIONAL(CAP,[test "$with_cap" = yes])
996
997 WITH_ACL_LIB=
998 AC_ARG_WITH(acl, [AS_HELP_STRING([--with-acl],[build with acl support])],
999 [case "$with_acl" in
1000 yes|no) ;;
1001 *) AC_MSG_ERROR([invalid argument to --with-acl])
1002   ;;
1003 esac],
1004 [with_acl=no])
1005
1006 AS_IF([test "$with_acl" = yes],[
1007   dnl verification uses non-portable acl_equiv_mode() 
1008   AC_CHECK_HEADER([acl/libacl.h],[
1009     AC_CHECK_LIB(acl,[acl_equiv_mode],[with_acl=yes],[
1010       AC_MSG_ERROR([--with-acl given, but libacl not found or not suitable])])
1011   ],[
1012     AC_MSG_ERROR([--with-acl given, but acl/libacl.h not found])
1013   ])
1014 ])
1015
1016 AS_IF([test "$with_acl" = yes],[
1017   AC_DEFINE(WITH_ACL, 1, [Build with acl support?])
1018   WITH_ACL_LIB="-lacl"
1019 ])
1020 AC_SUBST(WITH_ACL_LIB)
1021 AM_CONDITIONAL(ACL,[test "$with_acl" = yes])
1022
1023 AC_ARG_WITH([lua], [AS_HELP_STRING([--with-lua], [build with lua support])],
1024             [],
1025             [with_lua=yes])
1026
1027 if test X"$LUA_PKGCONFIG_NAME" = X ; then
1028     LUA_PKGCONFIG_NAME=lua
1029 fi
1030 AS_IF([test "$with_lua" != no],[
1031   PKG_CHECK_MODULES([LUA],
1032     [${LUA_PKGCONFIG_NAME} >= 5.1],
1033     [AC_DEFINE(WITH_LUA, 1, [Build with lua support?])],
1034     [AC_MSG_ERROR([lua not present (--without-lua to disable)])])
1035   AC_SUBST(LUA_CFLAGS)
1036   AC_SUBST(LUA_LIBS)
1037 ])
1038 AM_CONDITIONAL(WITH_LUA,[test "$with_lua" = yes])
1039
1040 AC_ARG_ENABLE(plugins, [AS_HELP_STRING([--disable-plugins],[build without plugin support])],,[enable_plugins=yes])
1041 AS_IF([test "$enable_plugins" = yes],[
1042   AC_DEFINE(ENABLE_PLUGINS, 1, [Build with plugin support?])
1043 ])
1044 AM_CONDITIONAL(ENABLE_PLUGINS,[test "$enable_plugins" = yes])
1045
1046 with_dbus=no
1047 AS_IF([test "$enable_plugins" != no],[
1048   PKG_CHECK_MODULES([DBUS],
1049     [dbus-1 >= 1.3],
1050     [AC_DEFINE(DBUS, 1, [Build with dbus support?]) with_dbus=yes],
1051     [with_dbus=no])
1052   AC_SUBST(DBUS_CFLAGS)
1053   AC_SUBST(DBUS_LIBS)
1054 ])
1055 AM_CONDITIONAL(DBUS, [test "$with_dbus" = yes])
1056
1057 AS_IF([test "$enable_plugins" != no],[
1058   AC_CHECK_FUNCS(lsetxattr, [], [], [#include <sys/xattr.h>])
1059 ])
1060 AM_CONDITIONAL(IMA, [test "x$ac_cv_func_lsetxattr" = xyes])
1061
1062 with_dmalloc=no
1063 AC_ARG_WITH(dmalloc, [AS_HELP_STRING([--with-dmalloc],[build with dmalloc debugging support])])
1064 if test "$with_dmalloc" = yes ; then
1065   AC_DEFINE(DMALLOC, 1, [Build with dmalloc support?])
1066   LIBS="$LIBS -ldmalloc"
1067 fi
1068
1069 user_with_uid0=$(awk -F: '$3==0 {print $1;exit}' /etc/passwd)
1070 group_with_gid0=$(awk -F: '$3==0 {print $1;exit}' /etc/group)
1071 AC_DEFINE_UNQUOTED([UID_0_USER],["$user_with_uid0"],[Get the user name having userid 0])
1072 AC_DEFINE_UNQUOTED([GID_0_GROUP],["$group_with_gid0"],[Get the group name having groupid 0])
1073
1074 #
1075 # get rid of the 4-th tuple, if config.guess returned "linux-gnu" for host_os
1076 #
1077 host_os_gnu=-gnu
1078 if echo "$host_os" | grep '.*-gnulibc1' > /dev/null ; then
1079         host_os=`echo "${host_os}" | sed 's/-gnulibc1$//'`
1080 fi
1081 if echo "$host_os" | grep '.*-gnueabihf' > /dev/null ; then
1082        host_os=`echo "${host_os}" | sed 's/-gnueabihf$//'`
1083        host_os_gnu=-gnueabihf
1084 fi
1085 if echo "$host_os" | grep '.*-gnueabi' > /dev/null ; then
1086         host_os=`echo "${host_os}" | sed 's/-gnueabi$//'`
1087         host_os_gnu=-gnueabi
1088 fi
1089 if echo "$host_os" | grep '.*-gnu' > /dev/null ; then
1090         host_os=`echo "${host_os}" | sed 's/-gnu$//'`
1091 fi
1092 if echo "$host_os" | grep '.*-uclibc' > /dev/null ; then
1093   host_os=`echo "${host_os}" | sed 's/-uclibc$//'`
1094 fi
1095
1096 changequote(<, >)
1097 host_os_exact="${host_os}"
1098 host_os_major=`echo "${host_os}" | sed 's/\..*$//'`
1099 host_os_noversion=`echo "${host_os}" | sed 's/[0-9]*\..*$//'`
1100 changequote([, ])
1101
1102 for provscript in ${host_cpu}-${host_os_exact}.prov ${host_os_exact}.prov ${host_os_major}.prov ${host_os_noversion}.prov none ; do {
1103     if test -f ${srcdir}/autodeps/${provscript} ; then
1104        if [[ ${provscript} == none ]] ; then
1105            echo "*** no default provides information is available for ${host_os_noversion}"
1106        else
1107            echo "using ${srcdir}/autodeps/${provscript} for automatic provides generation"
1108        fi
1109        ln -sf ${provscript} ${srcdir}/autodeps/find-provides
1110        break
1111     fi
1112 }; done
1113
1114
1115 for reqscript in ${host_cpu}-${host_os_exact}.req ${host_os_exact}.req ${host_os_major}.req ${host_os_noversion}.req none ; do {
1116     if test -f ${srcdir}/autodeps/${reqscript} ; then
1117        if [[ ${reqscript} == none ]] ; then
1118            echo "*** no default requires information is available for ${host_os_noversion}"
1119        else
1120           echo "using ${srcdir}/autodeps/${reqscript} for automatic requires generation"
1121        fi
1122        ln -sf ${reqscript} ./autodeps/find-requires
1123        break
1124     fi
1125 } done
1126
1127 dnl permit overriding build_vendor for "canonical rpm vendor"
1128 RPMCANONVENDOR="$build_vendor"
1129 AC_ARG_WITH([vendor], 
1130   AS_HELP_STRING([--with-vendor=VENDOR], [specify rpm vendor name]),
1131   [RPMCANONVENDOR=$withval])
1132 AC_DEFINE_UNQUOTED([RPMCANONVENDOR],["${RPMCANONVENDOR}"],[canonical vendor])
1133            
1134 RPMCANONOS="$host_os_noversion"
1135 RPMCANONGNU="$host_os_gnu"
1136 AC_SUBST(RPMCANONVENDOR)
1137 AC_SUBST(RPMCANONOS)
1138 AC_SUBST(RPMCANONGNU)
1139
1140 RUNDIR="/run"
1141 AC_ARG_WITH([rundir], 
1142   AS_HELP_STRING([--with-rundir=RUNDIR], [specify run-time variable directory]),
1143   [RUNDIR=$withval])
1144 AC_DEFINE_UNQUOTED([RUNDIR],["${RUNDIR}"],[run-time variable directory])
1145 AC_SUBST(RUNDIR)
1146
1147 if test X"$prefix" = XNONE ; then
1148     usrprefix="$ac_default_prefix"
1149 else
1150     usrprefix=$prefix
1151 fi
1152
1153 RPMCONFIGDIR=
1154 AC_ARG_WITH([rpmconfigdir],
1155             [AS_HELP_STRING([--with-rpmconfigdir],
1156               [Set up rpm config not into /usr/lib/rpm @<:@default=check@:>@])],
1157             [RPMCONFIGDIR=$withval],
1158             [RPMCONFIGDIR="`echo ${libdir}/rpm`"])
1159 AC_SUBST(RPMCONFIGDIR)
1160
1161 AC_SUBST(OBJDUMP)
1162
1163 if test "$with_external_db" = no; then
1164     AC_CONFIG_SUBDIRS(db3)
1165 fi
1166
1167 AM_CONDITIONAL([WITH_INTERNAL_DB],[test "$with_external_db" = no])
1168 AM_CONDITIONAL([DOXYGEN],[test "$DOXYGEN" != no])
1169 AM_CONDITIONAL([HACKINGDOCS],[test "$with_hackingdocs" = yes])
1170
1171 AC_ARG_VAR([PYTHON_MODULENAME], [Name of the rpm python module. Defaults to 'rpm'])
1172 if test X"$PYTHON_MODULENAME" = X ; then
1173     PYTHON_MODULENAME="$PACKAGE"
1174 fi
1175 AC_DEFINE_UNQUOTED(PYTHON_MODULENAME, ["$PYTHON_MODULENAME"],[python module name])
1176 AC_SUBST(PYTHON_MODULENAME)
1177
1178 AC_PATH_PROG(AUTOM4TE,autom4te,:)
1179
1180 AC_SUBST([dirstamp],[\${am__leading_dot}dirstamp])
1181
1182 AC_CONFIG_FILES([Makefile
1183         rpmio/Makefile lib/Makefile build/Makefile sign/Makefile
1184         po/Makefile.in scripts/Makefile fileattrs/Makefile
1185         misc/Makefile
1186         doc/Makefile
1187         python/Makefile
1188         python/rpm/__init__.py
1189         python/rpm/transaction.py
1190         luaext/Makefile
1191         tests/Makefile
1192         plugins/Makefile
1193         python/setup.py
1194   ])
1195 AC_OUTPUT