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(__BZIP2, 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(__CURL, curl, /usr/bin/curl, $MYPATH)
230 AC_PATH_PROG(__FILE, file, /usr/bin/file, $MYPATH)
231 AC_PATH_PROG(__GPG, gpg, /usr/bin/gpg, $MYPATH)
232 AC_PATH_PROG(__GREP, grep, /bin/grep, $MYPATH)
233 AC_PATH_PROG(__GZIP, gzip, /bin/gzip, $MYPATH)
234 AC_PATH_PROG(__UNZIP, unzip, /usr/bin/unzip, $MYPATH)
236 AC_PATH_PROG(__ID, id, /usr/bin/id, $MYPATH)
237 AC_MSG_CHECKING(checking whether id supports -u)
238 if ${__ID} -u 2>&1 > /dev/null ; then
242 __ID_U="%{__id} | %{__sed} 's/[[^=]]*=\\\\([[0-9]][[0-9]]*\\\\).*$/\\\\1/'"
247 AC_PATH_PROG(__INSTALL, install, /usr/bin/install, $MYPATH)
248 AC_PATH_PROG(__MAKE, make, /usr/bin/make, $MYPATH)
249 AC_PATH_PROG(__MKDIR, mkdir, /bin/mkdir, $MYPATH)
250 AC_PATH_PROG(__MV, mv, /bin/mv, $MYPATH)
251 AC_PATH_PROG(__PATCH, patch, /usr/bin/patch, $MYPATH)
252 AC_MSG_CHECKING(old version of patch)
253 PATCHVERSION=`patch --version 2>&1`
255 if test "$PATCHVERSION" = "Patch version 2.1"; then
256 AC_DEFINE(HAVE_OLDPATCH_21, 1,
257 [Define if the patch call you'll be using is 2.1 or older])
258 AC_MSG_RESULT(patch older then 2.2 found)
260 AC_MSG_RESULT(patch later then 2.2 found)
263 AC_PATH_PROG(__PERL, perl, /usr/bin/perl, $MYPATH)
264 AC_PATH_PROG(__PGP, pgp, /usr/bin/pgp, $MYPATH)
265 AC_PATH_PROG(__PYTHON, python, /usr/bin/python, $MYPATH)
266 AC_PATH_PROG(__RM, rm, /bin/rm, $MYPATH)
267 AC_PATH_PROG(__RSH, rsh, /usr/bin/rsh, $MYPATH)
268 AC_PATH_PROG(__SED, sed, /bin/sed, $MYPATH)
269 AC_PATH_PROG(__SSH, ssh, /usr/bin/ssh, $MYPATH)
270 AC_PATH_PROG(__TAR, tar, /bin/tar, $MYPATH)
272 AC_PATH_PROG(__LD, ld, /usr/bin/ld, $MYPATH)
273 AC_PATH_PROG(__NM, nm, /usr/bin/nm, $MYPATH)
274 AC_PATH_PROG(__OBJCOPY, objcopy, /usr/bin/objcopy, $MYPATH)
275 AC_PATH_PROG(__OBJDUMP, objdump, /usr/bin/objdump, $MYPATH)
276 AC_PATH_PROG(__STRIP, strip, /usr/bin/strip, $MYPATH)
282 *-*-solaris*) LIBS="$LIBS -L$l -R$l $*";;
283 *) LIBS="$LIBS -L$l $*";;
288 # Check for zlib library.
293 if test -z "${WITH_ZLIB_LIB}" ; then
294 for zlib in z gz ; do
295 AC_CHECK_LIB(${zlib}, gzread,
296 [WITH_ZLIB_LIB="-l${zlib}"; break],
297 [if test ${zlib} = gz; then
298 AC_MSG_ERROR([sorry rpm requires libz.a or libgz.a (from the zlib package)])
303 dnl zlib-1.0.4 has not gzseek
304 AC_CHECK_LIB(${zlib}, gzseek, [AC_DEFINE(HAVE_GZSEEK, 1, [Define as 1 if your zlib has gzseek()])])
307 AC_SUBST(WITH_ZLIB_INCLUDE)
308 AC_SUBST(WITH_ZLIB_LIB)
311 # Check for bzip2 library.
313 AC_CHECK_LIB(bz2, bzread, [LIBS="$LIBS -lbz2"],
314 AC_CHECK_LIB(bz2, BZ2_bzread, [
317 AC_DEFINE(HAVE_BZ2_1_0, 1, [Define as 1 if you bzip2 1.0]) ],
324 AC_MSG_CHECKING(for /usr/ucblib in LIBS)
325 if test -d /usr/ucblib ; then
326 if test "$build" = "mips-sni-sysv4" ; then
327 addlib /usr/ccs/lib -lc
338 dnl Check for features
341 dnl Checks for libraries.
343 AC_CHECK_FUNC(setreuid, [], [
344 AC_CHECK_LIB(ucb, setreuid, [if echo $LIBS | grep -- -lucb >/dev/null ;then :; else LIBS="$LIBS -lc -lucb" USEUCB=y;fi])
347 AC_CHECK_FUNC(rand, [], [
348 AC_CHECK_LIB(rand, rand, [])
351 AC_CHECK_FUNC(getdomainname, [], [
352 AC_CHECK_LIB(nsl, getdomainname)
354 AC_CHECK_FUNC(socket, [], [
355 AC_CHECK_LIB(socket, socket)
358 AC_CHECK_HEADERS(error.h)
359 AC_CHECK_FUNCS(error)
361 AC_CHECK_HEADERS(poll.h)
363 AC_CHECK_HEADERS(thread.h pthread.h synch.h semaphore.h)
365 AC_CHECK_LIB(pthread, pthread_mutex_trylock, [], [
366 dnl OSF 5.0 has the the symbols prefixed with __ in libpthread.
367 AC_CHECK_LIB(pthread, __pthread_mutex_trylock, [], [
368 AC_CHECK_LIB(thread, mutex_lock)
372 AC_CHECK_HEADERS(aio.h)
373 AC_SEARCH_LIBS(aio_read, [c rt aio posix4])
375 dnl Better not use fchmod at all.
376 AC_CHECK_FUNC(fchmod)
378 AC_CHECK_FUNCS(vsnprintf snprintf)
380 dnl Temporary hack for MiNT. Some functions (writev, snprintf) are
381 dnl not in the libc but in libport (for political reasons). This check
382 dnl can hopefully be removed soon. Please use the default action
383 dnl for this macro (not LIBS=...), otherwise the check for dbopen
385 AC_CHECK_LIB(port, writev)
388 # Check for libelf library. Prefer external, otherwise none.
391 AC_CHECK_HEADER([libelf.h])
392 AC_CHECK_HEADERS([gelf.h], [
393 AC_CHECK_LIB(elf, gelf_getvernaux, [
394 AC_DEFINE(HAVE_LIBELF, 1, [Define to 1 if you have the 'elf' library (-lelf).])
395 WITH_LIBELF_LIB="-lelf"
399 AC_SUBST(WITH_LIBELF_INCLUDE)
400 AC_SUBST(WITH_LIBELF_LIB)
401 AM_CONDITIONAL(LIBELF,[test "$WITH_LIBELF" = yes])
403 AC_CHECK_HEADERS([dwarf.h], [
406 AM_CONDITIONAL(LIBDWARF,[test "$WITH_LIBDWARF" = yes])
409 # Check for beecrypt library.
410 WITH_BEECRYPT_INCLUDE=
412 AC_CHECK_HEADERS([beecrypt/beecrypt.h], [
413 AC_CHECK_LIB(beecrypt, mpfprintln, [
414 AC_CHECK_HEADERS([beecrypt/api.h])
415 WITH_BEECRYPT_INCLUDE=
416 WITH_BEECRYPT_LIB="-lbeecrypt"
418 AC_MSG_ERROR([missing required library beecrypt])
421 AC_MSG_ERROR([missing required header beecrypt/beecrypt.h])
423 AC_SUBST(WITH_BEECRYPT_INCLUDE)
424 AC_SUBST(WITH_BEECRYPT_LIB)
427 # Check for magic library.
431 AC_CHECK_HEADER([magic.h], [
432 AC_CHECK_LIB(magic, magic_open, [
434 WITH_MAGIC_LIB="-lmagic"
436 AC_MSG_ERROR([missing required library 'libmagic'])
439 AC_MSG_ERROR([missing required header magic.h])
442 AC_SUBST(WITH_MAGIC_INCLUDE)
443 AC_SUBST(WITH_MAGIC_LIB)
446 # Check for popt library.
450 AC_CHECK_HEADER([popt.h], [
451 AC_CHECK_LIB(popt, poptGetContext, [
453 WITH_POPT_LIB="-lpopt"
455 AC_MSG_ERROR([missing required library popt])
458 AC_MSG_ERROR([missing required header popt.h])
461 AC_SUBST(WITH_POPT_INCLUDE)
462 AC_SUBST(WITH_POPT_LIB)
466 # Process --with/without-internal-db
467 ## FIXME: Intentionally kept hidden until things have matured.
468 case "$with_internal_db" in
470 AC_CHECK_HEADER([db.h],[
471 AC_CHECK_TYPE(db_threadid_t,[],
472 [AC_MSG_WARN([missing type db_threadid_t])],
475 AC_CHECK_LIB([db],[db_create],[],[
476 AC_MSG_ERROR([missing db_create in libdb])
478 AC_CHECK_LIB([db],[db_env_create],[],[
479 AC_MSG_ERROR([missing db_env_create in libdb])
481 AC_CHECK_LIB([db],[db_env_set_func_fsync],[],[
482 AC_MSG_ERROR([missing db_env_set_func_fsync in libdb])
484 AC_CHECK_LIB([db],[db_strerror],[],[
485 AC_MSG_ERROR([missing db_strerror in libdb])
490 AC_MSG_ERROR([missing required header db.h])
493 * ) # Fall back to internal db
494 AC_DEFINE(HAVE_DB3_DB_H, 1, [Define if you have the <db3/db.h> header file])
498 AC_SUBST([WITH_DB_LIB])
501 # Check for sqlite3 library.
502 AC_ARG_ENABLE(sqlite3, [ --enable-sqlite3 enable sqlite3 support],
503 [case "$enable_sqlite3" in
505 *) AC_MSG_ERROR([invalid argument to --enable-sqlite3])
510 WITH_SQLITE3_INCLUDE=
513 AS_IF([test "$enable_sqlite3" = yes],[
514 AC_CHECK_HEADERS([sqlite3.h],
515 [ AC_CHECK_LIB(sqlite3, sqlite3_open, [
516 WITH_SQLITE3_INCLUDE=
517 WITH_SQLITE3_LIB="-lsqlite3"
520 AC_MSG_ERROR([missing libsqlite3])
523 AC_MSG_ERROR([missing sqlite3.h])
527 AC_SUBST(WITH_SQLITE3_INCLUDE)
528 AC_SUBST(WITH_SQLITE3_LIB)
529 AM_CONDITIONAL([SQLITE3],[test "$WITH_SQLITE3" = yes])
533 dnl AmigaOS and IXEmul have a fork() dummy
536 echo "Building for AmigaOS: using vfork() instead of fork()";
537 CFLAGS="$CFLAGS -Dfork=vfork"
541 AM_GNU_GETTEXT_VERSION([0.16.1])
542 AM_GNU_GETTEXT([external])
544 dnl Checks for header files we can live without.
550 AC_CHECK_HEADERS(fcntl.h getopt.h grp.h memory.h netdb.h pwd.h utime.h)
552 AC_CHECK_HEADERS(sys/ipc.h sys/socket.h sys/select.h)
553 AC_CHECK_HEADERS(sys/types.h sys/stdtypes.h)
554 AC_CHECK_HEADERS(sys/mman.h sys/resource.h sys/utsname.h sys/wait.h)
556 AC_CHECK_HEADERS(netinet/in_systm.h)
557 AC_CHECK_HEADERS(machine/types.h)
558 AC_CHECK_HEADERS(mntent.h sys/mnttab.h sys/systemcfg.h)
559 AC_CHECK_HEADERS(sys/mount.h sys/mntctl.h sys/param.h sys/vmount.h)
560 AC_CHECK_HEADERS(bzlib.h libio.h zlib.h)
561 AC_CHECK_HEADERS(err.h mcheck.h)
562 AC_CHECK_HEADERS(pthread.h)
564 AC_CHECK_HEADERS(glob.h)
565 AC_CHECK_HEADERS(locale.h)
567 dnl statfs portability fiddles.
569 dnl We should really emulate/steal sections of the statfs and struct statfs
570 dnl checks from GNU fileutils.
572 AC_MSG_CHECKING(for struct statfs)
575 dnl this is easier than nesting AC_TRY_COMPILEs...
577 found_struct_statfs=no
579 if test X$found_struct_statfs = Xno ; then
580 dnl Solaris 2.6+ wants to use statvfs
581 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
582 #ifdef HAVE_SYS_TYPES_H
583 #include <sys/types.h>
585 #include <sys/statvfs.h> ]], [[struct statvfs sfs;]])],[AC_MSG_RESULT(in sys/statvfs.h)
586 AC_DEFINE(STATFS_IN_SYS_STATVFS, 1,
587 [statfs in <sys/statvfs.h> (for solaris 2.6+ systems)])
588 found_struct_statfs=yes],[])
591 if test X$found_struct_statfs = Xno ; then
592 dnl first try including sys/vfs.h
593 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
594 #ifdef HAVE_SYS_TYPES_H
595 #include <sys/types.h>
597 #include <sys/vfs.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/vfs.h)
598 AC_DEFINE(STATFS_IN_SYS_VFS, 1, [statfs in <sys/vfs.h> (for linux systems)])
599 found_struct_statfs=yes],[])
602 if test X$found_struct_statfs = Xno ; then
603 dnl ...next try including sys/mount.h
604 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
605 #ifdef HAVE_SYS_TYPES_H
606 #include <sys/types.h>
608 #ifdef HAVE_SYS_PARAM_H
609 #include <sys/param.h>
611 #include <sys/mount.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/mount.h)
612 AC_DEFINE(STATFS_IN_SYS_MOUNT, 1, [statfs in <sys/mount.h> (for Digital Unix 4.0D systems)])
613 found_struct_statfs=yes],[])
616 if test X$found_struct_statfs = Xno ; then
617 dnl ...still no joy. Try sys/statfs.h
618 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
619 #ifdef HAVE_SYS_TYPES_H
620 #include <sys/types.h>
622 #include <sys/statfs.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/statfs.h)
623 AC_DEFINE(STATFS_IN_SYS_STATFS, 1, [statfs in <sys/statfs.h> (for Irix 6.4 systems)])
624 found_struct_statfs=yes],[])
627 if test X$found_struct_statfs = Xno ; then
628 dnl ...no luck. Warn the user of impending doom.
629 AC_MSG_WARN(not found)
633 dnl if we found the struct, see if it has the f_bavail member. Some OSes
634 dnl don't, including IRIX 6.5+
636 if test X$found_struct_statfs = Xyes ; then
637 AC_MSG_CHECKING(for f_bavail member in struct statfs)
638 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
639 #ifdef HAVE_SYS_TYPES_H
640 #include <sys/types.h>
642 #if STATFS_IN_SYS_STATVFS
643 # include <sys/statvfs.h>
644 typedef struct statvfs STATFS_t;
646 typedef struct statfs STATFS_t;
647 # if STATFS_IN_SYS_VFS
648 # include <sys/vfs.h>
649 # elif STATFS_IN_SYS_MOUNT
650 # include <sys/mount.h>
651 # elif STATFS_IN_SYS_STATFS
652 # include <sys/statfs.h>
654 #endif ]], [[STATFS_t sfs;
655 sfs.f_bavail = 0;]])],[AC_MSG_RESULT(yes)
656 AC_DEFINE(STATFS_HAS_F_BAVAIL, 1, [Define if struct statfs has the f_bavail member])],[AC_MSG_RESULT(no)
660 if test X$found_struct_statfs = Xyes ; then
662 dnl now check to see if we have the 4-argument variant of statfs()
663 dnl this pretty much requires AC_RUN_IFELSE([AC_LANG_SOURCE([[]])],[],[],[])
665 AC_MSG_CHECKING([if statfs() requires 4 arguments])
666 AC_RUN_IFELSE([AC_LANG_SOURCE([[
667 #ifdef HAVE_SYS_TYPES_H
668 #include <sys/types.h>
670 #ifdef STATFS_IN_SYS_VFS
672 #elif STATFS_IN_SYS_MOUNT
673 #include <sys/mouht.h>
674 #elif STATFS_IN_SYS_STATFS
675 #include <sys/statfs.h>
679 exit (statfs(".", &sfs, sizeof(sfs), 0));
681 ]])],[AC_MSG_RESULT(yes)
682 AC_DEFINE(STAT_STATFS4, 1, [Define if the statfs() call takes 4 arguments])],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)
688 dnl look for libc features
690 AC_MSG_CHECKING(if <netdb.h> defines h_errno)
691 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[printf("%d",h_errno)]])],[PROVIDES_ERRNO=yes],[])
692 AC_MSG_RESULT($PROVIDES_ERRNO)
693 if test $PROVIDES_ERRNO = yes; then
694 AC_DEFINE(HAVE_HERRNO, 1, [ Define as 1 if <netdb.h> defines h_errno])
697 dnl If a system doesn't have S_IFSOCK, define it as 0 which will
698 dnl make S_ISSOCK always return false (nice, eh?)
699 AC_MSG_CHECKING(if <sys/stat.h> defines S_IFSOCK)
700 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[printf("%d", S_IFSOCK)]])],[HAS_S_IFSOCK=yes],[HAS_S_IFSOCK=no])
701 AC_MSG_RESULT($HAS_S_IFSOCK)
702 if test $HAS_S_IFSOCK = yes; then
703 AC_DEFINE(HAVE_S_IFSOCK, 1, [Define as 1 if <sys/stat.h> defines S_IFSOCK])
706 dnl Some Unix's are missing S_ISLNK, S_ISSOCK
707 AC_MSG_CHECKING(if <sys/stat.h> defines S_ISLNK)
708 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[printf("%d", S_ISLNK(0755))]])],[HAS_S_ISLNK=yes],[HAS_S_ISLNK=no])
709 AC_MSG_RESULT($HAS_S_ISLNK)
710 if test $HAS_S_ISLNK = yes; then
711 AC_DEFINE(HAVE_S_ISLNK, 1, [Define as 1 if <sys/stat.h> defines S_ISLNK])
714 AC_MSG_CHECKING(if <sys/stat.h> defines S_ISSOCK)
715 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[printf("%d", S_ISSOCK(0755))]])],[HAS_S_ISSOCK=yes],[HAS_S_ISSOCK=no])
716 AC_MSG_RESULT($HAS_S_ISSOCK)
717 if test $HAS_S_ISSOCK = yes; then
718 AC_DEFINE(HAVE_S_ISSOCK, 1, [Define as 1 if <sys/stat.h> defines S_ISSOCK])
721 AC_MSG_CHECKING(if timezone is defined)
722 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[printf("%ld", timezone)]])],[HAS_TIMEZONE=yes],[HAS_TIMEZONE=no])
723 AC_MSG_RESULT($HAS_TIMEZONE)
725 dnl Check for missing typedefs
731 dnl Checks for library functions.
734 dnl XXX don't want to re-enable code that's been unused for years at this
735 dnl point, but should offer good performance improvements, check after
739 AC_CHECK_FUNCS(basename getaddrinfo getcwd getnameinfo getwd inet_aton)
740 AC_CHECK_FUNCS(mtrace putenv realpath setenv)
741 AC_CHECK_FUNCS(stpcpy stpncpy strcspn)
742 AC_CHECK_FUNCS(strdup strndup strerror strtol strtoul strspn strstr)
744 AC_CHECK_FUNCS(__secure_getenv)
746 AC_CHECK_FUNCS(regcomp)
750 AC_CHECK_FUNCS(mkstemp)
752 dnl XXX Glob *is* broken on linux with libc5, solaris and possibly aix when
753 dnl %files gets something like
754 dnl /usr/*/locale/*/LC_MESSAGES/*.mo
755 dnl (Note: more than one asterisk in glob pattern.)
757 dnl XXX Glob is "fixed" in glibc-2.3.3-61, but the cost is that
758 dnl dangling symlinks are no longer globbed. Always use the internal glob.
759 AC_DEFINE(USE_GNU_GLOB, 1, [Use the included glob.c?])
763 dnl check if python is requested
764 AC_ARG_ENABLE(python, [ --enable-python build rpm python bindings ],
765 [case "$enable_python" in
767 *) AC_MSG_ERROR([invalid argument to --enable-python])
772 AS_IF([test "$enable_python" = yes],[
773 # rpm-python is based on python-2.5,
774 # with legacy hacks to allow building against python >= 2.3
775 AM_PATH_PYTHON([2.3],[
776 WITH_PYTHON_INCLUDE=`${PYTHON} -c 'from distutils.sysconfig import *; print get_python_inc()'`
777 WITH_PYTHON_SUBPACKAGE=1
778 save_CPPFLAGS="$CPPFLAGS"
779 CPPFLAGS="$CPPFLAGS -I$WITH_PYTHON_INCLUDE"
780 AC_CHECK_HEADER([Python.h],[],
781 [AC_MSG_ERROR([missing Python.h])
783 CPPFLAGS="$save_CPPFLAGS"
785 AC_SEARCH_LIBS([Py_Main],[python${PYTHON_VERSION} python],[
786 WITH_PYTHON_LIB="$ac_res"
787 ],[AC_MSG_ERROR([missing python library])
794 WITH_PYTHON_SUBPACKAGE=0
797 AC_SUBST(WITH_PYTHON_INCLUDE)
798 AC_SUBST(WITH_PYTHON_LIB)
800 AM_CONDITIONAL(PYTHON,[test "$WITH_PYTHON_SUBPACKAGE" = 1])
802 AC_PATH_PROG(__DOXYGEN, doxygen, no, $PATH)
804 dnl Auto-detect whether doxygen generated API docs should be included.
806 AC_ARG_WITH(apidocs, [ --with-apidocs build rpm API docs ],,[with_apidocs=auto])
808 case "$with_apidocs" in
810 AS_IF([test "$__DOXYGEN" = no],[with_apidocs=no],[with_apidocs=yes])
813 AS_IF([test "$__DOXYGEN" = no],
814 [AC_MSG_ERROR([rpm API docs needs doxygen in PATH])])
819 AC_ARG_WITH(selinux, [ --with-selinux build with selinux support ],
820 [case "$with_selinux" in
822 *) AC_MSG_ERROR([invalid argument to --with-selinux])
827 AS_IF([test "$with_selinux" = yes],[
828 AC_CHECK_HEADER([selinux/selinux.h],[
829 AC_CHECK_LIB(selinux,[is_selinux_enabled],[with_selinux=yes],[
830 AC_MSG_ERROR([--with-selinux given, but libselinux not found])])
832 AC_MSG_ERROR([--with-selinux given, but selinux/selinux.h not found])
836 AS_IF([test "$with_selinux" = yes],[
837 AC_DEFINE(WITH_SELINUX, 1, [Build with selinux support?])
838 WITH_SELINUX_LIB="-lselinux"
840 AC_SUBST(WITH_SELINUX_LIB)
841 AM_CONDITIONAL(SELINUX,[test "$with_selinux" = yes])
845 AC_ARG_WITH(lua, [ --with-lua build with lua support ],,[with_lua=yes])
846 AS_IF([test "$with_lua" = yes],[
847 AC_DEFINE(WITH_LUA, 1, [Build with lua support?])
848 WITH_LUA_INCLUDE="-I\${top_srcdir}/lua/include -I\${top_srcdir}/lua/local"
849 WITH_LUA_LIB="\$(top_builddir)/lua/liblua.la"
851 AC_SUBST(WITH_LUA_LIB)
852 AC_SUBST(WITH_LUA_INCLUDE)
854 AS_IF([test "$with_apidocs" = yes],[
855 WITH_APIDOCS_TARGET=apidocs
860 AC_SUBST(WITH_APIDOCS_TARGET)
861 AC_SUBST(WITH_APIDOCS)
864 AC_ARG_WITH(dmalloc, [ --with-dmalloc build with dmalloc debugging support ])
865 if test "$with_dmalloc" = yes ; then
866 AC_DEFINE(DMALLOC, 1, [Build with dmalloc support?])
867 LIBS="$LIBS -ldmalloc"
870 AC_CHECK_FUNCS(setlocale)
872 AC_CHECK_FUNCS(getpassphrase)
874 AC_CHECK_FUNC(getmntent, AC_DEFINE(HAVE_GETMNTENT, 1, [Define if you have the getmntent() function]), [
875 AC_CHECK_FUNC(mntctl, AC_DEFINE(HAVE_MNTCTL, 1, [Define as 1 if you have mntctl() (only aix?)]),[
876 AC_CHECK_FUNC(getmntinfo, AC_DEFINE(HAVE_GETMNTINFO, 1, [Define as 1 if you have getmntinfo() (Mac OS X)]), [
877 AC_CHECK_FUNC(getmntinfo_r, AC_DEFINE(HAVE_GETMNTINFO_R, 1, [Define as 1 if you have getmntinfo_r() (only osf?)]), [
878 AC_CHECK_LIB(c_r, getmntinfo_r, [LIBS="$LIBS -lc_r";
879 AC_DEFINE(HAVE_GETMNTINFO_R, 1, [Define as 1 if you have getmntinfo_r() (only osf?)])], [
880 AC_DEFINE([USE_GETMNTENT], 1, [Defined if getmntent replacement is used])
881 AC_LIBOBJ(getmntent)])
887 AC_CHECK_FUNC(lchown,
888 [__CHOWN_RHF="%{__chown} -Rhf"
889 __CHGRP_RHF="%{__chgrp} -Rhf"
890 AC_DEFINE(HAVE_LCHOWN, 1, [Define as 1 if you have lchown()])],
891 [__CHOWN_RHF="%{__chown} -Rf"
892 __CHGRP_RHF="%{__chgrp} -Rf"
893 dnl Does chown() follow symlinks? This should be a good enough test.
894 AC_MSG_CHECKING(whether chown() follows symlinks)
895 AC_ARG_ENABLE([broken-chown],
896 [ --enable-broken-chown this system's chown follows symbolic links],
897 result=$enableval, result=unknown)
898 if echo "$build" | egrep "(aix)|(hpux)|(linux)" > /dev/null ; then
900 elif echo "$build" | egrep "(nextstep)" > /dev/null ; then
903 if test $result = unknown; then
904 if test `${__ID} | cut -f2 -d\= | cut -f1 -d\(` = 0; then
909 if test `ls -l foo | awk '{print $3}'` != "root"; then
916 AC_MSG_CHECKING((cannot check by non-root user))
921 AC_MSG_RESULT($result)
922 if test $result = yes; then
923 AC_DEFINE(CHOWN_FOLLOWS_SYMLINK, 1, [Define as 1 if chown() follows symlinks and you don't have lchown()])
925 AC_SUBST(__CHOWN_RHF)
926 AC_SUBST(__CHGRP_RHF)
929 dnl figure out what root's primary group is
931 AC_MSG_CHECKING(root's primary group)
932 AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdio.h>
933 #include <sys/types.h>
939 struct passwd *root = NULL;
940 struct group *roots_group = NULL;
941 FILE * tempfile = NULL;
943 root = getpwuid( (uid_t) 0 );
945 roots_group = getgrgid(root->pw_gid);
946 if (roots_group != NULL) {
947 tempfile = fopen("conftest_rootg", "w");
948 if (tempfile != NULL) {
949 fprintf(tempfile, "%s\n", roots_group->gr_name);
957 }]])],[ROOT_GROUP=`cat conftest_rootg`],[ROOT_GROUP="root"],[ROOT_GROUP="root"
959 AC_MSG_RESULT($ROOT_GROUP)
962 if echo "$build_os" | grep sco > /dev/null; then
963 echo "hacking things up for sco"
964 AC_DEFINE(NEED_STRINGS_H, 1, [Define as one if we need to include <strings.h> (along with <string.h>)])
965 AC_DEFINE(HAVE_STRUCT_MNTTAB, 1,
966 [Define as 1 if you have "struct mnttab" (only sco?)])
967 elif echo "$build_os" | grep sunos > /dev/null; then
968 echo "hacking things up for sunos"
969 CFLAGS="$CFLAGS -D__USE_FIXED_PROTOTYPES__"
970 AC_DEFINE(NEED_STRINGS_H, 1, [Define as one if we need to include <strings.h> (along with <string.h>)])
971 AC_DEFINE(NEED_MYREALLOC, 1, [Define as 1 if we need myrealloc])
976 # get rid of the 4-th tuple, if config.guess returned "linux-gnu" for build_os
979 if echo "$build_os" | grep '.*-gnulibc1' > /dev/null ; then
980 build_os=`echo "${build_os}" | sed 's/-gnulibc1$//'`
982 if echo "$build_os" | grep '.*-gnueabi' > /dev/null ; then
983 build_os=`echo "${build_os}" | sed 's/-gnueabi$//'`
984 build_os_gnu=-gnueabi
986 if echo "$build_os" | grep '.*-gnu' > /dev/null ; then
987 build_os=`echo "${build_os}" | sed 's/-gnu$//'`
991 build_os_exact="${build_os}"
992 build_os_major=`echo "${build_os}" | sed 's/\..*$//'`
993 build_os_noversion=`echo "${build_os}" | sed 's/[0-9]*\..*$//'`
996 rm -f ./find-provides
997 if test -f ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.prov ; then
998 echo "using ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.prov for automatic provides generation"
999 ln -s ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.prov ./find-provides
1000 elif test -f ${srcdir}/autodeps/${build_os_exact}.prov ; then
1001 echo "using ${srcdir}/autodeps/${build_os_exact}.prov for automatic provides generation"
1002 ln -s ${srcdir}/autodeps/${build_os_exact}.prov ./find-provides
1003 elif test -f ${srcdir}/autodeps/${build_os_major}.prov ; then
1004 echo "using ${srcdir}/autodeps/${build_os_major}.prov for automatic provides generation"
1005 ln -s ${srcdir}/autodeps/${build_os_major}.prov ./find-provides
1006 elif test -f ${srcdir}/autodeps/${build_os_noversion}.prov ; then
1007 echo "using ${srcdir}/autodeps/${build_os_noversion}.prov for automatic provides generation"
1008 ln -s ${srcdir}/autodeps/${build_os_noversion}.prov ./find-provides
1010 echo "*** no default provides information is available for ${build_os_noversion}"
1011 ln -s ${srcdir}/autodeps/none ./find-provides
1014 rm -f ./find-requires
1015 if test -f ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.req ; then
1016 echo "using ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.req for automatic requires generation"
1017 ln -s ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.req ./find-requires
1018 elif test -f ${srcdir}/autodeps/${build_os_exact}.req ; then
1019 echo "using ${srcdir}/autodeps/${build_os_exact}.req for automatic requires generation"
1020 ln -s ${srcdir}/autodeps/${build_os_exact}.req ./find-requires
1021 elif test -f ${srcdir}/autodeps/${build_os_major}.req ; then
1022 echo "using ${srcdir}/autodeps/${build_os_major}.req for automatic requires generation"
1023 ln -s ${srcdir}/autodeps/${build_os_major}.req ./find-requires
1024 elif test -f ${srcdir}/autodeps/${build_os_noversion}.req ; then
1025 echo "using ${srcdir}/autodeps/${build_os_noversion}.req for automatic requires generation"
1026 ln -s ${srcdir}/autodeps/${build_os_noversion}.req ./find-requires
1028 echo "*** no default requires information is available for ${build_os_noversion}"
1029 ln -s ${srcdir}/autodeps/none ./find-requires
1032 dnl Determine the canonical arch-vendor-os for the build machine
1033 autorelocate_path='%{nil}'
1034 autorelocate_dcolor='0'
1035 case "${build_cpu}" in
1036 *86) RPMCANONCOLOR=0; RPMCANONARCH=i386 ;;
1037 ia32e*) RPMCANONCOLOR=3; RPMCANONARCH=ia32e ;;
1038 amd64*) RPMCANONCOLOR=3; RPMCANONARCH=amd64 ;;
1039 x86_64*) RPMCANONCOLOR=3; RPMCANONARCH=x86_64 ;;
1040 alpha*) RPMCANONCOLOR=0; RPMCANONARCH=alpha ;;
1041 sparc64*) RPMCANONCOLOR=3; RPMCANONARCH=sparc64 ;;
1042 sparc*) RPMCANONCOLOR=3; RPMCANONARCH=sparc ;;
1043 ia64*) RPMCANONCOLOR=2; RPMCANONARCH=ia64;
1044 autorelocate_path='/emul/%%{ARCH}-%%{OS}'
1045 autorelocate_dcolor='1' ;;
1046 s390x*) RPMCANONCOLOR=3; RPMCANONARCH=s390x ;;
1047 s390*) RPMCANONCOLOR=0; RPMCANONARCH=s390 ;;
1048 powerpc64*|ppc64*) RPMCANONCOLOR=3; RPMCANONARCH=ppc64 ;;
1049 powerpc*|ppc*) RPMCANONCOLOR=0; RPMCANONARCH=ppc ;;
1050 arm*) RPMCANONCOLOR=0; RPMCANONARCH=arm ;;
1051 mipsel*) RPMCANONCOLOR=0; RPMCANONARCH=mipsel ;;
1052 mips*) RPMCANONCOLOR=0; RPMCANONARCH=mips ;;
1053 m68k*) RPMCANONCOLOR=0; RPMCANONARCH=m68k ;;
1054 *) RPMCANONCOLOR=0; RPMCANONARCH=unknown ;;
1056 case "${build_os_noversion}" in
1057 mint) RPMCANONARCH=m68kmint ;;
1059 RPMCANONVENDOR="$build_vendor"
1060 case "${build_vendor}" in
1061 unknown|pc|ibm|redhat|pld|mandrake|conectiva|lvr|yellowdog|caos)
1062 test -f /etc/redhat-release && RPMCANONVENDOR=redhat
1063 test -f /etc/pld-release && RPMCANONVENDOR=pld
1064 test -f /etc/mandrake-release && RPMCANONVENDOR=mandrake
1065 test -f /etc/conectiva-release && RPMCANONVENDOR=conectiva
1066 test -f /etc/lvr-release && RPMCANONVENDOR=lvr
1067 test -f /etc/yellowdog-release && RPMCANONVENDOR=yellowdog
1068 test -f /etc/caos-release && RPMCANONVENDOR=caos
1071 RPMCANONOS="$build_os_noversion"
1072 RPMCANONGNU="$build_os_gnu"
1073 AC_SUBST(RPMCANONCOLOR)
1074 AC_SUBST(autorelocate_path)
1075 AC_SUBST(autorelocate_dcolor)
1076 AC_SUBST(RPMCANONARCH)
1077 AC_SUBST(RPMCANONVENDOR)
1078 AC_SUBST(RPMCANONOS)
1079 AC_SUBST(RPMCANONGNU)
1080 AC_DEFINE_UNQUOTED([RPMCANONVENDOR],["${RPMCANONVENDOR}"],[canonical vendor])
1082 if test X"$prefix" = XNONE ; then
1083 usrprefix="$ac_default_prefix"
1088 RPMCONFIGDIR="`echo ${usrprefix}/lib/rpm`"
1089 AC_SUBST(RPMCONFIGDIR)
1093 AC_CONFIG_SUBDIRS(db3)
1095 AM_CONDITIONAL([WITH_INTERNAL_DB],[test "$with_internal_db" != no])
1097 AC_PATH_PROG(AUTOM4TE,autom4te,:)
1099 AC_CONFIG_FILES([ Doxyfile Makefile
1100 rpmio/Makefile rpmdb/Makefile lib/Makefile build/Makefile
1101 po/Makefile.in scripts/Makefile