1 dnl configure.in for RPM
3 dnl Don't add checks for things we can't work around, unless those checks
4 dnl failing causes the script to bomb out with a message. If we can't fix
10 AM_INIT_AUTOMAKE(rpm, 4.0.2)
11 AM_CONFIG_HEADER(config.h)
13 AC_PREREQ(2.12) dnl Minimum Autoconf version required.
15 dnl XXX AM_MAINTAINER_MODE
17 dnl Set of available languages.
18 ALL_LINGUAS="cs da de es eu_ES fi fr gl hu id is it ja ko no pl pt pt_BR ro ru sk sl sr sv tr uk wa zh zh_CN.GB2312"
22 dnl Checks for programs.
25 if test "$ac_cv_prog_gcc" = yes; then
26 CFLAGS="$CFLAGS -D_GNU_SOURCE -Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes -Wno-char-subscripts"
30 AC_PROG_GCC_TRADITIONAL
33 AC_PATH_PROG(CTAGS, ctags, /bin/true)
34 AC_PATH_PROG(CSCOPE, cscope, /bin/true)
37 dnl This now uses libtool. Put
38 dnl LDFLAGS_STATIC="-all"
39 dnl to attempt static executables using libtool. Otherwise
42 AC_MSG_CHECKING(flag used by libtool to link rpm)
43 if test X"$GCC" = Xyes ; then
45 *-*-solaris*) LDFLAGS_STATIC="";;
46 *-*-hpux*) LDFLAGS_STATIC="";;
47 *-*-*) LDFLAGS_STATIC="-all";;
49 elif test X"$CC" = Xcc ; then
51 *-*-linux*) LDFLAGS_STATIC="-all";;
52 *-*-freebsd*) LDFLAGS_STATIC="-all";;
53 *-*-osf*) LDFLAGS_STATIC="-all";;
54 *-*-aix*) LDFLAGS_STATIC="";; # -Wl,-bnso doesn't seem to work...
55 *-*-hpux*) LDFLAGS_STATIC="";;
56 *-*-solaris*) LDFLAGS_STATIC="";;
57 *-*-irix*) LDFLAGS_STATIC="";; #should be -non_shared, but can't
58 # link because of crt1.o then.
59 *-*-ultrix*) LDFLAGS_STATIC="-all";; #ultrix doesn't have shared libs.
60 *-*-*) LDFLAGS_STATIC=""
63 Unable to guess what option to pass to $CC to generate a static
64 executable. You will need to set the LDFLAGS_STATIC macro in Makefile.inc to
65 the appropriate argument(s) if you want to build a static rpm executable.
71 # just link it dynamically
74 LDFLAGS_STATIC="${LDFLAGS} ${LDFLAGS_STATIC}-static" # libtool format
75 AC_MSG_RESULT($LDFLAGS_STATIC)
76 AC_SUBST(LDFLAGS_STATIC)
79 dnl look for POSIX chmod attributes
81 AC_MSG_CHECKING(POSIX chmod)
83 chmod 744 foo.chmodtest
84 chmod +X foo.chmodtest 2>/dev/null
85 a=`ls -l foo.chmodtest | awk '{print $1}'`
87 if test "$a" = "-rwxr-xr-x"; then
91 AC_MSG_RESULT(no (tell your OS vendor about GNU fileutils))
97 dnl see if we have a mkdir that supports `-p'.
99 AC_PATH_PROGS(MKDIR, mkdir, mkdir)
100 AC_MSG_CHECKING(if $MKDIR supports -p)
102 $MKDIR -p conftest/a 2>/dev/null
103 if test $? = 0 ; then
104 rmdir conftest/a 2>/dev/null
105 if test $? = 0 ; then
111 rmdir conftest 2>/dev/null
112 if test $? = 0 ; then
121 if test X"$MKDIR_P" = X0 ; then
123 MKDIR_P="`echo ${prefix}/lib/rpm/mkinstalldirs`"
128 dnl substitute this into config.h, so the C source picks it up.
130 AC_DEFINE_UNQUOTED(MKDIR_P, "${MKDIR_P}")
137 dnl This test must precede tests of compiler characteristics like
138 dnl that for the inline keyword, since it may change the degree to
139 dnl which the compiler supports such features.
146 dnl AM_DISABLE_SHARED
149 AC_CHECK_TOOL(AR, ar, :)
151 if test "$cross_compiling" != "yes"; then
153 dnl Set search path for common programs
155 MYPATH="/bin:/usr/bin:/usr/local/bin:$PATH:/sbin:/usr/sbin:/usr/local/sbin:/opt/gnu/bin"
158 dnl Find some common programs
160 AC_PATH_PROG(BZIP2BIN, bzip2, /usr/bin/bzip2, $MYPATH)
161 AC_PATH_PROG(__CAT, cat, /bin/cat, $MYPATH)
162 AC_PATH_PROG(__CHGRP, chgrp, /bin/chgrp, $MYPATH)
163 AC_PATH_PROG(__CHMOD, chmod, /bin/chmod, $MYPATH)
164 AC_PATH_PROG(__CHOWN, chown, /bin/chown, $MYPATH)
165 AC_PATH_PROG(__CP, cp, /bin/cp, $MYPATH)
166 AC_PATH_PROG(__CPIO, cpio, /bin/cpio, $MYPATH)
167 AC_PATH_PROG(GZIPBIN, gzip, /bin/gzip, $MYPATH)
168 AC_PATH_PROG(__GREP, grep, /bin/grep, $MYPATH)
169 AC_PATH_PROG(UNZIPBIN, unzip, /usr/bin/unzip, $MYPATH)
171 AC_PATH_PROG(__ID, id, /usr/bin/id, $MYPATH)
172 AC_MSG_CHECKING(checking whether id supports -u)
173 if `${__ID} -u 2>&1 > /dev/null` ; then
177 dnl XXX Watchout for square brackets fed to m4.
178 __ID_U="%{__id} | %{__sed} 's/[[^=]]*=\\\\([[0-9]][[0-9]]*\\\\).*$/\\\\1/'"
183 AC_PATH_PROG(__INSTALL, install, /usr/bin/install, $MYPATH)
184 AC_PATH_PROG(__MAKE, make, /usr/bin/make, $MYPATH)
185 AC_PATH_PROG(__MKDIR, mkdir, /bin/mkdir, $MYPATH)
186 AC_PATH_PROG(__MV, mv, /bin/mv, $MYPATH)
187 AC_PATH_PROG(__PATCH, patch, /usr/bin/patch, $MYPATH)
188 AC_MSG_CHECKING(old version of patch)
189 PATCHVERSION=`patch --version 2>&1`
191 if test "$PATCHVERSION" = "Patch version 2.1"; then
192 AC_DEFINE(HAVE_OLDPATCH_21)
193 AC_MSG_RESULT(patch older then 2.2 found)
195 AC_MSG_RESULT(patch later then 2.2 found)
198 AC_PATH_PROG(__PERL, perl, /usr/bin/perl, $MYPATH)
199 AC_PATH_PROG(PGPBIN, pgp, /usr/bin/pgp, $MYPATH)
200 AC_PATH_PROG(__PYTHON, python, /usr/bin/python, $MYPATH)
201 AC_PATH_PROG(__RM, rm, /bin/rm, $MYPATH)
202 AC_PATH_PROG(__RSH, rsh, /usr/bin/rsh, $MYPATH)
203 AC_PATH_PROG(__SED, sed, /bin/sed, $MYPATH)
204 AC_PATH_PROG(__SSH, ssh, /usr/bin/ssh, $MYPATH)
205 AC_PATH_PROG(__TAR, tar, /bin/tar, $MYPATH)
207 AC_PATH_PROG(__LD, ld, /usr/bin/ld, $MYPATH)
208 AC_PATH_PROG(__NM, nm, /usr/bin/nm, $MYPATH)
209 AC_PATH_PROG(__OBJCOPY, objcopy, /usr/bin/objcopy, $MYPATH)
210 AC_PATH_PROG(__OBJDUMP, objdump, /usr/bin/objdump, $MYPATH)
211 AC_PATH_PROG(__STRIP, strip, /usr/bin/strip, $MYPATH)
218 *-*-solaris*) LIBS="$LIBS -L$l -R$l $*";;
219 *) LIBS="$LIBS -L$l $*";;
224 for dir in $prefix /usr/local
227 NONE|/usr) continue;;
229 if test X$localdone != X ; then continue; fi
234 AC_MSG_CHECKING(for $dir/lib in LIBS)
235 if test -d $dir/lib ; then
242 AC_MSG_CHECKING(for $dir/include in INCPATH)
243 if test -d $dir/include ; then
244 INCPATH="$INCPATH -I$dir/include"
251 AC_MSG_CHECKING(for /usr/ucblib in LIBS)
252 if test -d /usr/ucblib ; then
253 if test "$build" = "mips-sni-sysv4" ; then
254 addlib /usr/ccs/lib -lc
265 dnl Check for features
268 ### use option --enable-v5-packages to turn on support for rpm-5.x packages
269 AC_MSG_CHECKING(if you want experimental rpm-5.0 packages)
270 AC_ARG_ENABLE(v5-packages,
271 [ --enable-v5-packages[=no] [experimental] support for rpm-5.x packages],
272 [with_v5_packages=$enableval],
273 [with_v5_packages=no])
274 AC_MSG_RESULT($with_v5_packages)
275 test "$with_v5_packages" = yes && AC_DEFINE(ENABLE_V5_PACKAGES)
277 dnl Checks for libraries.
279 AC_CHECK_FUNC(setreuid, [], [
280 AC_CHECK_LIB(ucb, setreuid, [if echo $LIBS | grep -- -lucb >/dev/null ;then :; else LIBS="$LIBS -lc -lucb" USEUCB=y;fi])
283 AC_CHECK_FUNC(rand, [], [
284 AC_CHECK_LIB(rand, rand, [LIBS="$LIBS -lm"])
287 AC_CHECK_FUNC(getdomainname, [], [
288 AC_CHECK_LIB(nsl, getdomainname, [LIBS="$LIBS -lnsl"])
290 AC_CHECK_FUNC(socket, [], [
291 AC_CHECK_LIB(socket, socket, [LIBS="$LIBS -lsocket"])
294 dnl Better not use fchmod at all.
295 AC_CHECK_FUNC(fchmod)
297 dnl Temporary hack for MiNT. Some functions (writev, snprintf) are
298 dnl not in the libc but in libport (for political reasons). This check
299 dnl can hopefully be removed soon. Please use the default action
300 dnl for this macro (not LIBS=...), otherwise the check for dbopen
302 AC_CHECK_LIB(port, writev)
305 AC_CHECK_LIB(pthread, pthread_mutex_trylock,[libpthread="-lpthread"])
311 dnl Check for Berkeley db3 API.
312 AC_CHECK_FUNC(db_create, [DBLIBSRCS="$DBLIBSRCS db3.c"],
313 AC_CHECK_LIB(db-3.1, db_create, [DBLIBSRCS="$DBLIBSRCS db3.c"; libdb3="-ldb-3.1"],
314 AC_CHECK_LIB(db-3.0, db_create, [DBLIBSRCS="$DBLIBSRCS db3.c"; libdb3="-ldb-3.0"],
315 AC_CHECK_LIB(db, db_create, [DBLIBSRCS="$DBLIBSRCS db3.c"; libdb3="-ldb"],
321 dnl Check for Berkeley db2 API.
322 dnl AC_CHECK_FUNC(db_open, [DBLIBSRCS="$DBLIBSRCS db2.c"],
323 dnl AC_CHECK_LIB(db, db_open, [LIBS="$LIBS"; DBLIBSRCS="$DBLIBSRCS db2.c" ; libdb2="-ldb"])
325 dnl Check for Berkeley db1 API retrofit to db2/db3 database.
326 dnl AC_CHECK_FUNC(dbopen, [DBLIBSRCS="$DBLIBSRCS db1.c"],
327 dnl AC_CHECK_LIB(db, dbopen, [DBLIBSRCS="$DBLIBSRCS db1.c"])
330 dnl Check for Berkeley db1 API in glibc.
331 AC_CHECK_FUNC(dbopen, [DBLIBSRCS="$DBLIBSRCS db3.c"],
332 AC_CHECK_LIB(db1, dbopen, [DBLIBSRCS="$DBLIBSRCS db1.c falloc.c" ; libdb1="-ldb1"],
333 AC_CHECK_LIB(db, dbopen, [DBLIBSRCS="$DBLIBSRCS db1.c falloc.c" ; libdb1="-ldb"])
337 if test X"$DBLIBSRCS" = X; then
338 AC_MSG_ERROR([sorry rpm requires libdb-3.x.a or libdb1.a (from the Berkeley db package)])
341 if test -n "$libdb3" -a -n "$libpthread" ; then
342 AC_MSG_CHECKING(whether $libdb3 needs $libpthread)
345 AC_TRY_LINK_FUNC(db_create, AC_MSG_RESULT(no),
346 [libdb3="$libdb3 $libpthread"; AC_MSG_RESULT(yes)])
350 DBLIBOBJS=`echo $DBLIBSRCS | sed -e "s/\.c/\.lo/g"`
358 for dbi in $DBLIBSRCS; do
360 db3.c) AC_DEFINE(USE_DB3) ;;
361 db2.c) AC_DEFINE(USE_DB2) ;;
362 db1.c) AC_DEFINE(USE_DB1) ;;
366 AC_CHECK_FUNC(fork, [], [echo "using vfork() instead of fork()";
369 dnl AmigaOS and IXEmul have a fork() dummy
372 echo "Building for AmigaOS: using vfork() instead of fork()";
373 CFLAGS="$CFLAGS -Dfork=vfork"
378 for zlib in z gz ; do
379 AC_CHECK_LIB(${zlib}, gzread,
380 [LIBS="$LIBS -l${zlib}"; break],
381 [if test ${zlib} = gz; then
382 AC_MSG_ERROR([sorry rpm requires libz.a or libgz.a (from the zlib package)])
387 dnl zlib-1.0.4 has not gzseek
388 AC_CHECK_LIB(${zlib}, gzseek, [AC_DEFINE(HAVE_GZSEEK)])
390 AC_CHECK_LIB(bz2, bzread, [LIBS="$LIBS -lbz2"],
391 AC_CHECK_LIB(bz2, BZ2_bzread, [
394 AC_DEFINE(HAVE_BZ2_1_0) ],
398 dnl Red Hat 4.x has not personality
399 AC_CHECK_FUNCS(personality)
401 dnl XXX these are needed only by rpmgettext right now
402 AM_FUNC_ERROR_AT_LINE
404 dnl ==> AM_GNU_GETTEXT does this (and more)
405 dnl AC_CHECK_HEADERS(unistd.h limits.h locale.h malloc.h string.h sys/param.h)
409 dnl horrible *temporary* hack to make sure that if we found gettext() in
410 dnl -lintl that we add -lintl *back* to $LIBS.
412 if test X$gt_cv_func_gettext_libintl = Xyes ; then
416 dnl Checks for header files we can live without.
422 AC_CHECK_HEADERS(db_185.h db1/db.h db3/db.h)
423 AC_CHECK_HEADERS(fcntl.h getopt.h grp.h memory.h netdb.h pwd.h utime.h)
425 AC_CHECK_HEADERS(sys/socket.h sys/select.h)
426 AC_CHECK_HEADERS(sys/types.h sys/stdtypes.h)
427 AC_CHECK_HEADERS(sys/mman.h sys/resource.h sys/utsname.h sys/wait.h)
429 AC_CHECK_HEADERS(netinet/in_systm.h)
430 AC_CHECK_HEADERS(machine/types.h)
431 AC_CHECK_HEADERS(mntent.h sys/mnttab.h sys/systemcfg.h)
432 AC_CHECK_HEADERS(sys/mount.h sys/mntctl.h sys/param.h sys/vmount.h)
433 AC_CHECK_HEADERS(bzlib.h libio.h zlib.h)
434 AC_CHECK_HEADERS(err.h mcheck.h)
436 dnl popt w float/double needs.
437 AC_CHECK_HEADERS(float.h)
439 dnl whether or not we should try to build rpmgettext/rpmputtext.
440 if test X"$USE_NLS" = Xyes; then
441 BUILD_RPMNLSTOOLS="rpmgettext rpmputtext"
442 if test X"$USE_INCLUDED_LIBINTL" = Xyes; then
443 INCPATH="-I\$(top_builddir)/intl $INCPATH"
448 AC_SUBST(BUILD_RPMNLSTOOLS)
450 AC_CHECK_HEADERS(glob.h)
452 dnl statfs portability fiddles.
454 dnl We should really emulate/steal sections of the statfs and struct statfs
455 dnl checks from GNU fileutils.
457 AC_MSG_CHECKING(for struct statfs)
459 dnl this is easier than nesting AC_TRY_COMPILEs...
461 found_struct_statfs=no
463 if test X$found_struct_statfs = Xno ; then
464 dnl Solaris 2.6+ wants to use statvfs
466 #ifdef HAVE_SYS_TYPES_H
467 #include <sys/types.h>
469 #include <sys/statvfs.h> ],
470 [struct statvfs sfs;],
471 [AC_MSG_RESULT(in sys/statvfs.h)
472 AC_DEFINE(STATFS_IN_SYS_STATVFS)
473 found_struct_statfs=yes],
477 if test X$found_struct_statfs = Xno ; then
478 dnl first try including sys/vfs.h
480 #ifdef HAVE_SYS_TYPES_H
481 #include <sys/types.h>
483 #include <sys/vfs.h> ],
484 [struct statfs sfs;],
485 [AC_MSG_RESULT(in sys/vfs.h)
486 AC_DEFINE(STATFS_IN_SYS_VFS)
487 found_struct_statfs=yes],
491 if test X$found_struct_statfs = Xno ; then
492 dnl ...next try including sys/mount.h
494 #ifdef HAVE_SYS_TYPES_H
495 #include <sys/types.h>
497 #ifdef HAVE_SYS_PARAM_H
498 #include <sys/param.h>
500 #include <sys/mount.h> ],
501 [struct statfs sfs;],
502 [AC_MSG_RESULT(in sys/mount.h)
503 AC_DEFINE(STATFS_IN_SYS_MOUNT)
504 found_struct_statfs=yes],
508 if test X$found_struct_statfs = Xno ; then
509 dnl ...still no joy. Try sys/statfs.h
511 #ifdef HAVE_SYS_TYPES_H
512 #include <sys/types.h>
514 #include <sys/statfs.h> ],
515 [struct statfs sfs;],
516 [AC_MSG_RESULT(in sys/statfs.h)
517 AC_DEFINE(STATFS_IN_SYS_STATFS)
518 found_struct_statfs=yes],
522 if test X$found_struct_statfs = Xno ; then
523 dnl ...no luck. Warn the user of impending doom.
524 AC_MSG_WARN(not found)
528 dnl if we found the struct, see if it has the f_bavail member. Some OSes
529 dnl don't, including IRIX 6.5+
531 if test X$found_struct_statfs = Xyes ; then
532 AC_MSG_CHECKING(for f_bavail member in struct statfs)
534 #ifdef HAVE_SYS_TYPES_H
535 #include <sys/types.h>
537 #if STATFS_IN_SYS_STATVFS
538 # include <sys/statvfs.h>
539 typedef struct statvfs STATFS_t;
541 typedef struct statfs STATFS_t;
542 # if STATFS_IN_SYS_VFS
543 # include <sys/vfs.h>
544 # elif STATFS_IN_SYS_MOUNT
545 # include <sys/mouht.h>
546 # elif STATFS_IN_SYS_STATFS
547 # include <sys/statfs.h>
553 AC_DEFINE(STATFS_HAS_F_BAVAIL)],
558 if test X$found_struct_statfs = Xyes ; then
560 dnl now check to see if we have the 4-argument variant of statfs()
561 dnl this pretty much requires AC_TRY_RUN
563 AC_MSG_CHECKING([if statfs() requires 4 arguments])
565 #ifdef HAVE_SYS_TYPES_H
566 #include <sys/types.h>
568 #ifdef STATFS_IN_SYS_VFS
570 #elif STATFS_IN_SYS_MOUNT
571 #include <sys/mouht.h>
572 #elif STATFS_IN_SYS_STATFS
573 #include <sys/statfs.h>
577 exit (statfs(".", &sfs, sizeof(sfs), 0));
581 AC_DEFINE(STAT_STATFS4)],
589 dnl look for libc features
591 AC_MSG_CHECKING(if <netdb.h> defines h_errno)
592 AC_TRY_LINK([#include <netdb.h>],printf("%d",h_errno),PROVIDES_ERRNO=yes)
593 AC_MSG_RESULT($PROVIDES_ERRNO)
594 if test $PROVIDES_ERRNO = yes; then
595 AC_DEFINE(HAVE_HERRNO)
598 dnl If a system doesn't have S_IFSOCK, define it as 0 which will
599 dnl make S_ISSOCK always return false (nice, eh?)
600 AC_MSG_CHECKING(if <sys/stat.h> defines S_IFSOCK)
601 AC_TRY_LINK([#include <sys/stat.h>],printf("%d", S_IFSOCK),
602 HAS_S_IFSOCK=yes,HAS_S_IFSOCK=no)
603 AC_MSG_RESULT($HAS_S_IFSOCK)
604 if test $HAS_S_IFSOCK = yes; then
605 AC_DEFINE(HAVE_S_IFSOCK)
608 dnl Some Unix's are missing S_ISLNK, S_ISSOCK
609 AC_MSG_CHECKING(if <sys/stat.h> defines S_ISLNK)
610 AC_TRY_LINK([#include <sys/stat.h>],printf("%d", S_ISLNK(0755)),
611 HAS_S_ISLNK=yes,HAS_S_ISLNK=no)
612 AC_MSG_RESULT($HAS_S_ISLNK)
613 if test $HAS_S_ISLNK = yes; then
614 AC_DEFINE(HAVE_S_ISLNK)
617 AC_MSG_CHECKING(if <sys/stat.h> defines S_ISSOCK)
618 AC_TRY_LINK([#include <sys/stat.h>],printf("%d", S_ISSOCK(0755)),
619 HAS_S_ISSOCK=yes,HAS_S_ISSOCK=no)
620 AC_MSG_RESULT($HAS_S_ISSOCK)
621 if test $HAS_S_ISSOCK = yes; then
622 AC_DEFINE(HAVE_S_ISSOCK)
625 AC_MSG_CHECKING(if timezone is defined)
626 AC_TRY_LINK([#include <time.h>],printf("%ld", timezone),
627 HAS_TIMEZONE=yes,HAS_TIMEZONE=no)
628 AC_MSG_RESULT($HAS_TIMEZONE)
630 dnl Check for missing typedefs
634 dnl Checks for library functions.
639 if test $ac_cv_func_fnmatch_works = no; then
640 LIBOBJS="$LIBOBJS fnmatch.o"
641 AC_DEFINE_UNQUOTED(fnmatch, rpl_fnmatch)
644 dnl XXX AC_FUNC_MEMCMP
646 dnl XXX AC_TYPE_SIGNAL
647 dnl XXX AC_FUNC_STRCOLL
648 dnl XXX AC_FUNC_STRFTIME
649 dnl XXX AC_FUNC_UTIME_NULL
650 dnl XXX AC_FUNC_VFORK
651 dnl XXX AC_CHECK_FUNCS(gethostname mkdir mkfifo rmdir select uname)
653 AC_CHECK_FUNCS(basename getcwd getwd inet_aton mtrace putenv realpath setenv)
654 AC_CHECK_FUNCS(stpcpy stpncpy strcspn)
655 AC_CHECK_FUNCS(strdup strerror strtol strtoul strspn strstr)
657 AC_CHECK_FUNCS(regcomp)
660 dnl XXX Regex replacement isn't known to be needed yet.
662 dnl AC_ARG_WITH(regex, [ --with-regex use the GNU regex library ],
663 dnl [rpm_cv_regex=yes],
664 dnl [AC_CHECK_FUNCS(regcomp, rpm_cv_regex=no, rpm_cv_regex=yes)])
666 dnl if test $rpm_cv_regex = no ; then
667 dnl AC_MSG_CHECKING(whether the regexp library is broken)
669 dnl #include <unistd.h>
670 dnl #include <regex.h>
671 dnl main() { regex_t blah ; exit(regcomp(&blah, "foo.*bar", REG_NOSUB) || regexec (&blah, "foobar", 0, NULL, 0)); }],
672 dnl rpm_cv_regex_broken=no, rpm_cv_regex_broken=yes, rpm_cv_regex_broken=yes)
673 dnl AC_MSG_RESULT([$rpm_cv_regex_broken])
674 dnl if test $rpm_cv_regex_broken = yes ; then
675 dnl echo " --> using the included GNU regex instead." >&AC_FD_MSG
680 dnl if test $rpm_cv_regex = yes; then
681 dnl AC_DEFINE(USE_GNU_REGEX)
682 dnl LIBOBJS="$LIBOBJS regex.o"
686 dnl XXX Glob *is* broken on linux with libc5, solaris and possibly aix when
687 dnl %files gets something like
688 dnl /usr/*/locale/*/LC_MESSAGES/*.mo
689 dnl (Note: more than one asterisk in glob pattern.)
691 AC_ARG_WITH(glob, [ --with-glob use the internal GNU glob ],
693 [AC_CHECK_FUNCS(glob, rpm_cv_glob=no, rpm_cv_glob=yes)])
695 if test $rpm_cv_glob = no ; then
696 AC_MSG_CHECKING(for GNU extensions to glob)
702 #include <sys/stat.h>
707 exit(glob("t/*/*.8", GLOB_PERIOD, NULL, &gl) || gl.gl_pathc < 1);
709 rpm_cv_glob_ext=yes, rpm_cv_glob_ext=no, rpm_cv_glob_ext=no)
711 AC_MSG_RESULT([$rpm_cv_glob_ext])
712 if test $rpm_cv_glob_ext = no ; then
713 echo " --> using the included GNU glob instead." >&AC_FD_MSG
718 if test $rpm_cv_glob = yes; then
719 AC_DEFINE(USE_GNU_GLOB)
720 LIBOBJS="$LIBOBJS glob.o fnmatch.o"
724 dnl Auto-detect whether python bindings should be built.
727 AC_ARG_WITH(python, [ --with-python build rpm python bindings ])
729 if test $withval = auto ; then
730 AC_MSG_CHECKING(for python 1.5.2)
732 #include <python1.5/Python.h>
734 exit(strcmp("1.5.2", PY_VERSION));
736 withval=yes, withval=no, withval=no)
737 AC_MSG_RESULT($withval)
740 if test $withval = yes ; then
741 WITH_PYTHON_SUBDIR=python
742 WITH_PYTHON_SUBPACKAGE=1
745 WITH_PYTHON_SUBPACKAGE=0
747 AC_SUBST(WITH_PYTHON_SUBDIR)
748 AC_SUBST(WITH_PYTHON_SUBPACKAGE)
750 AC_PATH_PROG(__DOXYGEN, doxygen, no, $PATH)
752 dnl Auto-detect whether doxygen generated API docs should be included.
755 AC_ARG_WITH(apidocs, [ --with-apidocs build rpm API docs ])
757 if test $withval = auto -a $__DOXYGEN != no ; then
759 elif test $withval = yes -a $__DOXYGEN = no ; then
760 AC_MSG_ERROR(--> rpm API docs needs doxygen in PATH)
763 if test $withval = yes; then
764 WITH_APIDOCS_TARGET=apidocs
769 AC_SUBST(WITH_APIDOCS_TARGET)
770 AC_SUBST(WITH_APIDOCS)
773 AC_ARG_WITH(dmalloc, [ --with-dmalloc build with dmalloc debugging support ])
774 if test $withval = yes ; then
776 LIBS="$LIBS -ldmalloc"
779 AC_CHECK_FUNCS(setlocale)
781 dnl XXX Solaris <= 2.6 only permits 8 chars in password.
782 AC_CHECK_FUNCS(getpassphrase)
784 AC_CHECK_FUNC(getmntent, AC_DEFINE(HAVE_GETMNTENT), [
785 AC_CHECK_FUNC(mntctl, AC_DEFINE(HAVE_MNTCTL),[
786 AC_CHECK_FUNC(getmntinfo_r, AC_DEFINE(HAVE_GETMNTINFO_R), [
787 AC_CHECK_LIB(c_r, getmntinfo_r, [LIBS="$LIBS -lc_r";
788 AC_DEFINE(HAVE_GETMNTINFO_R)],
789 LIBOBJS="$LIBOBJS getmntent.o")])])])
791 AC_CHECK_FUNC(lchown,
792 [__CHOWN_RHF="%{__chown} -Rhf"
793 __CHGRP_RHF="%{__chgrp} -Rhf"
794 AC_DEFINE(HAVE_LCHOWN)],
795 [__CHOWN_RHF="%{__chown} -Rf"
796 __CHGRP_RHF="%{__chgrp} -Rf"
797 dnl Does chown() follow symlinks? This should be a good enough test.
798 AC_MSG_CHECKING(whether chown() follows symlinks)
799 AC_ARG_ENABLE([broken-chown],
800 [ --enable-broken-chown this system's chown follows symbolic links],
801 result=$enableval, result=unknown)
802 if echo "$build" | egrep "(aix)|(hpux)|(linux)" > /dev/null ; then
804 elif echo "$build" | egrep "(nextstep)" > /dev/null ; then
807 if test $result = unknown; then
808 if test `${__ID} | cut -f2 -d\= | cut -f1 -d\(` = 0; then
813 if test `ls -l foo | awk '{print $3}'` != "root"; then
820 AC_MSG_CHECKING((cannot check by non-root user))
825 AC_MSG_RESULT($result)
826 if test $result = yes; then
827 AC_DEFINE(CHOWN_FOLLOWS_SYMLINK)
829 AC_SUBST(__CHOWN_RHF)
830 AC_SUBST(__CHGRP_RHF)
833 dnl figure out what root's primary group is
835 AC_MSG_CHECKING(root's primary group)
836 AC_TRY_RUN([#include <stdio.h>
837 #include <sys/types.h>
843 struct passwd *root = NULL;
844 struct group *roots_group = NULL;
845 FILE * tempfile = NULL;
847 root = getpwuid( (uid_t) 0 );
849 roots_group = getgrgid(root->pw_gid);
850 if (roots_group != NULL) {
851 tempfile = fopen("conftest_rootg", "w");
852 if (tempfile != NULL) {
853 fprintf(tempfile, "%s\n", roots_group->gr_name);
861 }], ROOT_GROUP=`cat conftest_rootg`,
862 ROOT_GROUP="root",ROOT_GROUP="root"
864 AC_MSG_RESULT($ROOT_GROUP)
867 if test "x$varprefix" = "x"; then
868 varprefix=`echo $prefix | sed 's/usr/var/'`
869 test "x$prefix" = xNONE && varprefix=`echo $ac_default_prefix | sed 's/usr/var/'`
873 if test "x$tmpdir" = "x"; then
874 if test -d $varprefix/tmp; then
875 tmpdir=$varprefix/tmp
877 if test -d /var/tmp; then
886 if echo "$build_os" | grep sco > /dev/null; then
887 echo "hacking things up for sco"
888 AC_DEFINE(NEED_STRINGS_H)
889 AC_DEFINE(HAVE_STRUCT_MNTTAB)
890 elif echo "$build_os" | grep sunos > /dev/null; then
891 echo "hacking things up for sunos"
892 CFLAGS="$CFLAGS -D__USE_FIXED_PROTOTYPES__"
893 AC_DEFINE(NEED_STRINGS_H)
894 AC_DEFINE(NEED_MYREALLOC)
895 LIBOBJS="$LIBOBJS myrealloc.o"
899 # get rid of the 4-th tuple, if config.guess returned "linux-gnu" for build_os
901 if echo "$build_os" | grep '.*-gnulibc1' > /dev/null ; then
902 build_os=`echo "${build_os}" | sed 's/-gnulibc1$//'`
904 if echo "$build_os" | grep '.*-gnu' > /dev/null ; then
905 build_os=`echo "${build_os}" | sed 's/-gnu$//'`
909 build_os_exact="${build_os}"
910 build_os_major=`echo "${build_os}" | sed 's/\..*$//'`
911 build_os_noversion=`echo "${build_os}" | sed 's/[0-9]*\..*$//'`
914 rm -f ./find-provides
915 if test -f ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.prov ; then
916 echo "using ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.prov for automatic provides generation"
917 ln -s ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.prov ./find-provides
918 elif test -f ${srcdir}/autodeps/${build_os_exact}.prov ; then
919 echo "using ${srcdir}/autodeps/${build_os_exact}.prov for automatic provides generation"
920 ln -s ${srcdir}/autodeps/${build_os_exact}.prov ./find-provides
921 elif test -f ${srcdir}/autodeps/${build_os_major}.prov ; then
922 echo "using ${srcdir}/autodeps/${build_os_major}.prov for automatic provides generation"
923 ln -s ${srcdir}/autodeps/${build_os_major}.prov ./find-provides
924 elif test -f ${srcdir}/autodeps/${build_os_noversion}.prov ; then
925 echo "using ${srcdir}/autodeps/${build_os_noversion}.prov for automatic provides generation"
926 ln -s ${srcdir}/autodeps/${build_os_noversion}.prov ./find-provides
928 echo "*** no default provides information is available for ${build_os_noversion}"
929 ln -s ${srcdir}/autodeps/none ./find-provides
932 rm -f ./find-requires
933 if test -f ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.req ; then
934 echo "using ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.req for automatic requires generation"
935 ln -s ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.req ./find-requires
936 elif test -f ${srcdir}/autodeps/${build_os_exact}.req ; then
937 echo "using ${srcdir}/autodeps/${build_os_exact}.req for automatic requires generation"
938 ln -s ${srcdir}/autodeps/${build_os_exact}.req ./find-requires
939 elif test -f ${srcdir}/autodeps/${build_os_major}.req ; then
940 echo "using ${srcdir}/autodeps/${build_os_major}.req for automatic requires generation"
941 ln -s ${srcdir}/autodeps/${build_os_major}.req ./find-requires
942 elif test -f ${srcdir}/autodeps/${build_os_noversion}.req ; then
943 echo "using ${srcdir}/autodeps/${build_os_noversion}.req for automatic requires generation"
944 ln -s ${srcdir}/autodeps/${build_os_noversion}.req ./find-requires
946 echo "*** no default requires information is available for ${build_os_noversion}"
947 ln -s ${srcdir}/autodeps/none ./find-requires
950 dnl Determine the canonical arch-vendor-os for the build machine
951 case "${build_cpu}" in
952 i386|i486|i586|i686|ix86) RPMCANONARCH=i386 ;;
953 ia64*) RPMCANONARCH=ia64 ;;
954 alpha*) RPMCANONARCH=alpha ;;
955 sparc*) RPMCANONARCH=sparc ;;
956 powerpc*) RPMCANONARCH=ppc ;;
957 armv4l*) RPMCANONARCH=armv4l ;;
958 armv4b*) RPMCANONARCH=armv4b ;;
959 arm*) RPMCANONARCH=arm ;;
960 *) RPMCANONARCH=unknown ;;
962 case "${build_os_noversion}" in
963 mint) RPMCANONARCH=m68kmint ;;
965 RPMCANONVENDOR="$build_vendor"
966 case "${build_vendor}" in
967 unknown|pc|redhat|pld|mandrake|conectiva)
968 test -f /etc/redhat-release && RPMCANONVENDOR=redhat
969 test -f /etc/pld-release && RPMCANONVENDOR=pld
970 test -f /etc/mandrake-release && RPMCANONVENDOR=mandrake
971 test -f /etc/conectiva-release && RPMCANONVENDOR=conectiva
974 RPMCANONOS="$build_os_noversion"
975 AC_SUBST(RPMCANONARCH)
976 AC_SUBST(RPMCANONVENDOR)
979 if test -n "$LIBOBJS" ; then
980 LIBMISC='$(top_builddir)/misc/libmisc.a'
985 if test X"$prefix" = XNONE ; then
986 usrprefix="$ac_default_prefix"
990 LOCALEDIR="`echo ${usrprefix}/share/locale`"
991 AC_DEFINE_UNQUOTED(LOCALEDIR, "$LOCALEDIR")
993 LIBDIR="`echo $libdir | sed 's-/lib$-/%{_lib}-'`"
995 RPMCONFIGDIR="`echo ${usrprefix}/lib/rpm`"
996 AC_DEFINE_UNQUOTED(RPMCONFIGDIR, "$RPMCONFIGDIR")
997 AC_SUBST(RPMCONFIGDIR)
999 SYSCONFIGDIR="`echo /etc/rpm`"
1000 AC_DEFINE_UNQUOTED(SYSCONFIGDIR, "$SYSCONFIGDIR")
1001 AC_SUBST(SYSCONFIGDIR)
1003 MACROFILES="${RPMCONFIGDIR}/macros:${RPMCONFIGDIR}/%{_target_platform}/macros:${SYSCONFIGDIR}/macros:${SYSCONFIGDIR}/macros.specspo:${SYSCONFIGDIR}/macros.db1:${SYSCONFIGDIR}/%{_target_platform}/macros:~/.rpmmacros"
1004 AC_DEFINE_UNQUOTED(MACROFILES, "$MACROFILES")
1005 AC_SUBST(MACROFILES)
1007 LIBRPMRC_FILENAME="${RPMCONFIGDIR}/rpmrc"
1008 AC_DEFINE_UNQUOTED(LIBRPMRC_FILENAME, "$LIBRPMRC_FILENAME")
1009 AC_SUBST(LIBRPMRC_FILENAME)
1011 LIBRPMALIAS_FILENAME="${RPMCONFIGDIR}/rpmpopt-${VERSION}"
1012 AC_DEFINE_UNQUOTED(LIBRPMALIAS_FILENAME, "$LIBRPMALIAS_FILENAME")
1013 AC_SUBST(LIBRPMALIAS_FILENAME)
1014 FINDREQUIRES="${RPMCONFIGDIR}/find-requires"
1015 AC_DEFINE_UNQUOTED(FINDREQUIRES, "$FINDREQUIRES")
1016 AC_SUBST(FINDREQUIRES)
1017 FINDPROVIDES="${RPMCONFIGDIR}/find-provides"
1018 AC_DEFINE_UNQUOTED(FINDPROVIDES, "$FINDPROVIDES")
1019 AC_SUBST(FINDPROVIDES)
1020 TOP_SOURCEDIR="`pwd`"
1021 AC_DEFINE_UNQUOTED(TOP_SOURCEDIR, "$TOP_SOURCEDIR")
1022 AC_SUBST(TOP_SOURCEDIR)
1024 testdir="`pwd`/tests"
1025 dnl AC_DEFINE_UNQUOTED(testdir, "$testdir")
1028 if test -n "$LIBOBJS"; then
1029 INCPATH="-I\$(top_builddir)/misc $INCPATH"
1039 dnl XXX this causes popt to depend on zlib et al
1040 dnl # XXX Propagate -lucb to popt ...
1041 dnl export LIBS INCPATH CONFIG_SITE
1043 AC_CONFIG_SUBDIRS(popt)
1044 AC_OUTPUT([Doxyfile Makefile rpmrc macros platform rpmpopt rpm.spec scripts/brp-redhat
1045 rpmio/Makefile lib/Makefile build/Makefile tools/Makefile
1047 tests/Makefile tests/rpmrc tests/macros tests/hello-test/Makefile
1048 misc/Makefile po/Makefile.in intl/Makefile
1049 doc/Makefile doc/manual/Makefile
1050 doc/ja/Makefile doc/pl/Makefile doc/ru/Makefile doc/sk/Makefile
1051 python/Makefile perl/Makefile perl/Makefile.PL],
1052 [echo timestamp > popt/stamp-h.in
1053 echo timestamp > stamp-h.in])
1054 dnl touch Makefile.in
1055 dnl sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile])