2 AC_INIT(rpm, 4.7.0, rpm-maint@lists.rpm.org)
4 AC_CONFIG_SRCDIR([rpmqv.c])
5 AC_CONFIG_HEADERS([config.h])
7 AM_INIT_AUTOMAKE([1.10 foreign tar-ustar dist-bzip2 subdir-objects nostdinc])
9 AC_CONFIG_TESTDIR(tests)
11 AC_USE_SYSTEM_EXTENSIONS
15 dnl Checks for programs.
28 if test "$ac_cv_prog_cc_c99" = no; then
29 AC_MSG_ERROR([ISO C99 capable compiler required])
34 if test "$GCC" = yes; then
35 CFLAGS="$CFLAGS -fPIC -DPIC -D_REENTRANT -Wall -Wpointer-arith -Wmissing-prototypes -Wno-char-subscripts"
36 # XXX disabled for now due to noise from NSPR headers
37 # CFLAGS="$CFLAGS -Wstrict-prototypes"
38 cflags_to_try="-fno-strict-aliasing -fstack-protector"
39 AC_MSG_CHECKING([supported compiler flags])
42 for flag in $cflags_to_try; do
43 CFLAGS="$CFLAGS $flag"
44 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[return 0;]])],[
46 RPMCFLAGS="$RPMCFLAGS $flag"
50 CFLAGS="$CFLAGS $RPMCFLAGS"
57 dnl look for POSIX chmod attributes
59 AC_MSG_CHECKING(POSIX chmod)
61 chmod 744 foo.chmodtest
62 chmod +X foo.chmodtest 2>/dev/null
63 a=`ls -l foo.chmodtest | awk '{print $1}'`
65 if test "$a" = "-rwxr-xr-x"; then
67 FIXPERMS=a+rX,u+w,g-w,o-w
69 AC_MSG_RESULT(no (tell your OS vendor about GNU fileutils))
70 FIXPERMS=a+r,u+w,g-w,o-w
75 dnl see if we have a mkdir that supports `-p'.
77 AC_PATH_PROGS(RPM_MKDIR, mkdir, mkdir)
78 AC_MSG_CHECKING(if $RPM_MKDIR supports -p)
80 $RPM_MKDIR -p conftest/a 2>/dev/null
82 rmdir conftest/a 2>/dev/null
89 rmdir conftest 2>/dev/null
91 RPM_MKDIR_P="$RPM_MKDIR -p"
99 if test X"$RPM_MKDIR_P" = X0 ; then
101 RPM_MKDIR_P="`echo ${prefix}/lib/rpm/mkinstalldirs`"
106 dnl substitute this into config.h, so the C source picks it up.
108 AC_DEFINE_UNQUOTED(RPM_MKDIR_P, "${RPM_MKDIR_P}",
109 [A full path to a program, possibly with arguments, that will create a
110 directory and all necessary parent directories, ala 'mkdir -p'])
111 AC_SUBST(RPM_MKDIR_P)
113 dnl AM_DISABLE_SHARED
116 AC_CHECK_TOOL(AR, ar, :)
119 dnl use defaults if cross-compiling, otherwise use the default path.
121 if test "$cross_compiling" = "yes"; then
128 dnl Find some common programs
130 AC_PATH_PROG(__BZIP2, bzip2, /usr/bin/bzip2, $MYPATH)
131 AC_PATH_PROG(__CAT, cat, /bin/cat, $MYPATH)
132 AC_PATH_PROG(__CHGRP, chgrp, /bin/chgrp, $MYPATH)
133 AC_PATH_PROG(__CHMOD, chmod, /bin/chmod, $MYPATH)
134 AC_PATH_PROG(__CHOWN, chown, /bin/chown, $MYPATH)
135 AC_PATH_PROG(__CP, cp, /bin/cp, $MYPATH)
136 AC_PATH_PROG(__CPIO, cpio, /bin/cpio, $MYPATH)
137 AC_PATH_PROG(__CURL, curl, /usr/bin/curl, $MYPATH)
138 AC_PATH_PROG(__FILE, file, /usr/bin/file, $MYPATH)
139 AC_PATH_PROG(__GPG, gpg, /usr/bin/gpg, $MYPATH)
140 AC_PATH_PROG(__GREP, grep, /bin/grep, $MYPATH)
141 AC_PATH_PROG(__GZIP, gzip, /bin/gzip, $MYPATH)
142 AC_PATH_PROG(__UNZIP, unzip, /usr/bin/unzip, $MYPATH)
144 AC_PATH_PROG(__ID, id, /usr/bin/id, $MYPATH)
145 AC_MSG_CHECKING(checking whether id supports -u)
146 if ${__ID} -u 2>&1 > /dev/null ; then
150 __ID_U="%{__id} | %{__sed} 's/[[^=]]*=\\\\([[0-9]][[0-9]]*\\\\).*$/\\\\1/'"
155 AC_PATH_PROG(__INSTALL, install, /usr/bin/install, $MYPATH)
156 AC_PATH_PROG(__LZMA, lzma, /usr/bin/lzma, $MYPATH)
157 AC_PATH_PROG(__MAKE, make, /usr/bin/make, $MYPATH)
158 AC_PATH_PROG(__MKDIR, mkdir, /bin/mkdir, $MYPATH)
159 AC_PATH_PROG(__MV, mv, /bin/mv, $MYPATH)
160 AC_PATH_PROG(__PATCH, patch, /usr/bin/patch, $MYPATH)
161 AC_MSG_CHECKING(old version of patch)
162 PATCHVERSION=`patch --version 2>&1`
164 if test "$PATCHVERSION" = "Patch version 2.1"; then
165 AC_DEFINE(HAVE_OLDPATCH_21, 1,
166 [Define if the patch call you'll be using is 2.1 or older])
167 AC_MSG_RESULT(patch older then 2.2 found)
169 AC_MSG_RESULT(patch later then 2.2 found)
172 AC_PATH_PROG(__PERL, perl, /usr/bin/perl, $MYPATH)
173 AC_PATH_PROG(__PGP, pgp, /usr/bin/pgp, $MYPATH)
174 AC_PATH_PROG(__PYTHON, python, /usr/bin/python, $MYPATH)
175 AC_PATH_PROG(__RM, rm, /bin/rm, $MYPATH)
176 AC_PATH_PROG(__RSH, rsh, /usr/bin/rsh, $MYPATH)
177 AC_PATH_PROG(__SED, sed, /bin/sed, $MYPATH)
178 AC_PATH_PROG(__SSH, ssh, /usr/bin/ssh, $MYPATH)
179 AC_PATH_PROG(__TAR, tar, /bin/tar, $MYPATH)
181 AC_PATH_PROG(__LD, ld, /usr/bin/ld, $MYPATH)
182 AC_PATH_PROG(__NM, nm, /usr/bin/nm, $MYPATH)
183 AC_PATH_PROG(__OBJCOPY, objcopy, /usr/bin/objcopy, $MYPATH)
184 AC_PATH_PROG(__OBJDUMP, objdump, /usr/bin/objdump, $MYPATH)
185 AC_PATH_PROG(__STRIP, strip, /usr/bin/strip, $MYPATH)
188 # Check for zlib library.
193 AC_CHECK_HEADERS([zlib.h],[
194 AS_IF([test -z "${WITH_ZLIB_LIB}"],[
195 for zlib in z gz ; do
196 AC_CHECK_LIB(${zlib}, gzread,
197 [WITH_ZLIB_LIB="-l${zlib}"; break])
200 dnl zlib-1.0.4 has not gzseek
201 AC_CHECK_LIB(${zlib}, gzseek, [AC_DEFINE(HAVE_GZSEEK, 1, [Define as 1 if your zlib has gzseek()])])
205 AC_SUBST(WITH_ZLIB_INCLUDE)
206 AC_SUBST(WITH_ZLIB_LIB)
209 # Check for bzip2 library.
211 AC_CHECK_HEADERS([bzlib.h],[
212 AC_CHECK_LIB(bz2, bzread, [WITH_BZ2_LIB=-lbz2],
214 AC_CHECK_LIB(bz2, BZ2_bzread,[
216 AC_DEFINE(HAVE_BZ2_1_0, 1, [Define as 1 if you bzip2 1.0])
220 AC_SUBST(WITH_BZ2_LIB)
223 # Check for lzma library.
225 AC_CHECK_HEADERS([lzma.h],[
226 AC_CHECK_LIB(lzma, lzma_auto_decoder, [WITH_LZMA_LIB=-llzma])
228 AC_SUBST(WITH_LZMA_LIB)
233 dnl Check for features
236 dnl Checks for libraries.
238 AC_CHECK_FUNC(setreuid, [], [
239 AC_CHECK_LIB(ucb, setreuid, [if echo $LIBS | grep -- -lucb >/dev/null ;then :; else LIBS="$LIBS -lc -lucb" USEUCB=y;fi])
242 AC_CHECK_FUNC(rand, [], [
243 AC_CHECK_LIB(rand, rand, [])
246 AC_CHECK_FUNC(getdomainname, [], [
247 AC_CHECK_LIB(nsl, getdomainname)
249 AC_CHECK_FUNC(socket, [], [
250 AC_CHECK_LIB(socket, socket)
253 AC_CHECK_HEADERS(error.h)
254 AC_CHECK_FUNCS(error)
256 AC_CHECK_HEADERS(poll.h)
258 AC_CHECK_HEADERS(pthread.h)
260 AC_CHECK_LIB(pthread, pthread_mutex_trylock, [], [
261 dnl OSF 5.0 has the the symbols prefixed with __ in libpthread.
262 AC_CHECK_LIB(pthread, __pthread_mutex_trylock, [], [
263 AC_CHECK_LIB(thread, mutex_lock)
267 AC_SEARCH_LIBS(aio_read, [c rt aio posix4])
269 AC_CHECK_FUNCS(vsnprintf snprintf)
271 dnl Temporary hack for MiNT. Some functions (writev, snprintf) are
272 dnl not in the libc but in libport (for political reasons). This check
273 dnl can hopefully be removed soon. Please use the default action
274 dnl for this macro (not LIBS=...), otherwise the check for dbopen
276 AC_CHECK_LIB(port, writev)
279 # Check for libelf library. Prefer external, otherwise none.
282 AC_CHECK_HEADER([libelf.h])
283 AC_CHECK_HEADERS([gelf.h], [
284 AC_CHECK_LIB(elf, gelf_getvernaux, [
285 AC_DEFINE(HAVE_LIBELF, 1, [Define to 1 if you have the 'elf' library (-lelf).])
286 WITH_LIBELF_LIB="-lelf"
290 AC_SUBST(WITH_LIBELF_INCLUDE)
291 AC_SUBST(WITH_LIBELF_LIB)
292 AM_CONDITIONAL(LIBELF,[test "$WITH_LIBELF" = yes])
294 AC_CHECK_HEADERS([dwarf.h], [
297 AM_CONDITIONAL(LIBDWARF,[test "$WITH_LIBDWARF" = yes])
300 # Check for NSS library.
301 # We need nss.h from NSS which needs nspr.h. Unfortunately both glibc and NSS
302 # have a header named nss.h... so make extra check for NSS's sechash.h
303 # which we use too and hopefully is slightly more unique to NSS.
306 AC_CHECK_HEADERS([nspr.h nss.h sechash.h], [], [
307 AC_MSG_ERROR([missing required NSPR / NSS header])
309 AC_CHECK_LIB(nss3, NSS_NoDB_Init, [
312 AC_MSG_ERROR([missing required NSS library 'nss3'])
314 AC_SUBST(WITH_NSS_INCLUDE)
315 AC_SUBST(WITH_NSS_LIB)
318 # Check for magic library.
322 AC_CHECK_HEADER([magic.h], [
323 AC_CHECK_LIB(magic, magic_open, [
325 WITH_MAGIC_LIB="-lmagic"
327 AC_MSG_ERROR([missing required library 'libmagic'])
330 AC_MSG_ERROR([missing required header magic.h])
333 AC_SUBST(WITH_MAGIC_INCLUDE)
334 AC_SUBST(WITH_MAGIC_LIB)
337 # Check for popt library.
341 AC_CHECK_HEADER([popt.h], [
342 AC_CHECK_LIB(popt, poptGetContext, [
344 WITH_POPT_LIB="-lpopt"
346 AC_MSG_ERROR([missing required library popt])
349 AC_MSG_ERROR([missing required header popt.h])
352 AC_SUBST(WITH_POPT_INCLUDE)
353 AC_SUBST(WITH_POPT_LIB)
356 # Process --with/without-external-db
357 AC_ARG_WITH(external_db, [ --with-external-db build against an external Berkeley db],
358 [case "$with_external_db" in
360 *) AC_MSG_ERROR([invalid argument to --with-external-db]) ;;
362 [with_external_db=no])
364 case "$with_external_db" in
366 AC_CHECK_HEADERS([db.h],[
367 AC_CHECK_TYPE([db_threadid_t],[],
368 [AC_MSG_WARN([missing type db_threadid_t])],
371 AC_CHECK_LIB([db],[db_create],[],[
372 AC_MSG_ERROR([missing db_create in libdb])
374 AC_CHECK_LIB([db],[db_env_create],[],[
375 AC_MSG_ERROR([missing db_env_create in libdb])
377 AC_CHECK_LIB([db],[db_env_set_func_fsync],[],[
378 AC_MSG_ERROR([missing db_env_set_func_fsync in libdb])
380 AC_CHECK_LIB([db],[db_strerror],[],[
381 AC_MSG_ERROR([missing db_strerror in libdb])
386 AC_MSG_ERROR([missing required header db.h])
389 * ) # Fall back to internal db if available
390 if [ test -x db/dist/configure ]; then
391 AC_DEFINE(HAVE_DB_H, 1, [Define if you have the <db3/db.h> header file])
393 AC_MSG_ERROR([internal Berkeley DB directory not present, see INSTALL])
398 AC_SUBST([WITH_DB_LIB])
401 # Check for sqlite3 library.
402 AC_ARG_ENABLE(sqlite3, [ --enable-sqlite3 enable sqlite3 support],
403 [case "$enable_sqlite3" in
405 *) AC_MSG_ERROR([invalid argument to --enable-sqlite3])
410 WITH_SQLITE3_INCLUDE=
413 AS_IF([test "$enable_sqlite3" = yes],[
414 AC_CHECK_HEADERS([sqlite3.h],
415 [ AC_CHECK_LIB(sqlite3, sqlite3_open, [
416 WITH_SQLITE3_INCLUDE=
417 WITH_SQLITE3_LIB="-lsqlite3"
420 AC_MSG_ERROR([missing libsqlite3])
423 AC_MSG_ERROR([missing sqlite3.h])
427 AC_SUBST(WITH_SQLITE3_INCLUDE)
428 AC_SUBST(WITH_SQLITE3_LIB)
429 AM_CONDITIONAL([SQLITE3],[test "$WITH_SQLITE3" = yes])
433 dnl AmigaOS and IXEmul have a fork() dummy
436 echo "Building for AmigaOS: using vfork() instead of fork()";
437 CFLAGS="$CFLAGS -Dfork=vfork"
441 AM_GNU_GETTEXT_VERSION([0.16.1])
442 AM_GNU_GETTEXT([external])
444 dnl Checks for header files we can live without.
450 AC_CHECK_HEADERS(locale.h)
451 AC_CHECK_HEADERS(limits.h)
452 AC_CHECK_HEADERS(fcntl.h getopt.h grp.h memory.h netdb.h pwd.h utime.h)
454 AC_CHECK_HEADERS(sys/ipc.h sys/socket.h sys/select.h)
455 AC_CHECK_HEADERS(sys/types.h sys/stdtypes.h)
456 AC_CHECK_HEADERS(sys/mman.h sys/resource.h sys/utsname.h sys/wait.h)
458 AC_CHECK_HEADERS(netinet/in_systm.h)
459 AC_CHECK_HEADERS(mntent.h sys/mnttab.h sys/systemcfg.h)
460 AC_CHECK_HEADERS(sys/mount.h sys/mntctl.h sys/param.h sys/vmount.h)
461 AC_CHECK_HEADERS(libio.h)
462 AC_CHECK_HEADERS(err.h mcheck.h)
464 AC_CHECK_HEADERS(glob.h)
466 dnl statfs portability fiddles.
468 dnl We should really emulate/steal sections of the statfs and struct statfs
469 dnl checks from GNU fileutils.
471 AC_MSG_CHECKING(for struct statfs)
474 dnl this is easier than nesting AC_TRY_COMPILEs...
476 found_struct_statfs=no
478 if test X$found_struct_statfs = Xno ; then
479 dnl Solaris 2.6+ wants to use statvfs
480 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
481 #ifdef HAVE_SYS_TYPES_H
482 #include <sys/types.h>
484 #include <sys/statvfs.h> ]], [[struct statvfs sfs;]])],[AC_MSG_RESULT(in sys/statvfs.h)
485 AC_DEFINE(STATFS_IN_SYS_STATVFS, 1,
486 [statfs in <sys/statvfs.h> (for solaris 2.6+ systems)])
487 found_struct_statfs=yes],[])
490 if test X$found_struct_statfs = Xno ; then
491 dnl first try including sys/vfs.h
492 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
493 #ifdef HAVE_SYS_TYPES_H
494 #include <sys/types.h>
496 #include <sys/vfs.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/vfs.h)
497 AC_DEFINE(STATFS_IN_SYS_VFS, 1, [statfs in <sys/vfs.h> (for linux systems)])
498 found_struct_statfs=yes],[])
501 if test X$found_struct_statfs = Xno ; then
502 dnl ...next try including sys/mount.h
503 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
504 #ifdef HAVE_SYS_TYPES_H
505 #include <sys/types.h>
507 #ifdef HAVE_SYS_PARAM_H
508 #include <sys/param.h>
510 #include <sys/mount.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/mount.h)
511 AC_DEFINE(STATFS_IN_SYS_MOUNT, 1, [statfs in <sys/mount.h> (for Digital Unix 4.0D systems)])
512 found_struct_statfs=yes],[])
515 if test X$found_struct_statfs = Xno ; then
516 dnl ...still no joy. Try sys/statfs.h
517 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
518 #ifdef HAVE_SYS_TYPES_H
519 #include <sys/types.h>
521 #include <sys/statfs.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/statfs.h)
522 AC_DEFINE(STATFS_IN_SYS_STATFS, 1, [statfs in <sys/statfs.h> (for Irix 6.4 systems)])
523 found_struct_statfs=yes],[])
526 if test X$found_struct_statfs = Xno ; then
527 dnl ...no luck. Warn the user of impending doom.
528 AC_MSG_WARN(not found)
532 dnl if we found the struct, see if it has the f_bavail member. Some OSes
533 dnl don't, including IRIX 6.5+
535 if test X$found_struct_statfs = Xyes ; then
536 AC_MSG_CHECKING(for f_bavail member in struct statfs)
537 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
538 #ifdef HAVE_SYS_TYPES_H
539 #include <sys/types.h>
541 #if STATFS_IN_SYS_STATVFS
542 # include <sys/statvfs.h>
543 typedef struct statvfs STATFS_t;
545 typedef struct statfs STATFS_t;
546 # if STATFS_IN_SYS_VFS
547 # include <sys/vfs.h>
548 # elif STATFS_IN_SYS_MOUNT
549 # include <sys/mount.h>
550 # elif STATFS_IN_SYS_STATFS
551 # include <sys/statfs.h>
553 #endif ]], [[STATFS_t sfs;
554 sfs.f_bavail = 0;]])],[AC_MSG_RESULT(yes)
555 AC_DEFINE(STATFS_HAS_F_BAVAIL, 1, [Define if struct statfs has the f_bavail member])],[AC_MSG_RESULT(no)
559 if test X$found_struct_statfs = Xyes ; then
561 dnl now check to see if we have the 4-argument variant of statfs()
562 dnl this pretty much requires AC_RUN_IFELSE([AC_LANG_SOURCE([[]])],[],[],[])
564 AC_MSG_CHECKING([if statfs() requires 4 arguments])
565 AC_RUN_IFELSE([AC_LANG_SOURCE([[
566 #ifdef HAVE_SYS_TYPES_H
567 #include <sys/types.h>
569 #ifdef STATFS_IN_SYS_VFS
571 #elif STATFS_IN_SYS_MOUNT
572 #include <sys/mouht.h>
573 #elif STATFS_IN_SYS_STATFS
574 #include <sys/statfs.h>
578 exit (statfs(".", &sfs, sizeof(sfs), 0));
580 ]])],[AC_MSG_RESULT(yes)
581 AC_DEFINE(STAT_STATFS4, 1, [Define if the statfs() call takes 4 arguments])],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)
587 dnl look for libc features
589 AC_MSG_CHECKING(if <netdb.h> defines h_errno)
590 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[printf("%d",h_errno)]])],[PROVIDES_ERRNO=yes],[])
591 AC_MSG_RESULT($PROVIDES_ERRNO)
592 if test $PROVIDES_ERRNO = yes; then
593 AC_DEFINE(HAVE_HERRNO, 1, [ Define as 1 if <netdb.h> defines h_errno])
596 dnl If a system doesn't have S_IFSOCK, define it as 0 which will
597 dnl make S_ISSOCK always return false (nice, eh?)
598 AC_MSG_CHECKING(if <sys/stat.h> defines S_IFSOCK)
599 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[printf("%d", S_IFSOCK)]])],[HAS_S_IFSOCK=yes],[HAS_S_IFSOCK=no])
600 AC_MSG_RESULT($HAS_S_IFSOCK)
601 if test $HAS_S_IFSOCK = yes; then
602 AC_DEFINE(HAVE_S_IFSOCK, 1, [Define as 1 if <sys/stat.h> defines S_IFSOCK])
605 dnl Some Unix's are missing S_ISLNK, S_ISSOCK
606 AC_MSG_CHECKING(if <sys/stat.h> defines S_ISLNK)
607 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[printf("%d", S_ISLNK(0755))]])],[HAS_S_ISLNK=yes],[HAS_S_ISLNK=no])
608 AC_MSG_RESULT($HAS_S_ISLNK)
609 if test $HAS_S_ISLNK = yes; then
610 AC_DEFINE(HAVE_S_ISLNK, 1, [Define as 1 if <sys/stat.h> defines S_ISLNK])
613 AC_MSG_CHECKING(if <sys/stat.h> defines S_ISSOCK)
614 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[printf("%d", S_ISSOCK(0755))]])],[HAS_S_ISSOCK=yes],[HAS_S_ISSOCK=no])
615 AC_MSG_RESULT($HAS_S_ISSOCK)
616 if test $HAS_S_ISSOCK = yes; then
617 AC_DEFINE(HAVE_S_ISSOCK, 1, [Define as 1 if <sys/stat.h> defines S_ISSOCK])
620 dnl Check for missing typedefs
626 dnl Checks for library functions.
628 dnl XXX don't want to re-enable code that's been unused for years at this
629 dnl point, but should offer good performance improvements, check after
633 AC_CHECK_FUNCS(getaddrinfo getnameinfo inet_aton)
634 AC_CHECK_FUNCS(mtrace)
635 AC_CHECK_FUNCS(strndup strerror)
637 AC_REPLACE_FUNCS(basename getcwd getwd)
638 AC_REPLACE_FUNCS(putenv realpath setenv)
639 AC_REPLACE_FUNCS(stpcpy stpncpy strcspn)
640 AC_REPLACE_FUNCS(strdup strtol strtoul strspn strstr)
642 AC_CHECK_FUNCS(__secure_getenv)
644 AC_CHECK_FUNCS(regcomp)
648 AC_CHECK_FUNCS([mkstemp], [], [AC_MSG_ERROR([mkstemp() is required by rpm])])
650 dnl XXX Glob *is* broken on linux with libc5, solaris and possibly aix when
651 dnl %files gets something like
652 dnl /usr/*/locale/*/LC_MESSAGES/*.mo
653 dnl (Note: more than one asterisk in glob pattern.)
655 dnl XXX Glob is "fixed" in glibc-2.3.3-61, but the cost is that
656 dnl dangling symlinks are no longer globbed. Always use the internal glob.
657 AC_DEFINE(USE_GNU_GLOB, 1, [Use the included glob.c?])
661 dnl check if python is requested
662 AC_ARG_ENABLE(python, [ --enable-python build rpm python bindings ],
663 [case "$enable_python" in
665 *) AC_MSG_ERROR([invalid argument to --enable-python])
670 AS_IF([test "$enable_python" = yes],[
671 # rpm-python is based on python-2.5,
672 # with legacy hacks to allow building against python >= 2.3
673 AM_PATH_PYTHON([2.3],[
674 WITH_PYTHON_INCLUDE=`${PYTHON} -c 'from distutils.sysconfig import *; print get_python_inc()'`
675 WITH_PYTHON_SUBPACKAGE=1
676 save_CPPFLAGS="$CPPFLAGS"
677 CPPFLAGS="$CPPFLAGS -I$WITH_PYTHON_INCLUDE"
678 AC_CHECK_HEADER([Python.h],[],
679 [AC_MSG_ERROR([missing Python.h])
681 CPPFLAGS="$save_CPPFLAGS"
683 AC_SEARCH_LIBS([Py_Main],[python${PYTHON_VERSION} python],[
684 WITH_PYTHON_LIB="$ac_res"
685 ],[AC_MSG_ERROR([missing python library])
692 WITH_PYTHON_SUBPACKAGE=0
695 AC_SUBST(WITH_PYTHON_INCLUDE)
696 AC_SUBST(WITH_PYTHON_LIB)
698 AM_CONDITIONAL(PYTHON,[test "$WITH_PYTHON_SUBPACKAGE" = 1])
700 AC_PATH_PROG(DOXYGEN, doxygen, no)
702 dnl Only build internal API + source hacking docs on request
704 AC_ARG_WITH(hackingdocs, [ --with-hackingdocs build rpm hacking docs ],,[with_hackingdocs=no])
706 case "$with_hackingdocs" in
708 AS_IF([test "$DOXYGEN" = no],[with_hackingdocs=no],[with_hackingdocs=no])
711 AS_IF([test "$DOXYGEN" = no],
712 [AC_MSG_ERROR([rpm hacking docs eeds doxygen in PATH])])
715 AC_CHECK_PROG(HAVE_DOT,[dot],[YES],[NO])
718 AC_ARG_WITH(selinux, [ --with-selinux build with selinux support ],
719 [case "$with_selinux" in
721 *) AC_MSG_ERROR([invalid argument to --with-selinux])
726 AS_IF([test "$with_selinux" = yes],[
727 AC_CHECK_HEADER([selinux/selinux.h],[
728 AC_CHECK_LIB(selinux,[is_selinux_enabled],[with_selinux=yes],[
729 AC_MSG_ERROR([--with-selinux given, but libselinux not found])])
731 AC_MSG_ERROR([--with-selinux given, but selinux/selinux.h not found])
735 AS_IF([test "$with_selinux" = yes],[
736 AC_DEFINE(WITH_SELINUX, 1, [Build with selinux support?])
737 WITH_SELINUX_LIB="-lselinux"
739 AC_SUBST(WITH_SELINUX_LIB)
740 AM_CONDITIONAL(SELINUX,[test "$with_selinux" = yes])
744 AC_ARG_WITH(cap, [ --with-cap build with capability support ],
747 *) AC_MSG_ERROR([invalid argument to --with-cap])
752 AS_IF([test "$with_cap" = yes],[
753 AC_CHECK_HEADER([sys/capability.h],[
754 AC_CHECK_LIB(cap,[cap_get_file],[with_cap=yes],[
755 AC_MSG_ERROR([--with-cap given, but libcap not found])])
757 AC_MSG_ERROR([--with-cap given, but sys/capability.h not found])
761 AS_IF([test "$with_cap" = yes],[
762 AC_DEFINE(WITH_CAP, 1, [Build with capability support?])
765 AC_SUBST(WITH_CAP_LIB)
766 AM_CONDITIONAL(CAP,[test "$with_cap" = yes])
769 AC_ARG_WITH(acl, [ --with-acl build with acl support ],
772 *) AC_MSG_ERROR([invalid argument to --with-acl])
777 AS_IF([test "$with_acl" = yes],[
778 dnl verification uses non-portable acl_equiv_mode()
779 AC_CHECK_HEADER([acl/libacl.h],[
780 AC_CHECK_LIB(acl,[acl_equiv_mode],[with_acl=yes],[
781 AC_MSG_ERROR([--with-acl given, but libacl not found or not suitable])])
783 AC_MSG_ERROR([--with-acl given, but acl/libacl.h not found])
787 AS_IF([test "$with_acl" = yes],[
788 AC_DEFINE(WITH_ACL, 1, [Build with acl support?])
791 AC_SUBST(WITH_ACL_LIB)
792 AM_CONDITIONAL(ACL,[test "$with_acl" = yes])
796 AC_ARG_WITH(lua, [ --with-lua build with lua support ],,[with_lua=yes])
797 AS_IF([test "$with_lua" = yes],[
798 AC_CHECK_HEADER([lua.h],[
799 AC_CHECK_LIB(lua,[luaL_openlibs],[with_lua=yes],[
800 AC_MSG_ERROR([--with-lua given, but liblua not found])
804 AC_MSG_ERROR([--with-lua given, but lua.h not found])
808 AS_IF([test "$with_lua" = yes],[
809 AC_DEFINE(WITH_LUA, 1, [Build with lua support?])
811 WITH_LUA_LIB="-llua -lm"
813 AC_SUBST(WITH_LUA_LIB)
814 AC_SUBST(WITH_LUA_INCLUDE)
815 AM_CONDITIONAL(WITH_LUAEXT,[test "$with_lua" = yes])
818 AC_ARG_WITH(dmalloc, [ --with-dmalloc build with dmalloc debugging support ])
819 if test "$with_dmalloc" = yes ; then
820 AC_DEFINE(DMALLOC, 1, [Build with dmalloc support?])
821 LIBS="$LIBS -ldmalloc"
824 AC_CHECK_FUNCS(setlocale)
826 AC_CHECK_FUNCS(getpassphrase)
828 AC_CHECK_FUNC(getmntent, AC_DEFINE(HAVE_GETMNTENT, 1, [Define if you have the getmntent() function]), [
829 AC_CHECK_FUNC(mntctl, AC_DEFINE(HAVE_MNTCTL, 1, [Define as 1 if you have mntctl() (only aix?)]),[
830 AC_CHECK_FUNC(getmntinfo, AC_DEFINE(HAVE_GETMNTINFO, 1, [Define as 1 if you have getmntinfo() (Mac OS X)]), [
831 AC_CHECK_FUNC(getmntinfo_r, AC_DEFINE(HAVE_GETMNTINFO_R, 1, [Define as 1 if you have getmntinfo_r() (only osf?)]), [
832 AC_CHECK_LIB(c_r, getmntinfo_r, [LIBS="$LIBS -lc_r";
833 AC_DEFINE(HAVE_GETMNTINFO_R, 1, [Define as 1 if you have getmntinfo_r() (only osf?)])], [
834 AC_DEFINE([USE_GETMNTENT], 1, [Defined if getmntent replacement is used])
835 AC_LIBOBJ(getmntent)])
841 AC_CHECK_FUNC(lchown,
842 [__CHOWN_RHF="%{__chown} -Rhf"
843 __CHGRP_RHF="%{__chgrp} -Rhf"
844 AC_DEFINE(HAVE_LCHOWN, 1, [Define as 1 if you have lchown()])],
845 [__CHOWN_RHF="%{__chown} -Rf"
846 __CHGRP_RHF="%{__chgrp} -Rf"
847 dnl Does chown() follow symlinks? This should be a good enough test.
848 AC_MSG_CHECKING(whether chown() follows symlinks)
849 AC_ARG_ENABLE([broken-chown],
850 [ --enable-broken-chown this system's chown follows symbolic links],
851 result=$enableval, result=unknown)
852 if echo "$build" | ${EGREP} "(aix)|(hpux)|(linux)" > /dev/null ; then
854 elif echo "$build" | ${EGREP} "(nextstep)" > /dev/null ; then
857 if test $result = unknown; then
858 if test `${__ID} | cut -f2 -d\= | cut -f1 -d\(` = 0; then
863 if test `ls -l foo | awk '{print $3}'` != "root"; then
870 AC_MSG_CHECKING((cannot check by non-root user))
875 AC_MSG_RESULT($result)
876 if test $result = yes; then
877 AC_DEFINE(CHOWN_FOLLOWS_SYMLINK, 1, [Define as 1 if chown() follows symlinks and you don't have lchown()])
879 AC_SUBST(__CHOWN_RHF)
880 AC_SUBST(__CHGRP_RHF)
882 if echo "$host_os" | grep sco > /dev/null; then
883 echo "hacking things up for sco"
884 AC_DEFINE(NEED_STRINGS_H, 1, [Define as one if we need to include <strings.h> (along with <string.h>)])
885 AC_DEFINE(HAVE_STRUCT_MNTTAB, 1,
886 [Define as 1 if you have "struct mnttab" (only sco?)])
887 elif echo "$host_os" | grep sunos > /dev/null; then
888 echo "hacking things up for sunos"
889 CFLAGS="$CFLAGS -D__USE_FIXED_PROTOTYPES__"
890 AC_DEFINE(NEED_STRINGS_H, 1, [Define as one if we need to include <strings.h> (along with <string.h>)])
891 AC_DEFINE(NEED_MYREALLOC, 1, [Define as 1 if we need myrealloc])
896 # get rid of the 4-th tuple, if config.guess returned "linux-gnu" for host_os
899 if echo "$host_os" | grep '.*-gnulibc1' > /dev/null ; then
900 host_os=`echo "${host_os}" | sed 's/-gnulibc1$//'`
902 if echo "$host_os" | grep '.*-gnueabi' > /dev/null ; then
903 host_os=`echo "${host_os}" | sed 's/-gnueabi$//'`
906 if echo "$host_os" | grep '.*-gnu' > /dev/null ; then
907 host_os=`echo "${host_os}" | sed 's/-gnu$//'`
911 host_os_exact="${host_os}"
912 host_os_major=`echo "${host_os}" | sed 's/\..*$//'`
913 host_os_noversion=`echo "${host_os}" | sed 's/[0-9]*\..*$//'`
916 rm -f ./find-provides
917 if test -f ${srcdir}/autodeps/${host_cpu}-${host_os_exact}.prov ; then
918 echo "using ${srcdir}/autodeps/${host_cpu}-${host_os_exact}.prov for automatic provides generation"
919 ln -s ${srcdir}/autodeps/${host_cpu}-${host_os_exact}.prov ./find-provides
920 elif test -f ${srcdir}/autodeps/${host_os_exact}.prov ; then
921 echo "using ${srcdir}/autodeps/${host_os_exact}.prov for automatic provides generation"
922 ln -s ${srcdir}/autodeps/${host_os_exact}.prov ./find-provides
923 elif test -f ${srcdir}/autodeps/${host_os_major}.prov ; then
924 echo "using ${srcdir}/autodeps/${host_os_major}.prov for automatic provides generation"
925 ln -s ${srcdir}/autodeps/${host_os_major}.prov ./find-provides
926 elif test -f ${srcdir}/autodeps/${host_os_noversion}.prov ; then
927 echo "using ${srcdir}/autodeps/${host_os_noversion}.prov for automatic provides generation"
928 ln -s ${srcdir}/autodeps/${host_os_noversion}.prov ./find-provides
930 echo "*** no default provides information is available for ${host_os_noversion}"
931 ln -s ${srcdir}/autodeps/none ./find-provides
934 rm -f ./find-requires
935 if test -f ${srcdir}/autodeps/${host_cpu}-${host_os_exact}.req ; then
936 echo "using ${srcdir}/autodeps/${host_cpu}-${host_os_exact}.req for automatic requires generation"
937 ln -s ${srcdir}/autodeps/${host_cpu}-${host_os_exact}.req ./find-requires
938 elif test -f ${srcdir}/autodeps/${host_os_exact}.req ; then
939 echo "using ${srcdir}/autodeps/${host_os_exact}.req for automatic requires generation"
940 ln -s ${srcdir}/autodeps/${host_os_exact}.req ./find-requires
941 elif test -f ${srcdir}/autodeps/${host_os_major}.req ; then
942 echo "using ${srcdir}/autodeps/${host_os_major}.req for automatic requires generation"
943 ln -s ${srcdir}/autodeps/${host_os_major}.req ./find-requires
944 elif test -f ${srcdir}/autodeps/${host_os_noversion}.req ; then
945 echo "using ${srcdir}/autodeps/${host_os_noversion}.req for automatic requires generation"
946 ln -s ${srcdir}/autodeps/${host_os_noversion}.req ./find-requires
948 echo "*** no default requires information is available for ${host_os_noversion}"
949 ln -s ${srcdir}/autodeps/none ./find-requires
952 dnl Determine the canonical arch-vendor-os for the host machine
953 case "${host_cpu}" in
954 *86) RPMCANONCOLOR=0; RPMCANONARCH=i386 ;;
955 ia32e*) RPMCANONCOLOR=3; RPMCANONARCH=ia32e ;;
956 amd64*) RPMCANONCOLOR=3; RPMCANONARCH=amd64 ;;
957 x86_64*) RPMCANONCOLOR=3; RPMCANONARCH=x86_64 ;;
958 alpha*) RPMCANONCOLOR=0; RPMCANONARCH=alpha ;;
959 sparc64*) RPMCANONCOLOR=3; RPMCANONARCH=sparc64 ;;
960 sparc*) RPMCANONCOLOR=3; RPMCANONARCH=sparc ;;
961 ia64*) RPMCANONCOLOR=2; RPMCANONARCH=ia64 ;;
962 s390x*) RPMCANONCOLOR=3; RPMCANONARCH=s390x ;;
963 s390*) RPMCANONCOLOR=0; RPMCANONARCH=s390 ;;
964 powerpc64*|ppc64*) RPMCANONCOLOR=3; RPMCANONARCH=ppc64 ;;
965 powerpc*|ppc*) RPMCANONCOLOR=0; RPMCANONARCH=ppc ;;
966 arm*) RPMCANONCOLOR=0; RPMCANONARCH=arm ;;
967 mipsel*) RPMCANONCOLOR=0; RPMCANONARCH=mipsel ;;
968 mips*) RPMCANONCOLOR=0; RPMCANONARCH=mips ;;
969 m68k*) RPMCANONCOLOR=0; RPMCANONARCH=m68k ;;
970 sh3*) RPMCANONCOLOR=0; RPMCANONARCH=sh3 ;;
971 sh4*) RPMCANONCOLOR=0; RPMCANONARCH=sh4 ;;
972 *) RPMCANONCOLOR=0; RPMCANONARCH=unknown ;;
974 case "${host_os_noversion}" in
975 mint) RPMCANONARCH=m68kmint ;;
977 RPMCANONVENDOR="$build_vendor"
978 case "${build_vendor}" in
979 unknown|pc|ibm|redhat|pld|mandrake|conectiva|lvr|yellowdog|caos|suse)
980 test -f /etc/redhat-release && RPMCANONVENDOR=redhat
981 test -f /etc/SuSE-release && RPMCANONVENDOR=suse
982 test -f /etc/pld-release && RPMCANONVENDOR=pld
983 test -f /etc/mandrake-release && RPMCANONVENDOR=mandrake
984 test -f /etc/conectiva-release && RPMCANONVENDOR=conectiva
985 test -f /etc/lvr-release && RPMCANONVENDOR=lvr
986 test -f /etc/yellowdog-release && RPMCANONVENDOR=yellowdog
987 test -f /etc/caos-release && RPMCANONVENDOR=caos
990 RPMCANONOS="$host_os_noversion"
991 RPMCANONGNU="$host_os_gnu"
992 AC_SUBST(RPMCANONCOLOR)
993 AC_SUBST(RPMCANONARCH)
994 AC_SUBST(RPMCANONVENDOR)
996 AC_SUBST(RPMCANONGNU)
997 AC_DEFINE_UNQUOTED([RPMCANONVENDOR],["${RPMCANONVENDOR}"],[canonical vendor])
999 if test X"$prefix" = XNONE ; then
1000 usrprefix="$ac_default_prefix"
1005 RPMCONFIGDIR="`echo ${usrprefix}/lib/rpm`"
1006 AC_SUBST(RPMCONFIGDIR)
1010 if test "$with_external_db" = no; then
1011 AC_CONFIG_SUBDIRS(db3)
1014 AM_CONDITIONAL([WITH_INTERNAL_DB],[test "$with_external_db" = no])
1015 AM_CONDITIONAL([DOXYGEN],[test "$DOXYGEN" != no])
1016 AM_CONDITIONAL([HACKINGDOCS],[test "$with_hackingdocs" = yes])
1018 AC_PATH_PROG(AUTOM4TE,autom4te,:)
1020 AS_IF([test "$ac_cv_header_stdint_h" = "yes"],[
1021 AC_DEFINE([__RPM_USES_STDINT_H__],[1],[if rpm uses stdint.h])
1024 AC_SUBST([dirstamp],[\${am__leading_dot}dirstamp])
1026 AC_CONFIG_FILES([Makefile
1027 rpmio/Makefile lib/Makefile build/Makefile
1028 po/Makefile.in scripts/Makefile