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(__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(GZIPBIN, gzip, /bin/gzip, $MYPATH)
234 AC_PATH_PROG(UNZIPBIN, 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(PGPBIN, 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 libary '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"
456 AC_MSG_ERROR([missing required library popt])
459 AC_MSG_ERROR([missing required header popt.h])
462 AC_SUBST(WITH_POPT_INCLUDE)
463 AC_SUBST(WITH_POPT_LIB)
467 dnl ------------------ with internal db
468 AC_DEFINE(HAVE_DB3_DB_H, 1, [Define if you have the <db3/db.h> header file])
471 AC_SUBST(WITH_DB_SUBDIR)
472 # FIXME: Temporary helper until external BDB is fully supported
476 # Check for sqlite3 library.
477 AC_ARG_ENABLE(sqlite3, [ --enable-sqlite3 enable sqlite3 support],
478 [case "$enable_sqlite3" in
480 *) AC_MSG_ERROR([invalid argument to --enable-sqlite3])
485 WITH_SQLITE3_INCLUDE=
488 AS_IF([test "$enable_sqlite3" = yes],[
489 AC_CHECK_HEADERS([sqlite3.h],
490 [ AC_CHECK_LIB(sqlite3, sqlite3_open, [
491 WITH_SQLITE3_INCLUDE=
492 WITH_SQLITE3_LIB="-lsqlite3"
495 AC_MSG_ERROR([missing libsqlite3])
498 AC_MSG_ERROR([missing sqlite3.h])
502 AC_SUBST(WITH_SQLITE3_INCLUDE)
503 AC_SUBST(WITH_SQLITE3_LIB)
504 AM_CONDITIONAL([SQLITE3],[test "$WITH_SQLITE3" = yes])
508 dnl AmigaOS and IXEmul have a fork() dummy
511 echo "Building for AmigaOS: using vfork() instead of fork()";
512 CFLAGS="$CFLAGS -Dfork=vfork"
516 AM_GNU_GETTEXT_VERSION([0.16.1])
517 AM_GNU_GETTEXT([external])
519 dnl Checks for header files we can live without.
525 AC_CHECK_HEADERS(fcntl.h getopt.h grp.h memory.h netdb.h pwd.h utime.h)
527 AC_CHECK_HEADERS(sys/ipc.h sys/socket.h sys/select.h)
528 AC_CHECK_HEADERS(sys/types.h sys/stdtypes.h)
529 AC_CHECK_HEADERS(sys/mman.h sys/resource.h sys/utsname.h sys/wait.h)
531 AC_CHECK_HEADERS(netinet/in_systm.h)
532 AC_CHECK_HEADERS(machine/types.h)
533 AC_CHECK_HEADERS(mntent.h sys/mnttab.h sys/systemcfg.h)
534 AC_CHECK_HEADERS(sys/mount.h sys/mntctl.h sys/param.h sys/vmount.h)
535 AC_CHECK_HEADERS(bzlib.h libio.h zlib.h)
536 AC_CHECK_HEADERS(err.h mcheck.h)
537 AC_CHECK_HEADERS(pthread.h)
539 AC_CHECK_HEADERS(glob.h)
540 AC_CHECK_HEADERS(locale.h)
542 dnl statfs portability fiddles.
544 dnl We should really emulate/steal sections of the statfs and struct statfs
545 dnl checks from GNU fileutils.
547 AC_MSG_CHECKING(for struct statfs)
550 dnl this is easier than nesting AC_TRY_COMPILEs...
552 found_struct_statfs=no
554 if test X$found_struct_statfs = Xno ; then
555 dnl Solaris 2.6+ wants to use statvfs
556 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
557 #ifdef HAVE_SYS_TYPES_H
558 #include <sys/types.h>
560 #include <sys/statvfs.h> ]], [[struct statvfs sfs;]])],[AC_MSG_RESULT(in sys/statvfs.h)
561 AC_DEFINE(STATFS_IN_SYS_STATVFS, 1,
562 [statfs in <sys/statvfs.h> (for solaris 2.6+ systems)])
563 found_struct_statfs=yes],[])
566 if test X$found_struct_statfs = Xno ; then
567 dnl first try including sys/vfs.h
568 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
569 #ifdef HAVE_SYS_TYPES_H
570 #include <sys/types.h>
572 #include <sys/vfs.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/vfs.h)
573 AC_DEFINE(STATFS_IN_SYS_VFS, 1, [statfs in <sys/vfs.h> (for linux systems)])
574 found_struct_statfs=yes],[])
577 if test X$found_struct_statfs = Xno ; then
578 dnl ...next try including sys/mount.h
579 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
580 #ifdef HAVE_SYS_TYPES_H
581 #include <sys/types.h>
583 #ifdef HAVE_SYS_PARAM_H
584 #include <sys/param.h>
586 #include <sys/mount.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/mount.h)
587 AC_DEFINE(STATFS_IN_SYS_MOUNT, 1, [statfs in <sys/mount.h> (for Digital Unix 4.0D systems)])
588 found_struct_statfs=yes],[])
591 if test X$found_struct_statfs = Xno ; then
592 dnl ...still no joy. Try sys/statfs.h
593 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
594 #ifdef HAVE_SYS_TYPES_H
595 #include <sys/types.h>
597 #include <sys/statfs.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/statfs.h)
598 AC_DEFINE(STATFS_IN_SYS_STATFS, 1, [statfs in <sys/statfs.h> (for Irix 6.4 systems)])
599 found_struct_statfs=yes],[])
602 if test X$found_struct_statfs = Xno ; then
603 dnl ...no luck. Warn the user of impending doom.
604 AC_MSG_WARN(not found)
608 dnl if we found the struct, see if it has the f_bavail member. Some OSes
609 dnl don't, including IRIX 6.5+
611 if test X$found_struct_statfs = Xyes ; then
612 AC_MSG_CHECKING(for f_bavail member in struct statfs)
613 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
614 #ifdef HAVE_SYS_TYPES_H
615 #include <sys/types.h>
617 #if STATFS_IN_SYS_STATVFS
618 # include <sys/statvfs.h>
619 typedef struct statvfs STATFS_t;
621 typedef struct statfs STATFS_t;
622 # if STATFS_IN_SYS_VFS
623 # include <sys/vfs.h>
624 # elif STATFS_IN_SYS_MOUNT
625 # include <sys/mouht.h>
626 # elif STATFS_IN_SYS_STATFS
627 # include <sys/statfs.h>
629 #endif ]], [[STATFS_t sfs;
630 sfs.f_bavail = 0;]])],[AC_MSG_RESULT(yes)
631 AC_DEFINE(STATFS_HAS_F_BAVAIL, 1, [Define if struct statfs has the f_bavail member])],[AC_MSG_RESULT(no)
635 if test X$found_struct_statfs = Xyes ; then
637 dnl now check to see if we have the 4-argument variant of statfs()
638 dnl this pretty much requires AC_RUN_IFELSE([AC_LANG_SOURCE([[]])],[],[],[])
640 AC_MSG_CHECKING([if statfs() requires 4 arguments])
641 AC_RUN_IFELSE([AC_LANG_SOURCE([[
642 #ifdef HAVE_SYS_TYPES_H
643 #include <sys/types.h>
645 #ifdef STATFS_IN_SYS_VFS
647 #elif STATFS_IN_SYS_MOUNT
648 #include <sys/mouht.h>
649 #elif STATFS_IN_SYS_STATFS
650 #include <sys/statfs.h>
654 exit (statfs(".", &sfs, sizeof(sfs), 0));
656 ]])],[AC_MSG_RESULT(yes)
657 AC_DEFINE(STAT_STATFS4, 1, [Define if the statfs() call takes 4 arguments])],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)
663 dnl look for libc features
665 AC_MSG_CHECKING(if <netdb.h> defines h_errno)
666 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[printf("%d",h_errno)]])],[PROVIDES_ERRNO=yes],[])
667 AC_MSG_RESULT($PROVIDES_ERRNO)
668 if test $PROVIDES_ERRNO = yes; then
669 AC_DEFINE(HAVE_HERRNO, 1, [ Define as 1 if <netdb.h> defines h_errno])
672 dnl If a system doesn't have S_IFSOCK, define it as 0 which will
673 dnl make S_ISSOCK always return false (nice, eh?)
674 AC_MSG_CHECKING(if <sys/stat.h> defines S_IFSOCK)
675 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[printf("%d", S_IFSOCK)]])],[HAS_S_IFSOCK=yes],[HAS_S_IFSOCK=no])
676 AC_MSG_RESULT($HAS_S_IFSOCK)
677 if test $HAS_S_IFSOCK = yes; then
678 AC_DEFINE(HAVE_S_IFSOCK, 1, [Define as 1 if <sys/stat.h> defines S_IFSOCK])
681 dnl Some Unix's are missing S_ISLNK, S_ISSOCK
682 AC_MSG_CHECKING(if <sys/stat.h> defines S_ISLNK)
683 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[printf("%d", S_ISLNK(0755))]])],[HAS_S_ISLNK=yes],[HAS_S_ISLNK=no])
684 AC_MSG_RESULT($HAS_S_ISLNK)
685 if test $HAS_S_ISLNK = yes; then
686 AC_DEFINE(HAVE_S_ISLNK, 1, [Define as 1 if <sys/stat.h> defines S_ISLNK])
689 AC_MSG_CHECKING(if <sys/stat.h> defines S_ISSOCK)
690 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[printf("%d", S_ISSOCK(0755))]])],[HAS_S_ISSOCK=yes],[HAS_S_ISSOCK=no])
691 AC_MSG_RESULT($HAS_S_ISSOCK)
692 if test $HAS_S_ISSOCK = yes; then
693 AC_DEFINE(HAVE_S_ISSOCK, 1, [Define as 1 if <sys/stat.h> defines S_ISSOCK])
696 AC_MSG_CHECKING(if timezone is defined)
697 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[printf("%ld", timezone)]])],[HAS_TIMEZONE=yes],[HAS_TIMEZONE=no])
698 AC_MSG_RESULT($HAS_TIMEZONE)
700 dnl Check for missing typedefs
706 dnl Checks for library functions.
709 dnl XXX don't want to re-enable code that's been unused for years at this
710 dnl point, but should offer good performance improvements, check after
714 AC_CHECK_FUNCS(basename getaddrinfo getcwd getnameinfo getwd inet_aton)
715 AC_CHECK_FUNCS(mtrace putenv realpath setenv)
716 AC_CHECK_FUNCS(stpcpy stpncpy strcspn)
717 AC_CHECK_FUNCS(strdup strndup strerror strtol strtoul strspn strstr)
719 AC_CHECK_FUNCS(__secure_getenv)
721 AC_CHECK_FUNCS(regcomp)
725 AC_CHECK_FUNCS(mkstemp)
727 dnl XXX Glob *is* broken on linux with libc5, solaris and possibly aix when
728 dnl %files gets something like
729 dnl /usr/*/locale/*/LC_MESSAGES/*.mo
730 dnl (Note: more than one asterisk in glob pattern.)
732 dnl XXX Glob is "fixed" in glibc-2.3.3-61, but the cost is that
733 dnl dangling symlinks are no longer globbed. Always use the internal glob.
734 AC_DEFINE(USE_GNU_GLOB, 1, [Use the included glob.c?])
738 dnl check if python is requested
739 AC_ARG_ENABLE(python, [ --enable-python build rpm python bindings ],
740 [case "$enable_python" in
742 *) AC_MSG_ERROR([invalid argument to --enable-python])
747 AS_IF([test "$enable_python" = yes],[
748 # rpm-python is based on python-2.5,
749 # with legacy hacks to allow building against python >= 2.3
750 AM_PATH_PYTHON([2.3],[
751 WITH_PYTHON_INCLUDE=`${PYTHON} -c 'from distutils.sysconfig import *; print get_python_inc()'`
752 WITH_PYTHON_SUBPACKAGE=1
753 save_CPPFLAGS="$CPPFLAGS"
754 CPPFLAGS="$CPPFLAGS -I$WITH_PYTHON_INCLUDE"
755 AC_CHECK_HEADER([Python.h],[],
756 [AC_MSG_ERROR([missing Python.h])
758 CPPFLAGS="$save_CPPFLAGS"
760 AC_SEARCH_LIBS([Py_Main],[python${PYTHON_VERSION} python],[
761 WITH_PYTHON_LIB="$ac_res"
762 ],[AC_MSG_ERROR([missing python library])
769 WITH_PYTHON_SUBPACKAGE=0
772 AC_SUBST(WITH_PYTHON_INCLUDE)
773 AC_SUBST(WITH_PYTHON_LIB)
775 AM_CONDITIONAL(PYTHON,[test "$WITH_PYTHON_SUBPACKAGE" = 1])
777 AC_PATH_PROG(__DOXYGEN, doxygen, no, $PATH)
779 dnl Auto-detect whether doxygen generated API docs should be included.
781 AC_ARG_WITH(apidocs, [ --with-apidocs build rpm API docs ],,[with_apidocs=auto])
783 case "$with_apidocs" in
785 AS_IF([test "$__DOXYGEN" = no],[with_apidocs=no],[with_apidocs=yes])
788 AS_IF([test "$__DOXYGEN" = no],
789 [AC_MSG_ERROR([rpm API docs needs doxygen in PATH])])
794 AC_ARG_WITH(selinux, [ --with-selinux build with selinux support ],
795 [case "$with_selinux" in
797 *) AC_MSG_ERROR([invalid argument to --with-selinux])
802 AS_IF([test "$with_selinux" = yes],[
803 AC_CHECK_HEADER([selinux/selinux.h],[
804 AC_CHECK_LIB(selinux,[is_selinux_enabled],[with_selinux=yes],[
805 AC_MSG_ERROR([--with-selinux given, but libselinux not found])])
807 AC_MSG_ERROR([--with-selinux given, but selinux/selinux.h not found])
811 AS_IF([test "$with_selinux" = yes],[
812 AC_DEFINE(WITH_SELINUX, 1, [Build with selinux support?])
813 WITH_SELINUX_LIB="-lselinux"
815 AC_SUBST(WITH_SELINUX_LIB)
816 AM_CONDITIONAL(SELINUX,[test "$with_selinux" = yes])
820 AC_ARG_WITH(lua, [ --with-lua build with lua support ],,[with_lua=yes])
821 AS_IF([test "$with_lua" = yes],[
822 AC_DEFINE(WITH_LUA, 1, [Build with lua support?])
823 WITH_LUA_INCLUDE="-I\${top_srcdir}/lua/include -I\${top_srcdir}/lua/local"
824 WITH_LUA_LIB="\$(top_builddir)/lua/liblua.la"
826 AC_SUBST(WITH_LUA_LIB)
827 AC_SUBST(WITH_LUA_INCLUDE)
829 AS_IF([test "$with_apidocs" = yes],[
830 WITH_APIDOCS_TARGET=apidocs
835 AC_SUBST(WITH_APIDOCS_TARGET)
836 AC_SUBST(WITH_APIDOCS)
839 AC_ARG_WITH(dmalloc, [ --with-dmalloc build with dmalloc debugging support ])
840 if test "$with_dmalloc" = yes ; then
841 AC_DEFINE(DMALLOC, 1, [Build with dmalloc support?])
842 LIBS="$LIBS -ldmalloc"
845 AC_CHECK_FUNCS(setlocale)
847 AC_CHECK_FUNCS(getpassphrase)
849 AC_CHECK_FUNC(getmntent, AC_DEFINE(HAVE_GETMNTENT, 1, [Define if you have the getmntent() function]), [
850 AC_CHECK_FUNC(mntctl, AC_DEFINE(HAVE_MNTCTL, 1, [Define as 1 if you have mntctl() (only aix?)]),[
851 AC_CHECK_FUNC(getmntinfo, AC_DEFINE(HAVE_GETMNTINFO, 1, [Define as 1 if you have getmntinfo() (Mac OS X)]), [
852 AC_CHECK_FUNC(getmntinfo_r, AC_DEFINE(HAVE_GETMNTINFO_R, 1, [Define as 1 if you have getmntinfo_r() (only osf?)]), [
853 AC_CHECK_LIB(c_r, getmntinfo_r, [LIBS="$LIBS -lc_r";
854 AC_DEFINE(HAVE_GETMNTINFO_R, 1, [Define as 1 if you have getmntinfo_r() (only osf?)])], [
855 AC_DEFINE([USE_GETMNTENT], 1, [Defined if getmntent replacement is used])
856 AC_LIBOBJ(getmntent)])
862 AC_CHECK_FUNC(lchown,
863 [__CHOWN_RHF="%{__chown} -Rhf"
864 __CHGRP_RHF="%{__chgrp} -Rhf"
865 AC_DEFINE(HAVE_LCHOWN, 1, [Define as 1 if you have lchown()])],
866 [__CHOWN_RHF="%{__chown} -Rf"
867 __CHGRP_RHF="%{__chgrp} -Rf"
868 dnl Does chown() follow symlinks? This should be a good enough test.
869 AC_MSG_CHECKING(whether chown() follows symlinks)
870 AC_ARG_ENABLE([broken-chown],
871 [ --enable-broken-chown this system's chown follows symbolic links],
872 result=$enableval, result=unknown)
873 if echo "$build" | egrep "(aix)|(hpux)|(linux)" > /dev/null ; then
875 elif echo "$build" | egrep "(nextstep)" > /dev/null ; then
878 if test $result = unknown; then
879 if test `${__ID} | cut -f2 -d\= | cut -f1 -d\(` = 0; then
884 if test `ls -l foo | awk '{print $3}'` != "root"; then
891 AC_MSG_CHECKING((cannot check by non-root user))
896 AC_MSG_RESULT($result)
897 if test $result = yes; then
898 AC_DEFINE(CHOWN_FOLLOWS_SYMLINK, 1, [Define as 1 if chown() follows symlinks and you don't have lchown()])
900 AC_SUBST(__CHOWN_RHF)
901 AC_SUBST(__CHGRP_RHF)
904 dnl figure out what root's primary group is
906 AC_MSG_CHECKING(root's primary group)
907 AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdio.h>
908 #include <sys/types.h>
914 struct passwd *root = NULL;
915 struct group *roots_group = NULL;
916 FILE * tempfile = NULL;
918 root = getpwuid( (uid_t) 0 );
920 roots_group = getgrgid(root->pw_gid);
921 if (roots_group != NULL) {
922 tempfile = fopen("conftest_rootg", "w");
923 if (tempfile != NULL) {
924 fprintf(tempfile, "%s\n", roots_group->gr_name);
932 }]])],[ROOT_GROUP=`cat conftest_rootg`],[ROOT_GROUP="root"],[ROOT_GROUP="root"
934 AC_MSG_RESULT($ROOT_GROUP)
937 if echo "$build_os" | grep sco > /dev/null; then
938 echo "hacking things up for sco"
939 AC_DEFINE(NEED_STRINGS_H, 1, [Define as one if we need to include <strings.h> (along with <string.h>)])
940 AC_DEFINE(HAVE_STRUCT_MNTTAB, 1,
941 [Define as 1 if you have "struct mnttab" (only sco?)])
942 elif echo "$build_os" | grep sunos > /dev/null; then
943 echo "hacking things up for sunos"
944 CFLAGS="$CFLAGS -D__USE_FIXED_PROTOTYPES__"
945 AC_DEFINE(NEED_STRINGS_H, 1, [Define as one if we need to include <strings.h> (along with <string.h>)])
946 AC_DEFINE(NEED_MYREALLOC, 1, [Define as 1 if we need myrealloc])
951 # get rid of the 4-th tuple, if config.guess returned "linux-gnu" for build_os
954 if echo "$build_os" | grep '.*-gnulibc1' > /dev/null ; then
955 build_os=`echo "${build_os}" | sed 's/-gnulibc1$//'`
957 if echo "$build_os" | grep '.*-gnueabi' > /dev/null ; then
958 build_os=`echo "${build_os}" | sed 's/-gnueabi$//'`
959 build_os_gnu=-gnueabi
961 if echo "$build_os" | grep '.*-gnu' > /dev/null ; then
962 build_os=`echo "${build_os}" | sed 's/-gnu$//'`
966 build_os_exact="${build_os}"
967 build_os_major=`echo "${build_os}" | sed 's/\..*$//'`
968 build_os_noversion=`echo "${build_os}" | sed 's/[0-9]*\..*$//'`
971 rm -f ./find-provides
972 if test -f ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.prov ; then
973 echo "using ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.prov for automatic provides generation"
974 ln -s ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.prov ./find-provides
975 elif test -f ${srcdir}/autodeps/${build_os_exact}.prov ; then
976 echo "using ${srcdir}/autodeps/${build_os_exact}.prov for automatic provides generation"
977 ln -s ${srcdir}/autodeps/${build_os_exact}.prov ./find-provides
978 elif test -f ${srcdir}/autodeps/${build_os_major}.prov ; then
979 echo "using ${srcdir}/autodeps/${build_os_major}.prov for automatic provides generation"
980 ln -s ${srcdir}/autodeps/${build_os_major}.prov ./find-provides
981 elif test -f ${srcdir}/autodeps/${build_os_noversion}.prov ; then
982 echo "using ${srcdir}/autodeps/${build_os_noversion}.prov for automatic provides generation"
983 ln -s ${srcdir}/autodeps/${build_os_noversion}.prov ./find-provides
985 echo "*** no default provides information is available for ${build_os_noversion}"
986 ln -s ${srcdir}/autodeps/none ./find-provides
989 rm -f ./find-requires
990 if test -f ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.req ; then
991 echo "using ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.req for automatic requires generation"
992 ln -s ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.req ./find-requires
993 elif test -f ${srcdir}/autodeps/${build_os_exact}.req ; then
994 echo "using ${srcdir}/autodeps/${build_os_exact}.req for automatic requires generation"
995 ln -s ${srcdir}/autodeps/${build_os_exact}.req ./find-requires
996 elif test -f ${srcdir}/autodeps/${build_os_major}.req ; then
997 echo "using ${srcdir}/autodeps/${build_os_major}.req for automatic requires generation"
998 ln -s ${srcdir}/autodeps/${build_os_major}.req ./find-requires
999 elif test -f ${srcdir}/autodeps/${build_os_noversion}.req ; then
1000 echo "using ${srcdir}/autodeps/${build_os_noversion}.req for automatic requires generation"
1001 ln -s ${srcdir}/autodeps/${build_os_noversion}.req ./find-requires
1003 echo "*** no default requires information is available for ${build_os_noversion}"
1004 ln -s ${srcdir}/autodeps/none ./find-requires
1007 dnl Determine the canonical arch-vendor-os for the build machine
1008 autorelocate_path='%{nil}'
1009 autorelocate_dcolor='0'
1010 case "${build_cpu}" in
1011 *86) RPMCANONCOLOR=0; RPMCANONARCH=i386 ;;
1012 ia32e*) RPMCANONCOLOR=3; RPMCANONARCH=ia32e ;;
1013 amd64*) RPMCANONCOLOR=3; RPMCANONARCH=amd64 ;;
1014 x86_64*) RPMCANONCOLOR=3; RPMCANONARCH=x86_64 ;;
1015 alpha*) RPMCANONCOLOR=0; RPMCANONARCH=alpha ;;
1016 sparc64*) RPMCANONCOLOR=3; RPMCANONARCH=sparc64 ;;
1017 sparc*) RPMCANONCOLOR=3; RPMCANONARCH=sparc ;;
1018 ia64*) RPMCANONCOLOR=2; RPMCANONARCH=ia64;
1019 autorelocate_path='/emul/%%{ARCH}-%%{OS}'
1020 autorelocate_dcolor='1' ;;
1021 s390x*) RPMCANONCOLOR=3; RPMCANONARCH=s390x ;;
1022 s390*) RPMCANONCOLOR=0; RPMCANONARCH=s390 ;;
1023 powerpc64*|ppc64*) RPMCANONCOLOR=3; RPMCANONARCH=ppc64 ;;
1024 powerpc*|ppc*) RPMCANONCOLOR=0; RPMCANONARCH=ppc ;;
1025 arm*) RPMCANONCOLOR=0; RPMCANONARCH=arm ;;
1026 mipsel*) RPMCANONCOLOR=0; RPMCANONARCH=mipsel ;;
1027 mips*) RPMCANONCOLOR=0; RPMCANONARCH=mips ;;
1028 m68k*) RPMCANONCOLOR=0; RPMCANONARCH=m68k ;;
1029 *) RPMCANONCOLOR=0; RPMCANONARCH=unknown ;;
1031 case "${build_os_noversion}" in
1032 mint) RPMCANONARCH=m68kmint ;;
1034 RPMCANONVENDOR="$build_vendor"
1035 case "${build_vendor}" in
1036 unknown|pc|ibm|redhat|pld|mandrake|conectiva|lvr|yellowdog|caos)
1037 test -f /etc/redhat-release && RPMCANONVENDOR=redhat
1038 test -f /etc/pld-release && RPMCANONVENDOR=pld
1039 test -f /etc/mandrake-release && RPMCANONVENDOR=mandrake
1040 test -f /etc/conectiva-release && RPMCANONVENDOR=conectiva
1041 test -f /etc/lvr-release && RPMCANONVENDOR=lvr
1042 test -f /etc/yellowdog-release && RPMCANONVENDOR=yellowdog
1043 test -f /etc/caos-release && RPMCANONVENDOR=caos
1046 RPMCANONOS="$build_os_noversion"
1047 RPMCANONGNU="$build_os_gnu"
1048 AC_SUBST(RPMCANONCOLOR)
1049 AC_SUBST(autorelocate_path)
1050 AC_SUBST(autorelocate_dcolor)
1051 AC_SUBST(RPMCANONARCH)
1052 AC_SUBST(RPMCANONVENDOR)
1053 AC_SUBST(RPMCANONOS)
1054 AC_SUBST(RPMCANONGNU)
1055 AC_DEFINE_UNQUOTED([RPMCANONVENDOR],["${RPMCANONVENDOR}"],[canonical vendor])
1057 if test X"$prefix" = XNONE ; then
1058 usrprefix="$ac_default_prefix"
1063 RPMCONFIGDIR="`echo ${usrprefix}/lib/rpm`"
1064 AC_SUBST(RPMCONFIGDIR)
1068 AC_CONFIG_SUBDIRS(db3)
1070 AM_CONDITIONAL([WITH_INTERNAL_DB],[test "$with_internal_db" = yes])
1072 AC_PATH_PROG(AUTOM4TE,autom4te,:)
1074 AC_CONFIG_FILES([ Doxyfile Makefile
1075 rpmio/Makefile rpmdb/Makefile lib/Makefile build/Makefile
1076 po/Makefile.in scripts/Makefile