2 AC_INIT(rpm, 4.7.0, rpm-maint@lists.rpm.org)
4 AC_CONFIG_SRCDIR([rpmqv.c])
5 AC_CONFIG_HEADERS([config.h])
6 AC_CONFIG_MACRO_DIR([m4])
8 AM_INIT_AUTOMAKE([1.10 foreign tar-ustar dist-bzip2 subdir-objects nostdinc])
10 AC_CONFIG_TESTDIR(tests)
12 AC_USE_SYSTEM_EXTENSIONS
16 dnl Checks for programs.
29 if test "$ac_cv_prog_cc_c99" = no; then
30 AC_MSG_ERROR([ISO C99 capable compiler required])
35 if test "$GCC" = yes; then
36 CFLAGS="$CFLAGS -fPIC -DPIC -D_REENTRANT -Wall -Wpointer-arith -Wmissing-prototypes -Wno-char-subscripts"
37 # XXX disabled for now due to noise from NSPR headers
38 # CFLAGS="$CFLAGS -Wstrict-prototypes"
39 cflags_to_try="-fno-strict-aliasing -fstack-protector"
40 AC_MSG_CHECKING([supported compiler flags])
43 for flag in $cflags_to_try; do
44 CFLAGS="$CFLAGS $flag"
45 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[return 0;]])],[
47 RPMCFLAGS="$RPMCFLAGS $flag"
51 CFLAGS="$CFLAGS $RPMCFLAGS"
58 dnl look for POSIX chmod attributes
60 AC_MSG_CHECKING(POSIX chmod)
62 chmod 744 foo.chmodtest
63 chmod +X foo.chmodtest 2>/dev/null
64 a=`ls -l foo.chmodtest | awk '{print $1}'`
66 if test "$a" = "-rwxr-xr-x"; then
68 FIXPERMS=a+rX,u+w,g-w,o-w
70 AC_MSG_RESULT(no (tell your OS vendor about GNU fileutils))
71 FIXPERMS=a+r,u+w,g-w,o-w
76 dnl see if we have a mkdir that supports `-p'.
78 AC_PATH_PROGS(RPM_MKDIR, mkdir, mkdir)
79 AC_MSG_CHECKING(if $RPM_MKDIR supports -p)
81 $RPM_MKDIR -p conftest/a 2>/dev/null
83 rmdir conftest/a 2>/dev/null
90 rmdir conftest 2>/dev/null
92 RPM_MKDIR_P="$RPM_MKDIR -p"
100 if test X"$RPM_MKDIR_P" = X0 ; then
102 RPM_MKDIR_P="`echo ${prefix}/lib/rpm/mkinstalldirs`"
107 dnl substitute this into config.h, so the C source picks it up.
109 AC_DEFINE_UNQUOTED(RPM_MKDIR_P, "${RPM_MKDIR_P}",
110 [A full path to a program, possibly with arguments, that will create a
111 directory and all necessary parent directories, ala 'mkdir -p'])
112 AC_SUBST(RPM_MKDIR_P)
114 dnl AM_DISABLE_SHARED
117 AC_CHECK_TOOL(AR, ar, :)
120 dnl use defaults if cross-compiling, otherwise use the default path.
122 if test "$cross_compiling" = "yes"; then
129 dnl Find some common programs
131 AC_PATH_PROG(__BZIP2, bzip2, /usr/bin/bzip2, $MYPATH)
132 AC_PATH_PROG(__CAT, cat, /bin/cat, $MYPATH)
133 AC_PATH_PROG(__CHGRP, chgrp, /bin/chgrp, $MYPATH)
134 AC_PATH_PROG(__CHMOD, chmod, /bin/chmod, $MYPATH)
135 AC_PATH_PROG(__CHOWN, chown, /bin/chown, $MYPATH)
136 AC_PATH_PROG(__CP, cp, /bin/cp, $MYPATH)
137 AC_PATH_PROG(__CPIO, cpio, /bin/cpio, $MYPATH)
138 AC_PATH_PROG(__CURL, curl, /usr/bin/curl, $MYPATH)
139 AC_PATH_PROG(__FILE, file, /usr/bin/file, $MYPATH)
140 AC_PATH_PROG(__GPG, gpg, /usr/bin/gpg, $MYPATH)
141 AC_PATH_PROG(__GREP, grep, /bin/grep, $MYPATH)
142 AC_PATH_PROG(__GZIP, gzip, /bin/gzip, $MYPATH)
143 AC_PATH_PROG(__UNZIP, unzip, /usr/bin/unzip, $MYPATH)
145 AC_PATH_PROG(__ID, id, /usr/bin/id, $MYPATH)
146 AC_MSG_CHECKING(checking whether id supports -u)
147 if ${__ID} -u 2>&1 > /dev/null ; then
151 __ID_U="%{__id} | %{__sed} 's/[[^=]]*=\\\\([[0-9]][[0-9]]*\\\\).*$/\\\\1/'"
156 AC_PATH_PROG(__INSTALL, install, /usr/bin/install, $MYPATH)
157 AC_PATH_PROG(__LZMA, lzma, /usr/bin/lzma, $MYPATH)
158 AC_PATH_PROG(__MAKE, make, /usr/bin/make, $MYPATH)
159 AC_PATH_PROG(__MKDIR, mkdir, /bin/mkdir, $MYPATH)
160 AC_PATH_PROG(__MV, mv, /bin/mv, $MYPATH)
161 AC_PATH_PROG(__PATCH, patch, /usr/bin/patch, $MYPATH)
162 AC_MSG_CHECKING(old version of patch)
163 PATCHVERSION=`patch --version 2>&1`
165 if test "$PATCHVERSION" = "Patch version 2.1"; then
166 AC_DEFINE(HAVE_OLDPATCH_21, 1,
167 [Define if the patch call you'll be using is 2.1 or older])
168 AC_MSG_RESULT(patch older then 2.2 found)
170 AC_MSG_RESULT(patch later then 2.2 found)
173 AC_PATH_PROG(__PERL, perl, /usr/bin/perl, $MYPATH)
174 AC_PATH_PROG(__PGP, pgp, /usr/bin/pgp, $MYPATH)
175 AC_PATH_PROG(__PYTHON, python, /usr/bin/python, $MYPATH)
176 AC_PATH_PROG(__RM, rm, /bin/rm, $MYPATH)
177 AC_PATH_PROG(__RSH, rsh, /usr/bin/rsh, $MYPATH)
178 AC_PATH_PROG(__SED, sed, /bin/sed, $MYPATH)
179 AC_PATH_PROG(__SSH, ssh, /usr/bin/ssh, $MYPATH)
180 AC_PATH_PROG(__TAR, tar, /bin/tar, $MYPATH)
182 AC_PATH_PROG(__LD, ld, /usr/bin/ld, $MYPATH)
183 AC_PATH_PROG(__NM, nm, /usr/bin/nm, $MYPATH)
184 AC_PATH_PROG(__OBJCOPY, objcopy, /usr/bin/objcopy, $MYPATH)
185 AC_PATH_PROG(__OBJDUMP, objdump, /usr/bin/objdump, $MYPATH)
186 AC_PATH_PROG(__STRIP, strip, /usr/bin/strip, $MYPATH)
189 # Check for zlib library.
194 AC_CHECK_HEADERS([zlib.h],[
195 AS_IF([test -z "${WITH_ZLIB_LIB}"],[
196 for zlib in z gz ; do
197 AC_CHECK_LIB(${zlib}, gzread,
198 [WITH_ZLIB_LIB="-l${zlib}"; break])
201 dnl zlib-1.0.4 has not gzseek
202 AC_CHECK_LIB(${zlib}, gzseek, [AC_DEFINE(HAVE_GZSEEK, 1, [Define as 1 if your zlib has gzseek()])])
206 AC_SUBST(WITH_ZLIB_INCLUDE)
207 AC_SUBST(WITH_ZLIB_LIB)
210 # Check for bzip2 library.
212 AC_CHECK_HEADERS([bzlib.h],[
213 AC_CHECK_LIB(bz2, bzread, [WITH_BZ2_LIB=-lbz2],
215 AC_CHECK_LIB(bz2, BZ2_bzread,[
217 AC_DEFINE(HAVE_BZ2_1_0, 1, [Define as 1 if you bzip2 1.0])
221 AC_SUBST(WITH_BZ2_LIB)
224 # Check for lzma library.
226 AC_CHECK_HEADERS([lzma.h],[
227 AC_CHECK_LIB(lzma, lzma_auto_decoder, [WITH_LZMA_LIB=-llzma])
229 AC_SUBST(WITH_LZMA_LIB)
234 dnl Check for features
237 dnl Checks for libraries.
239 AC_CHECK_FUNC(setreuid, [], [
240 AC_CHECK_LIB(ucb, setreuid, [if echo $LIBS | grep -- -lucb >/dev/null ;then :; else LIBS="$LIBS -lc -lucb" USEUCB=y;fi])
243 AC_CHECK_FUNC(rand, [], [
244 AC_CHECK_LIB(rand, rand, [])
247 AC_CHECK_FUNC(getdomainname, [], [
248 AC_CHECK_LIB(nsl, getdomainname)
250 AC_CHECK_FUNC(socket, [], [
251 AC_CHECK_LIB(socket, socket)
254 AC_CHECK_HEADERS(error.h)
255 AC_CHECK_FUNCS(error)
257 AC_CHECK_HEADERS(poll.h)
259 AC_CHECK_HEADERS(pthread.h)
261 AC_CHECK_LIB(pthread, pthread_mutex_trylock, [], [
262 dnl OSF 5.0 has the the symbols prefixed with __ in libpthread.
263 AC_CHECK_LIB(pthread, __pthread_mutex_trylock, [], [
264 AC_CHECK_LIB(thread, mutex_lock)
268 AC_SEARCH_LIBS(aio_read, [c rt aio posix4])
270 AC_CHECK_FUNCS(vsnprintf snprintf)
272 dnl Temporary hack for MiNT. Some functions (writev, snprintf) are
273 dnl not in the libc but in libport (for political reasons). This check
274 dnl can hopefully be removed soon. Please use the default action
275 dnl for this macro (not LIBS=...), otherwise the check for dbopen
277 AC_CHECK_LIB(port, writev)
280 # Check for libelf library. Prefer external, otherwise none.
283 AC_CHECK_HEADER([libelf.h])
284 AC_CHECK_HEADERS([gelf.h], [
285 AC_CHECK_LIB(elf, gelf_getvernaux, [
286 AC_DEFINE(HAVE_LIBELF, 1, [Define to 1 if you have the 'elf' library (-lelf).])
287 WITH_LIBELF_LIB="-lelf"
291 AC_SUBST(WITH_LIBELF_INCLUDE)
292 AC_SUBST(WITH_LIBELF_LIB)
293 AM_CONDITIONAL(LIBELF,[test "$WITH_LIBELF" = yes])
295 AC_CHECK_HEADERS([dwarf.h], [
298 AM_CONDITIONAL(LIBDWARF,[test "$WITH_LIBDWARF" = yes])
301 # Check for NSS library.
302 # We need nss.h from NSS which needs nspr.h. Unfortunately both glibc and NSS
303 # have a header named nss.h... so make extra check for NSS's sechash.h
304 # which we use too and hopefully is slightly more unique to NSS.
307 AC_CHECK_HEADERS([nspr.h nss.h sechash.h], [], [
308 AC_MSG_ERROR([missing required NSPR / NSS header])
310 AC_CHECK_LIB(nss3, NSS_NoDB_Init, [
313 AC_MSG_ERROR([missing required NSS library 'nss3'])
315 AC_SUBST(WITH_NSS_INCLUDE)
316 AC_SUBST(WITH_NSS_LIB)
319 # Check for magic library.
323 AC_CHECK_HEADER([magic.h], [
324 AC_CHECK_LIB(magic, magic_open, [
326 WITH_MAGIC_LIB="-lmagic"
328 AC_MSG_ERROR([missing required library 'libmagic'])
331 AC_MSG_ERROR([missing required header magic.h])
334 AC_SUBST(WITH_MAGIC_INCLUDE)
335 AC_SUBST(WITH_MAGIC_LIB)
338 # Check for popt library.
342 AC_CHECK_HEADER([popt.h], [
343 AC_CHECK_LIB(popt, poptGetContext, [
345 WITH_POPT_LIB="-lpopt"
347 AC_MSG_ERROR([missing required library popt])
350 AC_MSG_ERROR([missing required header popt.h])
353 AC_SUBST(WITH_POPT_INCLUDE)
354 AC_SUBST(WITH_POPT_LIB)
357 # Process --with/without-external-db
358 AC_ARG_WITH(external_db, [ --with-external-db build against an external Berkeley db],
359 [case "$with_external_db" in
361 *) AC_MSG_ERROR([invalid argument to --with-external-db]) ;;
363 [with_external_db=no])
365 case "$with_external_db" in
367 AC_CHECK_HEADERS([db.h],[
368 AC_CHECK_TYPE([db_threadid_t],[],
369 [AC_MSG_WARN([missing type db_threadid_t])],
372 AC_CHECK_LIB([db],[db_create],[],[
373 AC_MSG_ERROR([missing db_create in libdb])
375 AC_CHECK_LIB([db],[db_env_create],[],[
376 AC_MSG_ERROR([missing db_env_create in libdb])
378 AC_CHECK_LIB([db],[db_env_set_func_fsync],[],[
379 AC_MSG_ERROR([missing db_env_set_func_fsync in libdb])
381 AC_CHECK_LIB([db],[db_strerror],[],[
382 AC_MSG_ERROR([missing db_strerror in libdb])
387 AC_MSG_ERROR([missing required header db.h])
390 * ) # Fall back to internal db if available
391 if [ test -x db/dist/configure ]; then
392 AC_DEFINE(HAVE_DB_H, 1, [Define if you have the <db3/db.h> header file])
394 AC_MSG_ERROR([internal Berkeley DB directory not present, see INSTALL])
399 AC_SUBST([WITH_DB_LIB])
402 # Check for sqlite3 library.
403 AC_ARG_ENABLE(sqlite3, [ --enable-sqlite3 enable sqlite3 support],
404 [case "$enable_sqlite3" in
406 *) AC_MSG_ERROR([invalid argument to --enable-sqlite3])
411 WITH_SQLITE3_INCLUDE=
414 AS_IF([test "$enable_sqlite3" = yes],[
415 AC_CHECK_HEADERS([sqlite3.h],
416 [ AC_CHECK_LIB(sqlite3, sqlite3_open, [
417 WITH_SQLITE3_INCLUDE=
418 WITH_SQLITE3_LIB="-lsqlite3"
421 AC_MSG_ERROR([missing libsqlite3])
424 AC_MSG_ERROR([missing sqlite3.h])
428 AC_SUBST(WITH_SQLITE3_INCLUDE)
429 AC_SUBST(WITH_SQLITE3_LIB)
430 AM_CONDITIONAL([SQLITE3],[test "$WITH_SQLITE3" = yes])
434 dnl AmigaOS and IXEmul have a fork() dummy
437 echo "Building for AmigaOS: using vfork() instead of fork()";
438 CFLAGS="$CFLAGS -Dfork=vfork"
442 AM_GNU_GETTEXT_VERSION([0.16.1])
443 AM_GNU_GETTEXT([external])
445 dnl Checks for header files we can live without.
451 AC_CHECK_HEADERS(locale.h)
452 AC_CHECK_HEADERS(limits.h)
453 AC_CHECK_HEADERS(fcntl.h getopt.h grp.h memory.h netdb.h pwd.h utime.h)
455 AC_CHECK_HEADERS(sys/ipc.h sys/socket.h sys/select.h)
456 AC_CHECK_HEADERS(sys/types.h sys/stdtypes.h)
457 AC_CHECK_HEADERS(sys/mman.h sys/resource.h sys/utsname.h sys/wait.h)
459 AC_CHECK_HEADERS(netinet/in_systm.h)
460 AC_CHECK_HEADERS(mntent.h sys/mnttab.h sys/systemcfg.h)
461 AC_CHECK_HEADERS(sys/mount.h sys/mntctl.h sys/param.h sys/vmount.h)
462 AC_CHECK_HEADERS(libio.h)
463 AC_CHECK_HEADERS(err.h mcheck.h)
465 AC_CHECK_HEADERS(glob.h)
467 dnl statfs portability fiddles.
469 dnl We should really emulate/steal sections of the statfs and struct statfs
470 dnl checks from GNU fileutils.
472 AC_MSG_CHECKING(for struct statfs)
475 dnl this is easier than nesting AC_TRY_COMPILEs...
477 found_struct_statfs=no
479 if test X$found_struct_statfs = Xno ; then
480 dnl Solaris 2.6+ wants to use statvfs
481 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
482 #ifdef HAVE_SYS_TYPES_H
483 #include <sys/types.h>
485 #include <sys/statvfs.h> ]], [[struct statvfs sfs;]])],[AC_MSG_RESULT(in sys/statvfs.h)
486 AC_DEFINE(STATFS_IN_SYS_STATVFS, 1,
487 [statfs in <sys/statvfs.h> (for solaris 2.6+ systems)])
488 found_struct_statfs=yes],[])
491 if test X$found_struct_statfs = Xno ; then
492 dnl first try including sys/vfs.h
493 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
494 #ifdef HAVE_SYS_TYPES_H
495 #include <sys/types.h>
497 #include <sys/vfs.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/vfs.h)
498 AC_DEFINE(STATFS_IN_SYS_VFS, 1, [statfs in <sys/vfs.h> (for linux systems)])
499 found_struct_statfs=yes],[])
502 if test X$found_struct_statfs = Xno ; then
503 dnl ...next try including sys/mount.h
504 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
505 #ifdef HAVE_SYS_TYPES_H
506 #include <sys/types.h>
508 #ifdef HAVE_SYS_PARAM_H
509 #include <sys/param.h>
511 #include <sys/mount.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/mount.h)
512 AC_DEFINE(STATFS_IN_SYS_MOUNT, 1, [statfs in <sys/mount.h> (for Digital Unix 4.0D systems)])
513 found_struct_statfs=yes],[])
516 if test X$found_struct_statfs = Xno ; then
517 dnl ...still no joy. Try sys/statfs.h
518 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
519 #ifdef HAVE_SYS_TYPES_H
520 #include <sys/types.h>
522 #include <sys/statfs.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/statfs.h)
523 AC_DEFINE(STATFS_IN_SYS_STATFS, 1, [statfs in <sys/statfs.h> (for Irix 6.4 systems)])
524 found_struct_statfs=yes],[])
527 if test X$found_struct_statfs = Xno ; then
528 dnl ...no luck. Warn the user of impending doom.
529 AC_MSG_WARN(not found)
533 dnl if we found the struct, see if it has the f_bavail member. Some OSes
534 dnl don't, including IRIX 6.5+
536 if test X$found_struct_statfs = Xyes ; then
537 AC_MSG_CHECKING(for f_bavail member in struct statfs)
538 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
539 #ifdef HAVE_SYS_TYPES_H
540 #include <sys/types.h>
542 #if STATFS_IN_SYS_STATVFS
543 # include <sys/statvfs.h>
544 typedef struct statvfs STATFS_t;
546 typedef struct statfs STATFS_t;
547 # if STATFS_IN_SYS_VFS
548 # include <sys/vfs.h>
549 # elif STATFS_IN_SYS_MOUNT
550 # include <sys/mount.h>
551 # elif STATFS_IN_SYS_STATFS
552 # include <sys/statfs.h>
554 #endif ]], [[STATFS_t sfs;
555 sfs.f_bavail = 0;]])],[AC_MSG_RESULT(yes)
556 AC_DEFINE(STATFS_HAS_F_BAVAIL, 1, [Define if struct statfs has the f_bavail member])],[AC_MSG_RESULT(no)
560 if test X$found_struct_statfs = Xyes ; then
562 dnl now check to see if we have the 4-argument variant of statfs()
563 dnl this pretty much requires AC_RUN_IFELSE([AC_LANG_SOURCE([[]])],[],[],[])
565 AC_MSG_CHECKING([if statfs() requires 4 arguments])
566 AC_RUN_IFELSE([AC_LANG_SOURCE([[
567 #ifdef HAVE_SYS_TYPES_H
568 #include <sys/types.h>
570 #ifdef STATFS_IN_SYS_VFS
572 #elif STATFS_IN_SYS_MOUNT
573 #include <sys/mouht.h>
574 #elif STATFS_IN_SYS_STATFS
575 #include <sys/statfs.h>
579 exit (statfs(".", &sfs, sizeof(sfs), 0));
581 ]])],[AC_MSG_RESULT(yes)
582 AC_DEFINE(STAT_STATFS4, 1, [Define if the statfs() call takes 4 arguments])],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)
588 dnl look for libc features
590 AC_MSG_CHECKING(if <netdb.h> defines h_errno)
591 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[printf("%d",h_errno)]])],[PROVIDES_ERRNO=yes],[])
592 AC_MSG_RESULT($PROVIDES_ERRNO)
593 if test $PROVIDES_ERRNO = yes; then
594 AC_DEFINE(HAVE_HERRNO, 1, [ Define as 1 if <netdb.h> defines h_errno])
597 dnl If a system doesn't have S_IFSOCK, define it as 0 which will
598 dnl make S_ISSOCK always return false (nice, eh?)
599 AC_MSG_CHECKING(if <sys/stat.h> defines S_IFSOCK)
600 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[printf("%d", S_IFSOCK)]])],[HAS_S_IFSOCK=yes],[HAS_S_IFSOCK=no])
601 AC_MSG_RESULT($HAS_S_IFSOCK)
602 if test $HAS_S_IFSOCK = yes; then
603 AC_DEFINE(HAVE_S_IFSOCK, 1, [Define as 1 if <sys/stat.h> defines S_IFSOCK])
606 dnl Some Unix's are missing S_ISLNK, S_ISSOCK
607 AC_MSG_CHECKING(if <sys/stat.h> defines S_ISLNK)
608 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[printf("%d", S_ISLNK(0755))]])],[HAS_S_ISLNK=yes],[HAS_S_ISLNK=no])
609 AC_MSG_RESULT($HAS_S_ISLNK)
610 if test $HAS_S_ISLNK = yes; then
611 AC_DEFINE(HAVE_S_ISLNK, 1, [Define as 1 if <sys/stat.h> defines S_ISLNK])
614 AC_MSG_CHECKING(if <sys/stat.h> defines S_ISSOCK)
615 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[printf("%d", S_ISSOCK(0755))]])],[HAS_S_ISSOCK=yes],[HAS_S_ISSOCK=no])
616 AC_MSG_RESULT($HAS_S_ISSOCK)
617 if test $HAS_S_ISSOCK = yes; then
618 AC_DEFINE(HAVE_S_ISSOCK, 1, [Define as 1 if <sys/stat.h> defines S_ISSOCK])
621 dnl Check for missing typedefs
627 dnl Checks for library functions.
629 dnl XXX don't want to re-enable code that's been unused for years at this
630 dnl point, but should offer good performance improvements, check after
634 AC_CHECK_FUNCS(getaddrinfo getnameinfo inet_aton)
635 AC_CHECK_FUNCS(mtrace)
636 AC_CHECK_FUNCS(strndup strerror)
638 AC_REPLACE_FUNCS(basename getcwd getwd)
639 AC_REPLACE_FUNCS(putenv realpath setenv)
640 AC_REPLACE_FUNCS(stpcpy stpncpy strcspn)
641 AC_REPLACE_FUNCS(strdup strtol strtoul strspn strstr)
643 AC_CHECK_FUNCS(__secure_getenv)
645 AC_CHECK_FUNCS(regcomp)
649 AC_CHECK_FUNCS([mkstemp], [], [AC_MSG_ERROR([mkstemp() is required by rpm])])
651 dnl XXX Glob *is* broken on linux with libc5, solaris and possibly aix when
652 dnl %files gets something like
653 dnl /usr/*/locale/*/LC_MESSAGES/*.mo
654 dnl (Note: more than one asterisk in glob pattern.)
656 dnl XXX Glob is "fixed" in glibc-2.3.3-61, but the cost is that
657 dnl dangling symlinks are no longer globbed. Always use the internal glob.
658 AC_DEFINE(USE_GNU_GLOB, 1, [Use the included glob.c?])
662 dnl check if python is requested
663 AC_ARG_ENABLE(python, [ --enable-python build rpm python bindings ],
664 [case "$enable_python" in
666 *) AC_MSG_ERROR([invalid argument to --enable-python])
671 AS_IF([test "$enable_python" = yes],[
672 # rpm-python is based on python-2.5,
673 # with legacy hacks to allow building against python >= 2.3
674 AM_PATH_PYTHON([2.3],[
675 WITH_PYTHON_INCLUDE=`${PYTHON} -c 'from distutils.sysconfig import *; print get_python_inc()'`
676 WITH_PYTHON_SUBPACKAGE=1
677 save_CPPFLAGS="$CPPFLAGS"
678 CPPFLAGS="$CPPFLAGS -I$WITH_PYTHON_INCLUDE"
679 AC_CHECK_HEADER([Python.h],[],
680 [AC_MSG_ERROR([missing Python.h])
682 CPPFLAGS="$save_CPPFLAGS"
684 AC_SEARCH_LIBS([Py_Main],[python${PYTHON_VERSION} python],[
685 WITH_PYTHON_LIB="$ac_res"
686 ],[AC_MSG_ERROR([missing python library])
693 WITH_PYTHON_SUBPACKAGE=0
696 AC_SUBST(WITH_PYTHON_INCLUDE)
697 AC_SUBST(WITH_PYTHON_LIB)
699 AM_CONDITIONAL(PYTHON,[test "$WITH_PYTHON_SUBPACKAGE" = 1])
701 AC_PATH_PROG(DOXYGEN, doxygen, no)
703 dnl Only build internal API + source hacking docs on request
705 AC_ARG_WITH(hackingdocs, [ --with-hackingdocs build rpm hacking docs ],,[with_hackingdocs=no])
707 case "$with_hackingdocs" in
709 AS_IF([test "$DOXYGEN" = no],[with_hackingdocs=no],[with_hackingdocs=no])
712 AS_IF([test "$DOXYGEN" = no],
713 [AC_MSG_ERROR([rpm hacking docs eeds doxygen in PATH])])
716 AC_CHECK_PROG(HAVE_DOT,[dot],[YES],[NO])
719 AC_ARG_WITH(selinux, [ --with-selinux build with selinux support ],
720 [case "$with_selinux" in
722 *) AC_MSG_ERROR([invalid argument to --with-selinux])
727 AS_IF([test "$with_selinux" = yes],[
728 AC_CHECK_HEADER([selinux/selinux.h],[
729 AC_CHECK_LIB(selinux,[is_selinux_enabled],[with_selinux=yes],[
730 AC_MSG_ERROR([--with-selinux given, but libselinux not found])])
732 AC_MSG_ERROR([--with-selinux given, but selinux/selinux.h not found])
736 AS_IF([test "$with_selinux" = yes],[
737 AC_DEFINE(WITH_SELINUX, 1, [Build with selinux support?])
738 WITH_SELINUX_LIB="-lselinux"
740 AC_SUBST(WITH_SELINUX_LIB)
741 AM_CONDITIONAL(SELINUX,[test "$with_selinux" = yes])
745 AC_ARG_WITH(cap, [ --with-cap build with capability support ],
748 *) AC_MSG_ERROR([invalid argument to --with-cap])
753 AS_IF([test "$with_cap" = yes],[
754 AC_CHECK_HEADER([sys/capability.h],[
755 AC_CHECK_LIB(cap,[cap_get_file], [
758 AC_CHECK_LIB(cap,[cap_compare], [
759 AC_DEFINE(HAVE_CAP_COMPARE, 1, [Have cap_compare function?])
763 AC_MSG_ERROR([--with-cap given, but libcap not found])])
765 AC_MSG_ERROR([--with-cap given, but sys/capability.h not found])
769 AS_IF([test "$with_cap" = yes],[
770 AC_DEFINE(WITH_CAP, 1, [Build with capability support?])
773 AC_SUBST(WITH_CAP_LIB)
774 AM_CONDITIONAL(CAP,[test "$with_cap" = yes])
777 AC_ARG_WITH(acl, [ --with-acl build with acl support ],
780 *) AC_MSG_ERROR([invalid argument to --with-acl])
785 AS_IF([test "$with_acl" = yes],[
786 dnl verification uses non-portable acl_equiv_mode()
787 AC_CHECK_HEADER([acl/libacl.h],[
788 AC_CHECK_LIB(acl,[acl_equiv_mode],[with_acl=yes],[
789 AC_MSG_ERROR([--with-acl given, but libacl not found or not suitable])])
791 AC_MSG_ERROR([--with-acl given, but acl/libacl.h not found])
795 AS_IF([test "$with_acl" = yes],[
796 AC_DEFINE(WITH_ACL, 1, [Build with acl support?])
799 AC_SUBST(WITH_ACL_LIB)
800 AM_CONDITIONAL(ACL,[test "$with_acl" = yes])
804 AC_ARG_WITH(lua, [ --with-lua build with lua support ],,[with_lua=yes])
805 AS_IF([test "$with_lua" = yes],[
806 AC_CHECK_HEADER([lua.h],[
807 AC_CHECK_LIB(lua,[luaL_openlibs],[with_lua=yes],[
808 AC_MSG_ERROR([--with-lua given, but liblua not found])
812 AC_MSG_ERROR([--with-lua given, but lua.h not found])
816 AS_IF([test "$with_lua" = yes],[
817 AC_DEFINE(WITH_LUA, 1, [Build with lua support?])
819 WITH_LUA_LIB="-llua -lm"
821 AC_SUBST(WITH_LUA_LIB)
822 AC_SUBST(WITH_LUA_INCLUDE)
823 AM_CONDITIONAL(WITH_LUAEXT,[test "$with_lua" = yes])
826 AC_ARG_WITH(dmalloc, [ --with-dmalloc build with dmalloc debugging support ])
827 if test "$with_dmalloc" = yes ; then
828 AC_DEFINE(DMALLOC, 1, [Build with dmalloc support?])
829 LIBS="$LIBS -ldmalloc"
832 AC_CHECK_FUNCS(setlocale)
834 AC_CHECK_FUNCS(getpassphrase)
836 AC_CHECK_FUNC(getmntent, AC_DEFINE(HAVE_GETMNTENT, 1, [Define if you have the getmntent() function]), [
837 AC_CHECK_FUNC(mntctl, AC_DEFINE(HAVE_MNTCTL, 1, [Define as 1 if you have mntctl() (only aix?)]),[
838 AC_CHECK_FUNC(getmntinfo, AC_DEFINE(HAVE_GETMNTINFO, 1, [Define as 1 if you have getmntinfo() (Mac OS X)]), [
839 AC_CHECK_FUNC(getmntinfo_r, AC_DEFINE(HAVE_GETMNTINFO_R, 1, [Define as 1 if you have getmntinfo_r() (only osf?)]), [
840 AC_CHECK_LIB(c_r, getmntinfo_r, [LIBS="$LIBS -lc_r";
841 AC_DEFINE(HAVE_GETMNTINFO_R, 1, [Define as 1 if you have getmntinfo_r() (only osf?)])], [
842 AC_DEFINE([USE_GETMNTENT], 1, [Defined if getmntent replacement is used])
843 AC_LIBOBJ(getmntent)])
849 AC_CHECK_FUNC(lchown,
850 [__CHOWN_RHF="%{__chown} -Rhf"
851 __CHGRP_RHF="%{__chgrp} -Rhf"
852 AC_DEFINE(HAVE_LCHOWN, 1, [Define as 1 if you have lchown()])],
853 [__CHOWN_RHF="%{__chown} -Rf"
854 __CHGRP_RHF="%{__chgrp} -Rf"
855 dnl Does chown() follow symlinks? This should be a good enough test.
856 AC_MSG_CHECKING(whether chown() follows symlinks)
857 AC_ARG_ENABLE([broken-chown],
858 [ --enable-broken-chown this system's chown follows symbolic links],
859 result=$enableval, result=unknown)
860 if echo "$build" | ${EGREP} "(aix)|(hpux)|(linux)" > /dev/null ; then
862 elif echo "$build" | ${EGREP} "(nextstep)" > /dev/null ; then
865 if test $result = unknown; then
866 if test `${__ID} | cut -f2 -d\= | cut -f1 -d\(` = 0; then
871 if test `ls -l foo | awk '{print $3}'` != "root"; then
878 AC_MSG_CHECKING((cannot check by non-root user))
883 AC_MSG_RESULT($result)
884 if test $result = yes; then
885 AC_DEFINE(CHOWN_FOLLOWS_SYMLINK, 1, [Define as 1 if chown() follows symlinks and you don't have lchown()])
887 AC_SUBST(__CHOWN_RHF)
888 AC_SUBST(__CHGRP_RHF)
890 if echo "$host_os" | grep sco > /dev/null; then
891 echo "hacking things up for sco"
892 AC_DEFINE(NEED_STRINGS_H, 1, [Define as one if we need to include <strings.h> (along with <string.h>)])
893 AC_DEFINE(HAVE_STRUCT_MNTTAB, 1,
894 [Define as 1 if you have "struct mnttab" (only sco?)])
895 elif echo "$host_os" | grep sunos > /dev/null; then
896 echo "hacking things up for sunos"
897 CFLAGS="$CFLAGS -D__USE_FIXED_PROTOTYPES__"
898 AC_DEFINE(NEED_STRINGS_H, 1, [Define as one if we need to include <strings.h> (along with <string.h>)])
899 AC_DEFINE(NEED_MYREALLOC, 1, [Define as 1 if we need myrealloc])
904 # get rid of the 4-th tuple, if config.guess returned "linux-gnu" for host_os
907 if echo "$host_os" | grep '.*-gnulibc1' > /dev/null ; then
908 host_os=`echo "${host_os}" | sed 's/-gnulibc1$//'`
910 if echo "$host_os" | grep '.*-gnueabi' > /dev/null ; then
911 host_os=`echo "${host_os}" | sed 's/-gnueabi$//'`
914 if echo "$host_os" | grep '.*-gnu' > /dev/null ; then
915 host_os=`echo "${host_os}" | sed 's/-gnu$//'`
919 host_os_exact="${host_os}"
920 host_os_major=`echo "${host_os}" | sed 's/\..*$//'`
921 host_os_noversion=`echo "${host_os}" | sed 's/[0-9]*\..*$//'`
924 rm -f ./find-provides
925 if test -f ${srcdir}/autodeps/${host_cpu}-${host_os_exact}.prov ; then
926 echo "using ${srcdir}/autodeps/${host_cpu}-${host_os_exact}.prov for automatic provides generation"
927 ln -s ${srcdir}/autodeps/${host_cpu}-${host_os_exact}.prov ./find-provides
928 elif test -f ${srcdir}/autodeps/${host_os_exact}.prov ; then
929 echo "using ${srcdir}/autodeps/${host_os_exact}.prov for automatic provides generation"
930 ln -s ${srcdir}/autodeps/${host_os_exact}.prov ./find-provides
931 elif test -f ${srcdir}/autodeps/${host_os_major}.prov ; then
932 echo "using ${srcdir}/autodeps/${host_os_major}.prov for automatic provides generation"
933 ln -s ${srcdir}/autodeps/${host_os_major}.prov ./find-provides
934 elif test -f ${srcdir}/autodeps/${host_os_noversion}.prov ; then
935 echo "using ${srcdir}/autodeps/${host_os_noversion}.prov for automatic provides generation"
936 ln -s ${srcdir}/autodeps/${host_os_noversion}.prov ./find-provides
938 echo "*** no default provides information is available for ${host_os_noversion}"
939 ln -s ${srcdir}/autodeps/none ./find-provides
942 rm -f ./find-requires
943 if test -f ${srcdir}/autodeps/${host_cpu}-${host_os_exact}.req ; then
944 echo "using ${srcdir}/autodeps/${host_cpu}-${host_os_exact}.req for automatic requires generation"
945 ln -s ${srcdir}/autodeps/${host_cpu}-${host_os_exact}.req ./find-requires
946 elif test -f ${srcdir}/autodeps/${host_os_exact}.req ; then
947 echo "using ${srcdir}/autodeps/${host_os_exact}.req for automatic requires generation"
948 ln -s ${srcdir}/autodeps/${host_os_exact}.req ./find-requires
949 elif test -f ${srcdir}/autodeps/${host_os_major}.req ; then
950 echo "using ${srcdir}/autodeps/${host_os_major}.req for automatic requires generation"
951 ln -s ${srcdir}/autodeps/${host_os_major}.req ./find-requires
952 elif test -f ${srcdir}/autodeps/${host_os_noversion}.req ; then
953 echo "using ${srcdir}/autodeps/${host_os_noversion}.req for automatic requires generation"
954 ln -s ${srcdir}/autodeps/${host_os_noversion}.req ./find-requires
956 echo "*** no default requires information is available for ${host_os_noversion}"
957 ln -s ${srcdir}/autodeps/none ./find-requires
960 dnl Determine the canonical arch-vendor-os for the host machine
961 case "${host_cpu}" in
962 *86) RPMCANONCOLOR=0; RPMCANONARCH=i386 ;;
963 ia32e*) RPMCANONCOLOR=3; RPMCANONARCH=ia32e ;;
964 amd64*) RPMCANONCOLOR=3; RPMCANONARCH=amd64 ;;
965 x86_64*) RPMCANONCOLOR=3; RPMCANONARCH=x86_64 ;;
966 alpha*) RPMCANONCOLOR=0; RPMCANONARCH=alpha ;;
967 sparc64*) RPMCANONCOLOR=3; RPMCANONARCH=sparc64 ;;
968 sparc*) RPMCANONCOLOR=3; RPMCANONARCH=sparc ;;
969 ia64*) RPMCANONCOLOR=2; RPMCANONARCH=ia64 ;;
970 s390x*) RPMCANONCOLOR=3; RPMCANONARCH=s390x ;;
971 s390*) RPMCANONCOLOR=0; RPMCANONARCH=s390 ;;
972 powerpc64*|ppc64*) RPMCANONCOLOR=3; RPMCANONARCH=ppc64 ;;
973 powerpc*|ppc*) RPMCANONCOLOR=0; RPMCANONARCH=ppc ;;
974 arm*) RPMCANONCOLOR=0; RPMCANONARCH=arm ;;
975 mipsel*) RPMCANONCOLOR=0; RPMCANONARCH=mipsel ;;
976 mips*) RPMCANONCOLOR=0; RPMCANONARCH=mips ;;
977 m68k*) RPMCANONCOLOR=0; RPMCANONARCH=m68k ;;
978 sh3*) RPMCANONCOLOR=0; RPMCANONARCH=sh3 ;;
979 sh4*) RPMCANONCOLOR=0; RPMCANONARCH=sh4 ;;
980 *) RPMCANONCOLOR=0; RPMCANONARCH=unknown ;;
982 case "${host_os_noversion}" in
983 mint) RPMCANONARCH=m68kmint ;;
985 RPMCANONVENDOR="$build_vendor"
986 case "${build_vendor}" in
987 unknown|pc|ibm|redhat|pld|mandrake|conectiva|lvr|yellowdog|caos|suse)
988 test -f /etc/redhat-release && RPMCANONVENDOR=redhat
989 test -f /etc/SuSE-release && RPMCANONVENDOR=suse
990 test -f /etc/pld-release && RPMCANONVENDOR=pld
991 test -f /etc/mandrake-release && RPMCANONVENDOR=mandrake
992 test -f /etc/conectiva-release && RPMCANONVENDOR=conectiva
993 test -f /etc/lvr-release && RPMCANONVENDOR=lvr
994 test -f /etc/yellowdog-release && RPMCANONVENDOR=yellowdog
995 test -f /etc/caos-release && RPMCANONVENDOR=caos
998 RPMCANONOS="$host_os_noversion"
999 RPMCANONGNU="$host_os_gnu"
1000 AC_SUBST(RPMCANONCOLOR)
1001 AC_SUBST(RPMCANONARCH)
1002 AC_SUBST(RPMCANONVENDOR)
1003 AC_SUBST(RPMCANONOS)
1004 AC_SUBST(RPMCANONGNU)
1005 AC_DEFINE_UNQUOTED([RPMCANONVENDOR],["${RPMCANONVENDOR}"],[canonical vendor])
1007 if test X"$prefix" = XNONE ; then
1008 usrprefix="$ac_default_prefix"
1013 RPMCONFIGDIR="`echo ${usrprefix}/lib/rpm`"
1014 AC_SUBST(RPMCONFIGDIR)
1018 if test "$with_external_db" = no; then
1019 AC_CONFIG_SUBDIRS(db3)
1022 AM_CONDITIONAL([WITH_INTERNAL_DB],[test "$with_external_db" = no])
1023 AM_CONDITIONAL([DOXYGEN],[test "$DOXYGEN" != no])
1024 AM_CONDITIONAL([HACKINGDOCS],[test "$with_hackingdocs" = yes])
1026 AC_PATH_PROG(AUTOM4TE,autom4te,:)
1028 AS_IF([test "$ac_cv_header_stdint_h" = "yes"],[
1029 AC_DEFINE([__RPM_USES_STDINT_H__],[1],[if rpm uses stdint.h])
1032 AC_SUBST([dirstamp],[\${am__leading_dot}dirstamp])
1034 AC_CONFIG_FILES([Makefile
1035 rpmio/Makefile lib/Makefile build/Makefile
1036 po/Makefile.in scripts/Makefile