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 AC_MSG_CHECKING(for /usr/ucblib in LIBS)
324 if test -d /usr/ucblib ; then
325 if test "$build" = "mips-sni-sysv4" ; then
326 addlib /usr/ccs/lib -lc
337 dnl Check for features
340 dnl Checks for libraries.
342 AC_CHECK_FUNC(setreuid, [], [
343 AC_CHECK_LIB(ucb, setreuid, [if echo $LIBS | grep -- -lucb >/dev/null ;then :; else LIBS="$LIBS -lc -lucb" USEUCB=y;fi])
346 AC_CHECK_FUNC(rand, [], [
347 AC_CHECK_LIB(rand, rand, [])
350 AC_CHECK_FUNC(getdomainname, [], [
351 AC_CHECK_LIB(nsl, getdomainname)
353 AC_CHECK_FUNC(socket, [], [
354 AC_CHECK_LIB(socket, socket)
357 AC_CHECK_HEADERS(error.h)
358 AC_CHECK_FUNCS(error)
360 AC_CHECK_HEADERS(poll.h)
362 AC_CHECK_HEADERS(thread.h pthread.h synch.h semaphore.h)
364 AC_CHECK_LIB(pthread, pthread_mutex_trylock, [], [
365 dnl OSF 5.0 has the the symbols prefixed with __ in libpthread.
366 AC_CHECK_LIB(pthread, __pthread_mutex_trylock, [], [
367 AC_CHECK_LIB(thread, mutex_lock)
371 AC_CHECK_HEADERS(aio.h)
372 AC_SEARCH_LIBS(aio_read, [c rt aio posix4])
374 dnl Better not use fchmod at all.
375 AC_CHECK_FUNC(fchmod)
377 AC_CHECK_FUNCS(vsnprintf snprintf)
379 dnl Temporary hack for MiNT. Some functions (writev, snprintf) are
380 dnl not in the libc but in libport (for political reasons). This check
381 dnl can hopefully be removed soon. Please use the default action
382 dnl for this macro (not LIBS=...), otherwise the check for dbopen
384 AC_CHECK_LIB(port, writev)
387 # Check for libelf library. Prefer external, otherwise none.
390 AC_CHECK_HEADER([libelf.h])
391 AC_CHECK_HEADERS([gelf.h], [
392 AC_CHECK_LIB(elf, gelf_getvernaux, [
393 AC_DEFINE(HAVE_LIBELF, 1, [Define to 1 if you have the 'elf' library (-lelf).])
394 WITH_LIBELF_LIB="-lelf"
398 AC_SUBST(WITH_LIBELF_INCLUDE)
399 AC_SUBST(WITH_LIBELF_LIB)
400 AM_CONDITIONAL(LIBELF,[test "$WITH_LIBELF" = yes])
402 AC_CHECK_HEADERS([dwarf.h], [
405 AM_CONDITIONAL(LIBDWARF,[test "$WITH_LIBDWARF" = yes])
408 # Check for beecrypt library.
409 WITH_BEECRYPT_INCLUDE=
411 AC_CHECK_HEADERS([beecrypt/beecrypt.h], [
412 AC_CHECK_LIB(beecrypt, mpfprintln, [
413 AC_CHECK_HEADERS([beecrypt/api.h])
414 WITH_BEECRYPT_INCLUDE=
415 WITH_BEECRYPT_LIB="-lbeecrypt"
417 AC_MSG_ERROR([missing required library beecrypt])
420 AC_MSG_ERROR([missing required header beecrypt/beecrypt.h])
422 AC_SUBST(WITH_BEECRYPT_INCLUDE)
423 AC_SUBST(WITH_BEECRYPT_LIB)
426 # Check for neon library. Prefer external, otherwise none.
427 AC_ARG_WITH(neon, [ --with-neon enable neon support],
428 [case "$with_neon" in
430 *) AC_MSG_ERROR([invalid argument to --with-neon])
437 AS_IF([test "$with_neon" = yes],[
438 AC_CHECK_HEADER([neon/ne_session.h], [
439 AC_CHECK_LIB(neon, ne_session_create, [
440 AC_DEFINE(HAVE_LIBNEON, 1, [Define to 1 if you have the 'neon' library (-lneon).])
441 AC_CHECK_LIB(neon, ne_get_response_header, [
442 AC_DEFINE(HAVE_NEON_NE_GET_RESPONSE_HEADER, 1, [Define to 1 if you have ne_get_response_header() in libneon.])
444 AC_CHECK_LIB(neon, ne_send_request_chunk, [
445 AC_DEFINE(HAVE_NEON_NE_SEND_REQUEST_CHUNK, 1, [Define to 1 if you have ne_send_request_chunk() in libneon.])
448 WITH_NEON_LIB="-lneon"
449 AC_DEFINE(WITH_NEON,1,[Build with neon support?])
451 AC_MSG_ERROR([--with-neon given, but required library libneon not found])
454 AC_MSG_ERROR([--with-neon given, but required header neon/ne_session.h not found])
457 AC_SUBST(WITH_NEON_INCLUDE)
458 AC_SUBST(WITH_NEON_LIB)
461 # Check for magic library.
465 AC_CHECK_HEADER([magic.h], [
466 AC_CHECK_LIB(magic, magic_open, [
468 WITH_MAGIC_LIB="-lmagic"
470 AC_MSG_ERROR([missing required libary 'libmagic'])
473 AC_MSG_ERROR([missing required header magic.h])
476 AC_SUBST(WITH_MAGIC_INCLUDE)
477 AC_SUBST(WITH_MAGIC_LIB)
480 # Check for popt library.
484 AC_CHECK_HEADER([popt.h], [
485 AC_CHECK_LIB(popt, poptGetContext, [
487 WITH_POPT_LIB="-lpopt"
490 AC_MSG_ERROR([missing required library popt])
493 AC_MSG_ERROR([missing required header popt.h])
496 AC_SUBST(WITH_POPT_INCLUDE)
497 AC_SUBST(WITH_POPT_LIB)
501 dnl ------------------ with internal db
502 AC_DEFINE(HAVE_DB3_DB_H, 1, [Define if you have the <db3/db.h> header file])
505 AC_SUBST(WITH_DB_SUBDIR)
508 # Check for sqlite3 library.
509 AC_ARG_ENABLE(sqlite3, [ --enable-sqlite3 enable sqlite3 support],
510 [case "$enable_sqlite3" in
512 *) AC_MSG_ERROR([invalid argument to --enable-sqlite3])
517 WITH_SQLITE3_INCLUDE=
520 AS_IF([test "$enable_sqlite3" = yes],[
521 AC_CHECK_HEADERS([sqlite3.h],
522 [ AC_CHECK_LIB(sqlite3, sqlite3_open, [
523 WITH_SQLITE3_INCLUDE=
524 WITH_SQLITE3_LIB="-lsqlite3"
527 AC_MSG_ERROR([missing libsqlite3])
530 AC_MSG_ERROR([missing sqlite3.h])
534 AC_SUBST(WITH_SQLITE3_INCLUDE)
535 AC_SUBST(WITH_SQLITE3_LIB)
536 AM_CONDITIONAL([SQLITE3],[test "$WITH_SQLITE3" = yes])
540 dnl AmigaOS and IXEmul have a fork() dummy
543 echo "Building for AmigaOS: using vfork() instead of fork()";
544 CFLAGS="$CFLAGS -Dfork=vfork"
548 AM_GNU_GETTEXT_VERSION([0.16.1])
549 AM_GNU_GETTEXT([external])
551 dnl Checks for header files we can live without.
557 AC_CHECK_HEADERS(fcntl.h getopt.h grp.h memory.h netdb.h pwd.h utime.h)
559 AC_CHECK_HEADERS(sys/ipc.h sys/socket.h sys/select.h)
560 AC_CHECK_HEADERS(sys/types.h sys/stdtypes.h)
561 AC_CHECK_HEADERS(sys/mman.h sys/resource.h sys/utsname.h sys/wait.h)
563 AC_CHECK_HEADERS(netinet/in_systm.h)
564 AC_CHECK_HEADERS(machine/types.h)
565 AC_CHECK_HEADERS(mntent.h sys/mnttab.h sys/systemcfg.h)
566 AC_CHECK_HEADERS(sys/mount.h sys/mntctl.h sys/param.h sys/vmount.h)
567 AC_CHECK_HEADERS(bzlib.h libio.h zlib.h)
568 AC_CHECK_HEADERS(err.h mcheck.h)
569 AC_CHECK_HEADERS(pthread.h)
571 AC_CHECK_HEADERS(glob.h)
572 AC_CHECK_HEADERS(locale.h)
574 dnl statfs portability fiddles.
576 dnl We should really emulate/steal sections of the statfs and struct statfs
577 dnl checks from GNU fileutils.
579 AC_MSG_CHECKING(for struct statfs)
582 dnl this is easier than nesting AC_TRY_COMPILEs...
584 found_struct_statfs=no
586 if test X$found_struct_statfs = Xno ; then
587 dnl Solaris 2.6+ wants to use statvfs
588 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
589 #ifdef HAVE_SYS_TYPES_H
590 #include <sys/types.h>
592 #include <sys/statvfs.h> ]], [[struct statvfs sfs;]])],[AC_MSG_RESULT(in sys/statvfs.h)
593 AC_DEFINE(STATFS_IN_SYS_STATVFS, 1,
594 [statfs in <sys/statvfs.h> (for solaris 2.6+ systems)])
595 found_struct_statfs=yes],[])
598 if test X$found_struct_statfs = Xno ; then
599 dnl first try including sys/vfs.h
600 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
601 #ifdef HAVE_SYS_TYPES_H
602 #include <sys/types.h>
604 #include <sys/vfs.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/vfs.h)
605 AC_DEFINE(STATFS_IN_SYS_VFS, 1, [statfs in <sys/vfs.h> (for linux systems)])
606 found_struct_statfs=yes],[])
609 if test X$found_struct_statfs = Xno ; then
610 dnl ...next try including sys/mount.h
611 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
612 #ifdef HAVE_SYS_TYPES_H
613 #include <sys/types.h>
615 #ifdef HAVE_SYS_PARAM_H
616 #include <sys/param.h>
618 #include <sys/mount.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/mount.h)
619 AC_DEFINE(STATFS_IN_SYS_MOUNT, 1, [statfs in <sys/mount.h> (for Digital Unix 4.0D systems)])
620 found_struct_statfs=yes],[])
623 if test X$found_struct_statfs = Xno ; then
624 dnl ...still no joy. Try sys/statfs.h
625 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
626 #ifdef HAVE_SYS_TYPES_H
627 #include <sys/types.h>
629 #include <sys/statfs.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/statfs.h)
630 AC_DEFINE(STATFS_IN_SYS_STATFS, 1, [statfs in <sys/statfs.h> (for Irix 6.4 systems)])
631 found_struct_statfs=yes],[])
634 if test X$found_struct_statfs = Xno ; then
635 dnl ...no luck. Warn the user of impending doom.
636 AC_MSG_WARN(not found)
640 dnl if we found the struct, see if it has the f_bavail member. Some OSes
641 dnl don't, including IRIX 6.5+
643 if test X$found_struct_statfs = Xyes ; then
644 AC_MSG_CHECKING(for f_bavail member in struct statfs)
645 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
646 #ifdef HAVE_SYS_TYPES_H
647 #include <sys/types.h>
649 #if STATFS_IN_SYS_STATVFS
650 # include <sys/statvfs.h>
651 typedef struct statvfs STATFS_t;
653 typedef struct statfs STATFS_t;
654 # if STATFS_IN_SYS_VFS
655 # include <sys/vfs.h>
656 # elif STATFS_IN_SYS_MOUNT
657 # include <sys/mouht.h>
658 # elif STATFS_IN_SYS_STATFS
659 # include <sys/statfs.h>
661 #endif ]], [[STATFS_t sfs;
662 sfs.f_bavail = 0;]])],[AC_MSG_RESULT(yes)
663 AC_DEFINE(STATFS_HAS_F_BAVAIL, 1, [Define if struct statfs has the f_bavail member])],[AC_MSG_RESULT(no)
667 if test X$found_struct_statfs = Xyes ; then
669 dnl now check to see if we have the 4-argument variant of statfs()
670 dnl this pretty much requires AC_RUN_IFELSE([AC_LANG_SOURCE([[]])],[],[],[])
672 AC_MSG_CHECKING([if statfs() requires 4 arguments])
673 AC_RUN_IFELSE([AC_LANG_SOURCE([[
674 #ifdef HAVE_SYS_TYPES_H
675 #include <sys/types.h>
677 #ifdef STATFS_IN_SYS_VFS
679 #elif STATFS_IN_SYS_MOUNT
680 #include <sys/mouht.h>
681 #elif STATFS_IN_SYS_STATFS
682 #include <sys/statfs.h>
686 exit (statfs(".", &sfs, sizeof(sfs), 0));
688 ]])],[AC_MSG_RESULT(yes)
689 AC_DEFINE(STAT_STATFS4, 1, [Define if the statfs() call takes 4 arguments])],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)
695 dnl look for libc features
697 AC_MSG_CHECKING(if <netdb.h> defines h_errno)
698 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[printf("%d",h_errno)]])],[PROVIDES_ERRNO=yes],[])
699 AC_MSG_RESULT($PROVIDES_ERRNO)
700 if test $PROVIDES_ERRNO = yes; then
701 AC_DEFINE(HAVE_HERRNO, 1, [ Define as 1 if <netdb.h> defines h_errno])
704 dnl If a system doesn't have S_IFSOCK, define it as 0 which will
705 dnl make S_ISSOCK always return false (nice, eh?)
706 AC_MSG_CHECKING(if <sys/stat.h> defines S_IFSOCK)
707 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[printf("%d", S_IFSOCK)]])],[HAS_S_IFSOCK=yes],[HAS_S_IFSOCK=no])
708 AC_MSG_RESULT($HAS_S_IFSOCK)
709 if test $HAS_S_IFSOCK = yes; then
710 AC_DEFINE(HAVE_S_IFSOCK, 1, [Define as 1 if <sys/stat.h> defines S_IFSOCK])
713 dnl Some Unix's are missing S_ISLNK, S_ISSOCK
714 AC_MSG_CHECKING(if <sys/stat.h> defines S_ISLNK)
715 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[printf("%d", S_ISLNK(0755))]])],[HAS_S_ISLNK=yes],[HAS_S_ISLNK=no])
716 AC_MSG_RESULT($HAS_S_ISLNK)
717 if test $HAS_S_ISLNK = yes; then
718 AC_DEFINE(HAVE_S_ISLNK, 1, [Define as 1 if <sys/stat.h> defines S_ISLNK])
721 AC_MSG_CHECKING(if <sys/stat.h> defines S_ISSOCK)
722 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[printf("%d", S_ISSOCK(0755))]])],[HAS_S_ISSOCK=yes],[HAS_S_ISSOCK=no])
723 AC_MSG_RESULT($HAS_S_ISSOCK)
724 if test $HAS_S_ISSOCK = yes; then
725 AC_DEFINE(HAVE_S_ISSOCK, 1, [Define as 1 if <sys/stat.h> defines S_ISSOCK])
728 AC_MSG_CHECKING(if timezone is defined)
729 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[printf("%ld", timezone)]])],[HAS_TIMEZONE=yes],[HAS_TIMEZONE=no])
730 AC_MSG_RESULT($HAS_TIMEZONE)
732 dnl Check for missing typedefs
738 dnl Checks for library functions.
741 dnl XXX don't want to re-enable code that's been unused for years at this
742 dnl point, but should offer good performance improvements, check after
746 AC_CHECK_FUNCS(basename getaddrinfo getcwd getnameinfo getwd inet_aton)
747 AC_CHECK_FUNCS(mtrace putenv realpath setenv)
748 AC_CHECK_FUNCS(stpcpy stpncpy strcspn)
749 AC_CHECK_FUNCS(strdup strndup strerror strtol strtoul strspn strstr)
751 AC_CHECK_FUNCS(__secure_getenv)
753 AC_CHECK_FUNCS(regcomp)
757 AC_CHECK_FUNCS(mkstemp)
759 dnl XXX Glob *is* broken on linux with libc5, solaris and possibly aix when
760 dnl %files gets something like
761 dnl /usr/*/locale/*/LC_MESSAGES/*.mo
762 dnl (Note: more than one asterisk in glob pattern.)
764 dnl XXX Glob is "fixed" in glibc-2.3.3-61, but the cost is that
765 dnl dangling symlinks are no longer globbed. Always use the internal glob.
766 AC_DEFINE(USE_GNU_GLOB, 1, [Use the included glob.c?])
770 dnl check if python is requested
771 AC_ARG_ENABLE(python, [ --enable-python build rpm python bindings ],
772 [case "$enable_python" in
774 *) AC_MSG_ERROR([invalid argument to --enable-python])
779 AS_IF([test "$enable_python" = yes],[
780 # rpm-python requires python-2.5
781 AM_PATH_PYTHON([2.5],[
782 WITH_PYTHON_INCLUDE=`${PYTHON} -c 'from distutils.sysconfig import *; print get_python_inc()'`
783 WITH_PYTHON_SUBPACKAGE=1
784 save_CPPFLAGS="$CPPFLAGS"
785 CPPFLAGS="$CPPFLAGS -I$WITH_PYTHON_INCLUDE"
786 AC_CHECK_HEADER([Python.h],[],
787 [AC_MSG_ERROR([missing Python.h])
789 CPPFLAGS="$save_CPPFLAGS"
791 AC_SEARCH_LIBS([Py_Main],[python${PYTHON_VERSION} python],[
792 WITH_PYTHON_LIB="$ac_res"
793 ],[AC_MSG_ERROR([missing python library])
800 WITH_PYTHON_SUBPACKAGE=0
803 AC_SUBST(WITH_PYTHON_INCLUDE)
804 AC_SUBST(WITH_PYTHON_LIB)
806 AM_CONDITIONAL(PYTHON,[test "$WITH_PYTHON_SUBPACKAGE" = 1])
808 AC_PATH_PROG(__DOXYGEN, doxygen, no, $PATH)
810 dnl Auto-detect whether doxygen generated API docs should be included.
812 AC_ARG_WITH(apidocs, [ --with-apidocs build rpm API docs ],,[with_apidocs=auto])
814 case "$with_apidocs" in
816 AS_IF([test "$__DOXYGEN" = no],[with_apidocs=no],[with_apidocs=yes])
819 AS_IF([test "$__DOXYGEN" = no],
820 [AC_MSG_ERROR([rpm API docs needs doxygen in PATH])])
825 AC_ARG_WITH(selinux, [ --with-selinux build with selinux support ],
826 [case "$with_selinux" in
828 *) AC_MSG_ERROR([invalid argument to --with-selinux])
833 AS_IF([test "$with_selinux" = yes],[
834 AC_CHECK_HEADER([selinux/selinux.h],[
835 AC_CHECK_LIB(selinux,[is_selinux_enabled],[with_selinux=yes],[
836 AC_MSG_ERROR([--with-selinux given, but libselinux not found])])
838 AC_MSG_ERROR([--with-selinux given, but selinux/selinux.h not found])
842 AS_IF([test "$with_selinux" = yes],[
843 AC_DEFINE(WITH_SELINUX, 1, [Build with selinux support?])
844 WITH_SELINUX_LIB="-lselinux"
846 AC_SUBST(WITH_SELINUX_LIB)
847 AM_CONDITIONAL(SELINUX,[test "$with_selinux" = yes])
851 AC_ARG_WITH(lua, [ --with-lua build with lua support ],,[with_lua=yes])
852 AS_IF([test "$with_lua" = yes],[
853 AC_DEFINE(WITH_LUA, 1, [Build with lua support?])
854 WITH_LUA_INCLUDE="-I\${top_srcdir}/lua/include -I\${top_srcdir}/lua/local"
855 WITH_LUA_LIB="\$(top_builddir)/lua/liblua.la"
857 AC_SUBST(WITH_LUA_LIB)
858 AC_SUBST(WITH_LUA_INCLUDE)
860 AS_IF([test "$with_apidocs" = yes],[
861 WITH_APIDOCS_TARGET=apidocs
866 AC_SUBST(WITH_APIDOCS_TARGET)
867 AC_SUBST(WITH_APIDOCS)
870 AC_ARG_WITH(dmalloc, [ --with-dmalloc build with dmalloc debugging support ])
871 if test "$with_dmalloc" = yes ; then
872 AC_DEFINE(DMALLOC, 1, [Build with dmalloc support?])
873 LIBS="$LIBS -ldmalloc"
876 AC_CHECK_FUNCS(setlocale)
878 AC_CHECK_FUNCS(getpassphrase)
880 AC_CHECK_FUNC(getmntent, AC_DEFINE(HAVE_GETMNTENT, 1, [Define if you have the getmntent() function]), [
881 AC_CHECK_FUNC(mntctl, AC_DEFINE(HAVE_MNTCTL, 1, [Define as 1 if you have mntctl() (only aix?)]),[
882 AC_CHECK_FUNC(getmntinfo, AC_DEFINE(HAVE_GETMNTINFO, 1, [Define as 1 if you have getmntinfo() (Mac OS X)]), [
883 AC_CHECK_FUNC(getmntinfo_r, AC_DEFINE(HAVE_GETMNTINFO_R, 1, [Define as 1 if you have getmntinfo_r() (only osf?)]), [
884 AC_CHECK_LIB(c_r, getmntinfo_r, [LIBS="$LIBS -lc_r";
885 AC_DEFINE(HAVE_GETMNTINFO_R, 1, [Define as 1 if you have getmntinfo_r() (only osf?)])], [
886 AC_DEFINE([USE_GETMNTENT], 1, [Defined if getmntent replacement is used])
887 AC_LIBOBJ(getmntent)])
893 AC_CHECK_FUNC(lchown,
894 [__CHOWN_RHF="%{__chown} -Rhf"
895 __CHGRP_RHF="%{__chgrp} -Rhf"
896 AC_DEFINE(HAVE_LCHOWN, 1, [Define as 1 if you have lchown()])],
897 [__CHOWN_RHF="%{__chown} -Rf"
898 __CHGRP_RHF="%{__chgrp} -Rf"
899 dnl Does chown() follow symlinks? This should be a good enough test.
900 AC_MSG_CHECKING(whether chown() follows symlinks)
901 AC_ARG_ENABLE([broken-chown],
902 [ --enable-broken-chown this system's chown follows symbolic links],
903 result=$enableval, result=unknown)
904 if echo "$build" | egrep "(aix)|(hpux)|(linux)" > /dev/null ; then
906 elif echo "$build" | egrep "(nextstep)" > /dev/null ; then
909 if test $result = unknown; then
910 if test `${__ID} | cut -f2 -d\= | cut -f1 -d\(` = 0; then
915 if test `ls -l foo | awk '{print $3}'` != "root"; then
922 AC_MSG_CHECKING((cannot check by non-root user))
927 AC_MSG_RESULT($result)
928 if test $result = yes; then
929 AC_DEFINE(CHOWN_FOLLOWS_SYMLINK, 1, [Define as 1 if chown() follows symlinks and you don't have lchown()])
931 AC_SUBST(__CHOWN_RHF)
932 AC_SUBST(__CHGRP_RHF)
935 dnl figure out what root's primary group is
937 AC_MSG_CHECKING(root's primary group)
938 AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdio.h>
939 #include <sys/types.h>
945 struct passwd *root = NULL;
946 struct group *roots_group = NULL;
947 FILE * tempfile = NULL;
949 root = getpwuid( (uid_t) 0 );
951 roots_group = getgrgid(root->pw_gid);
952 if (roots_group != NULL) {
953 tempfile = fopen("conftest_rootg", "w");
954 if (tempfile != NULL) {
955 fprintf(tempfile, "%s\n", roots_group->gr_name);
963 }]])],[ROOT_GROUP=`cat conftest_rootg`],[ROOT_GROUP="root"],[ROOT_GROUP="root"
965 AC_MSG_RESULT($ROOT_GROUP)
968 if echo "$build_os" | grep sco > /dev/null; then
969 echo "hacking things up for sco"
970 AC_DEFINE(NEED_STRINGS_H, 1, [Define as one if we need to include <strings.h> (along with <string.h>)])
971 AC_DEFINE(HAVE_STRUCT_MNTTAB, 1,
972 [Define as 1 if you have "struct mnttab" (only sco?)])
973 elif echo "$build_os" | grep sunos > /dev/null; then
974 echo "hacking things up for sunos"
975 CFLAGS="$CFLAGS -D__USE_FIXED_PROTOTYPES__"
976 AC_DEFINE(NEED_STRINGS_H, 1, [Define as one if we need to include <strings.h> (along with <string.h>)])
977 AC_DEFINE(NEED_MYREALLOC, 1, [Define as 1 if we need myrealloc])
982 # get rid of the 4-th tuple, if config.guess returned "linux-gnu" for build_os
985 if echo "$build_os" | grep '.*-gnulibc1' > /dev/null ; then
986 build_os=`echo "${build_os}" | sed 's/-gnulibc1$//'`
988 if echo "$build_os" | grep '.*-gnueabi' > /dev/null ; then
989 build_os=`echo "${build_os}" | sed 's/-gnueabi$//'`
990 build_os_gnu=-gnueabi
992 if echo "$build_os" | grep '.*-gnu' > /dev/null ; then
993 build_os=`echo "${build_os}" | sed 's/-gnu$//'`
997 build_os_exact="${build_os}"
998 build_os_major=`echo "${build_os}" | sed 's/\..*$//'`
999 build_os_noversion=`echo "${build_os}" | sed 's/[0-9]*\..*$//'`
1002 rm -f ./find-provides
1003 if test -f ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.prov ; then
1004 echo "using ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.prov for automatic provides generation"
1005 ln -s ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.prov ./find-provides
1006 elif test -f ${srcdir}/autodeps/${build_os_exact}.prov ; then
1007 echo "using ${srcdir}/autodeps/${build_os_exact}.prov for automatic provides generation"
1008 ln -s ${srcdir}/autodeps/${build_os_exact}.prov ./find-provides
1009 elif test -f ${srcdir}/autodeps/${build_os_major}.prov ; then
1010 echo "using ${srcdir}/autodeps/${build_os_major}.prov for automatic provides generation"
1011 ln -s ${srcdir}/autodeps/${build_os_major}.prov ./find-provides
1012 elif test -f ${srcdir}/autodeps/${build_os_noversion}.prov ; then
1013 echo "using ${srcdir}/autodeps/${build_os_noversion}.prov for automatic provides generation"
1014 ln -s ${srcdir}/autodeps/${build_os_noversion}.prov ./find-provides
1016 echo "*** no default provides information is available for ${build_os_noversion}"
1017 ln -s ${srcdir}/autodeps/none ./find-provides
1020 rm -f ./find-requires
1021 if test -f ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.req ; then
1022 echo "using ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.req for automatic requires generation"
1023 ln -s ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.req ./find-requires
1024 elif test -f ${srcdir}/autodeps/${build_os_exact}.req ; then
1025 echo "using ${srcdir}/autodeps/${build_os_exact}.req for automatic requires generation"
1026 ln -s ${srcdir}/autodeps/${build_os_exact}.req ./find-requires
1027 elif test -f ${srcdir}/autodeps/${build_os_major}.req ; then
1028 echo "using ${srcdir}/autodeps/${build_os_major}.req for automatic requires generation"
1029 ln -s ${srcdir}/autodeps/${build_os_major}.req ./find-requires
1030 elif test -f ${srcdir}/autodeps/${build_os_noversion}.req ; then
1031 echo "using ${srcdir}/autodeps/${build_os_noversion}.req for automatic requires generation"
1032 ln -s ${srcdir}/autodeps/${build_os_noversion}.req ./find-requires
1034 echo "*** no default requires information is available for ${build_os_noversion}"
1035 ln -s ${srcdir}/autodeps/none ./find-requires
1038 dnl Determine the canonical arch-vendor-os for the build machine
1039 autorelocate_path='%{nil}'
1040 autorelocate_dcolor='0'
1041 case "${build_cpu}" in
1042 *86) RPMCANONCOLOR=0; RPMCANONARCH=i386 ;;
1043 ia32e*) RPMCANONCOLOR=3; RPMCANONARCH=ia32e ;;
1044 amd64*) RPMCANONCOLOR=3; RPMCANONARCH=amd64 ;;
1045 x86_64*) RPMCANONCOLOR=3; RPMCANONARCH=x86_64 ;;
1046 alpha*) RPMCANONCOLOR=0; RPMCANONARCH=alpha ;;
1047 sparc64*) RPMCANONCOLOR=3; RPMCANONARCH=sparc64 ;;
1048 sparc*) RPMCANONCOLOR=3; RPMCANONARCH=sparc ;;
1049 ia64*) RPMCANONCOLOR=2; RPMCANONARCH=ia64;
1050 autorelocate_path='/emul/%%{ARCH}-%%{OS}'
1051 autorelocate_dcolor='1' ;;
1052 s390x*) RPMCANONCOLOR=3; RPMCANONARCH=s390x ;;
1053 s390*) RPMCANONCOLOR=0; RPMCANONARCH=s390 ;;
1054 powerpc64*|ppc64*) RPMCANONCOLOR=3; RPMCANONARCH=ppc64 ;;
1055 powerpc*|ppc*) RPMCANONCOLOR=0; RPMCANONARCH=ppc ;;
1056 arm*) RPMCANONCOLOR=0; RPMCANONARCH=arm ;;
1057 mipsel*) RPMCANONCOLOR=0; RPMCANONARCH=mipsel ;;
1058 mips*) RPMCANONCOLOR=0; RPMCANONARCH=mips ;;
1059 m68k*) RPMCANONCOLOR=0; RPMCANONARCH=m68k ;;
1060 *) RPMCANONCOLOR=0; RPMCANONARCH=unknown ;;
1062 case "${build_os_noversion}" in
1063 mint) RPMCANONARCH=m68kmint ;;
1065 RPMCANONVENDOR="$build_vendor"
1066 case "${build_vendor}" in
1067 unknown|pc|ibm|redhat|pld|mandrake|conectiva|lvr|yellowdog|caos)
1068 test -f /etc/redhat-release && RPMCANONVENDOR=redhat
1069 test -f /etc/pld-release && RPMCANONVENDOR=pld
1070 test -f /etc/mandrake-release && RPMCANONVENDOR=mandrake
1071 test -f /etc/conectiva-release && RPMCANONVENDOR=conectiva
1072 test -f /etc/lvr-release && RPMCANONVENDOR=lvr
1073 test -f /etc/yellowdog-release && RPMCANONVENDOR=yellowdog
1074 test -f /etc/caos-release && RPMCANONVENDOR=caos
1077 RPMCANONOS="$build_os_noversion"
1078 RPMCANONGNU="$build_os_gnu"
1079 AC_SUBST(RPMCANONCOLOR)
1080 AC_SUBST(autorelocate_path)
1081 AC_SUBST(autorelocate_dcolor)
1082 AC_SUBST(RPMCANONARCH)
1083 AC_SUBST(RPMCANONVENDOR)
1084 AC_SUBST(RPMCANONOS)
1085 AC_SUBST(RPMCANONGNU)
1086 AC_DEFINE_UNQUOTED([RPMCANONVENDOR],["${RPMCANONVENDOR}"],[canonical vendor])
1088 if test X"$prefix" = XNONE ; then
1089 usrprefix="$ac_default_prefix"
1094 RPMCONFIGDIR="`echo ${usrprefix}/lib/rpm`"
1095 AC_SUBST(RPMCONFIGDIR)
1099 AC_CONFIG_SUBDIRS(db3)
1101 AC_PATH_PROG(AUTOM4TE,autom4te,:)
1103 AC_CONFIG_FILES([ Doxyfile Makefile platform rpm.pc
1104 rpmio/Makefile rpmdb/Makefile lib/Makefile build/Makefile
1105 po/Makefile.in scripts/Makefile
1113 AC_CONFIG_FILES([rpmpopt-${VERSION}:rpmpopt.in],,[VERSION=${VERSION}])