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])
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 XXX Test for libpthread.a that is NPTL aware (static link only).
135 if test -f /usr/lib/nptl/libpthread.a ; then
136 LDFLAGS_NPTL="-L/usr/lib/nptl"
137 # INCPATH="$INCPATH -I/usr/include/nptl"
139 AC_SUBST(LDFLAGS_NPTL)
142 dnl look for POSIX chmod attributes
144 AC_MSG_CHECKING(POSIX chmod)
146 chmod 744 foo.chmodtest
147 chmod +X foo.chmodtest 2>/dev/null
148 a=`ls -l foo.chmodtest | awk '{print $1}'`
150 if test "$a" = "-rwxr-xr-x"; then
152 FIXPERMS=a+rX,u+w,g-w,o-w
154 AC_MSG_RESULT(no (tell your OS vendor about GNU fileutils))
155 FIXPERMS=a+r,u+w,g-w,o-w
160 dnl see if we have a mkdir that supports `-p'.
162 AC_PATH_PROGS(RPM_MKDIR, mkdir, mkdir)
163 AC_MSG_CHECKING(if $RPM_MKDIR supports -p)
165 $RPM_MKDIR -p conftest/a 2>/dev/null
166 if test $? = 0 ; then
167 rmdir conftest/a 2>/dev/null
168 if test $? = 0 ; then
174 rmdir conftest 2>/dev/null
175 if test $? = 0 ; then
176 RPM_MKDIR_P="$RPM_MKDIR -p"
184 if test X"$RPM_MKDIR_P" = X0 ; then
186 RPM_MKDIR_P="`echo ${prefix}/lib/rpm/mkinstalldirs`"
191 dnl substitute this into config.h, so the C source picks it up.
193 AC_DEFINE_UNQUOTED(RPM_MKDIR_P, "${RPM_MKDIR_P}",
194 [A full path to a program, possibly with arguments, that will create a
195 directory and all necessary parent directories, ala 'mkdir -p'])
196 AC_SUBST(RPM_MKDIR_P)
200 dnl This test must precede tests of compiler characteristics like
201 dnl that for the inline keyword, since it may change the degree to
202 dnl which the compiler supports such features.
205 dnl AM_DISABLE_SHARED
208 AC_CHECK_TOOL(AR, ar, :)
211 dnl use defaults if cross-compiling, otherwise use the default path.
213 if test "$cross_compiling" = "yes"; then
220 dnl Find some common programs
222 AC_PATH_PROG(BZIP2BIN, bzip2, /usr/bin/bzip2, $MYPATH)
223 AC_PATH_PROG(__CAT, cat, /bin/cat, $MYPATH)
224 AC_PATH_PROG(__CHGRP, chgrp, /bin/chgrp, $MYPATH)
225 AC_PATH_PROG(__CHMOD, chmod, /bin/chmod, $MYPATH)
226 AC_PATH_PROG(__CHOWN, chown, /bin/chown, $MYPATH)
227 AC_PATH_PROG(__CP, cp, /bin/cp, $MYPATH)
228 AC_PATH_PROG(__CPIO, cpio, /bin/cpio, $MYPATH)
229 AC_PATH_PROG(__FILE, file, /usr/bin/file, $MYPATH)
230 AC_PATH_PROG(__GPG, gpg, /usr/bin/gpg, $MYPATH)
231 AC_PATH_PROG(__GREP, grep, /bin/grep, $MYPATH)
232 AC_PATH_PROG(GZIPBIN, gzip, /bin/gzip, $MYPATH)
233 AC_PATH_PROG(UNZIPBIN, unzip, /usr/bin/unzip, $MYPATH)
235 AC_PATH_PROG(__ID, id, /usr/bin/id, $MYPATH)
236 AC_MSG_CHECKING(checking whether id supports -u)
237 if ${__ID} -u 2>&1 > /dev/null ; then
241 __ID_U="%{__id} | %{__sed} 's/[[^=]]*=\\\\([[0-9]][[0-9]]*\\\\).*$/\\\\1/'"
246 AC_PATH_PROG(__INSTALL, install, /usr/bin/install, $MYPATH)
247 AC_PATH_PROG(__MAKE, make, /usr/bin/make, $MYPATH)
248 AC_PATH_PROG(__MKDIR, mkdir, /bin/mkdir, $MYPATH)
249 AC_PATH_PROG(__MV, mv, /bin/mv, $MYPATH)
250 AC_PATH_PROG(__PATCH, patch, /usr/bin/patch, $MYPATH)
251 AC_MSG_CHECKING(old version of patch)
252 PATCHVERSION=`patch --version 2>&1`
254 if test "$PATCHVERSION" = "Patch version 2.1"; then
255 AC_DEFINE(HAVE_OLDPATCH_21, 1,
256 [Define if the patch call you'll be using is 2.1 or older])
257 AC_MSG_RESULT(patch older then 2.2 found)
259 AC_MSG_RESULT(patch later then 2.2 found)
262 AC_PATH_PROG(__PERL, perl, /usr/bin/perl, $MYPATH)
263 AC_PATH_PROG(PGPBIN, pgp, /usr/bin/pgp, $MYPATH)
264 AC_PATH_PROG(__PYTHON, python, /usr/bin/python, $MYPATH)
265 AC_PATH_PROG(__RM, rm, /bin/rm, $MYPATH)
266 AC_PATH_PROG(__RSH, rsh, /usr/bin/rsh, $MYPATH)
267 AC_PATH_PROG(__SED, sed, /bin/sed, $MYPATH)
268 AC_PATH_PROG(__SSH, ssh, /usr/bin/ssh, $MYPATH)
269 AC_PATH_PROG(__TAR, tar, /bin/tar, $MYPATH)
271 AC_PATH_PROG(__LD, ld, /usr/bin/ld, $MYPATH)
272 AC_PATH_PROG(__NM, nm, /usr/bin/nm, $MYPATH)
273 AC_PATH_PROG(__OBJCOPY, objcopy, /usr/bin/objcopy, $MYPATH)
274 AC_PATH_PROG(__OBJDUMP, objdump, /usr/bin/objdump, $MYPATH)
275 AC_PATH_PROG(__STRIP, strip, /usr/bin/strip, $MYPATH)
281 *-*-solaris*) LIBS="$LIBS -L$l -R$l $*";;
282 *) LIBS="$LIBS -L$l $*";;
287 # Check for zlib library.
292 if test -z "${WITH_ZLIB_LIB}" ; then
293 for zlib in z gz ; do
294 AC_CHECK_LIB(${zlib}, gzread,
295 [WITH_ZLIB_LIB="-l${zlib}"; break],
296 [if test ${zlib} = gz; then
297 AC_MSG_ERROR([sorry rpm requires libz.a or libgz.a (from the zlib package)])
302 dnl zlib-1.0.4 has not gzseek
303 AC_CHECK_LIB(${zlib}, gzseek, [AC_DEFINE(HAVE_GZSEEK, 1, [Define as 1 if your zlib has gzseek()])])
306 AC_SUBST(WITH_ZLIB_INCLUDE)
307 AC_SUBST(WITH_ZLIB_LIB)
310 # Check for bzip2 library.
312 AC_CHECK_LIB(bz2, bzread, [LIBS="$LIBS -lbz2"],
313 AC_CHECK_LIB(bz2, BZ2_bzread, [
316 AC_DEFINE(HAVE_BZ2_1_0, 1, [Define as 1 if you bzip2 1.0]) ],
323 PKG_CHECK_MODULES(libxml2,libxml-2.0,
326 AM_CONDITIONAL(LIBXML2,[test "$WITH_LIBXML2" = yes])
331 AC_MSG_CHECKING(for /usr/ucblib in LIBS)
332 if test -d /usr/ucblib ; then
333 if test "$build" = "mips-sni-sysv4" ; then
334 addlib /usr/ccs/lib -lc
345 dnl Check for features
348 dnl Checks for libraries.
350 AC_CHECK_FUNC(setreuid, [], [
351 AC_CHECK_LIB(ucb, setreuid, [if echo $LIBS | grep -- -lucb >/dev/null ;then :; else LIBS="$LIBS -lc -lucb" USEUCB=y;fi])
354 AC_CHECK_FUNC(rand, [], [
355 AC_CHECK_LIB(rand, rand, [])
358 AC_CHECK_FUNC(getdomainname, [], [
359 AC_CHECK_LIB(nsl, getdomainname)
361 AC_CHECK_FUNC(socket, [], [
362 AC_CHECK_LIB(socket, socket)
365 AC_CHECK_HEADERS(error.h)
366 AC_CHECK_FUNCS(error)
368 AC_CHECK_HEADERS(poll.h)
370 AC_CHECK_HEADERS(thread.h pthread.h synch.h semaphore.h)
372 AC_CHECK_LIB(pthread, pthread_mutex_trylock, [], [
373 dnl OSF 5.0 has the the symbols prefixed with __ in libpthread.
374 AC_CHECK_LIB(pthread, __pthread_mutex_trylock, [], [
375 AC_CHECK_LIB(thread, mutex_lock)
379 AC_CHECK_HEADERS(aio.h)
380 AC_SEARCH_LIBS(aio_read, [c rt aio posix4])
382 dnl Better not use fchmod at all.
383 AC_CHECK_FUNC(fchmod)
385 AC_CHECK_FUNCS(vsnprintf snprintf)
387 dnl Temporary hack for MiNT. Some functions (writev, snprintf) are
388 dnl not in the libc but in libport (for political reasons). This check
389 dnl can hopefully be removed soon. Please use the default action
390 dnl for this macro (not LIBS=...), otherwise the check for dbopen
392 AC_CHECK_LIB(port, writev)
395 # Check for libelf library. Prefer external, otherwise none.
398 AC_CHECK_HEADER([libelf.h])
399 AC_CHECK_HEADERS([gelf.h], [
400 AC_CHECK_LIB(elf, gelf_getvernaux, [
401 AC_DEFINE(HAVE_LIBELF, 1, [Define to 1 if you have the 'elf' library (-lelf).])
402 WITH_LIBELF_LIB="-lelf"
406 AC_SUBST(WITH_LIBELF_INCLUDE)
407 AC_SUBST(WITH_LIBELF_LIB)
408 AM_CONDITIONAL(LIBELF,[test "$WITH_LIBELF" = yes])
410 AC_CHECK_HEADERS([dwarf.h], [
413 AM_CONDITIONAL(LIBDWARF,[test "$WITH_LIBDWARF" = yes])
416 # Check for beecrypt library.
417 WITH_BEECRYPT_INCLUDE=
419 AC_CHECK_HEADERS([beecrypt/beecrypt.h], [
420 AC_CHECK_LIB(beecrypt, mpfprintln, [
421 AC_CHECK_HEADERS([beecrypt/api.h])
422 WITH_BEECRYPT_INCLUDE=
423 WITH_BEECRYPT_LIB="-lbeecrypt"
425 AC_MSG_ERROR([missing required library beecrypt])
428 AC_MSG_ERROR([missing required header beecrypt/beecrypt.h])
430 AC_SUBST(WITH_BEECRYPT_INCLUDE)
431 AC_SUBST(WITH_BEECRYPT_LIB)
434 # Check for neon library. Prefer external, otherwise none.
435 AC_ARG_WITH(neon, [ --with-neon enable neon support],
436 [case "$with_neon" in
438 *) AC_MSG_ERROR([invalid argument to --with-neon])
445 AS_IF([test "$with_neon" = yes],[
446 AC_CHECK_HEADER([neon/ne_session.h], [
447 AC_CHECK_LIB(neon, ne_session_create, [
448 AC_DEFINE(HAVE_LIBNEON, 1, [Define to 1 if you have the 'neon' library (-lneon).])
449 AC_CHECK_LIB(neon, ne_get_response_header, [
450 AC_DEFINE(HAVE_NEON_NE_GET_RESPONSE_HEADER, 1, [Define to 1 if you have ne_get_response_header() in libneon.])
452 AC_CHECK_LIB(neon, ne_send_request_chunk, [
453 AC_DEFINE(HAVE_NEON_NE_SEND_REQUEST_CHUNK, 1, [Define to 1 if you have ne_send_request_chunk() in libneon.])
456 WITH_NEON_LIB="-lneon"
457 AC_DEFINE(WITH_NEON,1,[Build with neon support?])
459 AC_MSG_ERROR([--with-neon given, but required library libneon not found])
462 AC_MSG_ERROR([--with-neon given, but required header neon/ne_session.h not found])
465 AC_SUBST(WITH_NEON_INCLUDE)
466 AC_SUBST(WITH_NEON_LIB)
469 # Check for magic library.
473 AC_CHECK_HEADER([magic.h], [
474 AC_CHECK_LIB(magic, magic_open, [
476 WITH_MAGIC_LIB="-lmagic"
478 AC_MSG_ERROR([missing required libary 'libmagic'])
481 AC_MSG_ERROR([missing required header magic.h])
484 AC_SUBST(WITH_MAGIC_INCLUDE)
485 AC_SUBST(WITH_MAGIC_LIB)
488 # Check for popt library.
492 AC_CHECK_HEADER([popt.h], [
493 AC_CHECK_LIB(popt, poptGetContext, [
495 WITH_POPT_LIB="-lpopt"
498 AC_MSG_ERROR([missing required library popt])
501 AC_MSG_ERROR([missing required header popt.h])
504 AC_SUBST(WITH_POPT_INCLUDE)
505 AC_SUBST(WITH_POPT_LIB)
509 dnl ------------------ with internal db
510 AC_DEFINE(HAVE_DB3_DB_H, 1, [Define if you have the <db3/db.h> header file])
513 AC_SUBST(WITH_DB_SUBDIR)
516 # Check for sqlite3 library.
517 AC_ARG_ENABLE(sqlite3, [ --enable-sqlite3 enable sqlite3 support],
518 [case "$enable_sqlite3" in
520 *) AC_MSG_ERROR([invalid argument to --enable-sqlite3])
525 WITH_SQLITE3_INCLUDE=
528 AS_IF([test "$enable_sqlite3" = yes],[
529 AC_CHECK_HEADERS([sqlite3.h],
530 [ AC_CHECK_LIB(sqlite3, sqlite3_open, [
531 WITH_SQLITE3_INCLUDE=
532 WITH_SQLITE3_LIB="-lsqlite3"
535 AC_MSG_ERROR([missing libsqlite3])
538 AC_MSG_ERROR([missing sqlite3.h])
542 AC_SUBST(WITH_SQLITE3_INCLUDE)
543 AC_SUBST(WITH_SQLITE3_LIB)
544 AM_CONDITIONAL([SQLITE3],[test "$WITH_SQLITE3" = yes])
548 dnl AmigaOS and IXEmul have a fork() dummy
551 echo "Building for AmigaOS: using vfork() instead of fork()";
552 CFLAGS="$CFLAGS -Dfork=vfork"
556 AM_GNU_GETTEXT_VERSION([0.16.1])
557 AM_GNU_GETTEXT([external])
559 dnl Checks for header files we can live without.
565 AC_CHECK_HEADERS(fcntl.h getopt.h grp.h memory.h netdb.h pwd.h utime.h)
567 AC_CHECK_HEADERS(sys/ipc.h sys/socket.h sys/select.h)
568 AC_CHECK_HEADERS(sys/types.h sys/stdtypes.h)
569 AC_CHECK_HEADERS(sys/mman.h sys/resource.h sys/utsname.h sys/wait.h)
571 AC_CHECK_HEADERS(netinet/in_systm.h)
572 AC_CHECK_HEADERS(machine/types.h)
573 AC_CHECK_HEADERS(mntent.h sys/mnttab.h sys/systemcfg.h)
574 AC_CHECK_HEADERS(sys/mount.h sys/mntctl.h sys/param.h sys/vmount.h)
575 AC_CHECK_HEADERS(bzlib.h libio.h zlib.h)
576 AC_CHECK_HEADERS(err.h mcheck.h)
577 AC_CHECK_HEADERS(pthread.h)
579 AC_CHECK_HEADERS(glob.h)
580 AC_CHECK_HEADERS(locale.h)
582 dnl statfs portability fiddles.
584 dnl We should really emulate/steal sections of the statfs and struct statfs
585 dnl checks from GNU fileutils.
587 AC_MSG_CHECKING(for struct statfs)
590 dnl this is easier than nesting AC_TRY_COMPILEs...
592 found_struct_statfs=no
594 if test X$found_struct_statfs = Xno ; then
595 dnl Solaris 2.6+ wants to use statvfs
596 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
597 #ifdef HAVE_SYS_TYPES_H
598 #include <sys/types.h>
600 #include <sys/statvfs.h> ]], [[struct statvfs sfs;]])],[AC_MSG_RESULT(in sys/statvfs.h)
601 AC_DEFINE(STATFS_IN_SYS_STATVFS, 1,
602 [statfs in <sys/statvfs.h> (for solaris 2.6+ systems)])
603 found_struct_statfs=yes],[])
606 if test X$found_struct_statfs = Xno ; then
607 dnl first try including sys/vfs.h
608 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
609 #ifdef HAVE_SYS_TYPES_H
610 #include <sys/types.h>
612 #include <sys/vfs.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/vfs.h)
613 AC_DEFINE(STATFS_IN_SYS_VFS, 1, [statfs in <sys/vfs.h> (for linux systems)])
614 found_struct_statfs=yes],[])
617 if test X$found_struct_statfs = Xno ; then
618 dnl ...next try including sys/mount.h
619 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
620 #ifdef HAVE_SYS_TYPES_H
621 #include <sys/types.h>
623 #ifdef HAVE_SYS_PARAM_H
624 #include <sys/param.h>
626 #include <sys/mount.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/mount.h)
627 AC_DEFINE(STATFS_IN_SYS_MOUNT, 1, [statfs in <sys/mount.h> (for Digital Unix 4.0D systems)])
628 found_struct_statfs=yes],[])
631 if test X$found_struct_statfs = Xno ; then
632 dnl ...still no joy. Try sys/statfs.h
633 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
634 #ifdef HAVE_SYS_TYPES_H
635 #include <sys/types.h>
637 #include <sys/statfs.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/statfs.h)
638 AC_DEFINE(STATFS_IN_SYS_STATFS, 1, [statfs in <sys/statfs.h> (for Irix 6.4 systems)])
639 found_struct_statfs=yes],[])
642 if test X$found_struct_statfs = Xno ; then
643 dnl ...no luck. Warn the user of impending doom.
644 AC_MSG_WARN(not found)
648 dnl if we found the struct, see if it has the f_bavail member. Some OSes
649 dnl don't, including IRIX 6.5+
651 if test X$found_struct_statfs = Xyes ; then
652 AC_MSG_CHECKING(for f_bavail member in struct statfs)
653 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
654 #ifdef HAVE_SYS_TYPES_H
655 #include <sys/types.h>
657 #if STATFS_IN_SYS_STATVFS
658 # include <sys/statvfs.h>
659 typedef struct statvfs STATFS_t;
661 typedef struct statfs STATFS_t;
662 # if STATFS_IN_SYS_VFS
663 # include <sys/vfs.h>
664 # elif STATFS_IN_SYS_MOUNT
665 # include <sys/mouht.h>
666 # elif STATFS_IN_SYS_STATFS
667 # include <sys/statfs.h>
669 #endif ]], [[STATFS_t sfs;
670 sfs.f_bavail = 0;]])],[AC_MSG_RESULT(yes)
671 AC_DEFINE(STATFS_HAS_F_BAVAIL, 1, [Define if struct statfs has the f_bavail member])],[AC_MSG_RESULT(no)
675 if test X$found_struct_statfs = Xyes ; then
677 dnl now check to see if we have the 4-argument variant of statfs()
678 dnl this pretty much requires AC_RUN_IFELSE([AC_LANG_SOURCE([[]])],[],[],[])
680 AC_MSG_CHECKING([if statfs() requires 4 arguments])
681 AC_RUN_IFELSE([AC_LANG_SOURCE([[
682 #ifdef HAVE_SYS_TYPES_H
683 #include <sys/types.h>
685 #ifdef STATFS_IN_SYS_VFS
687 #elif STATFS_IN_SYS_MOUNT
688 #include <sys/mouht.h>
689 #elif STATFS_IN_SYS_STATFS
690 #include <sys/statfs.h>
694 exit (statfs(".", &sfs, sizeof(sfs), 0));
696 ]])],[AC_MSG_RESULT(yes)
697 AC_DEFINE(STAT_STATFS4, 1, [Define if the statfs() call takes 4 arguments])],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)
703 dnl look for libc features
705 AC_MSG_CHECKING(if <netdb.h> defines h_errno)
706 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[printf("%d",h_errno)]])],[PROVIDES_ERRNO=yes],[])
707 AC_MSG_RESULT($PROVIDES_ERRNO)
708 if test $PROVIDES_ERRNO = yes; then
709 AC_DEFINE(HAVE_HERRNO, 1, [ Define as 1 if <netdb.h> defines h_errno])
712 dnl If a system doesn't have S_IFSOCK, define it as 0 which will
713 dnl make S_ISSOCK always return false (nice, eh?)
714 AC_MSG_CHECKING(if <sys/stat.h> defines S_IFSOCK)
715 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[printf("%d", S_IFSOCK)]])],[HAS_S_IFSOCK=yes],[HAS_S_IFSOCK=no])
716 AC_MSG_RESULT($HAS_S_IFSOCK)
717 if test $HAS_S_IFSOCK = yes; then
718 AC_DEFINE(HAVE_S_IFSOCK, 1, [Define as 1 if <sys/stat.h> defines S_IFSOCK])
721 dnl Some Unix's are missing S_ISLNK, S_ISSOCK
722 AC_MSG_CHECKING(if <sys/stat.h> defines S_ISLNK)
723 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[printf("%d", S_ISLNK(0755))]])],[HAS_S_ISLNK=yes],[HAS_S_ISLNK=no])
724 AC_MSG_RESULT($HAS_S_ISLNK)
725 if test $HAS_S_ISLNK = yes; then
726 AC_DEFINE(HAVE_S_ISLNK, 1, [Define as 1 if <sys/stat.h> defines S_ISLNK])
729 AC_MSG_CHECKING(if <sys/stat.h> defines S_ISSOCK)
730 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[printf("%d", S_ISSOCK(0755))]])],[HAS_S_ISSOCK=yes],[HAS_S_ISSOCK=no])
731 AC_MSG_RESULT($HAS_S_ISSOCK)
732 if test $HAS_S_ISSOCK = yes; then
733 AC_DEFINE(HAVE_S_ISSOCK, 1, [Define as 1 if <sys/stat.h> defines S_ISSOCK])
736 AC_MSG_CHECKING(if timezone is defined)
737 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[printf("%ld", timezone)]])],[HAS_TIMEZONE=yes],[HAS_TIMEZONE=no])
738 AC_MSG_RESULT($HAS_TIMEZONE)
740 dnl Check for missing typedefs
746 dnl Checks for library functions.
749 dnl XXX don't want to re-enable code that's been unused for years at this
750 dnl point, but should offer good performance improvements, check after
754 AC_CHECK_FUNCS(basename getaddrinfo getcwd getnameinfo getwd inet_aton)
755 AC_CHECK_FUNCS(mtrace putenv realpath setenv)
756 AC_CHECK_FUNCS(stpcpy stpncpy strcspn)
757 AC_CHECK_FUNCS(strdup strndup strerror strtol strtoul strspn strstr)
759 AC_CHECK_FUNCS(__secure_getenv)
761 AC_CHECK_FUNCS(regcomp)
765 AC_CHECK_FUNCS(mkstemp)
767 dnl XXX Glob *is* broken on linux with libc5, solaris and possibly aix when
768 dnl %files gets something like
769 dnl /usr/*/locale/*/LC_MESSAGES/*.mo
770 dnl (Note: more than one asterisk in glob pattern.)
772 dnl XXX Glob is "fixed" in glibc-2.3.3-61, but the cost is that
773 dnl dangling symlinks are no longer globbed. Always use the internal glob.
774 AC_DEFINE(USE_GNU_GLOB, 1, [Use the included glob.c?])
778 dnl check if python is requested
779 AC_ARG_ENABLE(python, [ --enable-python build rpm python bindings ],
780 [case "$enable_python" in
782 *) AC_MSG_ERROR([invalid argument to --enable-python])
787 AS_IF([test "$enable_python" = yes],[
788 # rpm-python requires python-2.5
789 AM_PATH_PYTHON([2.5],[
790 WITH_PYTHON_INCLUDE=`${PYTHON} -c 'from distutils.sysconfig import *; print get_python_inc()'`
791 WITH_PYTHON_SUBPACKAGE=1
792 save_CPPFLAGS="$CPPFLAGS"
793 CPPFLAGS="$CPPFLAGS -I$WITH_PYTHON_INCLUDE"
794 AC_CHECK_HEADER([Python.h],[],
795 [AC_MSG_ERROR([missing Python.h])
797 CPPFLAGS="$save_CPPFLAGS"
799 AC_SEARCH_LIBS([Py_Main],[python${PYTHON_VERSION} python],[
800 WITH_PYTHON_LIB="$ac_res"
801 ],[AC_MSG_ERROR([missing python library])
808 WITH_PYTHON_SUBPACKAGE=0
811 AC_SUBST(WITH_PYTHON_INCLUDE)
812 AC_SUBST(WITH_PYTHON_LIB)
814 AM_CONDITIONAL(PYTHON,[test "$WITH_PYTHON_SUBPACKAGE" = 1])
816 AC_PATH_PROG(__DOXYGEN, doxygen, no, $PATH)
818 dnl Auto-detect whether doxygen generated API docs should be included.
820 AC_ARG_WITH(apidocs, [ --with-apidocs build rpm API docs ],,[with_apidocs=auto])
822 case "$with_apidocs" in
824 AS_IF([test "$__DOXYGEN" = no],[with_apidocs=no],[with_apidocs=yes])
827 AS_IF([test "$__DOXYGEN" = no],
828 [AC_MSG_ERROR([rpm API docs needs doxygen in PATH])])
833 AC_ARG_WITH(selinux, [ --with-selinux build with selinux support ],
834 [case "$with_selinux" in
836 *) AC_MSG_ERROR([invalid argument to --with-selinux])
841 AS_IF([test "$with_selinux" = yes],[
842 AC_CHECK_HEADER([selinux/selinux.h],[
843 AC_CHECK_LIB(selinux,[is_selinux_enabled],[with_selinux=yes],[
844 AC_MSG_ERROR([--with-selinux given, but libselinux not found])])
846 AC_MSG_ERROR([--with-selinux given, but selinux/selinux.h not found])
850 AS_IF([test "$with_selinux" = yes],[
851 AC_DEFINE(WITH_SELINUX, 1, [Build with selinux support?])
852 WITH_SELINUX_LIB="-lselinux"
854 AC_SUBST(WITH_SELINUX_LIB)
855 AM_CONDITIONAL(SELINUX,[test "$with_selinux" = yes])
859 AC_ARG_WITH(lua, [ --with-lua build with lua support ],,[with_lua=yes])
860 AS_IF([test "$with_lua" = yes],[
861 AC_DEFINE(WITH_LUA, 1, [Build with lua support?])
862 WITH_LUA_INCLUDE="-I\${top_srcdir}/lua/include -I\${top_srcdir}/lua/local"
863 WITH_LUA_LIB="\$(top_builddir)/lua/liblua.la"
865 AC_SUBST(WITH_LUA_LIB)
866 AC_SUBST(WITH_LUA_INCLUDE)
868 AS_IF([test "$with_apidocs" = yes],[
869 WITH_APIDOCS_TARGET=apidocs
874 AC_SUBST(WITH_APIDOCS_TARGET)
875 AC_SUBST(WITH_APIDOCS)
878 AC_ARG_WITH(dmalloc, [ --with-dmalloc build with dmalloc debugging support ])
879 if test "$with_dmalloc" = yes ; then
880 AC_DEFINE(DMALLOC, 1, [Build with dmalloc support?])
881 LIBS="$LIBS -ldmalloc"
884 AC_CHECK_FUNCS(setlocale)
886 AC_CHECK_FUNCS(getpassphrase)
888 AC_CHECK_FUNC(getmntent, AC_DEFINE(HAVE_GETMNTENT, 1, [Define if you have the getmntent() function]), [
889 AC_CHECK_FUNC(mntctl, AC_DEFINE(HAVE_MNTCTL, 1, [Define as 1 if you have mntctl() (only aix?)]),[
890 AC_CHECK_FUNC(getmntinfo, AC_DEFINE(HAVE_GETMNTINFO, 1, [Define as 1 if you have getmntinfo() (Mac OS X)]), [
891 AC_CHECK_FUNC(getmntinfo_r, AC_DEFINE(HAVE_GETMNTINFO_R, 1, [Define as 1 if you have getmntinfo_r() (only osf?)]), [
892 AC_CHECK_LIB(c_r, getmntinfo_r, [LIBS="$LIBS -lc_r";
893 AC_DEFINE(HAVE_GETMNTINFO_R, 1, [Define as 1 if you have getmntinfo_r() (only osf?)])], [
894 AC_DEFINE([USE_GETMNTENT], 1, [Defined if getmntent replacement is used])
895 AC_LIBOBJ(getmntent)])
901 AC_CHECK_FUNC(lchown,
902 [__CHOWN_RHF="%{__chown} -Rhf"
903 __CHGRP_RHF="%{__chgrp} -Rhf"
904 AC_DEFINE(HAVE_LCHOWN, 1, [Define as 1 if you have lchown()])],
905 [__CHOWN_RHF="%{__chown} -Rf"
906 __CHGRP_RHF="%{__chgrp} -Rf"
907 dnl Does chown() follow symlinks? This should be a good enough test.
908 AC_MSG_CHECKING(whether chown() follows symlinks)
909 AC_ARG_ENABLE([broken-chown],
910 [ --enable-broken-chown this system's chown follows symbolic links],
911 result=$enableval, result=unknown)
912 if echo "$build" | egrep "(aix)|(hpux)|(linux)" > /dev/null ; then
914 elif echo "$build" | egrep "(nextstep)" > /dev/null ; then
917 if test $result = unknown; then
918 if test `${__ID} | cut -f2 -d\= | cut -f1 -d\(` = 0; then
923 if test `ls -l foo | awk '{print $3}'` != "root"; then
930 AC_MSG_CHECKING((cannot check by non-root user))
935 AC_MSG_RESULT($result)
936 if test $result = yes; then
937 AC_DEFINE(CHOWN_FOLLOWS_SYMLINK, 1, [Define as 1 if chown() follows symlinks and you don't have lchown()])
939 AC_SUBST(__CHOWN_RHF)
940 AC_SUBST(__CHGRP_RHF)
943 dnl figure out what root's primary group is
945 AC_MSG_CHECKING(root's primary group)
946 AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdio.h>
947 #include <sys/types.h>
953 struct passwd *root = NULL;
954 struct group *roots_group = NULL;
955 FILE * tempfile = NULL;
957 root = getpwuid( (uid_t) 0 );
959 roots_group = getgrgid(root->pw_gid);
960 if (roots_group != NULL) {
961 tempfile = fopen("conftest_rootg", "w");
962 if (tempfile != NULL) {
963 fprintf(tempfile, "%s\n", roots_group->gr_name);
971 }]])],[ROOT_GROUP=`cat conftest_rootg`],[ROOT_GROUP="root"],[ROOT_GROUP="root"
973 AC_MSG_RESULT($ROOT_GROUP)
976 if echo "$build_os" | grep sco > /dev/null; then
977 echo "hacking things up for sco"
978 AC_DEFINE(NEED_STRINGS_H, 1, [Define as one if we need to include <strings.h> (along with <string.h>)])
979 AC_DEFINE(HAVE_STRUCT_MNTTAB, 1,
980 [Define as 1 if you have "struct mnttab" (only sco?)])
981 elif echo "$build_os" | grep sunos > /dev/null; then
982 echo "hacking things up for sunos"
983 CFLAGS="$CFLAGS -D__USE_FIXED_PROTOTYPES__"
984 AC_DEFINE(NEED_STRINGS_H, 1, [Define as one if we need to include <strings.h> (along with <string.h>)])
985 AC_DEFINE(NEED_MYREALLOC, 1, [Define as 1 if we need myrealloc])
990 # get rid of the 4-th tuple, if config.guess returned "linux-gnu" for build_os
993 if echo "$build_os" | grep '.*-gnulibc1' > /dev/null ; then
994 build_os=`echo "${build_os}" | sed 's/-gnulibc1$//'`
996 if echo "$build_os" | grep '.*-gnueabi' > /dev/null ; then
997 build_os=`echo "${build_os}" | sed 's/-gnueabi$//'`
998 build_os_gnu=-gnueabi
1000 if echo "$build_os" | grep '.*-gnu' > /dev/null ; then
1001 build_os=`echo "${build_os}" | sed 's/-gnu$//'`
1005 build_os_exact="${build_os}"
1006 build_os_major=`echo "${build_os}" | sed 's/\..*$//'`
1007 build_os_noversion=`echo "${build_os}" | sed 's/[0-9]*\..*$//'`
1010 rm -f ./find-provides
1011 if test -f ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.prov ; then
1012 echo "using ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.prov for automatic provides generation"
1013 ln -s ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.prov ./find-provides
1014 elif test -f ${srcdir}/autodeps/${build_os_exact}.prov ; then
1015 echo "using ${srcdir}/autodeps/${build_os_exact}.prov for automatic provides generation"
1016 ln -s ${srcdir}/autodeps/${build_os_exact}.prov ./find-provides
1017 elif test -f ${srcdir}/autodeps/${build_os_major}.prov ; then
1018 echo "using ${srcdir}/autodeps/${build_os_major}.prov for automatic provides generation"
1019 ln -s ${srcdir}/autodeps/${build_os_major}.prov ./find-provides
1020 elif test -f ${srcdir}/autodeps/${build_os_noversion}.prov ; then
1021 echo "using ${srcdir}/autodeps/${build_os_noversion}.prov for automatic provides generation"
1022 ln -s ${srcdir}/autodeps/${build_os_noversion}.prov ./find-provides
1024 echo "*** no default provides information is available for ${build_os_noversion}"
1025 ln -s ${srcdir}/autodeps/none ./find-provides
1028 rm -f ./find-requires
1029 if test -f ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.req ; then
1030 echo "using ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.req for automatic requires generation"
1031 ln -s ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.req ./find-requires
1032 elif test -f ${srcdir}/autodeps/${build_os_exact}.req ; then
1033 echo "using ${srcdir}/autodeps/${build_os_exact}.req for automatic requires generation"
1034 ln -s ${srcdir}/autodeps/${build_os_exact}.req ./find-requires
1035 elif test -f ${srcdir}/autodeps/${build_os_major}.req ; then
1036 echo "using ${srcdir}/autodeps/${build_os_major}.req for automatic requires generation"
1037 ln -s ${srcdir}/autodeps/${build_os_major}.req ./find-requires
1038 elif test -f ${srcdir}/autodeps/${build_os_noversion}.req ; then
1039 echo "using ${srcdir}/autodeps/${build_os_noversion}.req for automatic requires generation"
1040 ln -s ${srcdir}/autodeps/${build_os_noversion}.req ./find-requires
1042 echo "*** no default requires information is available for ${build_os_noversion}"
1043 ln -s ${srcdir}/autodeps/none ./find-requires
1046 dnl Determine the canonical arch-vendor-os for the build machine
1047 autorelocate_path='%{nil}'
1048 autorelocate_dcolor='0'
1049 case "${build_cpu}" in
1050 *86) RPMCANONCOLOR=0; RPMCANONARCH=i386 ;;
1051 ia32e*) RPMCANONCOLOR=3; RPMCANONARCH=ia32e ;;
1052 amd64*) RPMCANONCOLOR=3; RPMCANONARCH=amd64 ;;
1053 x86_64*) RPMCANONCOLOR=3; RPMCANONARCH=x86_64 ;;
1054 alpha*) RPMCANONCOLOR=0; RPMCANONARCH=alpha ;;
1055 sparc64*) RPMCANONCOLOR=3; RPMCANONARCH=sparc64 ;;
1056 sparc*) RPMCANONCOLOR=3; RPMCANONARCH=sparc ;;
1057 ia64*) RPMCANONCOLOR=2; RPMCANONARCH=ia64;
1058 autorelocate_path='/emul/%%{ARCH}-%%{OS}'
1059 autorelocate_dcolor='1' ;;
1060 s390x*) RPMCANONCOLOR=3; RPMCANONARCH=s390x ;;
1061 s390*) RPMCANONCOLOR=0; RPMCANONARCH=s390 ;;
1062 powerpc64*|ppc64*) RPMCANONCOLOR=3; RPMCANONARCH=ppc64 ;;
1063 powerpc*|ppc*) RPMCANONCOLOR=0; RPMCANONARCH=ppc ;;
1064 arm*) RPMCANONCOLOR=0; RPMCANONARCH=arm ;;
1065 mipsel*) RPMCANONCOLOR=0; RPMCANONARCH=mipsel ;;
1066 mips*) RPMCANONCOLOR=0; RPMCANONARCH=mips ;;
1067 m68k*) RPMCANONCOLOR=0; RPMCANONARCH=m68k ;;
1068 *) RPMCANONCOLOR=0; RPMCANONARCH=unknown ;;
1070 case "${build_os_noversion}" in
1071 mint) RPMCANONARCH=m68kmint ;;
1073 RPMCANONVENDOR="$build_vendor"
1074 case "${build_vendor}" in
1075 unknown|pc|ibm|redhat|pld|mandrake|conectiva|lvr|yellowdog|caos)
1076 test -f /etc/redhat-release && RPMCANONVENDOR=redhat
1077 test -f /etc/pld-release && RPMCANONVENDOR=pld
1078 test -f /etc/mandrake-release && RPMCANONVENDOR=mandrake
1079 test -f /etc/conectiva-release && RPMCANONVENDOR=conectiva
1080 test -f /etc/lvr-release && RPMCANONVENDOR=lvr
1081 test -f /etc/yellowdog-release && RPMCANONVENDOR=yellowdog
1082 test -f /etc/caos-release && RPMCANONVENDOR=caos
1085 RPMCANONOS="$build_os_noversion"
1086 RPMCANONGNU="$build_os_gnu"
1087 AC_SUBST(RPMCANONCOLOR)
1088 AC_SUBST(autorelocate_path)
1089 AC_SUBST(autorelocate_dcolor)
1090 AC_SUBST(RPMCANONARCH)
1091 AC_SUBST(RPMCANONVENDOR)
1092 AC_SUBST(RPMCANONOS)
1093 AC_SUBST(RPMCANONGNU)
1094 AC_DEFINE_UNQUOTED([RPMCANONVENDOR],["${RPMCANONVENDOR}"],[canonical vendor])
1096 if test X"$prefix" = XNONE ; then
1097 usrprefix="$ac_default_prefix"
1102 RPMCONFIGDIR="`echo ${usrprefix}/lib/rpm`"
1103 AC_SUBST(RPMCONFIGDIR)
1107 AC_CONFIG_SUBDIRS(db3)
1109 AC_PATH_PROG(AUTOM4TE,autom4te,:)
1111 AC_CONFIG_FILES([ Doxyfile Makefile platform rpm.pc
1112 rpmio/Makefile rpmdb/Makefile lib/Makefile build/Makefile
1113 po/Makefile.in scripts/Makefile
1121 AC_CONFIG_FILES([rpmpopt-${VERSION}:rpmpopt.in],,[VERSION=${VERSION}])