2 AC_INIT(rpm, 4.4.90, rpm-maint@lists.rpm.org)
4 AC_CONFIG_SRCDIR([rpmqv.c])
5 AM_CONFIG_HEADER([config.h])
7 AM_INIT_AUTOMAKE([1.10 foreign tar-ustar dist-bzip2 subdir-objects nostdinc])
9 AC_CONFIG_TESTDIR(tests)
16 dnl Checks for programs.
29 if test "$GCC" = yes; then
30 CFLAGS="$CFLAGS -fPIC -DPIC -D_GNU_SOURCE -D_REENTRANT -Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes -Wno-char-subscripts"
31 cflags_to_try="-fno-strict-aliasing"
32 AC_MSG_CHECKING([supported compiler flags])
35 for flag in $cflags_to_try; do
36 CFLAGS="$CFLAGS $flag"
37 AC_TRY_COMPILE(, [return 0;], [
39 RPMCFLAGS="$RPMCFLAGS $flag"
43 CFLAGS="$CFLAGS $RPMCFLAGS"
47 AC_PROG_GCC_TRADITIONAL
50 dnl Does this platform require array notation to assign to a va_list?
51 dnl If cross-compiling, we assume va_list is "normal". If this breaks
52 dnl you, set ac_cv_valistisarray=true and maybe define HAVE_VA_LIST_AS_ARRAY
53 dnl also just to be sure.
54 AC_MSG_CHECKING(whether va_list assignments need array notation)
55 AC_CACHE_VAL(ac_cv_valistisarray,
56 [AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
58 void foo(int i, ...) {
62 if (va_arg(ap2, int) != 123 || va_arg(ap1, int) != 123)
64 va_end(ap1); va_end(ap2);
66 int main() { foo(0, 123); return(0); }]])],[ac_cv_valistisarray=false],[ac_cv_valistisarray=true],[ac_cv_valistisarray=false])])
68 if test "$ac_cv_valistisarray" = true ; then
69 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY, 1,
70 [Define as 1 if your va_list type is an array])
80 export RPMUSER RPMUID RPMGROUP RPMGID
87 dnl This now uses libtool. Put
88 dnl LDFLAGS_STATIC="-all"
89 dnl to attempt static executables using libtool. Otherwise
92 AC_MSG_CHECKING(flag used by libtool to link rpm)
93 if test X"$GCC" = Xyes ; then
95 *-*-linux*) LDFLAGS_STATIC="-all-static" ;;
96 *-*-solaris*) LDFLAGS_STATIC="-static";;
97 *-*-hpux*) LDFLAGS_STATIC="-static";;
98 *-*-darwin*) LDFLAGS_STATIC="";; # Mac OS X does not do static binaries.
99 *-*-sysv5uw*) LDFLAGS_STATUS="-static";; # Unixware has no shared libthread.
100 *-*-*) LDFLAGS_STATIC="";;
102 elif test X"$CC" = Xcc ; then
104 *-*-linux*) LDFLAGS_STATIC="-all-static";;
105 *-*-freebsd*) LDFLAGS_STATIC="-all-static";;
106 *-*-osf*) LDFLAGS_STATIC="";; # OSF5 has no shared pthreads libs
107 *-*-aix*) LDFLAGS_STATIC="-static";; # -Wl,-bnso doesn't seem to work...
108 *-*-hpux*) LDFLAGS_STATIC="-static";;
109 *-*-solaris*) LDFLAGS_STATIC="-static";;
110 *-*-irix*) LDFLAGS_STATIC="-static";; #should be -non_shared, but can't
111 # link because of crt1.o then.
112 *-*-ultrix*) LDFLAGS_STATIC="-all-static";; #ultrix doesn't have shared libs.
113 *-*-*) LDFLAGS_STATIC=""
116 Unable to guess what option to pass to $CC to generate a static
117 executable. You will need to set the LDFLAGS_STATIC macro in Makefile.inc to
118 the appropriate argument(s) if you want to build a static rpm executable.
124 # just link it dynamically
127 LDFLAGS_STATIC="${LDFLAGS} ${LDFLAGS_STATIC}" # libtool format
128 AC_MSG_RESULT($LDFLAGS_STATIC)
129 AC_SUBST(LDFLAGS_STATIC)
132 dnl look for POSIX chmod attributes
134 AC_MSG_CHECKING(POSIX chmod)
136 chmod 744 foo.chmodtest
137 chmod +X foo.chmodtest 2>/dev/null
138 a=`ls -l foo.chmodtest | awk '{print $1}'`
140 if test "$a" = "-rwxr-xr-x"; then
142 FIXPERMS=a+rX,u+w,g-w,o-w
144 AC_MSG_RESULT(no (tell your OS vendor about GNU fileutils))
145 FIXPERMS=a+r,u+w,g-w,o-w
150 dnl see if we have a mkdir that supports `-p'.
152 AC_PATH_PROGS(RPM_MKDIR, mkdir, mkdir)
153 AC_MSG_CHECKING(if $RPM_MKDIR supports -p)
155 $RPM_MKDIR -p conftest/a 2>/dev/null
156 if test $? = 0 ; then
157 rmdir conftest/a 2>/dev/null
158 if test $? = 0 ; then
164 rmdir conftest 2>/dev/null
165 if test $? = 0 ; then
166 RPM_MKDIR_P="$RPM_MKDIR -p"
174 if test X"$RPM_MKDIR_P" = X0 ; then
176 RPM_MKDIR_P="`echo ${prefix}/lib/rpm/mkinstalldirs`"
181 dnl substitute this into config.h, so the C source picks it up.
183 AC_DEFINE_UNQUOTED(RPM_MKDIR_P, "${RPM_MKDIR_P}",
184 [A full path to a program, possibly with arguments, that will create a
185 directory and all necessary parent directories, ala 'mkdir -p'])
186 AC_SUBST(RPM_MKDIR_P)
190 dnl This test must precede tests of compiler characteristics like
191 dnl that for the inline keyword, since it may change the degree to
192 dnl which the compiler supports such features.
195 dnl AM_DISABLE_SHARED
198 AC_CHECK_TOOL(AR, ar, :)
201 dnl use defaults if cross-compiling, otherwise use the default path.
203 if test "$cross_compiling" = "yes"; then
210 dnl Find some common programs
212 AC_PATH_PROG(__BZIP2, bzip2, /usr/bin/bzip2, $MYPATH)
213 AC_PATH_PROG(__CAT, cat, /bin/cat, $MYPATH)
214 AC_PATH_PROG(__CHGRP, chgrp, /bin/chgrp, $MYPATH)
215 AC_PATH_PROG(__CHMOD, chmod, /bin/chmod, $MYPATH)
216 AC_PATH_PROG(__CHOWN, chown, /bin/chown, $MYPATH)
217 AC_PATH_PROG(__CP, cp, /bin/cp, $MYPATH)
218 AC_PATH_PROG(__CPIO, cpio, /bin/cpio, $MYPATH)
219 AC_PATH_PROG(__CURL, curl, /usr/bin/curl, $MYPATH)
220 AC_PATH_PROG(__FILE, file, /usr/bin/file, $MYPATH)
221 AC_PATH_PROG(__GPG, gpg, /usr/bin/gpg, $MYPATH)
222 AC_PATH_PROG(__GREP, grep, /bin/grep, $MYPATH)
223 AC_PATH_PROG(__GZIP, gzip, /bin/gzip, $MYPATH)
224 AC_PATH_PROG(__UNZIP, unzip, /usr/bin/unzip, $MYPATH)
226 AC_PATH_PROG(__ID, id, /usr/bin/id, $MYPATH)
227 AC_MSG_CHECKING(checking whether id supports -u)
228 if ${__ID} -u 2>&1 > /dev/null ; then
232 __ID_U="%{__id} | %{__sed} 's/[[^=]]*=\\\\([[0-9]][[0-9]]*\\\\).*$/\\\\1/'"
237 AC_PATH_PROG(__INSTALL, install, /usr/bin/install, $MYPATH)
238 AC_PATH_PROG(__LZMA, lzma, /usr/bin/lzma, $MYPATH)
239 AC_PATH_PROG(__MAKE, make, /usr/bin/make, $MYPATH)
240 AC_PATH_PROG(__MKDIR, mkdir, /bin/mkdir, $MYPATH)
241 AC_PATH_PROG(__MV, mv, /bin/mv, $MYPATH)
242 AC_PATH_PROG(__PATCH, patch, /usr/bin/patch, $MYPATH)
243 AC_MSG_CHECKING(old version of patch)
244 PATCHVERSION=`patch --version 2>&1`
246 if test "$PATCHVERSION" = "Patch version 2.1"; then
247 AC_DEFINE(HAVE_OLDPATCH_21, 1,
248 [Define if the patch call you'll be using is 2.1 or older])
249 AC_MSG_RESULT(patch older then 2.2 found)
251 AC_MSG_RESULT(patch later then 2.2 found)
254 AC_PATH_PROG(__PERL, perl, /usr/bin/perl, $MYPATH)
255 AC_PATH_PROG(__PGP, pgp, /usr/bin/pgp, $MYPATH)
256 AC_PATH_PROG(__PYTHON, python, /usr/bin/python, $MYPATH)
257 AC_PATH_PROG(__RM, rm, /bin/rm, $MYPATH)
258 AC_PATH_PROG(__RSH, rsh, /usr/bin/rsh, $MYPATH)
259 AC_PATH_PROG(__SED, sed, /bin/sed, $MYPATH)
260 AC_PATH_PROG(__SSH, ssh, /usr/bin/ssh, $MYPATH)
261 AC_PATH_PROG(__TAR, tar, /bin/tar, $MYPATH)
263 AC_PATH_PROG(__LD, ld, /usr/bin/ld, $MYPATH)
264 AC_PATH_PROG(__NM, nm, /usr/bin/nm, $MYPATH)
265 AC_PATH_PROG(__OBJCOPY, objcopy, /usr/bin/objcopy, $MYPATH)
266 AC_PATH_PROG(__OBJDUMP, objdump, /usr/bin/objdump, $MYPATH)
267 AC_PATH_PROG(__STRIP, strip, /usr/bin/strip, $MYPATH)
273 *-*-solaris*) LIBS="$LIBS -L$l -R$l $*";;
274 *) LIBS="$LIBS -L$l $*";;
279 # Check for zlib library.
284 AC_CHECK_HEADERS([zlib.h],[
285 AS_IF([test -z "${WITH_ZLIB_LIB}"],[
286 for zlib in z gz ; do
287 AC_CHECK_LIB(${zlib}, gzread,
288 [WITH_ZLIB_LIB="-l${zlib}"; break])
291 dnl zlib-1.0.4 has not gzseek
292 AC_CHECK_LIB(${zlib}, gzseek, [AC_DEFINE(HAVE_GZSEEK, 1, [Define as 1 if your zlib has gzseek()])])
296 AC_SUBST(WITH_ZLIB_INCLUDE)
297 AC_SUBST(WITH_ZLIB_LIB)
300 # Check for bzip2 library.
302 AC_CHECK_HEADERS([bzlib.h],[
303 AC_CHECK_LIB(bz2, bzread, [WITH_BZ2_LIB=-lbz2],
305 AC_CHECK_LIB(bz2, BZ2_bzread,[
307 AC_DEFINE(HAVE_BZ2_1_0, 1, [Define as 1 if you bzip2 1.0])
311 AC_SUBST(WITH_BZ2_LIB)
315 AC_MSG_CHECKING(for /usr/ucblib in LIBS)
316 if test -d /usr/ucblib ; then
317 if test "$build" = "mips-sni-sysv4" ; then
318 addlib /usr/ccs/lib -lc
329 dnl Check for features
332 dnl Checks for libraries.
334 AC_CHECK_FUNC(setreuid, [], [
335 AC_CHECK_LIB(ucb, setreuid, [if echo $LIBS | grep -- -lucb >/dev/null ;then :; else LIBS="$LIBS -lc -lucb" USEUCB=y;fi])
338 AC_CHECK_FUNC(rand, [], [
339 AC_CHECK_LIB(rand, rand, [])
342 AC_CHECK_FUNC(getdomainname, [], [
343 AC_CHECK_LIB(nsl, getdomainname)
345 AC_CHECK_FUNC(socket, [], [
346 AC_CHECK_LIB(socket, socket)
349 AC_CHECK_HEADERS(error.h)
350 AC_CHECK_FUNCS(error)
352 AC_CHECK_HEADERS(poll.h)
354 AC_CHECK_HEADERS(pthread.h)
356 AC_CHECK_LIB(pthread, pthread_mutex_trylock, [], [
357 dnl OSF 5.0 has the the symbols prefixed with __ in libpthread.
358 AC_CHECK_LIB(pthread, __pthread_mutex_trylock, [], [
359 AC_CHECK_LIB(thread, mutex_lock)
363 AC_SEARCH_LIBS(aio_read, [c rt aio posix4])
365 dnl Better not use fchmod at all.
366 AC_CHECK_FUNC(fchmod)
368 AC_CHECK_FUNCS(vsnprintf snprintf)
370 dnl Temporary hack for MiNT. Some functions (writev, snprintf) are
371 dnl not in the libc but in libport (for political reasons). This check
372 dnl can hopefully be removed soon. Please use the default action
373 dnl for this macro (not LIBS=...), otherwise the check for dbopen
375 AC_CHECK_LIB(port, writev)
378 # Check for libelf library. Prefer external, otherwise none.
381 AC_CHECK_HEADER([libelf.h])
382 AC_CHECK_HEADERS([gelf.h], [
383 AC_CHECK_LIB(elf, gelf_getvernaux, [
384 AC_DEFINE(HAVE_LIBELF, 1, [Define to 1 if you have the 'elf' library (-lelf).])
385 WITH_LIBELF_LIB="-lelf"
389 AC_SUBST(WITH_LIBELF_INCLUDE)
390 AC_SUBST(WITH_LIBELF_LIB)
391 AM_CONDITIONAL(LIBELF,[test "$WITH_LIBELF" = yes])
393 AC_CHECK_HEADERS([dwarf.h], [
396 AM_CONDITIONAL(LIBDWARF,[test "$WITH_LIBDWARF" = yes])
399 # Check for beecrypt library.
400 WITH_BEECRYPT_INCLUDE=
402 AC_CHECK_HEADERS([beecrypt/beecrypt.h], [
403 AC_CHECK_LIB(beecrypt, mpfprintln, [
404 AC_CHECK_HEADERS([beecrypt/api.h])
405 WITH_BEECRYPT_INCLUDE=
406 WITH_BEECRYPT_LIB="-lbeecrypt"
408 AC_MSG_ERROR([missing required library beecrypt])
411 AC_MSG_ERROR([missing required header beecrypt/beecrypt.h])
413 AC_SUBST(WITH_BEECRYPT_INCLUDE)
414 AC_SUBST(WITH_BEECRYPT_LIB)
417 # Check for magic library.
421 AC_CHECK_HEADER([magic.h], [
422 AC_CHECK_LIB(magic, magic_open, [
424 WITH_MAGIC_LIB="-lmagic"
426 AC_MSG_ERROR([missing required library 'libmagic'])
429 AC_MSG_ERROR([missing required header magic.h])
432 AC_SUBST(WITH_MAGIC_INCLUDE)
433 AC_SUBST(WITH_MAGIC_LIB)
436 # Check for popt library.
440 AC_CHECK_HEADER([popt.h], [
441 AC_CHECK_LIB(popt, poptGetContext, [
443 WITH_POPT_LIB="-lpopt"
445 AC_MSG_ERROR([missing required library popt])
448 AC_MSG_ERROR([missing required header popt.h])
451 AC_SUBST(WITH_POPT_INCLUDE)
452 AC_SUBST(WITH_POPT_LIB)
455 # Process --with/without-external-db
456 AC_ARG_WITH(external_db, [ --with-external-db build against an external Berkeley db],
457 [case "$with_external_db" in
459 *) AC_MSG_ERROR([invalid argument to --with-external-db]) ;;
461 [with_external_db=no])
463 case "$with_external_db" in
465 AC_CHECK_HEADERS([db.h],[
466 AC_CHECK_TYPE([db_threadid_t],[],
467 [AC_MSG_WARN([missing type db_threadid_t])],
470 AC_CHECK_LIB([db],[db_create],[],[
471 AC_MSG_ERROR([missing db_create in libdb])
473 AC_CHECK_LIB([db],[db_env_create],[],[
474 AC_MSG_ERROR([missing db_env_create in libdb])
476 AC_CHECK_LIB([db],[db_env_set_func_fsync],[],[
477 AC_MSG_ERROR([missing db_env_set_func_fsync in libdb])
479 AC_CHECK_LIB([db],[db_strerror],[],[
480 AC_MSG_ERROR([missing db_strerror in libdb])
485 AC_MSG_ERROR([missing required header db.h])
488 * ) # Fall back to internal db
489 # XXX for now we always have in-tree BDB available...
490 AC_DEFINE(HAVE_DB_H, 1, [Define if you have the <db3/db.h> header file])
494 AC_SUBST([WITH_DB_LIB])
497 # Check for sqlite3 library.
498 AC_ARG_ENABLE(sqlite3, [ --enable-sqlite3 enable sqlite3 support],
499 [case "$enable_sqlite3" in
501 *) AC_MSG_ERROR([invalid argument to --enable-sqlite3])
506 WITH_SQLITE3_INCLUDE=
509 AS_IF([test "$enable_sqlite3" = yes],[
510 AC_CHECK_HEADERS([sqlite3.h],
511 [ AC_CHECK_LIB(sqlite3, sqlite3_open, [
512 WITH_SQLITE3_INCLUDE=
513 WITH_SQLITE3_LIB="-lsqlite3"
516 AC_MSG_ERROR([missing libsqlite3])
519 AC_MSG_ERROR([missing sqlite3.h])
523 AC_SUBST(WITH_SQLITE3_INCLUDE)
524 AC_SUBST(WITH_SQLITE3_LIB)
525 AM_CONDITIONAL([SQLITE3],[test "$WITH_SQLITE3" = yes])
529 dnl AmigaOS and IXEmul have a fork() dummy
532 echo "Building for AmigaOS: using vfork() instead of fork()";
533 CFLAGS="$CFLAGS -Dfork=vfork"
537 AM_GNU_GETTEXT_VERSION([0.16.1])
538 AM_GNU_GETTEXT([external])
540 dnl Checks for header files we can live without.
546 AC_CHECK_HEADERS(fcntl.h getopt.h grp.h memory.h netdb.h pwd.h utime.h)
548 AC_CHECK_HEADERS(sys/ipc.h sys/socket.h sys/select.h)
549 AC_CHECK_HEADERS(sys/types.h sys/stdtypes.h)
550 AC_CHECK_HEADERS(sys/mman.h sys/resource.h sys/utsname.h sys/wait.h)
552 AC_CHECK_HEADERS(netinet/in_systm.h)
553 AC_CHECK_HEADERS(mntent.h sys/mnttab.h sys/systemcfg.h)
554 AC_CHECK_HEADERS(sys/mount.h sys/mntctl.h sys/param.h sys/vmount.h)
555 AC_CHECK_HEADERS(libio.h)
556 AC_CHECK_HEADERS(err.h mcheck.h)
558 AC_CHECK_HEADERS(glob.h)
559 AC_CHECK_HEADERS(locale.h)
561 dnl statfs portability fiddles.
563 dnl We should really emulate/steal sections of the statfs and struct statfs
564 dnl checks from GNU fileutils.
566 AC_MSG_CHECKING(for struct statfs)
569 dnl this is easier than nesting AC_TRY_COMPILEs...
571 found_struct_statfs=no
573 if test X$found_struct_statfs = Xno ; then
574 dnl Solaris 2.6+ wants to use statvfs
575 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
576 #ifdef HAVE_SYS_TYPES_H
577 #include <sys/types.h>
579 #include <sys/statvfs.h> ]], [[struct statvfs sfs;]])],[AC_MSG_RESULT(in sys/statvfs.h)
580 AC_DEFINE(STATFS_IN_SYS_STATVFS, 1,
581 [statfs in <sys/statvfs.h> (for solaris 2.6+ systems)])
582 found_struct_statfs=yes],[])
585 if test X$found_struct_statfs = Xno ; then
586 dnl first try including sys/vfs.h
587 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
588 #ifdef HAVE_SYS_TYPES_H
589 #include <sys/types.h>
591 #include <sys/vfs.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/vfs.h)
592 AC_DEFINE(STATFS_IN_SYS_VFS, 1, [statfs in <sys/vfs.h> (for linux systems)])
593 found_struct_statfs=yes],[])
596 if test X$found_struct_statfs = Xno ; then
597 dnl ...next try including sys/mount.h
598 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
599 #ifdef HAVE_SYS_TYPES_H
600 #include <sys/types.h>
602 #ifdef HAVE_SYS_PARAM_H
603 #include <sys/param.h>
605 #include <sys/mount.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/mount.h)
606 AC_DEFINE(STATFS_IN_SYS_MOUNT, 1, [statfs in <sys/mount.h> (for Digital Unix 4.0D systems)])
607 found_struct_statfs=yes],[])
610 if test X$found_struct_statfs = Xno ; then
611 dnl ...still no joy. Try sys/statfs.h
612 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
613 #ifdef HAVE_SYS_TYPES_H
614 #include <sys/types.h>
616 #include <sys/statfs.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/statfs.h)
617 AC_DEFINE(STATFS_IN_SYS_STATFS, 1, [statfs in <sys/statfs.h> (for Irix 6.4 systems)])
618 found_struct_statfs=yes],[])
621 if test X$found_struct_statfs = Xno ; then
622 dnl ...no luck. Warn the user of impending doom.
623 AC_MSG_WARN(not found)
627 dnl if we found the struct, see if it has the f_bavail member. Some OSes
628 dnl don't, including IRIX 6.5+
630 if test X$found_struct_statfs = Xyes ; then
631 AC_MSG_CHECKING(for f_bavail member in struct statfs)
632 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
633 #ifdef HAVE_SYS_TYPES_H
634 #include <sys/types.h>
636 #if STATFS_IN_SYS_STATVFS
637 # include <sys/statvfs.h>
638 typedef struct statvfs STATFS_t;
640 typedef struct statfs STATFS_t;
641 # if STATFS_IN_SYS_VFS
642 # include <sys/vfs.h>
643 # elif STATFS_IN_SYS_MOUNT
644 # include <sys/mount.h>
645 # elif STATFS_IN_SYS_STATFS
646 # include <sys/statfs.h>
648 #endif ]], [[STATFS_t sfs;
649 sfs.f_bavail = 0;]])],[AC_MSG_RESULT(yes)
650 AC_DEFINE(STATFS_HAS_F_BAVAIL, 1, [Define if struct statfs has the f_bavail member])],[AC_MSG_RESULT(no)
654 if test X$found_struct_statfs = Xyes ; then
656 dnl now check to see if we have the 4-argument variant of statfs()
657 dnl this pretty much requires AC_RUN_IFELSE([AC_LANG_SOURCE([[]])],[],[],[])
659 AC_MSG_CHECKING([if statfs() requires 4 arguments])
660 AC_RUN_IFELSE([AC_LANG_SOURCE([[
661 #ifdef HAVE_SYS_TYPES_H
662 #include <sys/types.h>
664 #ifdef STATFS_IN_SYS_VFS
666 #elif STATFS_IN_SYS_MOUNT
667 #include <sys/mouht.h>
668 #elif STATFS_IN_SYS_STATFS
669 #include <sys/statfs.h>
673 exit (statfs(".", &sfs, sizeof(sfs), 0));
675 ]])],[AC_MSG_RESULT(yes)
676 AC_DEFINE(STAT_STATFS4, 1, [Define if the statfs() call takes 4 arguments])],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)
682 dnl look for libc features
684 AC_MSG_CHECKING(if <netdb.h> defines h_errno)
685 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[printf("%d",h_errno)]])],[PROVIDES_ERRNO=yes],[])
686 AC_MSG_RESULT($PROVIDES_ERRNO)
687 if test $PROVIDES_ERRNO = yes; then
688 AC_DEFINE(HAVE_HERRNO, 1, [ Define as 1 if <netdb.h> defines h_errno])
691 dnl If a system doesn't have S_IFSOCK, define it as 0 which will
692 dnl make S_ISSOCK always return false (nice, eh?)
693 AC_MSG_CHECKING(if <sys/stat.h> defines S_IFSOCK)
694 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[printf("%d", S_IFSOCK)]])],[HAS_S_IFSOCK=yes],[HAS_S_IFSOCK=no])
695 AC_MSG_RESULT($HAS_S_IFSOCK)
696 if test $HAS_S_IFSOCK = yes; then
697 AC_DEFINE(HAVE_S_IFSOCK, 1, [Define as 1 if <sys/stat.h> defines S_IFSOCK])
700 dnl Some Unix's are missing S_ISLNK, S_ISSOCK
701 AC_MSG_CHECKING(if <sys/stat.h> defines S_ISLNK)
702 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[printf("%d", S_ISLNK(0755))]])],[HAS_S_ISLNK=yes],[HAS_S_ISLNK=no])
703 AC_MSG_RESULT($HAS_S_ISLNK)
704 if test $HAS_S_ISLNK = yes; then
705 AC_DEFINE(HAVE_S_ISLNK, 1, [Define as 1 if <sys/stat.h> defines S_ISLNK])
708 AC_MSG_CHECKING(if <sys/stat.h> defines S_ISSOCK)
709 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[printf("%d", S_ISSOCK(0755))]])],[HAS_S_ISSOCK=yes],[HAS_S_ISSOCK=no])
710 AC_MSG_RESULT($HAS_S_ISSOCK)
711 if test $HAS_S_ISSOCK = yes; then
712 AC_DEFINE(HAVE_S_ISSOCK, 1, [Define as 1 if <sys/stat.h> defines S_ISSOCK])
715 AC_MSG_CHECKING(if timezone is defined)
716 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[printf("%ld", timezone)]])],[HAS_TIMEZONE=yes],[HAS_TIMEZONE=no])
717 AC_MSG_RESULT($HAS_TIMEZONE)
719 dnl Check for missing typedefs
725 dnl Checks for library functions.
728 dnl XXX don't want to re-enable code that's been unused for years at this
729 dnl point, but should offer good performance improvements, check after
733 AC_CHECK_FUNCS(basename getaddrinfo getcwd getnameinfo getwd inet_aton)
734 AC_CHECK_FUNCS(mtrace putenv realpath setenv)
735 AC_CHECK_FUNCS(stpcpy stpncpy strcspn)
736 AC_CHECK_FUNCS(strdup strndup strerror strtol strtoul strspn strstr)
738 AC_CHECK_FUNCS(__secure_getenv)
740 AC_CHECK_FUNCS(regcomp)
744 AC_CHECK_FUNCS(mkstemp)
746 dnl XXX Glob *is* broken on linux with libc5, solaris and possibly aix when
747 dnl %files gets something like
748 dnl /usr/*/locale/*/LC_MESSAGES/*.mo
749 dnl (Note: more than one asterisk in glob pattern.)
751 dnl XXX Glob is "fixed" in glibc-2.3.3-61, but the cost is that
752 dnl dangling symlinks are no longer globbed. Always use the internal glob.
753 AC_DEFINE(USE_GNU_GLOB, 1, [Use the included glob.c?])
757 dnl check if python is requested
758 AC_ARG_ENABLE(python, [ --enable-python build rpm python bindings ],
759 [case "$enable_python" in
761 *) AC_MSG_ERROR([invalid argument to --enable-python])
766 AS_IF([test "$enable_python" = yes],[
767 # rpm-python is based on python-2.5,
768 # with legacy hacks to allow building against python >= 2.3
769 AM_PATH_PYTHON([2.3],[
770 WITH_PYTHON_INCLUDE=`${PYTHON} -c 'from distutils.sysconfig import *; print get_python_inc()'`
771 WITH_PYTHON_SUBPACKAGE=1
772 save_CPPFLAGS="$CPPFLAGS"
773 CPPFLAGS="$CPPFLAGS -I$WITH_PYTHON_INCLUDE"
774 AC_CHECK_HEADER([Python.h],[],
775 [AC_MSG_ERROR([missing Python.h])
777 CPPFLAGS="$save_CPPFLAGS"
779 AC_SEARCH_LIBS([Py_Main],[python${PYTHON_VERSION} python],[
780 WITH_PYTHON_LIB="$ac_res"
781 ],[AC_MSG_ERROR([missing python library])
788 WITH_PYTHON_SUBPACKAGE=0
791 AC_SUBST(WITH_PYTHON_INCLUDE)
792 AC_SUBST(WITH_PYTHON_LIB)
794 AM_CONDITIONAL(PYTHON,[test "$WITH_PYTHON_SUBPACKAGE" = 1])
796 AC_PATH_PROG(__DOXYGEN, doxygen, no, $PATH)
798 dnl Auto-detect whether doxygen generated API docs should be included.
800 AC_ARG_WITH(apidocs, [ --with-apidocs build rpm API docs ],,[with_apidocs=auto])
802 case "$with_apidocs" in
804 AS_IF([test "$__DOXYGEN" = no],[with_apidocs=no],[with_apidocs=yes])
807 AS_IF([test "$__DOXYGEN" = no],
808 [AC_MSG_ERROR([rpm API docs needs doxygen in PATH])])
811 AC_CHECK_PROG(HAVE_DOT,[dot],[YES],[NO])
814 AC_ARG_WITH(selinux, [ --with-selinux build with selinux support ],
815 [case "$with_selinux" in
817 *) AC_MSG_ERROR([invalid argument to --with-selinux])
822 AS_IF([test "$with_selinux" = yes],[
823 AC_CHECK_HEADER([selinux/selinux.h],[
824 AC_CHECK_LIB(selinux,[is_selinux_enabled],[with_selinux=yes],[
825 AC_MSG_ERROR([--with-selinux given, but libselinux not found])])
827 AC_MSG_ERROR([--with-selinux given, but selinux/selinux.h not found])
831 AS_IF([test "$with_selinux" = yes],[
832 AC_DEFINE(WITH_SELINUX, 1, [Build with selinux support?])
833 WITH_SELINUX_LIB="-lselinux"
835 AC_SUBST(WITH_SELINUX_LIB)
836 AM_CONDITIONAL(SELINUX,[test "$with_selinux" = yes])
840 AC_ARG_WITH(lua, [ --with-lua build with lua support ],,[with_lua=yes])
841 AS_IF([test "$with_lua" = yes],[
842 AC_DEFINE(WITH_LUA, 1, [Build with lua support?])
843 WITH_LUA_INCLUDE="-I\${top_srcdir}/lua/include -I\${top_srcdir}/lua/local"
844 WITH_LUA_LIB="\$(top_builddir)/lua/liblua.la"
846 AC_SUBST(WITH_LUA_LIB)
847 AC_SUBST(WITH_LUA_INCLUDE)
849 AS_IF([test "$with_apidocs" = yes],[
850 WITH_APIDOCS_TARGET=apidocs
855 AC_SUBST(WITH_APIDOCS_TARGET)
856 AC_SUBST(WITH_APIDOCS)
859 AC_ARG_WITH(dmalloc, [ --with-dmalloc build with dmalloc debugging support ])
860 if test "$with_dmalloc" = yes ; then
861 AC_DEFINE(DMALLOC, 1, [Build with dmalloc support?])
862 LIBS="$LIBS -ldmalloc"
865 AC_CHECK_FUNCS(setlocale)
867 AC_CHECK_FUNCS(getpassphrase)
869 AC_CHECK_FUNC(getmntent, AC_DEFINE(HAVE_GETMNTENT, 1, [Define if you have the getmntent() function]), [
870 AC_CHECK_FUNC(mntctl, AC_DEFINE(HAVE_MNTCTL, 1, [Define as 1 if you have mntctl() (only aix?)]),[
871 AC_CHECK_FUNC(getmntinfo, AC_DEFINE(HAVE_GETMNTINFO, 1, [Define as 1 if you have getmntinfo() (Mac OS X)]), [
872 AC_CHECK_FUNC(getmntinfo_r, AC_DEFINE(HAVE_GETMNTINFO_R, 1, [Define as 1 if you have getmntinfo_r() (only osf?)]), [
873 AC_CHECK_LIB(c_r, getmntinfo_r, [LIBS="$LIBS -lc_r";
874 AC_DEFINE(HAVE_GETMNTINFO_R, 1, [Define as 1 if you have getmntinfo_r() (only osf?)])], [
875 AC_DEFINE([USE_GETMNTENT], 1, [Defined if getmntent replacement is used])
876 AC_LIBOBJ(getmntent)])
882 AC_CHECK_FUNC(lchown,
883 [__CHOWN_RHF="%{__chown} -Rhf"
884 __CHGRP_RHF="%{__chgrp} -Rhf"
885 AC_DEFINE(HAVE_LCHOWN, 1, [Define as 1 if you have lchown()])],
886 [__CHOWN_RHF="%{__chown} -Rf"
887 __CHGRP_RHF="%{__chgrp} -Rf"
888 dnl Does chown() follow symlinks? This should be a good enough test.
889 AC_MSG_CHECKING(whether chown() follows symlinks)
890 AC_ARG_ENABLE([broken-chown],
891 [ --enable-broken-chown this system's chown follows symbolic links],
892 result=$enableval, result=unknown)
893 if echo "$build" | egrep "(aix)|(hpux)|(linux)" > /dev/null ; then
895 elif echo "$build" | egrep "(nextstep)" > /dev/null ; then
898 if test $result = unknown; then
899 if test `${__ID} | cut -f2 -d\= | cut -f1 -d\(` = 0; then
904 if test `ls -l foo | awk '{print $3}'` != "root"; then
911 AC_MSG_CHECKING((cannot check by non-root user))
916 AC_MSG_RESULT($result)
917 if test $result = yes; then
918 AC_DEFINE(CHOWN_FOLLOWS_SYMLINK, 1, [Define as 1 if chown() follows symlinks and you don't have lchown()])
920 AC_SUBST(__CHOWN_RHF)
921 AC_SUBST(__CHGRP_RHF)
924 dnl figure out what root's primary group is
926 AC_MSG_CHECKING(root's primary group)
927 AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdio.h>
928 #include <sys/types.h>
934 struct passwd *root = NULL;
935 struct group *roots_group = NULL;
936 FILE * tempfile = NULL;
938 root = getpwuid( (uid_t) 0 );
940 roots_group = getgrgid(root->pw_gid);
941 if (roots_group != NULL) {
942 tempfile = fopen("conftest_rootg", "w");
943 if (tempfile != NULL) {
944 fprintf(tempfile, "%s\n", roots_group->gr_name);
952 }]])],[ROOT_GROUP=`cat conftest_rootg`],[ROOT_GROUP="root"],[ROOT_GROUP="root"
954 AC_MSG_RESULT($ROOT_GROUP)
957 if echo "$build_os" | grep sco > /dev/null; then
958 echo "hacking things up for sco"
959 AC_DEFINE(NEED_STRINGS_H, 1, [Define as one if we need to include <strings.h> (along with <string.h>)])
960 AC_DEFINE(HAVE_STRUCT_MNTTAB, 1,
961 [Define as 1 if you have "struct mnttab" (only sco?)])
962 elif echo "$build_os" | grep sunos > /dev/null; then
963 echo "hacking things up for sunos"
964 CFLAGS="$CFLAGS -D__USE_FIXED_PROTOTYPES__"
965 AC_DEFINE(NEED_STRINGS_H, 1, [Define as one if we need to include <strings.h> (along with <string.h>)])
966 AC_DEFINE(NEED_MYREALLOC, 1, [Define as 1 if we need myrealloc])
971 # get rid of the 4-th tuple, if config.guess returned "linux-gnu" for build_os
974 if echo "$build_os" | grep '.*-gnulibc1' > /dev/null ; then
975 build_os=`echo "${build_os}" | sed 's/-gnulibc1$//'`
977 if echo "$build_os" | grep '.*-gnueabi' > /dev/null ; then
978 build_os=`echo "${build_os}" | sed 's/-gnueabi$//'`
979 build_os_gnu=-gnueabi
981 if echo "$build_os" | grep '.*-gnu' > /dev/null ; then
982 build_os=`echo "${build_os}" | sed 's/-gnu$//'`
986 build_os_exact="${build_os}"
987 build_os_major=`echo "${build_os}" | sed 's/\..*$//'`
988 build_os_noversion=`echo "${build_os}" | sed 's/[0-9]*\..*$//'`
991 rm -f ./find-provides
992 if test -f ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.prov ; then
993 echo "using ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.prov for automatic provides generation"
994 ln -s ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.prov ./find-provides
995 elif test -f ${srcdir}/autodeps/${build_os_exact}.prov ; then
996 echo "using ${srcdir}/autodeps/${build_os_exact}.prov for automatic provides generation"
997 ln -s ${srcdir}/autodeps/${build_os_exact}.prov ./find-provides
998 elif test -f ${srcdir}/autodeps/${build_os_major}.prov ; then
999 echo "using ${srcdir}/autodeps/${build_os_major}.prov for automatic provides generation"
1000 ln -s ${srcdir}/autodeps/${build_os_major}.prov ./find-provides
1001 elif test -f ${srcdir}/autodeps/${build_os_noversion}.prov ; then
1002 echo "using ${srcdir}/autodeps/${build_os_noversion}.prov for automatic provides generation"
1003 ln -s ${srcdir}/autodeps/${build_os_noversion}.prov ./find-provides
1005 echo "*** no default provides information is available for ${build_os_noversion}"
1006 ln -s ${srcdir}/autodeps/none ./find-provides
1009 rm -f ./find-requires
1010 if test -f ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.req ; then
1011 echo "using ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.req for automatic requires generation"
1012 ln -s ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.req ./find-requires
1013 elif test -f ${srcdir}/autodeps/${build_os_exact}.req ; then
1014 echo "using ${srcdir}/autodeps/${build_os_exact}.req for automatic requires generation"
1015 ln -s ${srcdir}/autodeps/${build_os_exact}.req ./find-requires
1016 elif test -f ${srcdir}/autodeps/${build_os_major}.req ; then
1017 echo "using ${srcdir}/autodeps/${build_os_major}.req for automatic requires generation"
1018 ln -s ${srcdir}/autodeps/${build_os_major}.req ./find-requires
1019 elif test -f ${srcdir}/autodeps/${build_os_noversion}.req ; then
1020 echo "using ${srcdir}/autodeps/${build_os_noversion}.req for automatic requires generation"
1021 ln -s ${srcdir}/autodeps/${build_os_noversion}.req ./find-requires
1023 echo "*** no default requires information is available for ${build_os_noversion}"
1024 ln -s ${srcdir}/autodeps/none ./find-requires
1027 dnl Determine the canonical arch-vendor-os for the build machine
1028 autorelocate_path='%{nil}'
1029 autorelocate_dcolor='0'
1030 case "${build_cpu}" in
1031 *86) RPMCANONCOLOR=0; RPMCANONARCH=i386 ;;
1032 ia32e*) RPMCANONCOLOR=3; RPMCANONARCH=ia32e ;;
1033 amd64*) RPMCANONCOLOR=3; RPMCANONARCH=amd64 ;;
1034 x86_64*) RPMCANONCOLOR=3; RPMCANONARCH=x86_64 ;;
1035 alpha*) RPMCANONCOLOR=0; RPMCANONARCH=alpha ;;
1036 sparc64*) RPMCANONCOLOR=3; RPMCANONARCH=sparc64 ;;
1037 sparc*) RPMCANONCOLOR=3; RPMCANONARCH=sparc ;;
1038 ia64*) RPMCANONCOLOR=2; RPMCANONARCH=ia64;
1039 autorelocate_path='/emul/%%{ARCH}-%%{OS}'
1040 autorelocate_dcolor='1' ;;
1041 s390x*) RPMCANONCOLOR=3; RPMCANONARCH=s390x ;;
1042 s390*) RPMCANONCOLOR=0; RPMCANONARCH=s390 ;;
1043 powerpc64*|ppc64*) RPMCANONCOLOR=3; RPMCANONARCH=ppc64 ;;
1044 powerpc*|ppc*) RPMCANONCOLOR=0; RPMCANONARCH=ppc ;;
1045 arm*) RPMCANONCOLOR=0; RPMCANONARCH=arm ;;
1046 mipsel*) RPMCANONCOLOR=0; RPMCANONARCH=mipsel ;;
1047 mips*) RPMCANONCOLOR=0; RPMCANONARCH=mips ;;
1048 m68k*) RPMCANONCOLOR=0; RPMCANONARCH=m68k ;;
1049 *) RPMCANONCOLOR=0; RPMCANONARCH=unknown ;;
1051 case "${build_os_noversion}" in
1052 mint) RPMCANONARCH=m68kmint ;;
1054 RPMCANONVENDOR="$build_vendor"
1055 case "${build_vendor}" in
1056 unknown|pc|ibm|redhat|pld|mandrake|conectiva|lvr|yellowdog|caos)
1057 test -f /etc/redhat-release && RPMCANONVENDOR=redhat
1058 test -f /etc/pld-release && RPMCANONVENDOR=pld
1059 test -f /etc/mandrake-release && RPMCANONVENDOR=mandrake
1060 test -f /etc/conectiva-release && RPMCANONVENDOR=conectiva
1061 test -f /etc/lvr-release && RPMCANONVENDOR=lvr
1062 test -f /etc/yellowdog-release && RPMCANONVENDOR=yellowdog
1063 test -f /etc/caos-release && RPMCANONVENDOR=caos
1066 RPMCANONOS="$build_os_noversion"
1067 RPMCANONGNU="$build_os_gnu"
1068 AC_SUBST(RPMCANONCOLOR)
1069 AC_SUBST(autorelocate_path)
1070 AC_SUBST(autorelocate_dcolor)
1071 AC_SUBST(RPMCANONARCH)
1072 AC_SUBST(RPMCANONVENDOR)
1073 AC_SUBST(RPMCANONOS)
1074 AC_SUBST(RPMCANONGNU)
1075 AC_DEFINE_UNQUOTED([RPMCANONVENDOR],["${RPMCANONVENDOR}"],[canonical vendor])
1077 if test X"$prefix" = XNONE ; then
1078 usrprefix="$ac_default_prefix"
1083 RPMCONFIGDIR="`echo ${usrprefix}/lib/rpm`"
1084 AC_SUBST(RPMCONFIGDIR)
1088 AC_CONFIG_SUBDIRS(db3)
1090 AM_CONDITIONAL([WITH_INTERNAL_DB],[test "$with_external_db" = no])
1092 AC_PATH_PROG(AUTOM4TE,autom4te,:)
1094 AC_CONFIG_FILES([ Doxyfile Makefile
1095 rpmio/Makefile rpmdb/Makefile lib/Makefile build/Makefile
1096 po/Makefile.in scripts/Makefile