Replace libelf with elfutils.
[tools/librpm-tizen.git] / configure.ac
1 dnl configure.in for RPM
2 dnl
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
5 dnl it, why check it?
6
7 AC_INIT(rpmqv.c)
8 AC_CANONICAL_SYSTEM
9 AC_PREREQ(2.12)         dnl Minimum Autoconf version required.
10 AC_CONFIG_HEADERS
11 AM_INIT_AUTOMAKE(rpm, 4.2)
12 AM_CONFIG_HEADER(config.h)
13
14 dnl XXX AM_MAINTAINER_MODE
15
16 dnl Set of available languages.
17 ALL_LINGUAS="cs da de fi fr gl is ja ko no pl pt pt_BR ro ru sk sl sr sv tr"
18
19 echo "
20 ****************************************************************************
21 *                                                                          *
22 *                   *** WARNING WARNING WARNING ***                        *
23 *                                                                          *
24 * This is source code from the development branch of rpm-4.2.              *
25 *                                                                          *
26 * If you want the "production" rpm-4.0.4 or rpm-4.1 code, then you should  *
27 * either use an rpm-4.0.4 or rpm-4.1 src.rpm. Alternatively, if using a    *
28 * CVS checkout, do the following:                                          *
29 *                                                                          *
30 *       cvs -d :pserver:anonymous@cvs.rpm.org:/cvs/devel login             *
31 *       (no password, just carriage return)                                *
32 *       cvs -d :pserver:anonymous@cvs.rpm.org:/cvs/devel get rpm           *
33 *       cd rpm                                                             *
34 *                                                                          *
35 * Here's the rpm-4_1 branch:                                               *
36 *       cvs up -r rpm-4_1                                                  *
37 *                                                                          *
38 * Here's the rpm-4_0 branch:                                               *
39 *       cvs up -r rpm-4_0                                                  *
40 *                                                                          *
41 ****************************************************************************
42
43 "
44 sleep 10
45
46 dnl Checks for programs.
47 AC_PROG_CC
48 AC_AIX
49 AC_MINIX
50 AC_PROG_CXX
51 AS=${AS-as}
52 AC_SUBST(AS)
53 if test "$ac_cv_prog_gcc" = yes; then
54     CFLAGS="$CFLAGS -D_GNU_SOURCE -D_REENTRANT -Wall"
55 fi
56 export CFLAGS
57
58 AC_PROG_CPP
59 AC_PROG_GCC_TRADITIONAL
60
61 dnl Does this platform require array notation to assign to a va_list?
62 dnl If cross-compiling, we assume va_list is "normal".  If this breaks
63 dnl you, set ac_cv_valistisarray=true and maybe define HAVE_VA_LIST_AS_ARRAY
64 dnl also just to be sure.
65 AC_MSG_CHECKING(whether va_list assignments need array notation)
66 AC_CACHE_VAL(ac_cv_valistisarray,
67         [AC_TRY_RUN([#include <stdlib.h>
68                      #include <stdarg.h>
69                      void foo(int i, ...) {
70                         va_list ap1, ap2;
71                         va_start(ap1, i);
72                         ap2 = ap1;
73                         if (va_arg(ap2, int) != 123 || va_arg(ap1, int) != 123)
74                             { exit(1); }
75                         va_end(ap1); va_end(ap2);
76                      }
77                      int main() { foo(0, 123); return(0); }],
78                     [ac_cv_valistisarray=false],
79                     [ac_cv_valistisarray=true],
80                     [ac_cv_valistisarray=false])])
81
82 if test "$ac_cv_valistisarray" = true ; then
83         AC_DEFINE(HAVE_VA_LIST_AS_ARRAY, 1,
84                 [Define as 1 if your va_list type is an array])
85         AC_MSG_RESULT(yes)
86 else
87        AC_MSG_RESULT(no)
88 fi
89
90 RPMUSER=rpm
91 RPMUID=37
92 RPMGROUP=rpm
93 RPMGID=37
94 export RPMUSER RPMUID RPMGROUP RPMGID
95 AC_SUBST(RPMUSER)
96 AC_SUBST(RPMUID)
97 AC_SUBST(RPMGROUP)
98 AC_SUBST(RPMGID)
99
100 AC_PATH_PROG(CTAGS, ctags, /bin/true)
101 AC_PATH_PROG(CSCOPE, cscope, /bin/true)
102
103 dnl
104 dnl This now uses libtool. Put
105 dnl     LDFLAGS_STATIC="-all"
106 dnl to attempt static executables using libtool. Otherwise
107 dnl     LDFLAGS_STATIC=""
108 dnl
109 AC_MSG_CHECKING(flag used by libtool to link rpm)
110 if test X"$GCC" = Xyes ; then
111         case "$target" in
112                 *-*-solaris*)   LDFLAGS_STATIC="-static";;
113                 *-*-hpux*)      LDFLAGS_STATIC="-static";;
114                 *-*-sysv5uw*)   LDFLAGS_STATUS="-static";; # Unixware has no shared libthread.
115                 *-*-*)          LDFLAGS_STATIC="-all-static";;
116         esac
117 elif test X"$CC" = Xcc ; then
118         case "$target" in
119                 *-*-linux*)     LDFLAGS_STATIC="-all-static";;
120                 *-*-freebsd*)   LDFLAGS_STATIC="-all-static";;
121                 *-*-osf*)       LDFLAGS_STATIC="";; # OSF5 has no shared pthreads libs
122                 *-*-aix*)       LDFLAGS_STATIC="-static";;  # -Wl,-bnso doesn't seem to work...
123                 *-*-hpux*)      LDFLAGS_STATIC="-static";;
124                 *-*-solaris*)   LDFLAGS_STATIC="-static";;
125                 *-*-irix*)      LDFLAGS_STATIC="-static";;  #should be -non_shared, but can't
126                                                                                         # link because of crt1.o then.
127                 *-*-ultrix*)    LDFLAGS_STATIC="-all-static";;  #ultrix doesn't have shared libs.
128                 *-*-*)          LDFLAGS_STATIC="-static"
129 AC_MSG_WARN([
130
131 Unable to guess what option to pass to $CC to generate a static
132 executable.  You will need to set the LDFLAGS_STATIC macro in Makefile.inc to
133 the appropriate argument(s) if you want to build a static rpm executable.
134
135 ])
136                 ;;
137         esac
138 else
139         # just link it dynamically
140         LDFLAGS_STATIC=""
141 fi
142 LDFLAGS_STATIC="${LDFLAGS} ${LDFLAGS_STATIC}"   # libtool format
143 AC_MSG_RESULT($LDFLAGS_STATIC)
144 AC_SUBST(LDFLAGS_STATIC)
145
146 dnl
147 dnl look for POSIX chmod attributes
148 dnl
149 AC_MSG_CHECKING(POSIX chmod)
150 touch foo.chmodtest
151 chmod 744 foo.chmodtest
152 chmod +X foo.chmodtest 2>/dev/null
153 a=`ls -l foo.chmodtest | awk '{print $1}'`
154 rm -f foo.chmodtest
155 if test "$a" = "-rwxr-xr-x"; then
156     AC_MSG_RESULT(yes)
157     FIXPERMS=a+rX,g-w,o-w 
158 else
159     AC_MSG_RESULT(no (tell your OS vendor about GNU fileutils))
160     FIXPERMS=a+r,g-w,o-w 
161 fi
162 AC_SUBST(FIXPERMS)
163
164 dnl
165 dnl see if we have a mkdir that supports `-p'.
166 dnl
167 AC_PATH_PROGS(MKDIR, mkdir, mkdir)
168 AC_MSG_CHECKING(if $MKDIR supports -p)
169 rm -rf conftest
170 $MKDIR -p conftest/a 2>/dev/null
171 if test $? = 0 ; then
172         rmdir conftest/a 2>/dev/null
173         if test $? = 0  ; then
174                 :
175         else
176                 MKDIR_P=0
177         fi
178
179         rmdir conftest 2>/dev/null
180         if test $? = 0 ; then
181                 MKDIR_P="$MKDIR -p"
182         else
183                 MKDIR_P=0
184         fi
185 else
186         MKDIR_P=0
187 fi
188
189 if test X"$MKDIR_P" = X0 ; then
190         AC_MSG_RESULT(no)
191         MKDIR_P="`echo ${prefix}/lib/rpm/mkinstalldirs`"
192 else
193         AC_MSG_RESULT(yes)
194 fi
195 dnl
196 dnl substitute this into config.h, so the C source picks it up.
197 dnl
198 AC_DEFINE_UNQUOTED(MKDIR_P, "${MKDIR_P}",
199 [A full path to a program, possibly with arguments, that will create a
200    directory and all necessary parent directories, ala `mkdir -p'])
201 AC_SUBST(MKDIR_P)
202
203 AC_ISC_POSIX
204
205 dnl This test must precede tests of compiler characteristics like
206 dnl that for the inline keyword, since it may change the degree to
207 dnl which the compiler supports such features.
208 AM_C_PROTOTYPES
209
210 AC_PROG_AWK
211 AC_PROG_LN_S
212 AC_PROG_MAKE_SET
213
214 dnl AM_DISABLE_SHARED
215 AM_PROG_LIBTOOL
216
217 AC_CHECK_TOOL(AR, ar, :)
218
219 dnl
220 dnl use defaults if cross-compiling, otherwise use the default path.
221 dnl
222 if test "$cross_compiling" = "yes"; then
223     MYPATH=""
224 else
225 #    MYPATH="/bin:/usr/bin:/usr/local/bin:$PATH:/sbin:/usr/sbin:/usr/local/sbin:/opt/gnu/bin"
226     MYPATH=$PATH
227 fi
228
229 dnl
230 dnl Find some common programs
231 dnl
232 AC_PATH_PROG(BZIP2BIN, bzip2, /usr/bin/bzip2, $MYPATH)
233 AC_PATH_PROG(__CAT, cat, /bin/cat, $MYPATH)
234 AC_PATH_PROG(__CHGRP, chgrp, /bin/chgrp, $MYPATH)
235 AC_PATH_PROG(__CHMOD, chmod, /bin/chmod, $MYPATH)
236 AC_PATH_PROG(__CHOWN, chown, /bin/chown, $MYPATH)
237 AC_PATH_PROG(__CP, cp, /bin/cp, $MYPATH)
238 AC_PATH_PROG(__CPIO, cpio, /bin/cpio, $MYPATH)
239 AC_PATH_PROG(__FILE, file, /usr/bin/file, $MYPATH)
240 AC_PATH_PROG(__GPG, gpg, /usr/bin/gpg, $MYPATH)
241 AC_PATH_PROG(__GREP, grep, /bin/grep, $MYPATH)
242 AC_PATH_PROG(GZIPBIN, gzip, /bin/gzip, $MYPATH)
243 AC_PATH_PROG(UNZIPBIN, unzip, /usr/bin/unzip, $MYPATH)
244
245 AC_PATH_PROG(__ID, id, /usr/bin/id, $MYPATH)
246 AC_MSG_CHECKING(checking whether id supports -u)
247     if ${__ID} -u 2>&1 > /dev/null ; then
248         __ID_U="%{__id} -u"
249         AC_MSG_RESULT(yes)
250     else
251 dnl XXX Watchout for square brackets fed to m4.
252         __ID_U="%{__id} | %{__sed} 's/[[^=]]*=\\\\([[0-9]][[0-9]]*\\\\).*$/\\\\1/'"
253         AC_MSG_RESULT(no)
254     fi
255 AC_SUBST(__ID_U)
256
257 AC_PATH_PROG(__INSTALL, install, /usr/bin/install, $MYPATH)
258 AC_PATH_PROG(__MAKE, make, /usr/bin/make, $MYPATH)
259 AC_PATH_PROG(__MKDIR, mkdir, /bin/mkdir, $MYPATH)
260 AC_PATH_PROG(__MV, mv, /bin/mv, $MYPATH)
261 AC_PATH_PROG(__PATCH, patch, /usr/bin/patch, $MYPATH)
262 AC_MSG_CHECKING(old version of patch)
263     PATCHVERSION=`patch --version 2>&1`
264
265     if test "$PATCHVERSION" = "Patch version 2.1"; then
266         AC_DEFINE(HAVE_OLDPATCH_21, 1,
267                 [Define if the patch call you'll be using is 2.1 or older])
268         AC_MSG_RESULT(patch older then 2.2 found)
269     else
270         AC_MSG_RESULT(patch later then 2.2 found)
271     fi
272
273 AC_PATH_PROG(__PERL, perl, /usr/bin/perl, $MYPATH)
274 AC_PATH_PROG(PGPBIN, pgp, /usr/bin/pgp, $MYPATH)
275 AC_PATH_PROG(__PYTHON, python, /usr/bin/python, $MYPATH)
276 AC_PATH_PROG(__RM, rm, /bin/rm, $MYPATH)
277 AC_PATH_PROG(__RSH, rsh, /usr/bin/rsh, $MYPATH)
278 AC_PATH_PROG(__SED, sed, /bin/sed, $MYPATH)
279 AC_PATH_PROG(__SSH, ssh, /usr/bin/ssh, $MYPATH)
280 AC_PATH_PROG(__TAR, tar, /bin/tar, $MYPATH)
281
282 AC_PATH_PROG(__LD, ld, /usr/bin/ld, $MYPATH)
283 AC_PATH_PROG(__NM, nm, /usr/bin/nm, $MYPATH)
284 AC_PATH_PROG(__OBJCOPY, objcopy, /usr/bin/objcopy, $MYPATH)
285 AC_PATH_PROG(__OBJDUMP, objdump, /usr/bin/objdump, $MYPATH)
286 AC_PATH_PROG(__STRIP, strip, /usr/bin/strip, $MYPATH)
287
288 addlib() {
289   l=$1
290   shift
291   case "$target" in 
292     *-*-solaris*)       LIBS="$LIBS -L$l -R$l $*";;
293     *)          LIBS="$LIBS -L$l $*";;
294   esac
295 }
296
297 WITH_ZLIB_SUBDIR=
298 WITH_ZLIB_INCLUDE=
299 WITH_ZLIB_LIB=
300 if test -d zlib ; then
301   WITH_ZLIB_SUBDIR=zlib
302   addlib \${top_builddir}/zlib
303   WITH_ZLIB_INCLUDE="-I\${top_srcdir}/${WITH_ZLIB_SUBDIR}"
304   INCPATH="$INCPATH -I\${top_srcdir}/${WITH_ZLIB_SUBDIR}"
305   WITH_ZLIB_LIB="\${top_builddir}/${WITH_ZLIB_SUBDIR}/libz.la"
306   AC_DEFINE(HAVE_GZSEEK, 1, [Define as 1 if your zlib has gzseek()])
307 fi
308 AC_SUBST(WITH_ZLIB_SUBDIR)
309 AC_SUBST(WITH_ZLIB_INCLUDE)
310 AC_SUBST(WITH_ZLIB_LIB)
311
312 localdone=
313
314 dirs=$prefix
315 if test "$cross_compiling" != "yes"; then
316   dirs="$dirs /usr/local"
317 fi
318 for dir in $dirs
319 do
320         case $dir in
321         NONE|/usr)      continue;;
322         /usr/local)
323                 if test X$localdone != X ; then continue; fi
324                 localdone="$dir"
325                 ;;
326         esac
327
328         AC_MSG_CHECKING(for $dir/lib in LIBS)
329         if test -d $dir/lib 2> /dev/null ; then
330                 addlib $dir/lib
331                 AC_MSG_RESULT(yes)
332         else
333                 AC_MSG_RESULT(no)
334         fi
335
336         AC_MSG_CHECKING(for $dir/include in INCPATH)
337         if test -d $dir/include 2>/dev/null ; then
338                 if [ "$dir" != "/usr/local" ] ; then
339                     INCPATH="$INCPATH -I$dir/include"
340                 fi
341                 AC_MSG_RESULT(yes)
342         else
343                 AC_MSG_RESULT(no)
344         fi
345 done
346
347 AC_MSG_CHECKING(for /usr/ucblib in LIBS)
348 if test -d /usr/ucblib ; then
349         if test "$build" = "mips-sni-sysv4" ; then
350                 addlib /usr/ccs/lib -lc
351         fi
352
353         addlib /usr/ucblib
354         
355         AC_MSG_RESULT(yes)
356 else
357         AC_MSG_RESULT(no)
358 fi
359
360 dnl
361 dnl Check for features
362 dnl
363
364 dnl Checks for libraries.
365
366 WITH_LIBELF_SUBDIR=
367 WITH_LIBELF_INCLUDE=
368 WITH_LIBELF_LIB=
369 WITH_LIBELF_ARCHIVE=
370         if test -d elfutils/libelf ; then
371             AC_DEFINE(HAVE_LIBELF_GELF_H, 1, [Define to 1 if you have the <libelf/gelf.h> header file.])
372             AC_DEFINE(HAVE_LIBELF, 1, [Define to 1 if you have the `elf' library (-lelf).])
373             WITH_LIBELF_SUBDIR=elfutils/libelf
374             WITH_LIBELF_INCLUDE="-I\${top_srcdir}/${WITH_LIBELF_SUBDIR}"
375             WITH_LIBELF_LIB="\${top_builddir}/${WITH_LIBELF_SUBDIR}/libelf.la"
376             WITH_LIBELF_ARCHIVE="\${top_builddir}/${WITH_LIBELF_SUBDIR}/.libs/libelf.a"
377         fi
378 AC_SUBST(WITH_LIBELF_SUBDIR)
379 AC_SUBST(WITH_LIBELF_INCLUDE)
380 AC_SUBST(WITH_LIBELF_LIB)
381 AC_SUBST(WITH_LIBELF_ARCHIVE)
382
383 AC_CHECK_FUNC(setreuid, [], [
384     AC_CHECK_LIB(ucb, setreuid, [if echo $LIBS | grep -- -lucb >/dev/null ;then :; else LIBS="$LIBS -lc -lucb" USEUCB=y;fi])
385 ])
386
387 AC_CHECK_FUNC(rand, [], [
388     AC_CHECK_LIB(rand, rand, [])
389 ])
390
391 AC_CHECK_FUNC(getdomainname, [], [
392     AC_CHECK_LIB(nsl, getdomainname)
393 ])
394 AC_CHECK_FUNC(socket, [], [
395     AC_CHECK_LIB(socket, socket)
396 ])
397
398 AC_CHECK_HEADERS(thread.h pthread.h synch.h semaphore.h)
399
400 AC_CHECK_LIB(pthread, pthread_mutex_trylock, [], [
401   dnl OSF 5.0 has the the symbols prefixed with __ in libpthread.
402   AC_CHECK_LIB(pthread, __pthread_mutex_trylock, [], [
403     AC_CHECK_LIB(thread, mutex_lock)
404   ])
405 ])
406
407 AC_CHECK_HEADERS(aio.h)
408 AC_SEARCH_LIBS(aio_read, [c rt aio posix4])
409
410 dnl Better not use fchmod at all.
411 AC_CHECK_FUNC(fchmod)
412
413 AC_CHECK_FUNCS(vsnprintf snprintf)
414
415 dnl Temporary hack for MiNT.  Some functions (writev, snprintf) are
416 dnl not in the libc but in libport (for political reasons).  This check
417 dnl can hopefully be removed soon.  Please use the default action
418 dnl for this macro (not LIBS=...), otherwise the check for dbopen
419 dnl will fail.
420 AC_CHECK_LIB(port, writev)
421
422 WITH_DB_SUBDIR=
423 WITH_INTERNAL_DB=0
424 DBLIBSRCS=""
425 libdb3=""
426 libdb3a=""
427
428 dnl
429 dnl Detect whether internal Berkeley DB should be built.
430 dnl
431 withval=yes
432 AC_ARG_WITH(db, [  --without-db            do not use internal Berkeley db])
433
434 if test $withval = no ; then
435 dnl ------------------ without internal db
436
437 AC_CHECK_HEADERS(db3/db.h)
438
439 dnl Check for Berkeley db3 API.
440 AC_CHECK_FUNC(db_create, [DBLIBSRCS="$DBLIBSRCS db3.c"],
441   AC_CHECK_LIB(db-3.2, db_create, [DBLIBSRCS="$DBLIBSRCS db3.c"; libdb3="-ldb-3.2"],
442     AC_CHECK_LIB(db-3.1, db_create, [DBLIBSRCS="$DBLIBSRCS db3.c"; libdb3="-ldb-3.1"],
443       AC_CHECK_LIB(db-3.0, db_create, [DBLIBSRCS="$DBLIBSRCS db3.c"; libdb3="-ldb-3.0"],
444         AC_CHECK_LIB(db, db_create, [DBLIBSRCS="$DBLIBSRCS db3.c"; libdb3="-ldb"],
445         )
446       )
447     )
448   )
449 )
450
451 if test X"$DBLIBSRCS" = X; then
452     AC_MSG_ERROR([sorry rpm requires libdb-3.x.a (from the Berkeley db package)]) 
453 fi
454
455 if test -n "$libdb3" -a -n "$libthread" ; then
456    AC_MSG_CHECKING(whether $libdb3 needs $libthread)
457    saveLIBS="$LIBS"
458    LIBS="$LIBS $libdb3"
459    AC_TRY_LINK_FUNC(db_create, AC_MSG_RESULT(no),
460         [libdb3="$libdb3 $libthread"; AC_MSG_RESULT(yes)])
461    LIBS="$saveLIBS"
462 fi
463
464 else
465 dnl ------------------ with    internal db
466   AC_DEFINE(HAVE_DB3_DB_H, 1, [Define if you have the <db3/db.h> header file])
467   WITH_DB_SUBDIR=db3
468   WITH_INTERNAL_DB=1
469   DBLIBSRCS="db3.c"
470   libdb3="# \$(top_builddir)/db3/libdb.la"
471   libdb3a="\$(top_builddir)/db3/libdb.a"
472 dnl  INCPATH="-I\$(top_builddir)/$(WITH_DB_SUBDIR) $INCPATH"
473 fi
474
475 AC_SUBST(WITH_DB_SUBDIR)
476 AC_SUBST(WITH_INTERNAL_DB)
477
478 DBLIBSRCS="$DBLIBSRCS"
479 DBLIBOBJS=`echo $DBLIBSRCS | sed -e "s/\.c/\.lo/g"`
480
481 AC_SUBST(DBLIBSRCS)
482 AC_SUBST(DBLIBOBJS)
483 AC_SUBST(libdb3)
484 AC_SUBST(libdb3a)
485
486 for dbi in $DBLIBSRCS; do
487   case $dbi in
488   db3.c) AC_DEFINE(USE_DB3, 1, [Use the Berkeley db3 API?]) ;;
489   db1.c) AC_DEFINE(USE_DB1, 1, [Use the Berkeley db1 retrofit to db3 API?]) ;;
490   esac
491 done
492
493 dnl AmigaOS and IXEmul have a fork() dummy
494   case "$target" in
495     m68k-*-amigaos ) 
496         echo "Building for AmigaOS: using vfork() instead of fork()"; 
497         CFLAGS="$CFLAGS -Dfork=vfork" 
498         ;;
499   esac
500
501 if test -z "${WITH_ZLIB_LIB}" ; then
502 for zlib in z gz ; do
503    AC_CHECK_LIB(${zlib}, gzread, 
504         [LIBS="$LIBS -l${zlib}"; break], 
505         [if test ${zlib} = gz; then 
506             AC_MSG_ERROR([sorry rpm requires libz.a or libgz.a (from the zlib package)]) 
507          fi]
508                )
509 done
510
511 dnl zlib-1.0.4 has not gzseek
512 AC_CHECK_LIB(${zlib}, gzseek, [AC_DEFINE(HAVE_GZSEEK, 1, [Define as 1 if your zlib has gzseek()])])
513 fi
514
515 AC_CHECK_LIB(bz2, bzread, [LIBS="$LIBS -lbz2"], 
516    AC_CHECK_LIB(bz2, BZ2_bzread, [
517      WITH_BZIP2=1
518      LIBS="$LIBS -lbz2"
519      AC_DEFINE(HAVE_BZ2_1_0, 1, [Define as 1 if you bzip2 1.0]) ], 
520      WITH_BZIP2=0))
521 AC_SUBST(WITH_BZIP2)
522
523 AM_GNU_GETTEXT
524 dnl TVM:
525 dnl horrible *temporary* hack to make sure that if we found gettext() in
526 dnl -lintl that we add -lintl *back* to $LIBS.
527 dnl
528 if test X$gt_cv_func_gettext_libintl = Xyes ; then
529     LIBS="-lintl $LIBS"
530 fi
531
532 dnl Checks for header files we can live without.
533 AC_HEADER_STDC
534 AC_HEADER_MAJOR
535 AC_HEADER_DIRENT
536 AC_HEADER_TIME
537
538 AC_CHECK_HEADERS(fcntl.h getopt.h grp.h memory.h netdb.h pwd.h utime.h)
539
540 AC_CHECK_HEADERS(sys/ipc.h sys/socket.h sys/select.h)
541 AC_CHECK_HEADERS(sys/types.h sys/stdtypes.h)
542 AC_CHECK_HEADERS(sys/mman.h sys/resource.h sys/utsname.h sys/wait.h)
543
544 AC_CHECK_HEADERS(netinet/in_systm.h)
545 AC_CHECK_HEADERS(machine/types.h)
546 AC_CHECK_HEADERS(mntent.h sys/mnttab.h sys/systemcfg.h)
547 AC_CHECK_HEADERS(sys/mount.h sys/mntctl.h sys/param.h sys/vmount.h)
548 AC_CHECK_HEADERS(bzlib.h libio.h zlib.h)
549 AC_CHECK_HEADERS(err.h mcheck.h)
550 AC_CHECK_HEADERS(pthread.h)
551
552 dnl popt w float/double needs.
553 AC_CHECK_HEADERS(float.h)
554
555 AC_CHECK_HEADERS(glob.h)
556
557 dnl statfs portability fiddles.
558 dnl
559 dnl We should really emulate/steal sections of the statfs and struct statfs
560 dnl checks from GNU fileutils.
561 dnl
562 AC_MSG_CHECKING(for struct statfs)
563 dnl
564 dnl this is easier than nesting AC_TRY_COMPILEs...
565 dnl
566 found_struct_statfs=no
567
568 if test X$found_struct_statfs = Xno ; then
569 dnl Solaris 2.6+ wants to use statvfs
570 AC_TRY_COMPILE([
571 #ifdef HAVE_SYS_TYPES_H
572 #include <sys/types.h>
573 #endif
574 #include <sys/statvfs.h> ],
575         [struct statvfs sfs;],
576         [AC_MSG_RESULT(in sys/statvfs.h)
577         AC_DEFINE(STATFS_IN_SYS_STATVFS, 1,
578                 [statfs in <sys/statvfs.h> (for solaris 2.6+ systems)])
579         found_struct_statfs=yes],
580 )
581 fi
582
583 if test X$found_struct_statfs = Xno ; then
584 dnl first try including sys/vfs.h
585 AC_TRY_COMPILE([
586 #ifdef HAVE_SYS_TYPES_H
587 #include <sys/types.h>
588 #endif
589 #include <sys/vfs.h> ],
590         [struct statfs sfs;],
591         [AC_MSG_RESULT(in sys/vfs.h)
592         AC_DEFINE(STATFS_IN_SYS_VFS, 1, [statfs in <sys/vfs.h> (for linux systems)])
593         found_struct_statfs=yes],
594 )
595 fi
596
597 if test X$found_struct_statfs = Xno ; then
598 dnl ...next try including sys/mount.h
599 AC_TRY_COMPILE([
600 #ifdef HAVE_SYS_TYPES_H
601 #include <sys/types.h>
602 #endif
603 #ifdef HAVE_SYS_PARAM_H
604 #include <sys/param.h>
605 #endif
606 #include <sys/mount.h> ],
607         [struct statfs sfs;],
608         [AC_MSG_RESULT(in sys/mount.h)
609         AC_DEFINE(STATFS_IN_SYS_MOUNT, 1, [statfs in <sys/mount.h> (for Digital Unix 4.0D systems)])
610         found_struct_statfs=yes],
611 )
612 fi
613
614 if test X$found_struct_statfs = Xno ; then
615 dnl ...still no joy.  Try sys/statfs.h
616 AC_TRY_COMPILE([
617 #ifdef HAVE_SYS_TYPES_H
618 #include <sys/types.h>
619 #endif
620 #include <sys/statfs.h> ],
621         [struct statfs sfs;],
622         [AC_MSG_RESULT(in sys/statfs.h)
623         AC_DEFINE(STATFS_IN_SYS_STATFS, 1, [statfs in <sys/statfs.h> (for Irix 6.4 systems)])
624         found_struct_statfs=yes],
625 )
626 fi
627
628 if test X$found_struct_statfs = Xno ; then
629 dnl ...no luck.  Warn the user of impending doom.
630 AC_MSG_WARN(not found)
631 fi
632
633 dnl
634 dnl if we found the struct, see if it has the f_bavail member.  Some OSes
635 dnl don't, including IRIX 6.5+
636 dnl
637 if test X$found_struct_statfs = Xyes ; then
638 AC_MSG_CHECKING(for f_bavail member in struct statfs)
639 AC_TRY_COMPILE([
640 #ifdef HAVE_SYS_TYPES_H
641 #include <sys/types.h>
642 #endif
643 #if STATFS_IN_SYS_STATVFS
644 # include <sys/statvfs.h>
645   typedef struct statvfs STATFS_t;
646 #else
647   typedef struct statfs STATFS_t;
648 # if STATFS_IN_SYS_VFS
649 #  include <sys/vfs.h>
650 # elif STATFS_IN_SYS_MOUNT
651 #  include <sys/mouht.h>
652 # elif STATFS_IN_SYS_STATFS
653 #  include <sys/statfs.h>
654 # endif
655 #endif ],
656         [STATFS_t sfs;
657         sfs.f_bavail = 0;],
658         [AC_MSG_RESULT(yes)
659         AC_DEFINE(STATFS_HAS_F_BAVAIL, 1, [Define if struct statfs has the f_bavail member])],
660         [AC_MSG_RESULT(no)]
661 )
662 fi
663
664 if test X$found_struct_statfs = Xyes ; then
665 dnl
666 dnl now check to see if we have the 4-argument variant of statfs()
667 dnl this pretty much requires AC_TRY_RUN
668 dnl
669 AC_MSG_CHECKING([if statfs() requires 4 arguments])
670 AC_TRY_RUN([
671 #ifdef HAVE_SYS_TYPES_H
672 #include <sys/types.h>
673 #endif
674 #ifdef STATFS_IN_SYS_VFS
675 #include <sys/vfs.h>
676 #elif STATFS_IN_SYS_MOUNT
677 #include <sys/mouht.h>
678 #elif STATFS_IN_SYS_STATFS
679 #include <sys/statfs.h>
680 #endif
681 main() {
682         struct statfs sfs;
683         exit (statfs(".", &sfs, sizeof(sfs), 0));
684 }
685 ],
686         [AC_MSG_RESULT(yes)
687         AC_DEFINE(STAT_STATFS4, 1, [Define if the statfs() call takes 4 arguments])],
688         [AC_MSG_RESULT(no)],
689         [AC_MSG_RESULT(no)]
690 )
691 fi
692
693 AC_C_INLINE
694
695 dnl look for libc features
696 PROVIDES_ERRNO=no
697 AC_MSG_CHECKING(if <netdb.h> defines h_errno)
698 AC_TRY_LINK([#include <netdb.h>],printf("%d",h_errno),PROVIDES_ERRNO=yes)
699 AC_MSG_RESULT($PROVIDES_ERRNO)
700 if test $PROVIDES_ERRNO = yes; then
701         AC_DEFINE(HAVE_HERRNO, 1, [ Define as 1 if <netdb.h> defines h_errno])
702 fi
703
704 dnl If a system doesn't have S_IFSOCK, define it as 0 which will
705 dnl make S_ISSOCK always return false (nice, eh?)
706 AC_MSG_CHECKING(if <sys/stat.h> defines S_IFSOCK)
707 AC_TRY_LINK([#include <sys/stat.h>],printf("%d", S_IFSOCK),
708         HAS_S_IFSOCK=yes,HAS_S_IFSOCK=no)
709 AC_MSG_RESULT($HAS_S_IFSOCK)
710 if test $HAS_S_IFSOCK = yes; then
711         AC_DEFINE(HAVE_S_IFSOCK, 1, [Define as 1 if <sys/stat.h> defines S_IFSOCK])
712 fi
713
714 dnl Some Unix's are missing S_ISLNK, S_ISSOCK
715 AC_MSG_CHECKING(if <sys/stat.h> defines S_ISLNK)
716 AC_TRY_LINK([#include <sys/stat.h>],printf("%d", S_ISLNK(0755)),
717         HAS_S_ISLNK=yes,HAS_S_ISLNK=no)
718 AC_MSG_RESULT($HAS_S_ISLNK)
719 if test $HAS_S_ISLNK = yes; then
720         AC_DEFINE(HAVE_S_ISLNK, 1, [Define as 1 if <sys/stat.h> defines S_ISLNK])
721 fi
722
723 AC_MSG_CHECKING(if <sys/stat.h> defines S_ISSOCK)
724 AC_TRY_LINK([#include <sys/stat.h>],printf("%d", S_ISSOCK(0755)),
725         HAS_S_ISSOCK=yes,HAS_S_ISSOCK=no)
726 AC_MSG_RESULT($HAS_S_ISSOCK)
727 if test $HAS_S_ISSOCK = yes; then
728         AC_DEFINE(HAVE_S_ISSOCK, 1, [Define as 1 if <sys/stat.h> defines S_ISSOCK])
729 fi
730
731 AC_MSG_CHECKING(if timezone is defined)
732 AC_TRY_LINK([#include <time.h>],printf("%ld", timezone),
733       HAS_TIMEZONE=yes,HAS_TIMEZONE=no)
734 AC_MSG_RESULT($HAS_TIMEZONE)
735
736 dnl Check for missing typedefs
737 AC_TYPE_MODE_T
738 AC_TYPE_PID_T
739
740 dnl Checks for library functions.
741 AC_FUNC_ALLOCA
742 AC_FUNC_VPRINTF
743
744 dnl XXX AC_FUNC_MEMCMP
745 dnl XXX AC_FUNC_MMAP
746 dnl XXX AC_TYPE_SIGNAL
747 dnl XXX AC_FUNC_STRCOLL
748 dnl XXX AC_FUNC_STRFTIME
749 dnl XXX AC_FUNC_UTIME_NULL
750 dnl XXX AC_FUNC_VFORK
751 dnl XXX AC_CHECK_FUNCS(gethostname mkdir mkfifo rmdir select uname)
752
753 AC_CHECK_FUNCS(basename getcwd getwd inet_aton mtrace putenv realpath setenv)
754 AC_CHECK_FUNCS(stpcpy stpncpy strcspn)
755 AC_CHECK_FUNCS(strdup strerror strtol strtoul strspn strstr)
756
757 AC_CHECK_FUNCS(regcomp)
758
759 AC_CHECK_FUNCS(ftok)
760
761 dnl
762 dnl XXX Regex replacement isn't known to be needed yet.
763 dnl
764 dnl AC_ARG_WITH(regex, [  --with-regex            use the GNU regex library ],
765 dnl     [rpm_cv_regex=yes],
766 dnl     [AC_CHECK_FUNCS(regcomp, rpm_cv_regex=no, rpm_cv_regex=yes)])
767 dnl 
768 dnl if test $rpm_cv_regex = no ; then
769 dnl     AC_MSG_CHECKING(whether the regexp library is broken)
770 dnl     AC_TRY_RUN([
771 dnl #include <unistd.h>
772 dnl #include <regex.h>
773 dnl main() { regex_t blah ; exit(regcomp(&blah, "foo.*bar", REG_NOSUB) || regexec (&blah, "foobar", 0, NULL, 0)); }],
774 dnl     rpm_cv_regex_broken=no, rpm_cv_regex_broken=yes, rpm_cv_regex_broken=yes)
775 dnl     AC_MSG_RESULT([$rpm_cv_regex_broken])
776 dnl     if test $rpm_cv_regex_broken = yes ; then
777 dnl         echo "   --> using the included GNU regex instead." >&AC_FD_MSG
778 dnl         rpm_cv_regex=yes
779 dnl     fi
780 dnl fi
781 dnl 
782 dnl if test $rpm_cv_regex = yes; then
783 dnl     AC_DEFINE(USE_GNU_REGEX, 1)
784 dnl     AC_LIBOBJ(regex)
785 dnl fi
786
787 dnl
788 dnl XXX Glob *is* broken on linux with libc5, solaris and possibly aix when
789 dnl %files gets something like
790 dnl     /usr/*/locale/*/LC_MESSAGES/*.mo
791 dnl (Note: more than one asterisk in glob pattern.)
792 dnl
793 AC_ARG_WITH(glob, [  --with-glob             use the internal GNU glob ],
794     [rpm_cv_glob=yes],
795     [AC_CHECK_FUNCS(glob, rpm_cv_glob=no, rpm_cv_glob=yes)])
796
797 if test $rpm_cv_glob = no ; then
798     AC_CACHE_CHECK([for GNU extensions to glob], rpm_cv_glob_ext, [
799     rm -f t
800     mkdir t
801     mkdir t/p
802     touch t/p/foo.8
803     AC_TRY_RUN([
804 #include <unistd.h>
805 #include <sys/stat.h>
806 #include <glob.h>
807 main() {
808   glob_t gl ;
809   gl.gl_stat = stat;
810   exit(glob("t/*/*.8", GLOB_PERIOD, NULL, &gl) || gl.gl_pathc < 1);
811 } ],
812     rpm_cv_glob_ext=yes, rpm_cv_glob_ext=no, rpm_cv_glob_ext=no)
813     rm -r t
814     ])
815     if test "$rpm_cv_glob_ext" = no ; then
816         echo "    --> using the included GNU glob instead." >&AC_FD_MSG
817         rpm_cv_glob=yes
818     fi
819 fi
820
821 if test "$rpm_cv_glob" = yes; then
822     AC_DEFINE(USE_GNU_GLOB, 1, [Use the included glob.c?])
823     AC_LIBOBJ(glob)
824     AC_LIBOBJ(fnmatch)
825 fi
826 dnl
827 dnl Auto-detect which python bindings should be built.
828 dnl
829 withval=auto
830 AC_ARG_WITH(python, [  --with-python           build rpm python bindings ])
831
832 WITH_PYTHON_VERSION=$withval
833 if test $withval = auto ; then
834
835   AC_MSG_CHECKING(for python 2.2)
836   AC_TRY_RUN([
837 #include <python2.2/Python.h>
838 main() {
839   exit(strncmp("2.2", PY_VERSION, 3));
840 } ],
841   withval=yes, withval=no, withval=yes)
842   AC_MSG_RESULT($withval)
843   if test $withval = yes ; then
844     WITH_PYTHON_VERSION="2.2"
845   else
846
847     AC_MSG_CHECKING(for python 1.5.2)
848     AC_TRY_RUN([
849 #include <python1.5/Python.h>
850 main() {
851   exit(strcmp("1.5.2", PY_VERSION));
852 } ],
853     withval=yes, withval=no, withval=yes)
854     AC_MSG_RESULT($withval)
855     if test $withval = yes ; then
856       WITH_PYTHON_VERSION="1.5"
857     fi
858   fi
859
860 fi
861
862 if test "$WITH_PYTHON_VERSION" != no ; then
863   WITH_PYTHON_SUBDIR=python
864   WITH_PYTHON_SUBPACKAGE=1
865 else
866   WITH_PYTHON_SUBDIR=
867   WITH_PYTHON_SUBPACKAGE=0
868 fi
869 AC_SUBST(WITH_PYTHON_SUBDIR)
870 AC_SUBST(WITH_PYTHON_SUBPACKAGE)
871 AC_SUBST(WITH_PYTHON_VERSION)
872
873 AC_PATH_PROG(__DOXYGEN, doxygen, no, $PATH)
874 dnl
875 dnl Auto-detect whether doxygen generated API docs should be included.
876 dnl
877 withval=auto
878 AC_ARG_WITH(apidocs, [  --with-apidocs          build rpm API docs ])
879
880 if test $withval = auto -a $__DOXYGEN != no ; then
881   withval=yes
882 elif test $withval = yes -a $__DOXYGEN = no ; then
883   AC_MSG_ERROR(--> rpm API docs needs doxygen in PATH)
884 fi
885
886 if test $withval = yes; then
887   WITH_APIDOCS_TARGET=apidocs
888   WITH_APIDOCS=1
889 else
890   WITH_APIDOCS=0
891 fi
892 AC_SUBST(WITH_APIDOCS_TARGET)
893 AC_SUBST(WITH_APIDOCS)
894
895 withval=no
896 AC_ARG_WITH(dmalloc, [  --with-dmalloc          build with dmalloc debugging support ])
897 if test $withval = yes ; then
898   AC_DEFINE(DMALLOC, 1, [Build with dmalloc support?])
899   LIBS="$LIBS -ldmalloc"
900 fi
901
902 withval=no
903 AC_ARG_WITH(efence, [  --with-efence           build with efence debugging support ])
904 if test $withval = yes ; then
905   AC_DEFINE(EFENCE, 1, [Build with libefence support?])
906   LIBS="$LIBS -lefence"
907 fi
908
909 AC_CHECK_FUNCS(setlocale)
910
911 dnl XXX Solaris <= 2.6 only permits 8 chars in password.
912 AC_CHECK_FUNCS(getpassphrase)
913
914 AC_CHECK_FUNC(getmntent, AC_DEFINE(HAVE_GETMNTENT, 1, [Define if you have the getmntent() function]), [
915   AC_CHECK_FUNC(mntctl, AC_DEFINE(HAVE_MNTCTL, 1, [Define as 1 if you have mntctl() (only aix?)]),[
916     AC_CHECK_FUNC(getmntinfo_r, AC_DEFINE(HAVE_GETMNTINFO_R, 1, [Define as 1 if you have getmntinfo_r() (only osf?)]), [
917       AC_CHECK_LIB(c_r, getmntinfo_r, [LIBS="$LIBS -lc_r"; 
918                                         AC_DEFINE(HAVE_GETMNTINFO_R, 1, [Define as 1 if you have getmntinfo_r() (only osf?)])], [
919                  AC_DEFINE([USE_GETMNTENT], 1, [Defined if getmntent replacement is used])
920                  AC_LIBOBJ(getmntent)])])])])
921
922 AC_CHECK_FUNC(lchown,
923    [__CHOWN_RHF="%{__chown} -Rhf"
924     __CHGRP_RHF="%{__chgrp} -Rhf"
925     AC_DEFINE(HAVE_LCHOWN, 1, [Define as 1 if you have lchown()])],
926    [__CHOWN_RHF="%{__chown} -Rf"
927     __CHGRP_RHF="%{__chgrp} -Rf"
928     dnl Does chown() follow symlinks? This should be a good enough test.
929     AC_MSG_CHECKING(whether chown() follows symlinks)
930     AC_ARG_ENABLE([broken-chown],
931     [  --enable-broken-chown   this system's chown follows symbolic links], 
932             result=$enableval, result=unknown)
933     if echo "$build" | egrep "(aix)|(hpux)|(linux)" > /dev/null ; then
934         result=yes
935     elif echo "$build" | egrep "(nextstep)" > /dev/null ; then
936         result=no
937     fi
938     if test $result = unknown; then
939         if test `${__ID} | cut -f2 -d\= | cut -f1 -d\(` = 0; then
940             rm -f foo bar
941             touch foo
942             ln -s foo bar
943             ${__CHOWN} 10 bar
944             if test `ls -l foo | awk '{print $3}'` != "root"; then
945                 result=yes
946             else
947                 result=no
948             fi
949             ${__RM} -f foo bar
950         else
951             AC_MSG_CHECKING((cannot check by non-root user))
952             result=no
953         fi
954     fi
955
956     AC_MSG_RESULT($result)
957     if test $result = yes; then
958             AC_DEFINE(CHOWN_FOLLOWS_SYMLINK, 1, [Define as 1 if chown() follows symlinks and you don't have lchown()])
959     fi])
960 AC_SUBST(__CHOWN_RHF)
961 AC_SUBST(__CHGRP_RHF)
962
963 dnl
964 dnl figure out what root's primary group is
965 dnl
966 AC_MSG_CHECKING(root's primary group)
967 AC_TRY_RUN([#include <stdio.h>
968 #include <sys/types.h>
969 #include <pwd.h>
970 #include <grp.h>
971
972 int main()
973 {
974         struct passwd *root = NULL;
975         struct group *roots_group = NULL;
976         FILE * tempfile = NULL;
977
978         root = getpwuid( (uid_t) 0 );
979         if (root != NULL) {
980                 roots_group = getgrgid(root->pw_gid);
981                 if (roots_group != NULL) {
982                         tempfile = fopen("conftest_rootg", "w");
983                         if (tempfile != NULL) {
984                                 fprintf(tempfile, "%s\n", roots_group->gr_name);
985                                 fclose(tempfile);
986                                 exit(0);
987                         }
988                 }
989         }
990
991         exit(1);
992 }], ROOT_GROUP=`cat conftest_rootg`,
993         ROOT_GROUP="root",ROOT_GROUP="root"
994 )
995 AC_MSG_RESULT($ROOT_GROUP)
996 AC_SUBST(ROOT_GROUP)
997
998 if test "x$varprefix" = "x"; then
999     # For /usr and /usr/local, we want the 'var' directory to go
1000     # in /var and /var/local respectively. For everything else, 
1001     # just put the 'var' directory in prefix/var.
1002     case $prefix in
1003         /usr | /usr/local )
1004             varprefix=`echo $prefix | sed 's/usr/var/'` ;;
1005         NONE)
1006             varprefix=`echo $ac_default_prefix | sed 's/usr/var/'` ;;
1007         *) 
1008             varprefix=$prefix/var ;;
1009     esac        
1010 fi
1011 AC_SUBST(varprefix)
1012
1013 if test "x$tmpdir" = "x"; then
1014     if test -d $varprefix/tmp; then
1015         tmpdir=$varprefix/tmp
1016     else
1017         if test -d /var/tmp; then
1018             tmpdir=/var/tmp
1019         else
1020             tmpdir=/tmp
1021         fi
1022     fi
1023 fi
1024 AC_SUBST(tmpdir)
1025
1026 if echo "$build_os" | grep sco > /dev/null; then
1027         echo "hacking things up for sco"
1028         AC_DEFINE(NEED_STRINGS_H, 1, [Define as one if we need to include <strings.h> (along with <string.h>)])
1029         AC_DEFINE(HAVE_STRUCT_MNTTAB, 1,
1030         [Define as 1 if you have "struct mnttab" (only sco?)])
1031 elif echo "$build_os" | grep sunos > /dev/null; then
1032         echo "hacking things up for sunos"
1033         CFLAGS="$CFLAGS -D__USE_FIXED_PROTOTYPES__"
1034         AC_DEFINE(NEED_STRINGS_H, 1, [Define as one if we need to include <strings.h> (along with <string.h>)])
1035         AC_DEFINE(NEED_MYREALLOC, 1, [Define as 1 if we need myrealloc])
1036         AC_LIBOBJ(myrealloc)
1037 fi
1038
1039 #
1040 # get rid of the 4-th tuple, if config.guess returned "linux-gnu" for build_os
1041 #
1042 if echo "$build_os" | grep '.*-gnulibc1' > /dev/null ; then
1043         build_os=`echo "${build_os}" | sed 's/-gnulibc1$//'`
1044 fi
1045 if echo "$build_os" | grep '.*-gnu' > /dev/null ; then
1046         build_os=`echo "${build_os}" | sed 's/-gnu$//'`
1047 fi
1048
1049 changequote(<, >)
1050 build_os_exact="${build_os}"
1051 build_os_major=`echo "${build_os}" | sed 's/\..*$//'`
1052 build_os_noversion=`echo "${build_os}" | sed 's/[0-9]*\..*$//'`
1053 changequote([, ])
1054
1055 rm -f ./find-provides
1056 if test -f ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.prov ; then
1057         echo "using ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.prov for automatic provides generation"
1058     ln -s ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.prov ./find-provides
1059 elif test -f ${srcdir}/autodeps/${build_os_exact}.prov ; then
1060         echo "using ${srcdir}/autodeps/${build_os_exact}.prov for automatic provides generation"
1061     ln -s ${srcdir}/autodeps/${build_os_exact}.prov ./find-provides
1062 elif test -f ${srcdir}/autodeps/${build_os_major}.prov ; then
1063         echo "using ${srcdir}/autodeps/${build_os_major}.prov for automatic provides generation"
1064     ln -s ${srcdir}/autodeps/${build_os_major}.prov ./find-provides
1065 elif test -f ${srcdir}/autodeps/${build_os_noversion}.prov ; then
1066         echo "using ${srcdir}/autodeps/${build_os_noversion}.prov for automatic provides generation"
1067     ln -s ${srcdir}/autodeps/${build_os_noversion}.prov ./find-provides
1068 else
1069     echo "*** no default provides information is available for ${build_os_noversion}"
1070     ln -s ${srcdir}/autodeps/none ./find-provides
1071 fi
1072
1073 rm -f ./find-requires
1074 if test -f ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.req ; then
1075         echo "using ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.req for automatic requires generation"
1076     ln -s ${srcdir}/autodeps/${build_cpu}-${build_os_exact}.req ./find-requires
1077 elif test -f ${srcdir}/autodeps/${build_os_exact}.req ; then
1078         echo "using ${srcdir}/autodeps/${build_os_exact}.req for automatic requires generation"
1079     ln -s ${srcdir}/autodeps/${build_os_exact}.req ./find-requires
1080 elif test -f ${srcdir}/autodeps/${build_os_major}.req ; then
1081         echo "using ${srcdir}/autodeps/${build_os_major}.req for automatic requires generation"
1082     ln -s ${srcdir}/autodeps/${build_os_major}.req ./find-requires
1083 elif test -f ${srcdir}/autodeps/${build_os_noversion}.req ; then
1084         echo "using ${srcdir}/autodeps/${build_os_noversion}.req for automatic requires generation"
1085     ln -s ${srcdir}/autodeps/${build_os_noversion}.req ./find-requires
1086 else
1087     echo "*** no default requires information is available for ${build_os_noversion}"
1088     ln -s ${srcdir}/autodeps/none ./find-requires
1089 fi
1090
1091 dnl Determine the canonical arch-vendor-os for the build machine
1092 case "${build_cpu}" in
1093 *86)            RPMCANONARCH=i386 ;;
1094 x86_64*)        RPMCANONARCH=x86_64 ;;
1095 alpha*)         RPMCANONARCH=alpha ;;
1096 sparc*)         RPMCANONARCH=sparc ;;
1097 ia64*)          RPMCANONARCH=ia64 ;;
1098 s390*)          RPMCANONARCH=s390 ;;
1099 powerpc*)       RPMCANONARCH=ppc ;;
1100 armv3l*)        RPMCANONARCH=armv3l ;;
1101 armv4l*)        RPMCANONARCH=armv4l ;;
1102 armv4b*)        RPMCANONARCH=armv4b ;;
1103 arm*)           RPMCANONARCH="${build_cpu}" ;;
1104 mipsel*)        RPMCANONARCH=mipsel ;;
1105 mips*)          RPMCANONARCH=mips ;;
1106 m68k*)          RPMCANONARCH=m68k ;;
1107 *)              RPMCANONARCH=unknown ;;
1108 esac
1109 case "${build_os_noversion}" in
1110 mint)           RPMCANONARCH=m68kmint ;;
1111 esac
1112 RPMCANONVENDOR="$build_vendor"
1113 case "${build_vendor}" in
1114 unknown|pc|ibm|redhat|pld|mandrake|conectiva|lvr|yellowdog)
1115         test -f /etc/redhat-release &&          RPMCANONVENDOR=redhat
1116         test -f /etc/pld-release &&             RPMCANONVENDOR=pld
1117         test -f /etc/mandrake-release &&        RPMCANONVENDOR=mandrake
1118         test -f /etc/conectiva-release &&       RPMCANONVENDOR=conectiva
1119         test -f /etc/lvr-release &&             RPMCANONVENDOR=lvr
1120         test -f /etc/yellowdog-release &&       RPMCANONVENDOR=yellowdog
1121         ;;
1122 esac
1123 RPMCANONOS="$build_os_noversion"
1124 AC_SUBST(RPMCANONARCH)
1125 AC_SUBST(RPMCANONVENDOR)
1126 AC_SUBST(RPMCANONOS)
1127
1128 if test X"$prefix" = XNONE ; then
1129     usrprefix="$ac_default_prefix"
1130 else
1131     usrprefix=$prefix
1132 fi
1133 LOCALEDIR="`echo ${usrprefix}/share/locale`"
1134 AC_DEFINE_UNQUOTED(LOCALEDIR, "$LOCALEDIR",
1135         [Full path to rpm locale directory (usually /usr/share/locale)])
1136 AC_SUBST(LOCALEDIR)
1137 LIBDIR="`echo $libdir | sed 's-/lib$-/%{_lib}-'`"
1138 AC_SUBST(LIBDIR)
1139 RPMCONFIGDIR="`echo ${usrprefix}/lib/rpm`"
1140 AC_DEFINE_UNQUOTED(RPMCONFIGDIR, "$RPMCONFIGDIR",
1141         [Full path to rpm global configuration directory (usually /usr/lib/rpm)])
1142 AC_SUBST(RPMCONFIGDIR)
1143
1144 SYSCONFIGDIR="`echo /etc/rpm`"
1145 AC_DEFINE_UNQUOTED(SYSCONFIGDIR, "$SYSCONFIGDIR",
1146         [Full path to rpm system configuration directory (usually /etc/rpm)])
1147 AC_SUBST(SYSCONFIGDIR)
1148
1149 MACROFILES="${RPMCONFIGDIR}/macros:${RPMCONFIGDIR}/%{_target_platform}/macros:${SYSCONFIGDIR}/macros:${SYSCONFIGDIR}/macros.specspo:${SYSCONFIGDIR}/macros.db1:${SYSCONFIGDIR}/%{_target_platform}/macros:~/.rpmmacros"
1150 AC_DEFINE_UNQUOTED(MACROFILES, "$MACROFILES",
1151         [Colon separated paths of macro files to read.])
1152 AC_SUBST(MACROFILES)
1153
1154 LIBRPMRC_FILENAME="${RPMCONFIGDIR}/rpmrc"
1155 AC_DEFINE_UNQUOTED(LIBRPMRC_FILENAME, "$LIBRPMRC_FILENAME",
1156         [Full path to rpmrc configuration file (usually /usr/lib/rpm/rpmrc)])
1157 AC_SUBST(LIBRPMRC_FILENAME)
1158
1159 VENDORRPMRC_FILENAME="${RPMCONFIGDIR}/${RPMCANONVENDOR}/rpmrc"
1160 AC_DEFINE_UNQUOTED(VENDORRPMRC_FILENAME, "$VENDORRPMRC_FILENAME",
1161        [Full path to vendor rpmrc configuration file (usually /usr/lib/rpm/vendor/rpmrc)])
1162 AC_SUBST(VENDORRPMRC_FILENAME)
1163
1164 LIBRPMALIAS_FILENAME="${RPMCONFIGDIR}/rpmpopt-${VERSION}"
1165 AC_DEFINE_UNQUOTED(LIBRPMALIAS_FILENAME, "$LIBRPMALIAS_FILENAME",
1166         [Full path to rpmpopt configuration file (usually /usr/lib/rpm/rpmpopt)])
1167 AC_SUBST(LIBRPMALIAS_FILENAME)
1168 FINDREQUIRES="${RPMCONFIGDIR}/find-requires"
1169 AC_DEFINE_UNQUOTED(FINDREQUIRES, "$FINDREQUIRES",
1170         [Full path to find-requires script (usually /usr/lib/rpm/find-requires)])
1171 AC_SUBST(FINDREQUIRES)
1172 FINDPROVIDES="${RPMCONFIGDIR}/find-provides"
1173 AC_DEFINE_UNQUOTED(FINDPROVIDES, "$FINDPROVIDES",
1174         [Full path to find-provides script (usually /usr/lib/rpm/find-provides)])
1175 AC_SUBST(FINDPROVIDES)
1176
1177 testdir="`pwd`/tests"
1178 dnl AC_DEFINE_UNQUOTED(testdir, "$testdir")
1179 AC_SUBST(testdir)
1180
1181 AC_SUBST(INCPATH)
1182 AC_SUBST(LIBMISC)
1183
1184 AC_SUBST(RPM)
1185
1186 AC_SUBST(OBJDUMP)
1187
1188 dnl XXX this causes popt to depend on zlib et al
1189 dnl # XXX Propagate -lucb to popt ...
1190 dnl export LIBS INCPATH CONFIG_SITE
1191
1192 AC_CONFIG_SUBDIRS(popt beecrypt zlib elfutils file db3)
1193
1194 AC_OUTPUT([ Doxyfile Makefile rpmrc macros platform rpmpopt rpm.spec
1195         rpmio/Makefile rpmdb/Makefile lib/Makefile build/Makefile
1196         scripts/Makefile scripts/brp-redhat
1197         scripts/macros.perl scripts/macros.php scripts/macros.python
1198         tools/Makefile
1199         tests/Makefile tests/rpmrc tests/macros tests/hello-test/Makefile
1200         misc/Makefile intl/Makefile po/Makefile.in
1201         doc/Makefile
1202         doc/manual/Makefile
1203         doc/fr/Makefile
1204         doc/ja/Makefile
1205         doc/ko/Makefile
1206         doc/pl/Makefile
1207         doc/ru/Makefile
1208         doc/sk/Makefile
1209         python/Makefile
1210         python/rpmdb/Makefile
1211         python/test/Makefile
1212   ], [  echo timestamp > popt/stamp-h.in
1213         echo timestamp > beecrypt/stamp-h.in
1214         echo timestamp > stamp-h.in
1215   ]
1216 )