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 is based on python-2.5,
781 # with legacy hacks for building against 2.4
782 AM_PATH_PYTHON([2.4],[
783 WITH_PYTHON_INCLUDE=`${PYTHON} -c 'from distutils.sysconfig import *; print get_python_inc()'`
784 WITH_PYTHON_SUBPACKAGE=1
785 save_CPPFLAGS="$CPPFLAGS"
786 CPPFLAGS="$CPPFLAGS -I$WITH_PYTHON_INCLUDE"
787 AC_CHECK_HEADER([Python.h],[],
788 [AC_MSG_ERROR([missing Python.h])
790 CPPFLAGS="$save_CPPFLAGS"
792 AC_SEARCH_LIBS([Py_Main],[python${PYTHON_VERSION} python],[
793 WITH_PYTHON_LIB="$ac_res"
794 ],[AC_MSG_ERROR([missing python library])
801 WITH_PYTHON_SUBPACKAGE=0
804 AC_SUBST(WITH_PYTHON_INCLUDE)
805 AC_SUBST(WITH_PYTHON_LIB)
807 AM_CONDITIONAL(PYTHON,[test "$WITH_PYTHON_SUBPACKAGE" = 1])
809 AC_PATH_PROG(__DOXYGEN, doxygen, no, $PATH)
811 dnl Auto-detect whether doxygen generated API docs should be included.
813 AC_ARG_WITH(apidocs, [ --with-apidocs build rpm API docs ],,[with_apidocs=auto])
815 case "$with_apidocs" in
817 AS_IF([test "$__DOXYGEN" = no],[with_apidocs=no],[with_apidocs=yes])
820 AS_IF([test "$__DOXYGEN" = no],
821 [AC_MSG_ERROR([rpm API docs needs doxygen in PATH])])
826 AC_ARG_WITH(selinux, [ --with-selinux build with selinux support ],
827 [case "$with_selinux" in
829 *) AC_MSG_ERROR([invalid argument to --with-selinux])
834 AS_IF([test "$with_selinux" = yes],[
835 AC_CHECK_HEADER([selinux/selinux.h],[
836 AC_CHECK_LIB(selinux,[is_selinux_enabled],[with_selinux=yes],[
837 AC_MSG_ERROR([--with-selinux given, but libselinux not found])])
839 AC_MSG_ERROR([--with-selinux given, but selinux/selinux.h not found])
843 AS_IF([test "$with_selinux" = yes],[
844 AC_DEFINE(WITH_SELINUX, 1, [Build with selinux support?])
845 WITH_SELINUX_LIB="-lselinux"
847 AC_SUBST(WITH_SELINUX_LIB)
848 AM_CONDITIONAL(SELINUX,[test "$with_selinux" = yes])
852 AC_ARG_WITH(lua, [ --with-lua build with lua support ],,[with_lua=yes])
853 AS_IF([test "$with_lua" = yes],[
854 AC_DEFINE(WITH_LUA, 1, [Build with lua support?])
855 WITH_LUA_INCLUDE="-I\${top_srcdir}/lua/include -I\${top_srcdir}/lua/local"
856 WITH_LUA_LIB="\$(top_builddir)/lua/liblua.la"
858 AC_SUBST(WITH_LUA_LIB)
859 AC_SUBST(WITH_LUA_INCLUDE)
861 AS_IF([test "$with_apidocs" = yes],[
862 WITH_APIDOCS_TARGET=apidocs
867 AC_SUBST(WITH_APIDOCS_TARGET)
868 AC_SUBST(WITH_APIDOCS)
871 AC_ARG_WITH(dmalloc, [ --with-dmalloc build with dmalloc debugging support ])
872 if test "$with_dmalloc" = yes ; then
873 AC_DEFINE(DMALLOC, 1, [Build with dmalloc support?])
874 LIBS="$LIBS -ldmalloc"
877 AC_CHECK_FUNCS(setlocale)
879 AC_CHECK_FUNCS(getpassphrase)
881 AC_CHECK_FUNC(getmntent, AC_DEFINE(HAVE_GETMNTENT, 1, [Define if you have the getmntent() function]), [
882 AC_CHECK_FUNC(mntctl, AC_DEFINE(HAVE_MNTCTL, 1, [Define as 1 if you have mntctl() (only aix?)]),[
883 AC_CHECK_FUNC(getmntinfo, AC_DEFINE(HAVE_GETMNTINFO, 1, [Define as 1 if you have getmntinfo() (Mac OS X)]), [
884 AC_CHECK_FUNC(getmntinfo_r, AC_DEFINE(HAVE_GETMNTINFO_R, 1, [Define as 1 if you have getmntinfo_r() (only osf?)]), [
885 AC_CHECK_LIB(c_r, getmntinfo_r, [LIBS="$LIBS -lc_r";
886 AC_DEFINE(HAVE_GETMNTINFO_R, 1, [Define as 1 if you have getmntinfo_r() (only osf?)])], [
887 AC_DEFINE([USE_GETMNTENT], 1, [Defined if getmntent replacement is used])
888 AC_LIBOBJ(getmntent)])
894 AC_CHECK_FUNC(lchown,
895 [__CHOWN_RHF="%{__chown} -Rhf"
896 __CHGRP_RHF="%{__chgrp} -Rhf"
897 AC_DEFINE(HAVE_LCHOWN, 1, [Define as 1 if you have lchown()])],
898 [__CHOWN_RHF="%{__chown} -Rf"
899 __CHGRP_RHF="%{__chgrp} -Rf"
900 dnl Does chown() follow symlinks? This should be a good enough test.
901 AC_MSG_CHECKING(whether chown() follows symlinks)
902 AC_ARG_ENABLE([broken-chown],
903 [ --enable-broken-chown this system's chown follows symbolic links],
904 result=$enableval, result=unknown)
905 if echo "$build" | egrep "(aix)|(hpux)|(linux)" > /dev/null ; then
907 elif echo "$build" | egrep "(nextstep)" > /dev/null ; then
910 if test $result = unknown; then
911 if test `${__ID} | cut -f2 -d\= | cut -f1 -d\(` = 0; then
916 if test `ls -l foo | awk '{print $3}'` != "root"; then
923 AC_MSG_CHECKING((cannot check by non-root user))
928 AC_MSG_RESULT($result)
929 if test $result = yes; then
930 AC_DEFINE(CHOWN_FOLLOWS_SYMLINK, 1, [Define as 1 if chown() follows symlinks and you don't have lchown()])
932 AC_SUBST(__CHOWN_RHF)
933 AC_SUBST(__CHGRP_RHF)
936 dnl figure out what root's primary group is
938 AC_MSG_CHECKING(root's primary group)
939 AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdio.h>
940 #include <sys/types.h>
946 struct passwd *root = NULL;
947 struct group *roots_group = NULL;
948 FILE * tempfile = NULL;
950 root = getpwuid( (uid_t) 0 );
952 roots_group = getgrgid(root->pw_gid);
953 if (roots_group != NULL) {
954 tempfile = fopen("conftest_rootg", "w");
955 if (tempfile != NULL) {
956 fprintf(tempfile, "%s\n", roots_group->gr_name);
964 }]])],[ROOT_GROUP=`cat conftest_rootg`],[ROOT_GROUP="root"],[ROOT_GROUP="root"
966 AC_MSG_RESULT($ROOT_GROUP)
969 if echo "$build_os" | grep sco > /dev/null; then
970 echo "hacking things up for sco"
971 AC_DEFINE(NEED_STRINGS_H, 1, [Define as one if we need to include <strings.h> (along with <string.h>)])
972 AC_DEFINE(HAVE_STRUCT_MNTTAB, 1,
973 [Define as 1 if you have "struct mnttab" (only sco?)])
974 elif echo "$build_os" | grep sunos > /dev/null; then
975 echo "hacking things up for sunos"
976 CFLAGS="$CFLAGS -D__USE_FIXED_PROTOTYPES__"
977 AC_DEFINE(NEED_STRINGS_H, 1, [Define as one if we need to include <strings.h> (along with <string.h>)])
978 AC_DEFINE(NEED_MYREALLOC, 1, [Define as 1 if we need myrealloc])
983 # get rid of the 4-th tuple, if config.guess returned "linux-gnu" for build_os
986 if echo "$build_os" | grep '.*-gnulibc1' > /dev/null ; then
987 build_os=`echo "${build_os}" | sed 's/-gnulibc1$//'`
989 if echo "$build_os" | grep '.*-gnueabi' > /dev/null ; then
990 build_os=`echo "${build_os}" | sed 's/-gnueabi$//'`
991 build_os_gnu=-gnueabi
993 if echo "$build_os" | grep '.*-gnu' > /dev/null ; then
994 build_os=`echo "${build_os}" | sed 's/-gnu$//'`
998 build_os_exact="${build_os}"
999 build_os_major=`echo "${build_os}" | sed 's/\..*$//'`
1000 build_os_noversion=`echo "${build_os}" | sed 's/[0-9]*\..*$//'`
1003 rm -f ./find-provides
1004 if test -f ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.prov ; then
1005 echo "using ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.prov for automatic provides generation"
1006 ln -s ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.prov ./find-provides
1007 elif test -f ${srcdir}/autodeps/${build_os_exact}.prov ; then
1008 echo "using ${srcdir}/autodeps/${build_os_exact}.prov for automatic provides generation"
1009 ln -s ${srcdir}/autodeps/${build_os_exact}.prov ./find-provides
1010 elif test -f ${srcdir}/autodeps/${build_os_major}.prov ; then
1011 echo "using ${srcdir}/autodeps/${build_os_major}.prov for automatic provides generation"
1012 ln -s ${srcdir}/autodeps/${build_os_major}.prov ./find-provides
1013 elif test -f ${srcdir}/autodeps/${build_os_noversion}.prov ; then
1014 echo "using ${srcdir}/autodeps/${build_os_noversion}.prov for automatic provides generation"
1015 ln -s ${srcdir}/autodeps/${build_os_noversion}.prov ./find-provides
1017 echo "*** no default provides information is available for ${build_os_noversion}"
1018 ln -s ${srcdir}/autodeps/none ./find-provides
1021 rm -f ./find-requires
1022 if test -f ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.req ; then
1023 echo "using ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.req for automatic requires generation"
1024 ln -s ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.req ./find-requires
1025 elif test -f ${srcdir}/autodeps/${build_os_exact}.req ; then
1026 echo "using ${srcdir}/autodeps/${build_os_exact}.req for automatic requires generation"
1027 ln -s ${srcdir}/autodeps/${build_os_exact}.req ./find-requires
1028 elif test -f ${srcdir}/autodeps/${build_os_major}.req ; then
1029 echo "using ${srcdir}/autodeps/${build_os_major}.req for automatic requires generation"
1030 ln -s ${srcdir}/autodeps/${build_os_major}.req ./find-requires
1031 elif test -f ${srcdir}/autodeps/${build_os_noversion}.req ; then
1032 echo "using ${srcdir}/autodeps/${build_os_noversion}.req for automatic requires generation"
1033 ln -s ${srcdir}/autodeps/${build_os_noversion}.req ./find-requires
1035 echo "*** no default requires information is available for ${build_os_noversion}"
1036 ln -s ${srcdir}/autodeps/none ./find-requires
1039 dnl Determine the canonical arch-vendor-os for the build machine
1040 autorelocate_path='%{nil}'
1041 autorelocate_dcolor='0'
1042 case "${build_cpu}" in
1043 *86) RPMCANONCOLOR=0; RPMCANONARCH=i386 ;;
1044 ia32e*) RPMCANONCOLOR=3; RPMCANONARCH=ia32e ;;
1045 amd64*) RPMCANONCOLOR=3; RPMCANONARCH=amd64 ;;
1046 x86_64*) RPMCANONCOLOR=3; RPMCANONARCH=x86_64 ;;
1047 alpha*) RPMCANONCOLOR=0; RPMCANONARCH=alpha ;;
1048 sparc64*) RPMCANONCOLOR=3; RPMCANONARCH=sparc64 ;;
1049 sparc*) RPMCANONCOLOR=3; RPMCANONARCH=sparc ;;
1050 ia64*) RPMCANONCOLOR=2; RPMCANONARCH=ia64;
1051 autorelocate_path='/emul/%%{ARCH}-%%{OS}'
1052 autorelocate_dcolor='1' ;;
1053 s390x*) RPMCANONCOLOR=3; RPMCANONARCH=s390x ;;
1054 s390*) RPMCANONCOLOR=0; RPMCANONARCH=s390 ;;
1055 powerpc64*|ppc64*) RPMCANONCOLOR=3; RPMCANONARCH=ppc64 ;;
1056 powerpc*|ppc*) RPMCANONCOLOR=0; RPMCANONARCH=ppc ;;
1057 arm*) RPMCANONCOLOR=0; RPMCANONARCH=arm ;;
1058 mipsel*) RPMCANONCOLOR=0; RPMCANONARCH=mipsel ;;
1059 mips*) RPMCANONCOLOR=0; RPMCANONARCH=mips ;;
1060 m68k*) RPMCANONCOLOR=0; RPMCANONARCH=m68k ;;
1061 *) RPMCANONCOLOR=0; RPMCANONARCH=unknown ;;
1063 case "${build_os_noversion}" in
1064 mint) RPMCANONARCH=m68kmint ;;
1066 RPMCANONVENDOR="$build_vendor"
1067 case "${build_vendor}" in
1068 unknown|pc|ibm|redhat|pld|mandrake|conectiva|lvr|yellowdog|caos)
1069 test -f /etc/redhat-release && RPMCANONVENDOR=redhat
1070 test -f /etc/pld-release && RPMCANONVENDOR=pld
1071 test -f /etc/mandrake-release && RPMCANONVENDOR=mandrake
1072 test -f /etc/conectiva-release && RPMCANONVENDOR=conectiva
1073 test -f /etc/lvr-release && RPMCANONVENDOR=lvr
1074 test -f /etc/yellowdog-release && RPMCANONVENDOR=yellowdog
1075 test -f /etc/caos-release && RPMCANONVENDOR=caos
1078 RPMCANONOS="$build_os_noversion"
1079 RPMCANONGNU="$build_os_gnu"
1080 AC_SUBST(RPMCANONCOLOR)
1081 AC_SUBST(autorelocate_path)
1082 AC_SUBST(autorelocate_dcolor)
1083 AC_SUBST(RPMCANONARCH)
1084 AC_SUBST(RPMCANONVENDOR)
1085 AC_SUBST(RPMCANONOS)
1086 AC_SUBST(RPMCANONGNU)
1087 AC_DEFINE_UNQUOTED([RPMCANONVENDOR],["${RPMCANONVENDOR}"],[canonical vendor])
1089 if test X"$prefix" = XNONE ; then
1090 usrprefix="$ac_default_prefix"
1095 RPMCONFIGDIR="`echo ${usrprefix}/lib/rpm`"
1096 AC_SUBST(RPMCONFIGDIR)
1100 AC_CONFIG_SUBDIRS(db3)
1102 AC_PATH_PROG(AUTOM4TE,autom4te,:)
1104 AC_CONFIG_FILES([ Doxyfile Makefile platform rpm.pc
1105 rpmio/Makefile rpmdb/Makefile lib/Makefile build/Makefile
1106 po/Makefile.in scripts/Makefile
1114 AC_CONFIG_FILES([rpmpopt-${VERSION}:rpmpopt.in],,[VERSION=${VERSION}])