Clean up poll() vs select() tests
[platform/upstream/rpm.git] / configure.ac
1 AC_PREREQ(2.61)
2 AC_INIT(rpm, 4.8.0-beta1, rpm-maint@lists.rpm.org)
3
4 AC_CONFIG_SRCDIR([rpmqv.c])
5 AC_CONFIG_HEADERS([config.h])
6 AC_CONFIG_MACRO_DIR([m4])
7
8 AM_INIT_AUTOMAKE([1.10 foreign tar-ustar dist-bzip2 subdir-objects nostdinc])
9
10 AC_CONFIG_TESTDIR(tests)
11
12 AC_USE_SYSTEM_EXTENSIONS
13
14 AC_DISABLE_STATIC
15
16 dnl Checks for programs.
17 AC_PROG_CXX
18 AC_PROG_AWK
19 AC_PROG_CC
20 AC_PROG_CPP
21 AC_PROG_INSTALL
22 AC_PROG_LN_S
23 AC_PROG_MAKE_SET
24 AC_PROG_LIBTOOL
25 AC_PROG_YACC
26
27 AC_SUBST(__CC, $CC)
28 AC_PROG_CC_C99
29 if test "$ac_cv_prog_cc_c99" = no; then
30     AC_MSG_ERROR([ISO C99 capable compiler required])
31 fi
32
33 AS=${AS-as}
34 AC_SUBST(AS)
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 -Wempty-body"
40     AC_MSG_CHECKING([supported compiler flags])
41     old_cflags=$CFLAGS
42     echo
43     for flag in $cflags_to_try; do
44         CFLAGS="$CFLAGS $flag"
45         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[return 0;]])],[
46                 echo "   $flag"
47                 RPMCFLAGS="$RPMCFLAGS $flag"
48         ],[])
49         CFLAGS=$old_cflags
50     done
51     CFLAGS="$CFLAGS $RPMCFLAGS"
52 fi
53 export CFLAGS
54
55 AC_SYS_LARGEFILE
56
57 dnl
58 dnl look for POSIX chmod attributes
59 dnl
60 AC_MSG_CHECKING(POSIX chmod)
61 touch foo.chmodtest
62 chmod 744 foo.chmodtest
63 chmod +X foo.chmodtest 2>/dev/null
64 a=`ls -l foo.chmodtest | awk '{print substr($1,1,10)}'`
65 rm -f foo.chmodtest
66 if test "$a" = "-rwxr-xr-x"; then
67     AC_MSG_RESULT(yes)
68     FIXPERMS=a+rX,u+w,g-w,o-w 
69 else
70     AC_MSG_RESULT(no (tell your OS vendor about GNU fileutils))
71     FIXPERMS=a+r,u+w,g-w,o-w 
72 fi
73 AC_SUBST(FIXPERMS)
74
75 dnl AM_DISABLE_SHARED
76 AM_PROG_LIBTOOL
77
78 AC_CHECK_TOOL(AR, ar, :)
79
80 dnl
81 dnl use defaults if cross-compiling, otherwise use the default path.
82 dnl
83 if test "$cross_compiling" = "yes"; then
84     MYPATH=":"
85 else
86     MYPATH=$PATH
87 fi
88
89 dnl
90 dnl Find some common programs
91 dnl
92 AC_PATH_PROG(__BZIP2, bzip2, /usr/bin/bzip2, $MYPATH)
93 AC_PATH_PROG(__CAT, cat, /bin/cat, $MYPATH)
94 AC_PATH_PROG(__CHGRP, chgrp, /bin/chgrp, $MYPATH)
95 AC_PATH_PROG(__CHMOD, chmod, /bin/chmod, $MYPATH)
96 AC_PATH_PROG(__CHOWN, chown, /bin/chown, $MYPATH)
97 AC_PATH_PROG(__CP, cp, /bin/cp, $MYPATH)
98 AC_PATH_PROG(__CPIO, cpio, /bin/cpio, $MYPATH)
99 AC_PATH_PROG(__CURL, curl, /usr/bin/curl, $MYPATH)
100 AC_PATH_PROG(__FILE, file, /usr/bin/file, $MYPATH)
101 AC_PATH_PROG(__GPG, gpg, /usr/bin/gpg, $MYPATH)
102 AC_PATH_PROG(__GREP, grep, /bin/grep, $MYPATH)
103 AC_PATH_PROG(__GZIP, gzip, /bin/gzip, $MYPATH)
104 AC_PATH_PROG(__UNZIP, unzip, /usr/bin/unzip, $MYPATH)
105 AC_PATH_PROG(__ID, id, /usr/bin/id, $MYPATH)
106 AC_PATH_PROG(__INSTALL, install, /usr/bin/install, $MYPATH)
107 AC_PATH_PROG(__XZ, xz, /usr/bin/xz, $MYPATH)
108 AC_PATH_PROG(__MAKE, make, /usr/bin/make, $MYPATH)
109 AC_PATH_PROG(__MKDIR, mkdir, /bin/mkdir, $MYPATH)
110 AC_PATH_PROG(__MV, mv, /bin/mv, $MYPATH)
111 AC_PATH_PROG(__PATCH, patch, /usr/bin/patch, $MYPATH)
112 AC_MSG_CHECKING(old version of patch)
113     PATCHVERSION=`patch --version 2>&1`
114
115     if test "$PATCHVERSION" = "Patch version 2.1"; then
116         AC_DEFINE(HAVE_OLDPATCH_21, 1,
117                 [Define if the patch call you'll be using is 2.1 or older])
118         AC_MSG_RESULT(patch older then 2.2 found)
119     else
120         AC_MSG_RESULT(patch later then 2.2 found)
121     fi
122
123 AC_PATH_PROG(__PERL, perl, /usr/bin/perl, $MYPATH)
124 AC_PATH_PROG(__PGP, pgp, /usr/bin/pgp, $MYPATH)
125 AC_PATH_PROG(__PYTHON, python, /usr/bin/python, $MYPATH) 
126 AC_PATH_PROG(__RM, rm, /bin/rm, $MYPATH)
127 AC_PATH_PROG(__RSH, rsh, /usr/bin/rsh, $MYPATH)
128 AC_PATH_PROG(__SED, sed, /bin/sed, $MYPATH)
129 AC_PATH_PROG(__SSH, ssh, /usr/bin/ssh, $MYPATH)
130 AC_PATH_PROG(__TAR, tar, /bin/tar, $MYPATH)
131
132 AC_PATH_PROG(__LD, ld, /usr/bin/ld, $MYPATH)
133 AC_PATH_PROG(__NM, nm, /usr/bin/nm, $MYPATH)
134 AC_PATH_PROG(__OBJCOPY, objcopy, /usr/bin/objcopy, $MYPATH)
135 AC_PATH_PROG(__OBJDUMP, objdump, /usr/bin/objdump, $MYPATH)
136 AC_PATH_PROG(__STRIP, strip, /usr/bin/strip, $MYPATH)
137 AC_PATH_PROG(__FAKECHROOT, fakechroot, /usr/bin/fakechroot, $MYPATH)
138
139 dnl see if we have a mkdir that supports `-p' for rpmbuild's purposes
140 AC_PROG_MKDIR_P
141 if ! echo $MKDIR_P | grep -q mkdir; then 
142   __MKDIR_P="`echo ${prefix}/lib/rpm/mkinstalldirs`"
143 else
144   __MKDIR_P=$MKDIR_P
145 fi
146 AC_DEFINE_UNQUOTED(__MKDIR_P, "${__MKDIR_P}",
147 [A full path to a program, possibly with arguments, that will create a
148    directory and all necessary parent directories, ala 'mkdir -p'])
149 AC_SUBST(__MKDIR_P)
150
151 #=================
152 # Check for zlib library. 
153
154 WITH_ZLIB_INCLUDE=
155 WITH_ZLIB_LIB=
156
157 AC_CHECK_HEADERS([zlib.h],[
158   AS_IF([test -z "${WITH_ZLIB_LIB}"],[
159     for zlib in z gz ; do
160       AC_CHECK_LIB(${zlib}, gzread, 
161         [WITH_ZLIB_LIB="-l${zlib}"; break])
162     done
163
164 dnl zlib-1.0.4 has not gzseek
165     AC_CHECK_LIB(${zlib}, gzseek, [AC_DEFINE(HAVE_GZSEEK, 1, [Define as 1 if your zlib has gzseek()])])
166   ])
167 ])
168
169 AC_SUBST(WITH_ZLIB_INCLUDE)
170 AC_SUBST(WITH_ZLIB_LIB)
171
172 #=================
173 # Check for bzip2 library.
174
175 AC_CHECK_HEADERS([bzlib.h],[
176   AC_CHECK_LIB(bz2, bzread, [WITH_BZ2_LIB=-lbz2],
177   [
178     AC_CHECK_LIB(bz2, BZ2_bzread,[ 
179       WITH_BZ2_LIB="-lbz2"
180       AC_DEFINE(HAVE_BZ2_1_0, 1, [Define as 1 if you bzip2 1.0])
181     ]) 
182   ])
183 ])
184 AC_SUBST(WITH_BZ2_LIB)
185
186 #=================
187 # Check for lzma library.
188
189 AC_CHECK_HEADERS([lzma.h],[
190   AC_CHECK_LIB(lzma, lzma_easy_encoder, [WITH_LZMA_LIB=-llzma])
191 ])
192 AC_SUBST(WITH_LZMA_LIB)
193
194 #=================
195
196 dnl
197 dnl Check for features
198 dnl
199
200 dnl Checks for libraries.
201
202 AC_CHECK_FUNC(gethostname, [], [
203     AC_CHECK_LIB(nsl, gethostname)
204 ])
205
206 AC_CHECK_HEADERS(poll.h)
207
208 AC_CHECK_HEADERS(pthread.h)
209
210 AC_CHECK_LIB(pthread, pthread_mutex_trylock, [], [
211   dnl OSF 5.0 has the the symbols prefixed with __ in libpthread.
212   AC_CHECK_LIB(pthread, __pthread_mutex_trylock, [], [
213     AC_CHECK_LIB(thread, mutex_lock)
214   ])
215 ])
216
217 AC_SEARCH_LIBS(aio_read, [c rt aio posix4])
218
219 AC_CHECK_FUNCS(vsnprintf snprintf)
220
221 dnl Temporary hack for MiNT.  Some functions (writev, snprintf) are
222 dnl not in the libc but in libport (for political reasons).  This check
223 dnl can hopefully be removed soon.  Please use the default action
224 dnl for this macro (not LIBS=...), otherwise the check for dbopen
225 dnl will fail.
226 AC_CHECK_LIB(port, writev)
227
228 #=================
229 # Check for libelf library. Prefer external, otherwise none.
230 WITH_LIBELF_INCLUDE=
231 WITH_LIBELF_LIB=
232 AC_CHECK_HEADER([libelf.h])
233 AC_CHECK_HEADERS([gelf.h], [
234         AC_CHECK_LIB(elf, gelf_getvernaux, [
235             AC_DEFINE(HAVE_LIBELF, 1, [Define to 1 if you have the 'elf' library (-lelf).])
236             WITH_LIBELF_LIB="-lelf"
237             WITH_LIBELF=yes
238         ])
239 ])
240 AC_SUBST(WITH_LIBELF_INCLUDE)
241 AC_SUBST(WITH_LIBELF_LIB)
242 AM_CONDITIONAL(LIBELF,[test "$WITH_LIBELF" = yes])
243
244 AC_CHECK_HEADERS([dwarf.h], [
245   WITH_LIBDWARF=yes
246 ])
247 AM_CONDITIONAL(LIBDWARF,[test "$WITH_LIBDWARF" = yes])
248
249 #=================
250 # Check for NSS library.
251 # We need nss.h from NSS which needs nspr.h. Unfortunately both glibc and NSS 
252 # have a header named nss.h... so make extra check for NSS's sechash.h 
253 # which we use too and hopefully is slightly more unique to NSS.
254 WITH_NSS_INCLUDE=
255 WITH_NSS_LIB=
256 AC_CHECK_HEADERS([nspr.h nss.h sechash.h], [], [
257   AC_MSG_ERROR([missing required NSPR / NSS header])
258 ])
259 AC_CHECK_LIB(nss3, NSS_NoDB_Init, [
260   WITH_NSS_LIB=-lnss3
261 ], [
262   AC_MSG_ERROR([missing required NSS library 'nss3'])
263 ])
264 AC_SUBST(WITH_NSS_INCLUDE)
265 AC_SUBST(WITH_NSS_LIB)
266
267 #=================
268 # Check for magic library.
269 WITH_MAGIC_INCLUDE=
270 WITH_MAGIC_LIB=
271
272 AC_CHECK_HEADER([magic.h], [
273     AC_CHECK_LIB(magic, magic_open, [
274       WITH_MAGIC_INCLUDE=
275       WITH_MAGIC_LIB="-lmagic"
276     ],[
277       AC_MSG_ERROR([missing required library 'libmagic']) 
278     ])
279 ],[
280       AC_MSG_ERROR([missing required header magic.h]) 
281 ])
282
283 AC_SUBST(WITH_MAGIC_INCLUDE)
284 AC_SUBST(WITH_MAGIC_LIB)
285
286 #=================
287 # Check for popt library.
288 WITH_POPT_INCLUDE=
289 WITH_POPT_LIB=
290
291 AC_CHECK_HEADER([popt.h], [
292   AC_CHECK_LIB(popt, poptGetContext, [
293       WITH_POPT_INCLUDE=
294       WITH_POPT_LIB="-lpopt"
295   ],[
296     AC_MSG_ERROR([missing required library popt])
297   ])
298 ],[
299   AC_MSG_ERROR([missing required header popt.h])
300 ])
301
302 AC_SUBST(WITH_POPT_INCLUDE)
303 AC_SUBST(WITH_POPT_LIB)
304
305 #=================
306 # Process --with/without-external-db
307 AC_ARG_WITH(external_db, [AS_HELP_STRING([--with-external-db],[build against an external Berkeley db])],
308 [case "$with_external_db" in
309 yes|no) ;;
310 *) AC_MSG_ERROR([invalid argument to --with-external-db]) ;;
311 esac],
312 [with_external_db=no])
313
314 case "$with_external_db" in
315 yes )
316   AC_CHECK_HEADERS([db.h],[
317     AC_CHECK_TYPE([db_threadid_t],[],
318       [AC_MSG_WARN([missing type db_threadid_t])],
319       [#include <db.h>])
320     save_LIBS="$LIBS"
321     AC_CHECK_LIB([db],[db_create],[],[
322       AC_MSG_ERROR([missing db_create in libdb])
323       ])
324     AC_CHECK_LIB([db],[db_env_create],[],[
325       AC_MSG_ERROR([missing db_env_create in libdb])
326       ])
327     AC_CHECK_LIB([db],[db_env_set_func_fsync],[],[
328       AC_MSG_ERROR([missing db_env_set_func_fsync in libdb])
329       ])
330     AC_CHECK_LIB([db],[db_strerror],[],[
331       AC_MSG_ERROR([missing db_strerror in libdb])
332       ])
333     WITH_DB_LIB=-ldb
334     LIBS="$save_LIBS"
335   ],[
336     AC_MSG_ERROR([missing required header db.h])
337   ])
338   ;;
339 * ) # Fall back to internal db if available
340   if [ test -x db/dist/configure ]; then
341     AC_DEFINE(HAVE_DB_H, 1, [Define if you have the <db3/db.h> header file])
342   else
343     AC_MSG_ERROR([internal Berkeley DB directory not present, see INSTALL])
344   fi
345   ;;
346 esac
347
348 AC_SUBST([WITH_DB_LIB])
349
350 AM_GNU_GETTEXT_VERSION([0.16.1])
351 AM_GNU_GETTEXT([external])
352
353 dnl Checks for header files we can live without.
354 AC_HEADER_STDC
355 AC_HEADER_MAJOR
356 AC_HEADER_DIRENT
357 AC_HEADER_TIME
358
359 AC_CHECK_HEADERS(locale.h)
360 AC_CHECK_HEADERS(limits.h)
361 AC_CHECK_HEADERS(fcntl.h getopt.h memory.h netdb.h)
362
363 AC_CHECK_HEADERS(sys/ipc.h)
364 AC_CHECK_HEADERS(sys/mman.h sys/utsname.h sys/wait.h)
365
366 AC_CHECK_HEADERS(mntent.h sys/mnttab.h sys/systemcfg.h)
367 AC_CHECK_HEADERS(sys/mount.h sys/mntctl.h sys/param.h sys/vmount.h)
368 AC_CHECK_HEADERS(libio.h)
369 AC_CHECK_HEADERS(mcheck.h)
370
371 AC_CHECK_HEADERS(glob.h)
372
373 dnl statfs portability fiddles.
374 dnl
375 dnl We should really emulate/steal sections of the statfs and struct statfs
376 dnl checks from GNU fileutils.
377 dnl
378 AC_MSG_CHECKING(for struct statfs)
379
380 dnl
381 dnl this is easier than nesting AC_TRY_COMPILEs...
382 dnl
383 found_struct_statfs=no
384
385 if test X$found_struct_statfs = Xno ; then
386 dnl Solaris 2.6+ wants to use statvfs
387 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
388 #ifdef HAVE_SYS_TYPES_H
389 #include <sys/types.h>
390 #endif
391 #include <sys/statvfs.h> ]], [[struct statvfs sfs;]])],[AC_MSG_RESULT(in sys/statvfs.h)
392         AC_DEFINE(STATFS_IN_SYS_STATVFS, 1,
393                 [statfs in <sys/statvfs.h> (for solaris 2.6+ systems)])
394         found_struct_statfs=yes],[])
395 fi
396
397 if test X$found_struct_statfs = Xno ; then
398 dnl first try including sys/vfs.h
399 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
400 #ifdef HAVE_SYS_TYPES_H
401 #include <sys/types.h>
402 #endif
403 #include <sys/vfs.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/vfs.h)
404         AC_DEFINE(STATFS_IN_SYS_VFS, 1, [statfs in <sys/vfs.h> (for linux systems)])
405         found_struct_statfs=yes],[])
406 fi
407
408 if test X$found_struct_statfs = Xno ; then
409 dnl ...next try including sys/mount.h
410 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
411 #ifdef HAVE_SYS_TYPES_H
412 #include <sys/types.h>
413 #endif
414 #ifdef HAVE_SYS_PARAM_H
415 #include <sys/param.h>
416 #endif
417 #include <sys/mount.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/mount.h)
418         AC_DEFINE(STATFS_IN_SYS_MOUNT, 1, [statfs in <sys/mount.h> (for Digital Unix 4.0D systems)])
419         found_struct_statfs=yes],[])
420 fi
421
422 if test X$found_struct_statfs = Xno ; then
423 dnl ...still no joy.  Try sys/statfs.h
424 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
425 #ifdef HAVE_SYS_TYPES_H
426 #include <sys/types.h>
427 #endif
428 #include <sys/statfs.h> ]], [[struct statfs sfs;]])],[AC_MSG_RESULT(in sys/statfs.h)
429         AC_DEFINE(STATFS_IN_SYS_STATFS, 1, [statfs in <sys/statfs.h> (for Irix 6.4 systems)])
430         found_struct_statfs=yes],[])
431 fi
432
433 if test X$found_struct_statfs = Xno ; then
434 dnl ...no luck.  Warn the user of impending doom.
435 AC_MSG_WARN(not found)
436 fi
437
438 dnl
439 dnl if we found the struct, see if it has the f_bavail member.  Some OSes
440 dnl don't, including IRIX 6.5+
441 dnl
442 if test X$found_struct_statfs = Xyes ; then
443 AC_MSG_CHECKING(for f_bavail member in struct statfs)
444 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
445 #ifdef HAVE_SYS_TYPES_H
446 #include <sys/types.h>
447 #endif
448 #if STATFS_IN_SYS_STATVFS
449 # include <sys/statvfs.h>
450   typedef struct statvfs STATFS_t;
451 #else
452   typedef struct statfs STATFS_t;
453 # if STATFS_IN_SYS_VFS
454 #  include <sys/vfs.h>
455 # elif STATFS_IN_SYS_MOUNT
456 #  include <sys/mount.h>
457 # elif STATFS_IN_SYS_STATFS
458 #  include <sys/statfs.h>
459 # endif
460 #endif ]], [[STATFS_t sfs;
461         sfs.f_bavail = 0;]])],[AC_MSG_RESULT(yes)
462         AC_DEFINE(STATFS_HAS_F_BAVAIL, 1, [Define if struct statfs has the f_bavail member])],[AC_MSG_RESULT(no)
463 ])
464 fi
465
466 if test X$found_struct_statfs = Xyes ; then
467 dnl
468 dnl now check to see if we have the 4-argument variant of statfs()
469 dnl this pretty much requires AC_RUN_IFELSE([AC_LANG_SOURCE([[]])],[],[],[])
470 dnl
471 AC_MSG_CHECKING([if statfs() requires 4 arguments])
472 AC_RUN_IFELSE([AC_LANG_SOURCE([[
473 #ifdef HAVE_SYS_TYPES_H
474 #include <sys/types.h>
475 #endif
476 #ifdef STATFS_IN_SYS_VFS
477 #include <sys/vfs.h>
478 #elif STATFS_IN_SYS_MOUNT
479 #include <sys/mouht.h>
480 #elif STATFS_IN_SYS_STATFS
481 #include <sys/statfs.h>
482 #endif
483 main() {
484         struct statfs sfs;
485         exit (statfs(".", &sfs, sizeof(sfs), 0));
486 }
487 ]])],[AC_MSG_RESULT(yes)
488         AC_DEFINE(STAT_STATFS4, 1, [Define if the statfs() call takes 4 arguments])],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)
489 ])
490 fi
491
492 AC_C_INLINE
493
494 dnl look for libc features
495
496 dnl Check for missing typedefs
497 AC_TYPE_MODE_T
498 AC_TYPE_OFF_T
499 AC_TYPE_PID_T
500 AC_TYPE_SIZE_T
501
502 dnl Checks for library functions.
503 AC_FUNC_VPRINTF
504 AC_FUNC_MMAP
505
506 AC_CHECK_FUNCS(mtrace)
507 AC_CHECK_FUNCS(strndup)
508 AC_CHECK_FUNCS(putenv)
509
510 AC_REPLACE_FUNCS(stpcpy stpncpy)
511
512 AC_CHECK_FUNCS(__secure_getenv)
513
514 AC_CHECK_FUNCS(
515    [mkstemp getcwd basename dirname realpath setenv unsetenv ftok regcomp lchown],
516    [], [AC_MSG_ERROR([function required by rpm])])
517
518 dnl XXX Glob *is* broken on linux with libc5, solaris and possibly aix when
519 dnl %files gets something like
520 dnl     /usr/*/locale/*/LC_MESSAGES/*.mo
521 dnl (Note: more than one asterisk in glob pattern.)
522 dnl
523 dnl XXX Glob is "fixed" in glibc-2.3.3-61, but the cost is that
524 dnl dangling symlinks are no longer globbed. Always use the internal glob.
525 AC_DEFINE(USE_GNU_GLOB, 1, [Use the included glob.c?])
526 AC_LIBOBJ(glob)
527 AC_LIBOBJ(fnmatch)
528
529 dnl check if python is requested
530 AC_ARG_ENABLE(python, [AS_HELP_STRING([--enable-python],[build rpm python bindings])],
531 [case "$enable_python" in
532 yes|no) ;;
533 *) AC_MSG_ERROR([invalid argument to --enable-python])
534   ;;
535 esac],
536 [enable_python=no])
537
538 AS_IF([test "$enable_python" = yes],[
539   AM_PATH_PYTHON([2.6],[
540     WITH_PYTHON_INCLUDE=`${PYTHON} -c 'from distutils.sysconfig import *; import sys; sys.stdout.write(get_python_inc())'`
541     WITH_PYTHON_SUBPACKAGE=1
542     save_CPPFLAGS="$CPPFLAGS"
543     CPPFLAGS="$CPPFLAGS -I$WITH_PYTHON_INCLUDE"
544     AC_CHECK_HEADER([Python.h],[],
545       [AC_MSG_ERROR([missing Python.h])
546       ])
547     CPPFLAGS="$save_CPPFLAGS"
548     save_LIBS="$LIBS"
549     AC_SEARCH_LIBS([Py_Main],[python${PYTHON_VERSION} python],[
550       WITH_PYTHON_LIB="$ac_res"
551     ],[AC_MSG_ERROR([missing python library])
552     ])
553     LIBS="$save_LIBS"
554   ])
555 ],[
556     WITH_PYTHON_INCLUDE=
557     WITH_PYTHON_LIB=
558     WITH_PYTHON_SUBPACKAGE=0
559 ])
560
561 AC_SUBST(WITH_PYTHON_INCLUDE)
562 AC_SUBST(WITH_PYTHON_LIB)
563
564 AM_CONDITIONAL(PYTHON,[test "$WITH_PYTHON_SUBPACKAGE" = 1])
565
566 AC_PATH_PROG(DOXYGEN, doxygen, no)
567 dnl
568 dnl Only build internal API + source hacking docs on request
569 dnl
570 AC_ARG_WITH(hackingdocs, [AS_HELP_STRING([--with-hackingdocs],[build rpm hacking docs])],,[with_hackingdocs=no])
571
572 case "$with_hackingdocs" in
573 auto)
574   AS_IF([test "$DOXYGEN" = no],[with_hackingdocs=no],[with_hackingdocs=no])
575   ;;
576 yes)
577   AS_IF([test "$DOXYGEN" = no],
578     [AC_MSG_ERROR([rpm hacking docs eeds doxygen in PATH])])
579   ;;
580 esac
581 AC_CHECK_PROG(HAVE_DOT,[dot],[YES],[NO])
582
583 WITH_SELINUX_LIB=
584 AC_ARG_WITH(selinux, [AS_HELP_STRING([--with-selinux],[build with selinux support])],
585 [case "$with_selinux" in
586 yes|no) ;;
587 *) AC_MSG_ERROR([invalid argument to --with-selinux])
588   ;;
589 esac],
590 [with_selinux=no])
591
592 AS_IF([test "$with_selinux" = yes],[
593   AC_CHECK_HEADER([selinux/selinux.h],[
594     AC_CHECK_LIB(selinux,[is_selinux_enabled],[with_selinux=yes],[
595       AC_MSG_ERROR([--with-selinux given, but libselinux not found])])
596   ],[
597     AC_MSG_ERROR([--with-selinux given, but selinux/selinux.h not found])
598   ])
599 ])
600
601 AS_IF([test "$with_selinux" = yes],[
602   AC_DEFINE(WITH_SELINUX, 1, [Build with selinux support?])
603   WITH_SELINUX_LIB="-lselinux"
604 ])
605 AC_SUBST(WITH_SELINUX_LIB)
606 AM_CONDITIONAL(SELINUX,[test "$with_selinux" = yes])
607
608 # libcap
609 WITH_CAP_LIB=
610 AC_ARG_WITH(cap, [AS_HELP_STRING([--with-cap],[build with capability support])],
611 [case "$with_cap" in
612 yes|no) ;;
613 *) AC_MSG_ERROR([invalid argument to --with-cap])
614   ;;
615 esac],
616 [with_cap=no])
617
618 AS_IF([test "$with_cap" = yes],[
619   AC_CHECK_HEADER([sys/capability.h],[
620     AC_CHECK_LIB(cap,[cap_get_file], [
621       with_cap=yes
622       save_LIBS="$LIBS"
623       AC_CHECK_LIB(cap,[cap_compare], [
624         AC_DEFINE(HAVE_CAP_COMPARE, 1, [Have cap_compare function?])
625       ])
626       LIBS="$save_LIBS"
627     ],[
628       AC_MSG_ERROR([--with-cap given, but libcap not found])])
629   ],[
630     AC_MSG_ERROR([--with-cap given, but sys/capability.h not found])
631   ])
632 ])
633
634 AS_IF([test "$with_cap" = yes],[
635   AC_DEFINE(WITH_CAP, 1, [Build with capability support?])
636   WITH_CAP_LIB="-lcap"
637 ])
638 AC_SUBST(WITH_CAP_LIB)
639 AM_CONDITIONAL(CAP,[test "$with_cap" = yes])
640
641 WITH_ACL_LIB=
642 AC_ARG_WITH(acl, [AS_HELP_STRING([--with-acl],[build with acl support])],
643 [case "$with_acl" in
644 yes|no) ;;
645 *) AC_MSG_ERROR([invalid argument to --with-acl])
646   ;;
647 esac],
648 [with_acl=no])
649
650 AS_IF([test "$with_acl" = yes],[
651   dnl verification uses non-portable acl_equiv_mode() 
652   AC_CHECK_HEADER([acl/libacl.h],[
653     AC_CHECK_LIB(acl,[acl_equiv_mode],[with_acl=yes],[
654       AC_MSG_ERROR([--with-acl given, but libacl not found or not suitable])])
655   ],[
656     AC_MSG_ERROR([--with-acl given, but acl/libacl.h not found])
657   ])
658 ])
659
660 AS_IF([test "$with_acl" = yes],[
661   AC_DEFINE(WITH_ACL, 1, [Build with acl support?])
662   WITH_ACL_LIB="-lacl"
663 ])
664 AC_SUBST(WITH_ACL_LIB)
665 AM_CONDITIONAL(ACL,[test "$with_acl" = yes])
666
667 WITH_LUA_LIB=
668 WITH_LUA_INCLUDE=
669 AC_ARG_WITH(lua, [AS_HELP_STRING([--with-lua],[build with lua support])],,[with_lua=yes])
670 AS_IF([test "$with_lua" = yes],[
671   AC_CHECK_HEADER([lua.h],[
672     AC_CHECK_LIB(lua,[luaL_openlibs],[with_lua=yes],[
673       AC_MSG_ERROR([--with-lua given, but liblua not found])
674     ], 
675     [-lm])
676   ],[
677       AC_MSG_ERROR([--with-lua given, but lua.h not found])
678   ])
679 ])
680
681 AS_IF([test "$with_lua" = yes],[
682   AC_DEFINE(WITH_LUA, 1, [Build with lua support?])
683   WITH_LUA_INCLUDE=
684   WITH_LUA_LIB="-llua -lm" 
685 ])
686 AC_SUBST(WITH_LUA_LIB)
687 AC_SUBST(WITH_LUA_INCLUDE)
688 AM_CONDITIONAL(WITH_LUAEXT,[test "$with_lua" = yes])
689
690 with_dmalloc=no
691 AC_ARG_WITH(dmalloc, [AS_HELP_STRING([--with-dmalloc],[build with dmalloc debugging support])])
692 if test "$with_dmalloc" = yes ; then
693   AC_DEFINE(DMALLOC, 1, [Build with dmalloc support?])
694   LIBS="$LIBS -ldmalloc"
695 fi
696
697 AC_CHECK_FUNCS(setlocale)
698
699 AC_CHECK_FUNCS(getpassphrase)
700
701 AC_CHECK_FUNC(getmntent, AC_DEFINE(HAVE_GETMNTENT, 1, [Define if you have the getmntent() function]), [
702   AC_CHECK_FUNC(mntctl, AC_DEFINE(HAVE_MNTCTL, 1, [Define as 1 if you have mntctl() (only aix?)]),[
703     AC_CHECK_FUNC(getmntinfo, AC_DEFINE(HAVE_GETMNTINFO, 1, [Define as 1 if you have getmntinfo() (Mac OS X)]), [
704       AC_CHECK_FUNC(getmntinfo_r, AC_DEFINE(HAVE_GETMNTINFO_R, 1, [Define as 1 if you have getmntinfo_r() (only osf?)]), [
705         AC_CHECK_LIB(c_r, getmntinfo_r, [LIBS="$LIBS -lc_r"; 
706                                         AC_DEFINE(HAVE_GETMNTINFO_R, 1, [Define as 1 if you have getmntinfo_r() (only osf?)])], [
707                  AC_DEFINE([USE_GETMNTENT], 1, [Defined if getmntent replacement is used])
708                  AC_LIBOBJ(getmntent)])
709       ])
710     ])
711   ])
712 ])
713
714 if echo "$host_os" | grep sco > /dev/null; then
715         echo "hacking things up for sco"
716         AC_DEFINE(NEED_STRINGS_H, 1, [Define as one if we need to include <strings.h> (along with <string.h>)])
717         AC_DEFINE(HAVE_STRUCT_MNTTAB, 1,
718         [Define as 1 if you have "struct mnttab" (only sco?)])
719 elif echo "$host_os" | grep sunos > /dev/null; then
720         echo "hacking things up for sunos"
721         CFLAGS="$CFLAGS -D__USE_FIXED_PROTOTYPES__"
722         AC_DEFINE(NEED_STRINGS_H, 1, [Define as one if we need to include <strings.h> (along with <string.h>)])
723 fi
724
725 #
726 # get rid of the 4-th tuple, if config.guess returned "linux-gnu" for host_os
727 #
728 host_os_gnu=-gnu
729 if echo "$host_os" | grep '.*-gnulibc1' > /dev/null ; then
730         host_os=`echo "${host_os}" | sed 's/-gnulibc1$//'`
731 fi
732 if echo "$host_os" | grep '.*-gnueabi' > /dev/null ; then
733         host_os=`echo "${host_os}" | sed 's/-gnueabi$//'`
734         host_os_gnu=-gnueabi
735 fi
736 if echo "$host_os" | grep '.*-gnu' > /dev/null ; then
737         host_os=`echo "${host_os}" | sed 's/-gnu$//'`
738 fi
739
740 changequote(<, >)
741 host_os_exact="${host_os}"
742 host_os_major=`echo "${host_os}" | sed 's/\..*$//'`
743 host_os_noversion=`echo "${host_os}" | sed 's/[0-9]*\..*$//'`
744 changequote([, ])
745
746 rm -f ./find-provides
747 if test -f ${srcdir}/autodeps/${host_cpu}-${host_os_exact}.prov ; then
748         echo "using ${srcdir}/autodeps/${host_cpu}-${host_os_exact}.prov for automatic provides generation"
749     ln -s ${srcdir}/autodeps/${host_cpu}-${host_os_exact}.prov ./find-provides
750 elif test -f ${srcdir}/autodeps/${host_os_exact}.prov ; then
751         echo "using ${srcdir}/autodeps/${host_os_exact}.prov for automatic provides generation"
752     ln -s ${srcdir}/autodeps/${host_os_exact}.prov ./find-provides
753 elif test -f ${srcdir}/autodeps/${host_os_major}.prov ; then
754         echo "using ${srcdir}/autodeps/${host_os_major}.prov for automatic provides generation"
755     ln -s ${srcdir}/autodeps/${host_os_major}.prov ./find-provides
756 elif test -f ${srcdir}/autodeps/${host_os_noversion}.prov ; then
757         echo "using ${srcdir}/autodeps/${host_os_noversion}.prov for automatic provides generation"
758     ln -s ${srcdir}/autodeps/${host_os_noversion}.prov ./find-provides
759 else
760     echo "*** no default provides information is available for ${host_os_noversion}"
761     ln -s ${srcdir}/autodeps/none ./find-provides
762 fi
763
764 rm -f ./find-requires
765 if test -f ${srcdir}/autodeps/${host_cpu}-${host_os_exact}.req ; then
766         echo "using ${srcdir}/autodeps/${host_cpu}-${host_os_exact}.req for automatic requires generation"
767     ln -s ${srcdir}/autodeps/${host_cpu}-${host_os_exact}.req ./find-requires
768 elif test -f ${srcdir}/autodeps/${host_os_exact}.req ; then
769         echo "using ${srcdir}/autodeps/${host_os_exact}.req for automatic requires generation"
770     ln -s ${srcdir}/autodeps/${host_os_exact}.req ./find-requires
771 elif test -f ${srcdir}/autodeps/${host_os_major}.req ; then
772         echo "using ${srcdir}/autodeps/${host_os_major}.req for automatic requires generation"
773     ln -s ${srcdir}/autodeps/${host_os_major}.req ./find-requires
774 elif test -f ${srcdir}/autodeps/${host_os_noversion}.req ; then
775         echo "using ${srcdir}/autodeps/${host_os_noversion}.req for automatic requires generation"
776     ln -s ${srcdir}/autodeps/${host_os_noversion}.req ./find-requires
777 else
778     echo "*** no default requires information is available for ${host_os_noversion}"
779     ln -s ${srcdir}/autodeps/none ./find-requires
780 fi
781
782 dnl Determine the canonical arch-vendor-os for the host machine
783 case "${host_cpu}" in
784 *86)            RPMCANONCOLOR=0; RPMCANONARCH=i386 ;;
785 ia32e*)         RPMCANONCOLOR=3; RPMCANONARCH=ia32e ;;
786 amd64*)         RPMCANONCOLOR=3; RPMCANONARCH=amd64 ;;
787 x86_64*)        RPMCANONCOLOR=3; RPMCANONARCH=x86_64 ;;
788 alpha*)         RPMCANONCOLOR=0; RPMCANONARCH=alpha ;;
789 sparc64*)       RPMCANONCOLOR=3; RPMCANONARCH=sparc64 ;;
790 sparc*)         RPMCANONCOLOR=3; RPMCANONARCH=sparc ;;
791 ia64*)          RPMCANONCOLOR=2; RPMCANONARCH=ia64 ;;
792 s390x*)         RPMCANONCOLOR=3; RPMCANONARCH=s390x ;;
793 s390*)          RPMCANONCOLOR=0; RPMCANONARCH=s390 ;;
794 powerpc64*|ppc64*)      RPMCANONCOLOR=3; RPMCANONARCH=ppc64 ;;
795 powerpc*|ppc*)  RPMCANONCOLOR=0; RPMCANONARCH=ppc ;;
796 arm*)           RPMCANONCOLOR=0; RPMCANONARCH=arm ;;
797 mipsel*)        RPMCANONCOLOR=0; RPMCANONARCH=mipsel ;;
798 mips*)          RPMCANONCOLOR=0; RPMCANONARCH=mips ;;
799 m68k*)          RPMCANONCOLOR=0; RPMCANONARCH=m68k ;;
800 sh3*)           RPMCANONCOLOR=0; RPMCANONARCH=sh3 ;;
801 sh4*)           RPMCANONCOLOR=0; RPMCANONARCH=sh4 ;;
802 *)              RPMCANONCOLOR=0; RPMCANONARCH=unknown ;;
803 esac
804 case "${host_os_noversion}" in
805 mint)           RPMCANONARCH=m68kmint ;;
806 esac
807 RPMCANONVENDOR="$build_vendor"
808 case "${build_vendor}" in
809 unknown|pc|ibm|redhat|pld|mandrake|conectiva|lvr|yellowdog|caos|suse)
810         test -f /etc/redhat-release &&          RPMCANONVENDOR=redhat
811         test -f /etc/SuSE-release &&            RPMCANONVENDOR=suse
812         test -f /etc/pld-release &&             RPMCANONVENDOR=pld
813         test -f /etc/mandrake-release &&        RPMCANONVENDOR=mandrake
814         test -f /etc/conectiva-release &&       RPMCANONVENDOR=conectiva
815         test -f /etc/lvr-release &&             RPMCANONVENDOR=lvr
816         test -f /etc/yellowdog-release &&       RPMCANONVENDOR=yellowdog
817         test -f /etc/caos-release &&            RPMCANONVENDOR=caos
818         ;;
819 esac
820 RPMCANONOS="$host_os_noversion"
821 RPMCANONGNU="$host_os_gnu"
822 AC_SUBST(RPMCANONCOLOR)
823 AC_SUBST(RPMCANONARCH)
824 AC_SUBST(RPMCANONVENDOR)
825 AC_SUBST(RPMCANONOS)
826 AC_SUBST(RPMCANONGNU)
827 AC_DEFINE_UNQUOTED([RPMCANONVENDOR],["${RPMCANONVENDOR}"],[canonical vendor])
828
829 if test X"$prefix" = XNONE ; then
830     usrprefix="$ac_default_prefix"
831 else
832     usrprefix=$prefix
833 fi
834
835 RPMCONFIGDIR="`echo ${usrprefix}/lib/rpm`"
836 AC_SUBST(RPMCONFIGDIR)
837
838 AC_SUBST(OBJDUMP)
839
840 if test "$with_external_db" = no; then
841     AC_CONFIG_SUBDIRS(db3)
842 fi
843
844 AM_CONDITIONAL([WITH_INTERNAL_DB],[test "$with_external_db" = no])
845 AM_CONDITIONAL([DOXYGEN],[test "$DOXYGEN" != no])
846 AM_CONDITIONAL([HACKINGDOCS],[test "$with_hackingdocs" = yes])
847
848 AC_PATH_PROG(AUTOM4TE,autom4te,:)
849
850 AC_SUBST([dirstamp],[\${am__leading_dot}dirstamp])
851
852 AC_CONFIG_FILES([Makefile
853         rpmio/Makefile lib/Makefile build/Makefile
854         po/Makefile.in scripts/Makefile 
855         misc/Makefile 
856         doc/Makefile
857         python/Makefile
858         luaext/Makefile
859         tests/Makefile
860   ])
861 AC_OUTPUT