2 AC_INIT(rpm, 4.8.0-beta1, rpm-maint@lists.rpm.org)
4 AC_CONFIG_SRCDIR([rpmqv.c])
5 AC_CONFIG_HEADERS([config.h])
6 AC_CONFIG_MACRO_DIR([m4])
8 AM_INIT_AUTOMAKE([1.10 foreign tar-ustar dist-bzip2 subdir-objects nostdinc])
10 AC_CONFIG_TESTDIR(tests)
12 AC_USE_SYSTEM_EXTENSIONS
16 dnl Checks for programs.
29 if test "$ac_cv_prog_cc_c99" = no; then
30 AC_MSG_ERROR([ISO C99 capable compiler required])
35 if test "$GCC" = yes; then
36 CFLAGS="$CFLAGS -fPIC -DPIC -D_REENTRANT -Wall -Wpointer-arith -Wmissing-prototypes -Wno-char-subscripts"
37 # XXX disabled for now due to noise from NSPR headers
38 # CFLAGS="$CFLAGS -Wstrict-prototypes"
39 cflags_to_try="-fno-strict-aliasing -fstack-protector -Wempty-body"
40 AC_MSG_CHECKING([supported compiler flags])
43 for flag in $cflags_to_try; do
44 CFLAGS="$CFLAGS $flag"
45 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[return 0;]])],[
47 RPMCFLAGS="$RPMCFLAGS $flag"
51 CFLAGS="$CFLAGS $RPMCFLAGS"
58 dnl look for POSIX chmod attributes
60 AC_MSG_CHECKING(POSIX chmod)
62 chmod 744 foo.chmodtest
63 chmod +X foo.chmodtest 2>/dev/null
64 a=`ls -l foo.chmodtest | awk '{print substr($1,1,10)}'`
66 if test "$a" = "-rwxr-xr-x"; then
68 FIXPERMS=a+rX,u+w,g-w,o-w
70 AC_MSG_RESULT(no (tell your OS vendor about GNU fileutils))
71 FIXPERMS=a+r,u+w,g-w,o-w
76 dnl see if we have a mkdir that supports `-p'.
78 AC_PATH_PROGS(RPM_MKDIR, mkdir, mkdir)
79 AC_MSG_CHECKING(if $RPM_MKDIR supports -p)
81 $RPM_MKDIR -p conftest/a 2>/dev/null
83 rmdir conftest/a 2>/dev/null
90 rmdir conftest 2>/dev/null
92 RPM_MKDIR_P="$RPM_MKDIR -p"
100 if test X"$RPM_MKDIR_P" = X0 ; then
102 RPM_MKDIR_P="`echo ${prefix}/lib/rpm/mkinstalldirs`"
107 dnl substitute this into config.h, so the C source picks it up.
109 AC_DEFINE_UNQUOTED(RPM_MKDIR_P, "${RPM_MKDIR_P}",
110 [A full path to a program, possibly with arguments, that will create a
111 directory and all necessary parent directories, ala 'mkdir -p'])
112 AC_SUBST(RPM_MKDIR_P)
114 dnl AM_DISABLE_SHARED
117 AC_CHECK_TOOL(AR, ar, :)
120 dnl use defaults if cross-compiling, otherwise use the default path.
122 if test "$cross_compiling" = "yes"; then
129 dnl Find some common programs
131 AC_PATH_PROG(__BZIP2, bzip2, /usr/bin/bzip2, $MYPATH)
132 AC_PATH_PROG(__CAT, cat, /bin/cat, $MYPATH)
133 AC_PATH_PROG(__CHGRP, chgrp, /bin/chgrp, $MYPATH)
134 AC_PATH_PROG(__CHMOD, chmod, /bin/chmod, $MYPATH)
135 AC_PATH_PROG(__CHOWN, chown, /bin/chown, $MYPATH)
136 AC_PATH_PROG(__CP, cp, /bin/cp, $MYPATH)
137 AC_PATH_PROG(__CPIO, cpio, /bin/cpio, $MYPATH)
138 AC_PATH_PROG(__CURL, curl, /usr/bin/curl, $MYPATH)
139 AC_PATH_PROG(__FILE, file, /usr/bin/file, $MYPATH)
140 AC_PATH_PROG(__GPG, gpg, /usr/bin/gpg, $MYPATH)
141 AC_PATH_PROG(__GREP, grep, /bin/grep, $MYPATH)
142 AC_PATH_PROG(__GZIP, gzip, /bin/gzip, $MYPATH)
143 AC_PATH_PROG(__UNZIP, unzip, /usr/bin/unzip, $MYPATH)
145 AC_PATH_PROG(__ID, id, /usr/bin/id, $MYPATH)
146 AC_MSG_CHECKING(checking whether id supports -u)
147 if ${__ID} -u 2>&1 > /dev/null ; then
151 __ID_U="%{__id} | %{__sed} 's/[[^=]]*=\\\\([[0-9]][[0-9]]*\\\\).*$/\\\\1/'"
156 AC_PATH_PROG(__INSTALL, install, /usr/bin/install, $MYPATH)
157 AC_PATH_PROG(__XZ, xz, /usr/bin/xz, $MYPATH)
158 AC_PATH_PROG(__MAKE, make, /usr/bin/make, $MYPATH)
159 AC_PATH_PROG(__MKDIR, mkdir, /bin/mkdir, $MYPATH)
160 AC_PATH_PROG(__MV, mv, /bin/mv, $MYPATH)
161 AC_PATH_PROG(__PATCH, patch, /usr/bin/patch, $MYPATH)
162 AC_MSG_CHECKING(old version of patch)
163 PATCHVERSION=`patch --version 2>&1`
165 if test "$PATCHVERSION" = "Patch version 2.1"; then
166 AC_DEFINE(HAVE_OLDPATCH_21, 1,
167 [Define if the patch call you'll be using is 2.1 or older])
168 AC_MSG_RESULT(patch older then 2.2 found)
170 AC_MSG_RESULT(patch later then 2.2 found)
173 AC_PATH_PROG(__PERL, perl, /usr/bin/perl, $MYPATH)
174 AC_PATH_PROG(__PGP, pgp, /usr/bin/pgp, $MYPATH)
175 AC_PATH_PROG(__PYTHON, python, /usr/bin/python, $MYPATH)
176 AC_PATH_PROG(__RM, rm, /bin/rm, $MYPATH)
177 AC_PATH_PROG(__RSH, rsh, /usr/bin/rsh, $MYPATH)
178 AC_PATH_PROG(__SED, sed, /bin/sed, $MYPATH)
179 AC_PATH_PROG(__SSH, ssh, /usr/bin/ssh, $MYPATH)
180 AC_PATH_PROG(__TAR, tar, /bin/tar, $MYPATH)
182 AC_PATH_PROG(__LD, ld, /usr/bin/ld, $MYPATH)
183 AC_PATH_PROG(__NM, nm, /usr/bin/nm, $MYPATH)
184 AC_PATH_PROG(__OBJCOPY, objcopy, /usr/bin/objcopy, $MYPATH)
185 AC_PATH_PROG(__OBJDUMP, objdump, /usr/bin/objdump, $MYPATH)
186 AC_PATH_PROG(__STRIP, strip, /usr/bin/strip, $MYPATH)
187 AC_PATH_PROG(__FAKECHROOT, fakechroot, /usr/bin/fakechroot, $MYPATH)
190 # Check for zlib library.
195 AC_CHECK_HEADERS([zlib.h],[
196 AS_IF([test -z "${WITH_ZLIB_LIB}"],[
197 for zlib in z gz ; do
198 AC_CHECK_LIB(${zlib}, gzread,
199 [WITH_ZLIB_LIB="-l${zlib}"; break])
202 dnl zlib-1.0.4 has not gzseek
203 AC_CHECK_LIB(${zlib}, gzseek, [AC_DEFINE(HAVE_GZSEEK, 1, [Define as 1 if your zlib has gzseek()])])
207 AC_SUBST(WITH_ZLIB_INCLUDE)
208 AC_SUBST(WITH_ZLIB_LIB)
211 # Check for bzip2 library.
213 AC_CHECK_HEADERS([bzlib.h],[
214 AC_CHECK_LIB(bz2, bzread, [WITH_BZ2_LIB=-lbz2],
216 AC_CHECK_LIB(bz2, BZ2_bzread,[
218 AC_DEFINE(HAVE_BZ2_1_0, 1, [Define as 1 if you bzip2 1.0])
222 AC_SUBST(WITH_BZ2_LIB)
225 # Check for lzma library.
227 AC_CHECK_HEADERS([lzma.h],[
228 AC_CHECK_LIB(lzma, lzma_easy_encoder, [WITH_LZMA_LIB=-llzma])
230 AC_SUBST(WITH_LZMA_LIB)
235 dnl Check for features
238 dnl Checks for libraries.
240 AC_CHECK_FUNC(setreuid, [], [
241 AC_CHECK_LIB(ucb, setreuid, [if echo $LIBS | grep -- -lucb >/dev/null ;then :; else LIBS="$LIBS -lc -lucb" USEUCB=y;fi])
244 AC_CHECK_FUNC(rand, [], [
245 AC_CHECK_LIB(rand, rand, [])
248 AC_CHECK_FUNC(getdomainname, [], [
249 AC_CHECK_LIB(nsl, getdomainname)
251 AC_CHECK_FUNC(socket, [], [
252 AC_CHECK_LIB(socket, socket)
255 AC_CHECK_HEADERS(error.h)
256 AC_CHECK_FUNCS(error)
258 AC_CHECK_HEADERS(poll.h)
260 AC_CHECK_HEADERS(pthread.h)
262 AC_CHECK_LIB(pthread, pthread_mutex_trylock, [], [
263 dnl OSF 5.0 has the the symbols prefixed with __ in libpthread.
264 AC_CHECK_LIB(pthread, __pthread_mutex_trylock, [], [
265 AC_CHECK_LIB(thread, mutex_lock)
269 AC_SEARCH_LIBS(aio_read, [c rt aio posix4])
271 AC_CHECK_FUNCS(vsnprintf snprintf)
273 dnl Temporary hack for MiNT. Some functions (writev, snprintf) are
274 dnl not in the libc but in libport (for political reasons). This check
275 dnl can hopefully be removed soon. Please use the default action
276 dnl for this macro (not LIBS=...), otherwise the check for dbopen
278 AC_CHECK_LIB(port, writev)
281 # Check for libelf library. Prefer external, otherwise none.
284 AC_CHECK_HEADER([libelf.h])
285 AC_CHECK_HEADERS([gelf.h], [
286 AC_CHECK_LIB(elf, gelf_getvernaux, [
287 AC_DEFINE(HAVE_LIBELF, 1, [Define to 1 if you have the 'elf' library (-lelf).])
288 WITH_LIBELF_LIB="-lelf"
292 AC_SUBST(WITH_LIBELF_INCLUDE)
293 AC_SUBST(WITH_LIBELF_LIB)
294 AM_CONDITIONAL(LIBELF,[test "$WITH_LIBELF" = yes])
296 AC_CHECK_HEADERS([dwarf.h], [
299 AM_CONDITIONAL(LIBDWARF,[test "$WITH_LIBDWARF" = yes])
302 # Check for NSS library.
303 # We need nss.h from NSS which needs nspr.h. Unfortunately both glibc and NSS
304 # have a header named nss.h... so make extra check for NSS's sechash.h
305 # which we use too and hopefully is slightly more unique to NSS.
308 AC_CHECK_HEADERS([nspr.h nss.h sechash.h], [], [
309 AC_MSG_ERROR([missing required NSPR / NSS header])
311 AC_CHECK_LIB(nss3, NSS_NoDB_Init, [
314 AC_MSG_ERROR([missing required NSS library 'nss3'])
316 AC_SUBST(WITH_NSS_INCLUDE)
317 AC_SUBST(WITH_NSS_LIB)
320 # Check for magic library.
324 AC_CHECK_HEADER([magic.h], [
325 AC_CHECK_LIB(magic, magic_open, [
327 WITH_MAGIC_LIB="-lmagic"
329 AC_MSG_ERROR([missing required library 'libmagic'])
332 AC_MSG_ERROR([missing required header magic.h])
335 AC_SUBST(WITH_MAGIC_INCLUDE)
336 AC_SUBST(WITH_MAGIC_LIB)
339 # Check for popt library.
343 AC_CHECK_HEADER([popt.h], [
344 AC_CHECK_LIB(popt, poptGetContext, [
346 WITH_POPT_LIB="-lpopt"
348 AC_MSG_ERROR([missing required library popt])
351 AC_MSG_ERROR([missing required header popt.h])
354 AC_SUBST(WITH_POPT_INCLUDE)
355 AC_SUBST(WITH_POPT_LIB)
358 # Process --with/without-external-db
359 AC_ARG_WITH(external_db, [AS_HELP_STRING([--with-external-db],[build against an external Berkeley db])],
360 [case "$with_external_db" in
362 *) AC_MSG_ERROR([invalid argument to --with-external-db]) ;;
364 [with_external_db=no])
366 case "$with_external_db" in
368 AC_CHECK_HEADERS([db.h],[
369 AC_CHECK_TYPE([db_threadid_t],[],
370 [AC_MSG_WARN([missing type db_threadid_t])],
373 AC_CHECK_LIB([db],[db_create],[],[
374 AC_MSG_ERROR([missing db_create in libdb])
376 AC_CHECK_LIB([db],[db_env_create],[],[
377 AC_MSG_ERROR([missing db_env_create in libdb])
379 AC_CHECK_LIB([db],[db_env_set_func_fsync],[],[
380 AC_MSG_ERROR([missing db_env_set_func_fsync in libdb])
382 AC_CHECK_LIB([db],[db_strerror],[],[
383 AC_MSG_ERROR([missing db_strerror in libdb])
388 AC_MSG_ERROR([missing required header db.h])
391 * ) # Fall back to internal db if available
392 if [ test -x db/dist/configure ]; then
393 AC_DEFINE(HAVE_DB_H, 1, [Define if you have the <db3/db.h> header file])
395 AC_MSG_ERROR([internal Berkeley DB directory not present, see INSTALL])
400 AC_SUBST([WITH_DB_LIB])
403 # Check for sqlite3 library.
404 AC_ARG_ENABLE(sqlite3, [AS_HELP_STRING([--enable-sqlite3],[enable sqlite3 support])],
405 [case "$enable_sqlite3" in
407 *) AC_MSG_ERROR([invalid argument to --enable-sqlite3])
412 WITH_SQLITE3_INCLUDE=
415 AS_IF([test "$enable_sqlite3" = yes],[
416 AC_CHECK_HEADERS([sqlite3.h],
417 [ AC_CHECK_LIB(sqlite3, sqlite3_open, [
418 WITH_SQLITE3_INCLUDE=
419 WITH_SQLITE3_LIB="-lsqlite3"
422 AC_MSG_ERROR([missing libsqlite3])
425 AC_MSG_ERROR([missing sqlite3.h])
429 AC_SUBST(WITH_SQLITE3_INCLUDE)
430 AC_SUBST(WITH_SQLITE3_LIB)
431 AM_CONDITIONAL([SQLITE3],[test "$WITH_SQLITE3" = yes])
435 dnl AmigaOS and IXEmul have a fork() dummy
438 echo "Building for AmigaOS: using vfork() instead of fork()";
439 CFLAGS="$CFLAGS -Dfork=vfork"
443 AM_GNU_GETTEXT_VERSION([0.16.1])
444 AM_GNU_GETTEXT([external])
446 dnl Checks for header files we can live without.
452 AC_CHECK_HEADERS(locale.h)
453 AC_CHECK_HEADERS(limits.h)
454 AC_CHECK_HEADERS(fcntl.h getopt.h grp.h memory.h netdb.h pwd.h utime.h)
456 AC_CHECK_HEADERS(sys/ipc.h sys/socket.h sys/select.h)
457 AC_CHECK_HEADERS(sys/types.h sys/stdtypes.h)
458 AC_CHECK_HEADERS(sys/mman.h sys/resource.h sys/utsname.h sys/wait.h)
460 AC_CHECK_HEADERS(netinet/in_systm.h)
461 AC_CHECK_HEADERS(mntent.h sys/mnttab.h sys/systemcfg.h)
462 AC_CHECK_HEADERS(sys/mount.h sys/mntctl.h sys/param.h sys/vmount.h)
463 AC_CHECK_HEADERS(libio.h)
464 AC_CHECK_HEADERS(err.h mcheck.h)
466 AC_CHECK_HEADERS(glob.h)
468 dnl statfs portability fiddles.
470 dnl We should really emulate/steal sections of the statfs and struct statfs
471 dnl checks from GNU fileutils.
473 AC_MSG_CHECKING(for struct statfs)
476 dnl this is easier than nesting AC_TRY_COMPILEs...
478 found_struct_statfs=no
480 if test X$found_struct_statfs = Xno ; then
481 dnl Solaris 2.6+ wants to use statvfs
482 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
483 #ifdef HAVE_SYS_TYPES_H
484 #include <sys/types.h>
486 #include <sys/statvfs.h> ]], [[struct statvfs sfs;]])],[AC_MSG_RESULT(in sys/statvfs.h)
487 AC_DEFINE(STATFS_IN_SYS_STATVFS, 1,
488 [statfs in <sys/statvfs.h> (for solaris 2.6+ systems)])
489 found_struct_statfs=yes],[])
492 if test X$found_struct_statfs = Xno ; then
493 dnl first try including sys/vfs.h
494 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
495 #ifdef HAVE_SYS_TYPES_H
496 #include <sys/types.h>
498 #include <sys/vfs.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/vfs.h)
499 AC_DEFINE(STATFS_IN_SYS_VFS, 1, [statfs in <sys/vfs.h> (for linux systems)])
500 found_struct_statfs=yes],[])
503 if test X$found_struct_statfs = Xno ; then
504 dnl ...next try including sys/mount.h
505 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
506 #ifdef HAVE_SYS_TYPES_H
507 #include <sys/types.h>
509 #ifdef HAVE_SYS_PARAM_H
510 #include <sys/param.h>
512 #include <sys/mount.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/mount.h)
513 AC_DEFINE(STATFS_IN_SYS_MOUNT, 1, [statfs in <sys/mount.h> (for Digital Unix 4.0D systems)])
514 found_struct_statfs=yes],[])
517 if test X$found_struct_statfs = Xno ; then
518 dnl ...still no joy. Try sys/statfs.h
519 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
520 #ifdef HAVE_SYS_TYPES_H
521 #include <sys/types.h>
523 #include <sys/statfs.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/statfs.h)
524 AC_DEFINE(STATFS_IN_SYS_STATFS, 1, [statfs in <sys/statfs.h> (for Irix 6.4 systems)])
525 found_struct_statfs=yes],[])
528 if test X$found_struct_statfs = Xno ; then
529 dnl ...no luck. Warn the user of impending doom.
530 AC_MSG_WARN(not found)
534 dnl if we found the struct, see if it has the f_bavail member. Some OSes
535 dnl don't, including IRIX 6.5+
537 if test X$found_struct_statfs = Xyes ; then
538 AC_MSG_CHECKING(for f_bavail member in struct statfs)
539 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
540 #ifdef HAVE_SYS_TYPES_H
541 #include <sys/types.h>
543 #if STATFS_IN_SYS_STATVFS
544 # include <sys/statvfs.h>
545 typedef struct statvfs STATFS_t;
547 typedef struct statfs STATFS_t;
548 # if STATFS_IN_SYS_VFS
549 # include <sys/vfs.h>
550 # elif STATFS_IN_SYS_MOUNT
551 # include <sys/mount.h>
552 # elif STATFS_IN_SYS_STATFS
553 # include <sys/statfs.h>
555 #endif ]], [[STATFS_t sfs;
556 sfs.f_bavail = 0;]])],[AC_MSG_RESULT(yes)
557 AC_DEFINE(STATFS_HAS_F_BAVAIL, 1, [Define if struct statfs has the f_bavail member])],[AC_MSG_RESULT(no)
561 if test X$found_struct_statfs = Xyes ; then
563 dnl now check to see if we have the 4-argument variant of statfs()
564 dnl this pretty much requires AC_RUN_IFELSE([AC_LANG_SOURCE([[]])],[],[],[])
566 AC_MSG_CHECKING([if statfs() requires 4 arguments])
567 AC_RUN_IFELSE([AC_LANG_SOURCE([[
568 #ifdef HAVE_SYS_TYPES_H
569 #include <sys/types.h>
571 #ifdef STATFS_IN_SYS_VFS
573 #elif STATFS_IN_SYS_MOUNT
574 #include <sys/mouht.h>
575 #elif STATFS_IN_SYS_STATFS
576 #include <sys/statfs.h>
580 exit (statfs(".", &sfs, sizeof(sfs), 0));
582 ]])],[AC_MSG_RESULT(yes)
583 AC_DEFINE(STAT_STATFS4, 1, [Define if the statfs() call takes 4 arguments])],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)
589 dnl look for libc features
591 AC_MSG_CHECKING(if <netdb.h> defines h_errno)
592 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[printf("%d",h_errno)]])],[PROVIDES_ERRNO=yes],[])
593 AC_MSG_RESULT($PROVIDES_ERRNO)
594 if test $PROVIDES_ERRNO = yes; then
595 AC_DEFINE(HAVE_HERRNO, 1, [ Define as 1 if <netdb.h> defines h_errno])
598 dnl If a system doesn't have S_IFSOCK, define it as 0 which will
599 dnl make S_ISSOCK always return false (nice, eh?)
600 AC_MSG_CHECKING(if <sys/stat.h> defines S_IFSOCK)
601 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[printf("%d", S_IFSOCK)]])],[HAS_S_IFSOCK=yes],[HAS_S_IFSOCK=no])
602 AC_MSG_RESULT($HAS_S_IFSOCK)
603 if test $HAS_S_IFSOCK = yes; then
604 AC_DEFINE(HAVE_S_IFSOCK, 1, [Define as 1 if <sys/stat.h> defines S_IFSOCK])
607 dnl Some Unix's are missing S_ISLNK, S_ISSOCK
608 AC_MSG_CHECKING(if <sys/stat.h> defines S_ISLNK)
609 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[printf("%d", S_ISLNK(0755))]])],[HAS_S_ISLNK=yes],[HAS_S_ISLNK=no])
610 AC_MSG_RESULT($HAS_S_ISLNK)
611 if test $HAS_S_ISLNK = yes; then
612 AC_DEFINE(HAVE_S_ISLNK, 1, [Define as 1 if <sys/stat.h> defines S_ISLNK])
615 AC_MSG_CHECKING(if <sys/stat.h> defines S_ISSOCK)
616 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[printf("%d", S_ISSOCK(0755))]])],[HAS_S_ISSOCK=yes],[HAS_S_ISSOCK=no])
617 AC_MSG_RESULT($HAS_S_ISSOCK)
618 if test $HAS_S_ISSOCK = yes; then
619 AC_DEFINE(HAVE_S_ISSOCK, 1, [Define as 1 if <sys/stat.h> defines S_ISSOCK])
622 dnl Check for missing typedefs
628 dnl Checks for library functions.
630 dnl XXX don't want to re-enable code that's been unused for years at this
631 dnl point, but should offer good performance improvements, check after
635 AC_CHECK_FUNCS(getaddrinfo getnameinfo inet_aton)
636 AC_CHECK_FUNCS(mtrace)
637 AC_CHECK_FUNCS(strndup strerror)
639 AC_REPLACE_FUNCS(basename getcwd getwd)
640 AC_REPLACE_FUNCS(putenv realpath setenv)
641 AC_REPLACE_FUNCS(stpcpy stpncpy strcspn)
642 AC_REPLACE_FUNCS(strdup strtol strtoul strspn strstr)
644 AC_CHECK_FUNCS(__secure_getenv)
646 AC_CHECK_FUNCS(regcomp)
650 AC_CHECK_FUNCS([mkstemp], [], [AC_MSG_ERROR([mkstemp() is required by rpm])])
652 dnl XXX Glob *is* broken on linux with libc5, solaris and possibly aix when
653 dnl %files gets something like
654 dnl /usr/*/locale/*/LC_MESSAGES/*.mo
655 dnl (Note: more than one asterisk in glob pattern.)
657 dnl XXX Glob is "fixed" in glibc-2.3.3-61, but the cost is that
658 dnl dangling symlinks are no longer globbed. Always use the internal glob.
659 AC_DEFINE(USE_GNU_GLOB, 1, [Use the included glob.c?])
663 dnl check if python is requested
664 AC_ARG_ENABLE(python, [AS_HELP_STRING([--enable-python],[build rpm python bindings])],
665 [case "$enable_python" in
667 *) AC_MSG_ERROR([invalid argument to --enable-python])
672 AS_IF([test "$enable_python" = yes],[
673 AM_PATH_PYTHON([2.6],[
674 WITH_PYTHON_INCLUDE=`${PYTHON} -c 'from distutils.sysconfig import *; import sys; sys.stdout.write(get_python_inc())'`
675 WITH_PYTHON_SUBPACKAGE=1
676 save_CPPFLAGS="$CPPFLAGS"
677 CPPFLAGS="$CPPFLAGS -I$WITH_PYTHON_INCLUDE"
678 AC_CHECK_HEADER([Python.h],[],
679 [AC_MSG_ERROR([missing Python.h])
681 CPPFLAGS="$save_CPPFLAGS"
683 AC_SEARCH_LIBS([Py_Main],[python${PYTHON_VERSION} python],[
684 WITH_PYTHON_LIB="$ac_res"
685 ],[AC_MSG_ERROR([missing python library])
692 WITH_PYTHON_SUBPACKAGE=0
695 AC_SUBST(WITH_PYTHON_INCLUDE)
696 AC_SUBST(WITH_PYTHON_LIB)
698 AM_CONDITIONAL(PYTHON,[test "$WITH_PYTHON_SUBPACKAGE" = 1])
700 AC_PATH_PROG(DOXYGEN, doxygen, no)
702 dnl Only build internal API + source hacking docs on request
704 AC_ARG_WITH(hackingdocs, [AS_HELP_STRING([--with-hackingdocs],[build rpm hacking docs])],,[with_hackingdocs=no])
706 case "$with_hackingdocs" in
708 AS_IF([test "$DOXYGEN" = no],[with_hackingdocs=no],[with_hackingdocs=no])
711 AS_IF([test "$DOXYGEN" = no],
712 [AC_MSG_ERROR([rpm hacking docs eeds doxygen in PATH])])
715 AC_CHECK_PROG(HAVE_DOT,[dot],[YES],[NO])
718 AC_ARG_WITH(selinux, [AS_HELP_STRING([--with-selinux],[build with selinux support])],
719 [case "$with_selinux" in
721 *) AC_MSG_ERROR([invalid argument to --with-selinux])
726 AS_IF([test "$with_selinux" = yes],[
727 AC_CHECK_HEADER([selinux/selinux.h],[
728 AC_CHECK_LIB(selinux,[is_selinux_enabled],[with_selinux=yes],[
729 AC_MSG_ERROR([--with-selinux given, but libselinux not found])])
731 AC_MSG_ERROR([--with-selinux given, but selinux/selinux.h not found])
735 AS_IF([test "$with_selinux" = yes],[
736 AC_DEFINE(WITH_SELINUX, 1, [Build with selinux support?])
737 WITH_SELINUX_LIB="-lselinux"
739 AC_SUBST(WITH_SELINUX_LIB)
740 AM_CONDITIONAL(SELINUX,[test "$with_selinux" = yes])
744 AC_ARG_WITH(cap, [AS_HELP_STRING([--with-cap],[build with capability support])],
747 *) AC_MSG_ERROR([invalid argument to --with-cap])
752 AS_IF([test "$with_cap" = yes],[
753 AC_CHECK_HEADER([sys/capability.h],[
754 AC_CHECK_LIB(cap,[cap_get_file], [
757 AC_CHECK_LIB(cap,[cap_compare], [
758 AC_DEFINE(HAVE_CAP_COMPARE, 1, [Have cap_compare function?])
762 AC_MSG_ERROR([--with-cap given, but libcap not found])])
764 AC_MSG_ERROR([--with-cap given, but sys/capability.h not found])
768 AS_IF([test "$with_cap" = yes],[
769 AC_DEFINE(WITH_CAP, 1, [Build with capability support?])
772 AC_SUBST(WITH_CAP_LIB)
773 AM_CONDITIONAL(CAP,[test "$with_cap" = yes])
776 AC_ARG_WITH(acl, [AS_HELP_STRING([--with-acl],[build with acl support])],
779 *) AC_MSG_ERROR([invalid argument to --with-acl])
784 AS_IF([test "$with_acl" = yes],[
785 dnl verification uses non-portable acl_equiv_mode()
786 AC_CHECK_HEADER([acl/libacl.h],[
787 AC_CHECK_LIB(acl,[acl_equiv_mode],[with_acl=yes],[
788 AC_MSG_ERROR([--with-acl given, but libacl not found or not suitable])])
790 AC_MSG_ERROR([--with-acl given, but acl/libacl.h not found])
794 AS_IF([test "$with_acl" = yes],[
795 AC_DEFINE(WITH_ACL, 1, [Build with acl support?])
798 AC_SUBST(WITH_ACL_LIB)
799 AM_CONDITIONAL(ACL,[test "$with_acl" = yes])
803 AC_ARG_WITH(lua, [AS_HELP_STRING([--with-lua],[build with lua support])],,[with_lua=yes])
804 AS_IF([test "$with_lua" = yes],[
805 AC_CHECK_HEADER([lua.h],[
806 AC_CHECK_LIB(lua,[luaL_openlibs],[with_lua=yes],[
807 AC_MSG_ERROR([--with-lua given, but liblua not found])
811 AC_MSG_ERROR([--with-lua given, but lua.h not found])
815 AS_IF([test "$with_lua" = yes],[
816 AC_DEFINE(WITH_LUA, 1, [Build with lua support?])
818 WITH_LUA_LIB="-llua -lm"
820 AC_SUBST(WITH_LUA_LIB)
821 AC_SUBST(WITH_LUA_INCLUDE)
822 AM_CONDITIONAL(WITH_LUAEXT,[test "$with_lua" = yes])
825 AC_ARG_WITH(dmalloc, [AS_HELP_STRING([--with-dmalloc],[build with dmalloc debugging support])])
826 if test "$with_dmalloc" = yes ; then
827 AC_DEFINE(DMALLOC, 1, [Build with dmalloc support?])
828 LIBS="$LIBS -ldmalloc"
831 AC_CHECK_FUNCS(setlocale)
833 AC_CHECK_FUNCS(getpassphrase)
835 AC_CHECK_FUNC(getmntent, AC_DEFINE(HAVE_GETMNTENT, 1, [Define if you have the getmntent() function]), [
836 AC_CHECK_FUNC(mntctl, AC_DEFINE(HAVE_MNTCTL, 1, [Define as 1 if you have mntctl() (only aix?)]),[
837 AC_CHECK_FUNC(getmntinfo, AC_DEFINE(HAVE_GETMNTINFO, 1, [Define as 1 if you have getmntinfo() (Mac OS X)]), [
838 AC_CHECK_FUNC(getmntinfo_r, AC_DEFINE(HAVE_GETMNTINFO_R, 1, [Define as 1 if you have getmntinfo_r() (only osf?)]), [
839 AC_CHECK_LIB(c_r, getmntinfo_r, [LIBS="$LIBS -lc_r";
840 AC_DEFINE(HAVE_GETMNTINFO_R, 1, [Define as 1 if you have getmntinfo_r() (only osf?)])], [
841 AC_DEFINE([USE_GETMNTENT], 1, [Defined if getmntent replacement is used])
842 AC_LIBOBJ(getmntent)])
848 AC_CHECK_FUNC(lchown,
849 [__CHOWN_RHF="%{__chown} -Rhf"
850 __CHGRP_RHF="%{__chgrp} -Rhf"
851 AC_DEFINE(HAVE_LCHOWN, 1, [Define as 1 if you have lchown()])],
852 [__CHOWN_RHF="%{__chown} -Rf"
853 __CHGRP_RHF="%{__chgrp} -Rf"
854 dnl Does chown() follow symlinks? This should be a good enough test.
855 AC_MSG_CHECKING(whether chown() follows symlinks)
856 AC_ARG_ENABLE([broken-chown],
857 [AS_HELP_STRING([--enable-broken-chown],[this system's chown follows symbolic links])],
858 result=$enableval, result=unknown)
859 if echo "$build" | ${EGREP} "(aix)|(hpux)|(linux)" > /dev/null ; then
861 elif echo "$build" | ${EGREP} "(nextstep)" > /dev/null ; then
864 if test $result = unknown; then
865 if test `${__ID} | cut -f2 -d\= | cut -f1 -d\(` = 0; then
870 if test `ls -l foo | awk '{print $3}'` != "root"; then
877 AC_MSG_CHECKING((cannot check by non-root user))
882 AC_MSG_RESULT($result)
883 if test $result = yes; then
884 AC_DEFINE(CHOWN_FOLLOWS_SYMLINK, 1, [Define as 1 if chown() follows symlinks and you don't have lchown()])
886 AC_SUBST(__CHOWN_RHF)
887 AC_SUBST(__CHGRP_RHF)
889 if echo "$host_os" | grep sco > /dev/null; then
890 echo "hacking things up for sco"
891 AC_DEFINE(NEED_STRINGS_H, 1, [Define as one if we need to include <strings.h> (along with <string.h>)])
892 AC_DEFINE(HAVE_STRUCT_MNTTAB, 1,
893 [Define as 1 if you have "struct mnttab" (only sco?)])
894 elif echo "$host_os" | grep sunos > /dev/null; then
895 echo "hacking things up for sunos"
896 CFLAGS="$CFLAGS -D__USE_FIXED_PROTOTYPES__"
897 AC_DEFINE(NEED_STRINGS_H, 1, [Define as one if we need to include <strings.h> (along with <string.h>)])
898 AC_DEFINE(NEED_MYREALLOC, 1, [Define as 1 if we need myrealloc])
903 # get rid of the 4-th tuple, if config.guess returned "linux-gnu" for host_os
906 if echo "$host_os" | grep '.*-gnulibc1' > /dev/null ; then
907 host_os=`echo "${host_os}" | sed 's/-gnulibc1$//'`
909 if echo "$host_os" | grep '.*-gnueabi' > /dev/null ; then
910 host_os=`echo "${host_os}" | sed 's/-gnueabi$//'`
913 if echo "$host_os" | grep '.*-gnu' > /dev/null ; then
914 host_os=`echo "${host_os}" | sed 's/-gnu$//'`
918 host_os_exact="${host_os}"
919 host_os_major=`echo "${host_os}" | sed 's/\..*$//'`
920 host_os_noversion=`echo "${host_os}" | sed 's/[0-9]*\..*$//'`
923 rm -f ./find-provides
924 if test -f ${srcdir}/autodeps/${host_cpu}-${host_os_exact}.prov ; then
925 echo "using ${srcdir}/autodeps/${host_cpu}-${host_os_exact}.prov for automatic provides generation"
926 ln -s ${srcdir}/autodeps/${host_cpu}-${host_os_exact}.prov ./find-provides
927 elif test -f ${srcdir}/autodeps/${host_os_exact}.prov ; then
928 echo "using ${srcdir}/autodeps/${host_os_exact}.prov for automatic provides generation"
929 ln -s ${srcdir}/autodeps/${host_os_exact}.prov ./find-provides
930 elif test -f ${srcdir}/autodeps/${host_os_major}.prov ; then
931 echo "using ${srcdir}/autodeps/${host_os_major}.prov for automatic provides generation"
932 ln -s ${srcdir}/autodeps/${host_os_major}.prov ./find-provides
933 elif test -f ${srcdir}/autodeps/${host_os_noversion}.prov ; then
934 echo "using ${srcdir}/autodeps/${host_os_noversion}.prov for automatic provides generation"
935 ln -s ${srcdir}/autodeps/${host_os_noversion}.prov ./find-provides
937 echo "*** no default provides information is available for ${host_os_noversion}"
938 ln -s ${srcdir}/autodeps/none ./find-provides
941 rm -f ./find-requires
942 if test -f ${srcdir}/autodeps/${host_cpu}-${host_os_exact}.req ; then
943 echo "using ${srcdir}/autodeps/${host_cpu}-${host_os_exact}.req for automatic requires generation"
944 ln -s ${srcdir}/autodeps/${host_cpu}-${host_os_exact}.req ./find-requires
945 elif test -f ${srcdir}/autodeps/${host_os_exact}.req ; then
946 echo "using ${srcdir}/autodeps/${host_os_exact}.req for automatic requires generation"
947 ln -s ${srcdir}/autodeps/${host_os_exact}.req ./find-requires
948 elif test -f ${srcdir}/autodeps/${host_os_major}.req ; then
949 echo "using ${srcdir}/autodeps/${host_os_major}.req for automatic requires generation"
950 ln -s ${srcdir}/autodeps/${host_os_major}.req ./find-requires
951 elif test -f ${srcdir}/autodeps/${host_os_noversion}.req ; then
952 echo "using ${srcdir}/autodeps/${host_os_noversion}.req for automatic requires generation"
953 ln -s ${srcdir}/autodeps/${host_os_noversion}.req ./find-requires
955 echo "*** no default requires information is available for ${host_os_noversion}"
956 ln -s ${srcdir}/autodeps/none ./find-requires
959 dnl Determine the canonical arch-vendor-os for the host machine
960 case "${host_cpu}" in
961 *86) RPMCANONCOLOR=0; RPMCANONARCH=i386 ;;
962 ia32e*) RPMCANONCOLOR=3; RPMCANONARCH=ia32e ;;
963 amd64*) RPMCANONCOLOR=3; RPMCANONARCH=amd64 ;;
964 x86_64*) RPMCANONCOLOR=3; RPMCANONARCH=x86_64 ;;
965 alpha*) RPMCANONCOLOR=0; RPMCANONARCH=alpha ;;
966 sparc64*) RPMCANONCOLOR=3; RPMCANONARCH=sparc64 ;;
967 sparc*) RPMCANONCOLOR=3; RPMCANONARCH=sparc ;;
968 ia64*) RPMCANONCOLOR=2; RPMCANONARCH=ia64 ;;
969 s390x*) RPMCANONCOLOR=3; RPMCANONARCH=s390x ;;
970 s390*) RPMCANONCOLOR=0; RPMCANONARCH=s390 ;;
971 powerpc64*|ppc64*) RPMCANONCOLOR=3; RPMCANONARCH=ppc64 ;;
972 powerpc*|ppc*) RPMCANONCOLOR=0; RPMCANONARCH=ppc ;;
973 arm*) RPMCANONCOLOR=0; RPMCANONARCH=arm ;;
974 mipsel*) RPMCANONCOLOR=0; RPMCANONARCH=mipsel ;;
975 mips*) RPMCANONCOLOR=0; RPMCANONARCH=mips ;;
976 m68k*) RPMCANONCOLOR=0; RPMCANONARCH=m68k ;;
977 sh3*) RPMCANONCOLOR=0; RPMCANONARCH=sh3 ;;
978 sh4*) RPMCANONCOLOR=0; RPMCANONARCH=sh4 ;;
979 *) RPMCANONCOLOR=0; RPMCANONARCH=unknown ;;
981 case "${host_os_noversion}" in
982 mint) RPMCANONARCH=m68kmint ;;
984 RPMCANONVENDOR="$build_vendor"
985 case "${build_vendor}" in
986 unknown|pc|ibm|redhat|pld|mandrake|conectiva|lvr|yellowdog|caos|suse)
987 test -f /etc/redhat-release && RPMCANONVENDOR=redhat
988 test -f /etc/SuSE-release && RPMCANONVENDOR=suse
989 test -f /etc/pld-release && RPMCANONVENDOR=pld
990 test -f /etc/mandrake-release && RPMCANONVENDOR=mandrake
991 test -f /etc/conectiva-release && RPMCANONVENDOR=conectiva
992 test -f /etc/lvr-release && RPMCANONVENDOR=lvr
993 test -f /etc/yellowdog-release && RPMCANONVENDOR=yellowdog
994 test -f /etc/caos-release && RPMCANONVENDOR=caos
997 RPMCANONOS="$host_os_noversion"
998 RPMCANONGNU="$host_os_gnu"
999 AC_SUBST(RPMCANONCOLOR)
1000 AC_SUBST(RPMCANONARCH)
1001 AC_SUBST(RPMCANONVENDOR)
1002 AC_SUBST(RPMCANONOS)
1003 AC_SUBST(RPMCANONGNU)
1004 AC_DEFINE_UNQUOTED([RPMCANONVENDOR],["${RPMCANONVENDOR}"],[canonical vendor])
1006 if test X"$prefix" = XNONE ; then
1007 usrprefix="$ac_default_prefix"
1012 RPMCONFIGDIR="`echo ${usrprefix}/lib/rpm`"
1013 AC_SUBST(RPMCONFIGDIR)
1017 if test "$with_external_db" = no; then
1018 AC_CONFIG_SUBDIRS(db3)
1021 AM_CONDITIONAL([WITH_INTERNAL_DB],[test "$with_external_db" = no])
1022 AM_CONDITIONAL([DOXYGEN],[test "$DOXYGEN" != no])
1023 AM_CONDITIONAL([HACKINGDOCS],[test "$with_hackingdocs" = yes])
1025 AC_PATH_PROG(AUTOM4TE,autom4te,:)
1027 AS_IF([test "$ac_cv_header_stdint_h" = "yes"],[
1028 AC_DEFINE([__RPM_USES_STDINT_H__],[1],[if rpm uses stdint.h])
1031 AC_SUBST([dirstamp],[\${am__leading_dot}dirstamp])
1033 AC_CONFIG_FILES([Makefile
1034 rpmio/Makefile lib/Makefile build/Makefile
1035 po/Makefile.in scripts/Makefile