3 AC_CONFIG_AUX_DIR(config)
4 AC_CONFIG_HEADERS([lib/config.h])
5 AH_BOTTOM([#include "dirpaths.h"])
10 dnl This is to figure out the version number and the date....
12 E2FSPROGS_VERSION=`grep E2FSPROGS_VERSION ${srcdir}/version.h \
13 | awk '{print $3}' | tr \" " " | awk '{print $1}'`
14 DATE=`grep E2FSPROGS_DATE ${srcdir}/version.h | awk '{print $3}' \
16 E2FSPROGS_DAY=`echo $DATE | awk -F- '{print $1}'`
17 MONTH=`echo $DATE | awk -F- '{print $2}'`
18 YEAR=`echo $DATE | awk -F- '{print $3}'`
20 if expr $YEAR ">" 1900 > /dev/null ; then
22 elif expr $YEAR ">" 90 >/dev/null ; then
23 E2FSPROGS_YEAR=19$YEAR
25 E2FSPROGS_YEAR=20$YEAR
29 Jan) MONTH_NUM=01; E2FSPROGS_MONTH="January" ;;
30 Feb) MONTH_NUM=02; E2FSPROGS_MONTH="February" ;;
31 Mar) MONTH_NUM=03; E2FSPROGS_MONTH="March" ;;
32 Apr) MONTH_NUM=04; E2FSPROGS_MONTH="April" ;;
33 May) MONTH_NUM=05; E2FSPROGS_MONTH="May" ;;
34 Jun) MONTH_NUM=06; E2FSPROGS_MONTH="June" ;;
35 Jul) MONTH_NUM=07; E2FSPROGS_MONTH="July" ;;
36 Aug) MONTH_NUM=08; E2FSPROGS_MONTH="August" ;;
37 Sep) MONTH_NUM=09; E2FSPROGS_MONTH="September" ;;
38 Oct) MONTH_NUM=10; E2FSPROGS_MONTH="October" ;;
39 Nov) MONTH_NUM=11; E2FSPROGS_MONTH="November" ;;
40 Dec) MONTH_NUM=12; E2FSPROGS_MONTH="December" ;;
41 *) AC_MSG_WARN([Unknown month $MONTH??]) ;;
44 base_ver=`echo $E2FSPROGS_VERSION | \
45 sed -e 's/-WIP//' -e 's/pre-//' -e 's/-PLUS//'`
47 date_spec=${E2FSPROGS_YEAR}.${MONTH_NUM}.${E2FSPROGS_DAY}
49 case $E2FSPROGS_VERSION in
51 E2FSPROGS_PKGVER="$base_ver~WIP-$E2FSPROGS_YEAR-$MONTH_NUM-$E2FSPROGS_DAY"
54 E2FSPROGS_PKGVER="$base_ver"
58 unset DATE MONTH YEAR base_ver pre_vers date_spec
59 AC_MSG_RESULT([Generating configuration file for e2fsprogs version $E2FSPROGS_VERSION])
60 AC_MSG_RESULT([Release date is ${E2FSPROGS_MONTH}, ${E2FSPROGS_YEAR}])
61 AC_SUBST(E2FSPROGS_YEAR)
62 AC_SUBST(E2FSPROGS_MONTH)
63 AC_SUBST(E2FSPROGS_DAY)
64 AC_SUBST(E2FSPROGS_VERSION)
65 AC_SUBST(E2FSPROGS_PKGVER)
68 dnl Check to see if libdl exists for the sake of dlopen
71 AC_CHECK_LIB(dl, dlopen,
73 AC_DEFINE(HAVE_DLOPEN, 1, [Define to 1 if dlopen/libdl exists])])
79 AC_ARG_WITH([diet-libc],
80 [ --with-diet-libc use diet libc],
81 CC="diet cc -nostdinc"
83 AC_MSG_RESULT(CC=$CC))dnl
86 AC_HELP_STRING([--with-cc],[no longer supported, use CC= instead]),
87 AC_MSG_ERROR([--with-cc no longer supported; use CC= instead]))
90 AC_HELP_STRING([--with-ccopts],[no longer supported, use CFLAGS= instead]),
91 AC_MSG_ERROR([--with-ccopts no longer supported; use CFLAGS= instead]))
94 AC_HELP_STRING([--with-ldopts],[no longer supported, use LDFLAGS= instead]),
95 AC_MSG_ERROR([--with-ldopts no longer supported; use LDFLAGS= instead]))
98 if test "$GCC" = yes; then
104 dnl Alpha computers use fast and imprecise floating point code that may
105 dnl miss exceptions by default. Force sane options if we're using GCC.
106 AC_MSG_CHECKING(for additional special compiler flags)
110 alpha) addcflags="-mieee" ;;
113 if test "x$addcflags" != x
115 AC_MSG_RESULT($addcflags)
116 CFLAGS="$addcflags $CFLAGS"
118 AC_MSG_RESULT([[(none)]])
121 dnl Set default values for library extentions. Will be dealt with after
122 dnl parsing configuration opions, which may modify these
128 dnl Allow separate `root_prefix' to be specified
130 AC_ARG_WITH([root-prefix],
131 [ --with-root-prefix=PREFIX override prefix variable for files to be placed in the root],
132 root_prefix=$withval,
135 dnl handle --enable-maintainer-mode
137 AC_ARG_ENABLE([maintainer-mode],
138 [ --enable-maintainer-mode enable makefile rules useful for maintainers],
139 if test "$enableval" = "no"
142 AC_MSG_RESULT([Disabling maintainer mode])
145 AC_MSG_RESULT([Enabling maintainer mode])
149 AC_MSG_RESULT([Disabling maintainer mode by default])
151 AC_SUBST(MAINTAINER_CMT)
153 dnl handle --enable-symlink-install
155 AC_ARG_ENABLE([symlink-install],
156 [ --enable-symlink-install use symlinks when installing instead of hard links],
157 if test "$enableval" = "no"
159 LINK_INSTALL_FLAGS=-f
160 AC_MSG_RESULT([Disabling symlinks for install])
162 LINK_INSTALL_FLAGS=-sf
163 AC_MSG_RESULT([Enabling symlinks for install])
166 LINK_INSTALL_FLAGS=-f
167 AC_MSG_RESULT([Disabling symlinks for install by default])
169 AC_SUBST(LINK_INSTALL_FLAGS)
171 dnl handle --enable-relative-symlinks
173 AC_ARG_ENABLE([symlink-relative-symlinks],
174 [ --enable-relative-symlinks use relative symlinks when installing],
175 if test "$enableval" = "no"
178 AC_MSG_RESULT([Disabling relative symlinks for install])
180 SYMLINK_RELATIVE=--relative
181 AC_MSG_RESULT([Enabling symlinks for install])
185 AC_MSG_RESULT([Disabling relative symlinks for install by default])
187 AC_SUBST(SYMLINK_RELATIVE)
189 dnl handle --enable-symlink-build
191 AC_ARG_ENABLE([symlink-build],
192 [ --enable-symlink-build use symlinks while building instead of hard links],
193 if test "$enableval" = "no"
196 AC_MSG_RESULT([Disabling symlinks for build])
199 AC_MSG_RESULT([Enabling symlinks for build])
203 AC_MSG_RESULT([Disabling symlinks for build by default])
205 AC_SUBST(LINK_BUILD_FLAGS)
207 dnl handle --enable-verbose-makecmds
209 AC_ARG_ENABLE([verbose-makecmds],
210 [ --enable-verbose-makecmds enable verbose make command output],
211 if test "$enableval" = "no"
213 AC_MSG_RESULT([Disabling verbose make commands])
217 AC_MSG_RESULT([Enabling verbose make commands])
222 AC_MSG_RESULT([Disabling verbose make commands])
229 dnl handle --enable-lfsck
231 AC_ARG_ENABLE([lfsck],
232 [ --disable-lfsck disable EXPERIMENTAL Lustre lfsck support],
233 if test "$enableval" = "no"
237 ENABLE_LFSCK="--disable-lfsck"
238 echo "Disabling Lustre lfsck support"
242 ENABLE_LFSCK="--enable-lfsck"
243 AC_DEFINE(HAVE_LFSCK, 1, [Define to 1 if Lustre lfsck is enabled])
244 echo "Enabling Lustre lfsck support"
250 AC_DEFINE(HAVE_LFSCK, 1, [Define to 1 if Lustre lfsck is enabled])
251 echo "Enabling Lustre lfsck support by default"
255 AC_SUBST(ENABLE_LFSCK)
257 dnl set lustre include path and build lfsck
259 AC_ARG_WITH([lustre],
260 [ --with-lustre=LUSTRE path to Lustre sources for lfsck (default=/usr for RPM)],
261 AC_MSG_RESULT(LUSTRE is in $withval)
263 WITH_LUSTRE="--with-lustre=$withval",
268 AC_SUBST(WITH_LUSTRE)
270 AS_IF([test "x$enable_lfsck" != "xno"],
272 AC_CHECK_FILE($LUSTRE/include/lustre/liblustreapi.h,,
273 AC_CHECK_FILE($LUSTRE/lustre/include/lustre/liblustreapi.h,,
274 AC_MSG_ERROR([No lustre includes found.]))
276 dnl # Disable for old autoconf that doesn't check header usability.
277 dnl # Supposed to check if lustre_idl.h is buildable from userspace.
278 dnl AC_CHECK_HEADER($LUSTRE/lustre/include/lustre/lustre_idl.h,
279 dnl AC_DEFINE(HAVE_LUSTRE_LUSTRE_IDL_H),
280 dnl AC_CHECK_HEADER($LUSTRE/include/lustre/lustre_idl.h,
281 dnl AC_DEFINE(HAVE_LUSTRE_LUSTRE_IDL_H),)
285 dnl handle --enable-compression
287 AC_ARG_ENABLE([compression],
288 [ --enable-compression enable EXPERIMENTAL compression support],
289 if test "$enableval" = "no"
291 AC_MSG_RESULT([Disabling compression support])
293 AC_DEFINE(ENABLE_COMPRESSION, 1,
294 [Define to 1 if ext2 compression enabled])
295 AC_MSG_RESULT([Enabling compression support])
296 AC_MSG_WARN([Compression support is experimental])
299 AC_MSG_RESULT([Disabling compression support by default])
302 dnl handle --enable-htree
304 AH_TEMPLATE([ENABLE_HTREE], [Define to 1 if ext3/4 htree support enabled])
305 AC_ARG_ENABLE([htree],
306 [ --enable-htree enable EXPERIMENTAL htree directory support],
307 if test "$enableval" = "no"
310 AC_MSG_RESULT([Disabling htree directory support])
313 AC_DEFINE(ENABLE_HTREE, 1)
314 AC_MSG_RESULT([Enabling htree directory support])
318 AC_DEFINE(ENABLE_HTREE, 1)
319 AC_MSG_RESULT([Enabling htree directory support by default])
323 dnl This needs to be before all of the --enable-*-shlibs options
325 E2_PKG_CONFIG_STATIC=--static
329 dnl handle --enable-elf-shlibs
331 AC_ARG_ENABLE([elf-shlibs],
332 [ --enable-elf-shlibs select ELF shared libraries],
333 if test "$enableval" = "no"
336 MAKEFILE_ELF=/dev/null
337 AC_MSG_RESULT([Disabling ELF shared libraries])
339 E2_PKG_CONFIG_STATIC=
341 MAKEFILE_ELF=$srcdir/lib/Makefile.elf-lib
344 MAKEFILE_ELF=$srcdir/lib/Makefile.solaris-lib
350 LDFLAG_DYNAMIC=['-Wl,-rpath-link,$(top_builddir)/lib']
351 AC_MSG_RESULT([Enabling ELF shared libraries])
354 MAKEFILE_ELF=/dev/null
356 AC_MSG_RESULT([Disabling ELF shared libraries by default])
359 AC_SUBST_FILE(MAKEFILE_ELF)
361 dnl handle --enable-bsd-shlibs
363 AC_ARG_ENABLE([bsd-shlibs],
364 [ --enable-bsd-shlibs select BSD shared libraries],
365 if test "$enableval" = "no"
368 MAKEFILE_BSDLIB=/dev/null
369 AC_MSG_RESULT([Disabling BSD shared libraries])
371 E2_PKG_CONFIG_STATIC=
373 MAKEFILE_BSDLIB=$srcdir/lib/Makefile.bsd-lib
377 MAKEFILE_BSDLIB=$srcdir/lib/Makefile.darwin-lib
381 AC_MSG_RESULT([Enabling BSD shared libraries])
384 MAKEFILE_BSDLIB=/dev/null
386 AC_MSG_RESULT([Disabling BSD shared libraries by default])
389 AC_SUBST_FILE(MAKEFILE_BSDLIB)
391 dnl handle --enable-profile
393 AC_ARG_ENABLE([profile],
394 [ --enable-profile build profiling libraries],
395 if test "$enableval" = "no"
398 MAKEFILE_PROFILE=/dev/null
399 AC_MSG_RESULT([Disabling profiling libraries])
402 MAKEFILE_PROFILE=$srcdir/lib/Makefile.profile
403 PROFILED_LIB_EXT=_p.a
404 AC_MSG_RESULT([Building profiling libraries])
408 MAKEFILE_PROFILE=/dev/null
409 AC_MSG_RESULT([Disabling profiling libraries by default])
411 AC_SUBST(PROFILE_CMT)
412 AC_SUBST_FILE(MAKEFILE_PROFILE)
414 dnl handle --enable-checker
416 AC_ARG_ENABLE([checker],
417 [ --enable-checker build checker libraries],
418 if test "$enableval" = "no"
421 MAKEFILE_CHECKER=/dev/null
422 AC_MSG_RESULT([Disabling checker libraries])
425 MAKEFILE_CHECKER=$srcdir/lib/Makefile.checker
426 AC_MSG_RESULT([Building checker libraries])
430 MAKEFILE_CHECKER=/dev/null
431 AC_MSG_RESULT([Disabling checker libraries by default])
433 AC_SUBST(CHECKER_CMT)
434 AC_SUBST_FILE(MAKEFILE_CHECKER)
436 dnl Substitute library extensions
439 AC_SUBST(STATIC_LIB_EXT)
440 AC_SUBST(PROFILED_LIB_EXT)
441 AC_SUBST(LDFLAG_DYNAMIC)
442 AC_SUBST(PRIVATE_LIBS_CMT)
444 dnl handle --enable-jbd-debug
446 AC_ARG_ENABLE([jbd-debug],
447 [ --enable-jbd-debug enable journal debugging],
448 if test "$enableval" = "no"
450 AC_MSG_RESULT([Disabling journal debugging])
452 AC_DEFINE(CONFIG_JBD_DEBUG, 1,
453 [Define to 1 if debugging ext3/4 journal code])
454 AC_MSG_RESULT([Enabling journal debugging])
457 AC_MSG_RESULT([Disabling journal debugging by default])
460 dnl handle --enable-blkid-debug
462 AC_ARG_ENABLE([blkid-debug],
463 [ --enable-blkid-debug enable blkid debugging],
464 if test "$enableval" = "no"
466 AC_MSG_RESULT([Disabling blkid debugging])
468 AC_DEFINE(CONFIG_BLKID_DEBUG, 1,
469 [Define to 1 if debugging the blkid library])
470 AC_MSG_RESULT([Enabling blkid debugging])
473 AC_MSG_RESULT([Disabling blkid debugging by default])
476 dnl handle --enable-testio-debug
478 AC_ARG_ENABLE([testio-debug],
479 [ --disable-testio-debug disable the use of the test I/O manager for debugging],
480 AH_TEMPLATE([CONFIG_TESTIO_DEBUG],
481 [Define to 1 if the testio I/O manager should be enabled])
482 if test "$enableval" = "no"
484 AC_MSG_RESULT([Disabling testio debugging])
488 AC_DEFINE(CONFIG_TESTIO_DEBUG, 1)
489 AC_MSG_RESULT([Enabling testio debugging])
492 AC_MSG_RESULT([Enabling testio debugging by default])
493 AC_DEFINE(CONFIG_TESTIO_DEBUG, 1)
496 AC_SUBST(TEST_IO_CMT)
498 dnl handle --disable-libuuid
508 AC_ARG_ENABLE([libuuid],
509 [ --disable-libuuid do not build private uuid library],
510 if test "$enableval" = "no"
512 if test -z "$PKG_CONFIG"; then
513 AC_MSG_ERROR([pkg-config not installed; please install it.])
516 AC_CHECK_LIB(uuid, uuid_generate,
517 [LIBUUID=`$PKG_CONFIG --libs uuid`;
518 STATIC_LIBUUID=`$PKG_CONFIG --static --libs uuid`],
519 [AC_MSG_ERROR([external uuid library not found])],
522 AC_MSG_RESULT([Disabling private uuid library])
524 LIBUUID='$(LIB)/libuuid'$LIB_EXT
526 STATIC_LIBUUID='$(LIB)/libuuid'$STATIC_LIB_EXT
527 DEPSTATIC_LIBUUID=$STATIC_LIBUUID
528 PROFILED_LIBUUID='$(LIB)/libuuid'$PROFILED_LIB_EXT
529 DEPPROFILED_LIBUUID=$PROFILED_LIBUUID
530 AC_MSG_RESULT([Enabling private uuid library])
533 LIBUUID='$(LIB)/libuuid'$LIB_EXT
535 STATIC_LIBUUID='$(LIB)/libuuid'$STATIC_LIB_EXT
536 DEPSTATIC_LIBUUID=$STATIC_LIBUUID
537 PROFILED_LIBUUID='$(LIB)/libuuid'$PROFILED_LIB_EXT
538 DEPPROFILED_LIBUUID=$PROFILED_LIBUUID
539 AC_MSG_RESULT([Enabling private uuid library by default])
543 AC_SUBST(STATIC_LIBUUID)
544 AC_SUBST(DEPSTATIC_LIBUUID)
545 AC_SUBST(PROFILED_LIBUUID)
546 AC_SUBST(DEPPROFILED_LIBUUID)
549 dnl handle --disable-libblkid
557 DEPPROFILED_LIBBLKID=
559 AH_TEMPLATE([CONFIG_BUILD_FINDFS], [Define to 1 to compile findfs])
560 AC_ARG_ENABLE([libblkid],
561 [ --disable-libblkid do not build private blkid library],
562 if test "$enableval" = "no"
564 if test -z "$PKG_CONFIG"; then
565 AC_MSG_ERROR([pkg-config not installed; please install it.])
568 AC_CHECK_LIB(blkid, blkid_get_cache,
569 [LIBBLKID=`$PKG_CONFIG --libs blkid`;
570 STATIC_LIBBLKID=`$PKG_CONFIG --static --libs blkid`],
571 [AC_MSG_ERROR([external blkid library not found])],
574 AC_MSG_RESULT([Disabling private blkid library])
576 LIBBLKID='$(LIB)/libblkid'$LIB_EXT
577 DEPLIBBLKID=$LIBBLKID
578 STATIC_LIBBLKID='$(LIB)/libblkid'$STATIC_LIB_EXT
579 DEPSTATIC_LIBBLKID=$STATIC_LIBBLKID
580 PROFILED_LIBBLKID='$(LIB)/libblkid'$PROFILED_LIB_EXT
581 DEPPROFILED_LIBBLKID=$PROFILED_LIBBLKID
582 AC_DEFINE(CONFIG_BUILD_FINDFS, 1)
583 AC_MSG_RESULT([Enabling private blkid library])
586 LIBBLKID='$(LIB)/libblkid'$LIB_EXT
587 DEPLIBBLKID=$LIBBLKID
588 STATIC_LIBBLKID='$(LIB)/libblkid'$STATIC_LIB_EXT
589 DEPSTATIC_LIBBLKID=$STATIC_LIBBLKID
590 PROFILED_LIBBLKID='$(LIB)/libblkid'$PROFILED_LIB_EXT
591 DEPPROFILED_LIBBLKID=$PROFILED_LIBBLKID
592 AC_DEFINE(CONFIG_BUILD_FINDFS, 1)
593 AC_MSG_RESULT([Enabling private blkid library by default])
596 AC_SUBST(DEPLIBBLKID)
597 AC_SUBST(STATIC_LIBBLKID)
598 AC_SUBST(DEPSTATIC_LIBBLKID)
599 AC_SUBST(PROFILED_LIBBLKID)
600 AC_SUBST(DEPPROFILED_LIBBLKID)
603 dnl handle --enable-quota
606 AH_TEMPLATE([CONFIG_QUOTA], [Define to 1 to enable quota support])
607 AC_ARG_ENABLE([quota],
608 [ --enable-libquota enable quota support],
609 if test "$enableval" = "no"
611 AC_MSG_RESULT([Disabling quota support])
613 AC_DEFINE(CONFIG_QUOTA, 1)
614 AC_MSG_RESULT([Enabling quota support])
617 AC_MSG_RESULT([Disabling quota support by default])
620 dnl Define stuff expected for quota library
622 LIBQUOTA='$(LIB)/libquota'$LIB_EXT
623 DEPLIBQUOTA=$LIBQUOTA
624 STATIC_LIBQUOTA='$(LIB)/libquota'$STATIC_LIB_EXT
625 DEPSTATIC_LIBQUOTA=$STATIC_LIBQUOTA
626 PROFILED_LIBQUOTA='$(LIB)/libquota'$PROFILED_LIB_EXT
627 DEPPROFILED_LIBQUOTA=$PROFILED_LIBQUOTA
629 AC_SUBST(DEPLIBQUOTA)
630 AC_SUBST(STATIC_LIBQUOTA)
631 AC_SUBST(DEPSTATIC_LIBQUOTA)
632 AC_SUBST(PROFILED_LIBQUOTA)
633 AC_SUBST(DEPPROFILED_LIBQUOTA)
636 dnl handle --enable-debugfs
638 AC_ARG_ENABLE([debugfs],
639 [ --disable-debugfs disable support of debugfs program],
640 if test "$enableval" = "no"
642 AC_MSG_RESULT([Disabling debugfs support])
646 AC_MSG_RESULT([Enabling debugfs support])
649 AC_MSG_RESULT([Enabling debugfs support by default])
652 AC_SUBST(DEBUGFS_CMT)
654 dnl handle --enable-imager
656 AC_ARG_ENABLE([imager],
657 [ --disable-imager disable support of e2image program],
658 if test "$enableval" = "no"
660 AC_MSG_RESULT([Disabling e2image support])
664 AC_MSG_RESULT([Enabling e2image support])
667 AC_MSG_RESULT([Enabling e2image support by default])
672 dnl handle --enable-resizer
674 AC_ARG_ENABLE([resizer],
675 [ --disable-resizer disable support of e2resize program],
676 if test "$enableval" = "no"
678 AC_MSG_RESULT([Disabling e2resize support])
682 AC_MSG_RESULT([Enabling e2resize support])
685 AC_MSG_RESULT([Enabling e2resize support by default])
688 AC_SUBST(RESIZER_CMT)
690 dnl handle --enable-defrag
692 AC_ARG_ENABLE([defrag],
693 [ --disable-defrag disable support of e4defrag program],
694 if test "$enableval" = "no"
696 AC_MSG_RESULT([Disabling e4defrag support])
700 AC_MSG_RESULT([Enabling e4defrag support])
703 AC_MSG_RESULT([Enabling e4defrag support by default])
708 dnl See whether to install the `fsck' wrapper program (that calls e2fsck)
710 AC_ARG_ENABLE([fsck],
711 [ --enable-fsck build fsck wrapper program],
712 [if test "$enableval" = "no"
714 FSCK_PROG='' FSCK_MAN=''
715 AC_MSG_RESULT([Not building fsck wrapper])
717 FSCK_PROG=fsck FSCK_MAN=fsck.8
718 AC_MSG_RESULT([Building fsck wrapper])
723 FSCK_PROG='' FSCK_MAN=''
724 AC_MSG_RESULT([Not building fsck wrapper by default])
727 FSCK_PROG=fsck FSCK_MAN=fsck.8
728 AC_MSG_RESULT([Building fsck wrapper by default])
734 dnl See whether to install the `e2initrd-helper' program
736 AC_ARG_ENABLE([e2initrd-helper],
737 [ --enable-e2initrd-helper build e2initrd-helper program],
738 [if test "$enableval" = "no"
740 E2INITRD_PROG='' E2INITRD_MAN=''
741 AC_MSG_RESULT([Not building e2initrd helper])
743 E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8
744 AC_MSG_RESULT([Building e2initrd helper])
747 E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8
748 AC_MSG_RESULT([Building e2initrd helper by default])
750 AC_SUBST(E2INITRD_PROG)
751 AC_SUBST(E2INITRD_MAN)
756 [ --disable-tls disable use of thread local support],
757 [if test "$enableval" = "no"
760 AC_MSG_RESULT([Disabling thread local support])
763 AC_MSG_RESULT([Enabling thread local support])
766 if test -n "$WITH_DIET_LIBC"
769 AC_MSG_RESULT([Diet libc does not support thread local support])
772 AC_MSG_RESULT([Try using thread local support by default])
775 if test "$try_tls" = "yes"
782 AH_TEMPLATE([USE_UUIDD], [Define to 1 to build uuidd])
783 AC_ARG_ENABLE([uuidd],
784 [ --disable-uuidd disable building the uuid daemon],
785 [if test "$enableval" = "no"
787 AC_MSG_RESULT([Not building uuidd])
790 AC_DEFINE(USE_UUIDD, 1)
792 AC_MSG_RESULT([Building uuidd])
795 AC_DEFINE(USE_UUIDD, 1)
797 AC_MSG_RESULT([Building uuidd by default])
803 MAKEFILE_LIBRARY=$srcdir/lib/Makefile.library
804 AC_SUBST_FILE(MAKEFILE_LIBRARY)
806 dnl Add internationalization support, using gettext.
808 GETTEXT_PACKAGE=e2fsprogs
810 VERSION="$E2FSPROGS_VERSION"
812 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [package name for gettext])
813 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [version for gettext])
814 AC_SUBST(GETTEXT_PACKAGE)
820 dnl End of configuration options
822 AC_SUBST(BINARY_TYPE)
825 AC_PATH_PROG(LN, ln, ln)
827 AC_PATH_PROG(MV, mv, mv)
828 AC_PATH_PROG(CP, cp, cp)
829 AC_PATH_PROG(RM, rm, rm)
830 AC_PATH_PROG(CHMOD, chmod, :)
833 AC_PATH_PROG(SED, sed, sed)
834 AC_PATH_PROG(PERL, perl, perl)
835 AC_PATH_PROG(LDCONFIG, ldconfig, :)
836 AC_CHECK_TOOL(AR, ar, ar)
837 AC_CHECK_TOOL(RANLIB, ranlib, :)
838 AC_CHECK_TOOL(STRIP, strip, :)
839 AC_CHECK_PROG(MAKEINFO, makeinfo, makeinfo, )
840 if test "_$MAKEINFO" = "_"; then
841 MAKEINFO="@echo Makeinfo is missing. Info documentation will not be built.;true"
846 *** Makeinfo is missing. Info documentation will not be built.])
854 # See if we need a separate native compiler.
855 if test $cross_compiling = no; then
859 AC_CHECK_PROGS(BUILD_CC, gcc cc)
861 AC_CHECK_HEADERS(m4_flatten([
905 AC_CHECK_HEADERS(sys/disk.h sys/mount.h,,,
908 #include <sys/queue.h>
911 AC_CHECK_HEADERS(net/if.h,,,
914 #include <sys/types.h>
917 #include <sys/socket.h>
920 AC_CHECK_HEADERS(db.h)
922 dnl Check to see if dirent has member d_reclen. On cygwin those d_reclen
923 dnl is not decleared.
924 AC_CHECK_MEMBER(struct dirent.d_reclen,[AC_DEFINE(HAVE_RECLEN_DIRENT, 1,
925 [Define to 1 if dirent has d_reclen])],,
926 [#include <dirent.h>])
927 dnl Check to see if ssize_t was declared
928 AC_CHECK_TYPE(ssize_t,[AC_DEFINE(HAVE_TYPE_SSIZE_T, 1,
929 [Define to 1 if ssize_t declared])],,
930 [#include <sys/types.h>])
932 dnl Check to see if llseek() is declared in unistd.h. On some libc's
933 dnl it is, and on others it isn't..... Thank you glibc developers....
935 AC_CHECK_DECL(llseek,[AC_DEFINE(HAVE_LLSEEK_PROTOTYPE, 1,
936 [Define to 1 if llseek declared in unistd.h])],,
937 [#include <unistd.h>])
939 dnl Check to see if lseek64() is declared in unistd.h. Glibc's header files
940 dnl are so convoluted that I can't tell whether it will always be defined,
941 dnl and if it isn't defined while lseek64 is defined in the library,
942 dnl disaster will strike.
944 dnl Warning! Use of --enable-gcc-wall may throw off this test.
947 AC_CHECK_DECL(lseek64,[AC_DEFINE(HAVE_LSEEK64_PROTOTYPE, 1,
948 [Define to 1 if lseek64 declared in unistd.h])],,
949 [#define _LARGEFILE_SOURCE
950 #define _LARGEFILE64_SOURCE
951 #include <unistd.h>])
955 AC_CHECK_SIZEOF(short)
957 AC_CHECK_SIZEOF(long)
958 AC_CHECK_SIZEOF(long long)
959 SIZEOF_SHORT=$ac_cv_sizeof_short
960 SIZEOF_INT=$ac_cv_sizeof_int
961 SIZEOF_LONG=$ac_cv_sizeof_long
962 SIZEOF_LONG_LONG=$ac_cv_sizeof_long_long
963 AC_SUBST(SIZEOF_SHORT)
965 AC_SUBST(SIZEOF_LONG)
966 AC_SUBST(SIZEOF_LONG_LONG)
968 BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh
969 ASM_TYPES_HEADER=./asm_types.h
970 AC_SUBST_FILE(ASM_TYPES_HEADER)
972 dnl Save the configuration #defines needed for the public ext2fs.h
975 echo "/* These defines are needed for the public ext2fs.h header file */" \
977 if grep HAVE_SYS_TYPES_H confdefs.h > tmp_config.$$; then
978 uniq tmp_config.$$ >> public_config.h
980 echo "#undef HAVE_SYS_TYPES_H" >> public_config.h
982 if grep WORDS_BIGENDIAN confdefs.h > tmp_config.$$; then
983 uniq tmp_config.$$ >> public_config.h
985 echo "#undef WORDS_BIGENDIAN" >> public_config.h
988 PUBLIC_CONFIG_HEADER=./public_config.h
989 AC_SUBST_FILE(PUBLIC_CONFIG_HEADER)
991 dnl See if we have inttypes.h and if intptr_t is defined
993 AC_CHECK_HEADERS([inttypes.h])
994 AC_CHECK_TYPES(intptr_t)
996 dnl See if struct stat has a st_flags field, in which case we can get file
997 dnl flags somewhat portably. Also check for the analogous setter, chflags().
999 AC_MSG_CHECKING(whether struct stat has a st_flags field)
1000 AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags,
1001 AC_TRY_COMPILE([#include <sys/stat.h>],
1002 [struct stat stat; stat.st_flags = 0;],
1003 [e2fsprogs_cv_struct_st_flags=yes],
1004 [e2fsprogs_cv_struct_st_flags=no]))
1005 AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags)
1006 if test "$e2fsprogs_cv_struct_st_flags" = yes; then
1007 AC_MSG_CHECKING(whether st_flags field is useful)
1008 AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags_immut,
1009 AC_TRY_COMPILE([#include <sys/stat.h>],
1010 [struct stat stat; stat.st_flags |= UF_IMMUTABLE;],
1011 [e2fsprogs_cv_struct_st_flags_immut=yes],
1012 [e2fsprogs_cv_struct_st_flags_immut=no]))
1013 AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags_immut)
1014 if test "$e2fsprogs_cv_struct_st_flags_immut" = yes; then
1015 AC_DEFINE(HAVE_STAT_FLAGS, 1,
1016 [Define to 1 if struct stat has st_flags])
1020 dnl Check for the presence of SA_LEN
1022 AC_CHECK_MEMBER(struct sockaddr.sa_len,
1023 AC_DEFINE_UNQUOTED(HAVE_SA_LEN,1,
1024 [Define to 1 if if struct sockaddr contains sa_len]),,
1025 [#include <sys/types.h>
1026 #include <sys/socket.h>])
1028 dnl This will add -lblkid to the AC_CHECK_FUNCS search if we are using
1029 dnl the system-provided blkid library
1031 if test -n "$BLKID_CMT"; then
1032 AC_SEARCH_LIBS([blkid_probe_all], [blkid])
1035 AC_CHECK_FUNCS(m4_flatten([
1038 blkid_probe_get_topology
1081 dnl Check to see if -lsocket is required (solaris) to make something
1082 dnl that uses socket() to compile; this is needed for the UUID library
1085 AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket])
1086 AC_SUBST(SOCKET_LIB)
1088 dnl Check to see if libdb exists for the sake of lfsck
1090 AC_CHECK_LIB(db-4.1, db_env_create,
1092 AC_DEFINE(HAVE_DB4, 1, [Define to 1 if DB4 library is present])
1094 AC_CHECK_LIB(db-4.2, db_env_create,
1096 AC_DEFINE(HAVE_DB4, 1, [Define to 1 if DB4 library is present])
1098 AC_CHECK_LIB(db-4.3, db_env_create,
1100 AC_DEFINE(HAVE_DB4, 1, [Define to 1 if DB4 library is present])
1102 AC_CHECK_LIB(db-4.5, db_env_create,
1104 AC_DEFINE(HAVE_DB4, 1, [Define to 1 if DB4 library is present])
1106 AC_CHECK_LIB(db-4.6, db_env_create,
1108 AC_DEFINE(HAVE_DB4, 1, [Define to 1 if DB4 library is present])
1110 AC_CHECK_LIB(db-4.7, db_env_create,
1112 AC_DEFINE(HAVE_DB4, 1, [Define to 1 if DB4 library is present])
1114 AC_CHECK_LIB(db-4.8, db_env_create,
1116 AC_DEFINE(HAVE_DB4, 1, [Define to 1 if DB4 library is present])
1118 AC_SUBST(DB4VERSION)
1120 dnl See if optreset exists
1122 AC_MSG_CHECKING(for optreset)
1123 AC_CACHE_VAL(ac_cv_have_optreset,
1124 [AC_EGREP_HEADER(optreset, unistd.h,
1125 ac_cv_have_optreset=yes, ac_cv_have_optreset=no)])dnl
1126 AC_MSG_RESULT($ac_cv_have_optreset)
1127 if test $ac_cv_have_optreset = yes; then
1128 AC_DEFINE(HAVE_OPTRESET, 1, [Define to 1 if optreset for getopt is present])
1131 dnl Test for sem_init, and which library it might require:
1133 AH_TEMPLATE([HAVE_SEM_INIT], [Define to 1 if sem_init() exists])
1135 AC_CHECK_FUNC(sem_init, ,
1136 AC_CHECK_LIB(pthread, sem_init,
1137 AC_DEFINE(HAVE_SEM_INIT, 1)
1138 SEM_INIT_LIB=-lpthread,
1139 AC_CHECK_LIB(rt, sem_init,
1140 AC_DEFINE(HAVE_SEM_INIT, 1)
1142 AC_CHECK_LIB(posix4, sem_init,
1143 AC_DEFINE(HAVE_SEM_INIT, 1)
1144 SEM_INIT_LIB=-lposix4))))dnl
1145 AC_SUBST(SEM_INIT_LIB)
1147 dnl Check for unified diff
1149 AC_MSG_CHECKING(for unified diff option)
1150 if diff -u $0 $0 > /dev/null 2>&1 ; then
1155 AC_MSG_RESULT($UNI_DIFF_OPTS)
1156 AC_SUBST(UNI_DIFF_OPTS)
1158 dnl We use the EXT2 ioctls only under Linux
1162 AC_DEFINE(HAVE_EXT2_IOCTLS, 1, [Define to 1 if Ext2 ioctls present])
1166 dnl OS-specific uncomment control
1181 AC_SUBST(CYGWIN_CMT)
1184 dnl Linux and Hurd places root files in the / by default
1187 linux* | gnu* | k*bsd*-gnu)
1188 if test "$prefix" = NONE -a "$root_prefix" = NONE ; then
1190 AC_MSG_RESULT([On $host_os systems, root_prefix defaults to ''])
1195 dnl On Linux/hurd, force the prefix to be /usr
1198 linux* | gnu* | k*bsd*-gnu)
1199 if test "$prefix" = NONE ; then
1201 AC_MSG_RESULT([On $host_os systems, prefix defaults to /usr])
1202 if test "$mandir" = '${prefix}/man' ; then
1203 AC_MSG_RESULT([...and mandir defaults to /usr/share/man])
1204 mandir=/usr/share/man
1209 if test "$root_prefix" = NONE ; then
1210 if test "$prefix" = NONE ; then
1211 root_prefix="$ac_default_prefix"
1213 root_prefix="$prefix"
1216 root_sbindir=$sbindir
1218 root_sysconfdir=$sysconfdir
1220 root_bindir='${root_prefix}/bin'
1221 root_sbindir='${root_prefix}/sbin'
1222 root_libdir='${root_prefix}/lib'
1223 root_sysconfdir='${root_prefix}/etc'
1225 if test "$bindir" != '${exec_prefix}/bin'; then
1227 AC_MSG_RESULT([Setting root_bindir to $root_bindir])
1229 if test "$sbindir" != '${exec_prefix}/sbin'; then
1230 root_sbindir=$sbindir
1231 AC_MSG_RESULT([Setting root_sbindir to $root_sbindir])
1233 if test "$libdir" != '${exec_prefix}/lib'; then
1235 AC_MSG_RESULT([Setting root_libdir to $root_libdir])
1237 if test "$sysconfdir" != '${prefix}/etc'; then
1238 root_sysconfdir=$sysconfdir
1239 AC_MSG_RESULT([Setting root_sysconfdir to $root_sysconfdir])
1241 AC_SUBST(root_prefix)
1242 AC_SUBST(root_bindir)
1243 AC_SUBST(root_sbindir)
1244 AC_SUBST(root_libdir)
1245 AC_SUBST(root_sysconfdir)
1247 dnl Allow specification of the multiarch arch
1249 AC_ARG_WITH([multiarch],
1250 [ --with-multiarch=ARCH specify the multiarch triplet],
1251 libdir=$libdir/$withval
1252 root_libdir=$root_libdir/$withval
1255 dnl See if -static works.
1257 AC_MSG_CHECKING([whether linker accepts -static])
1258 AC_CACHE_VAL(ac_cv_e2fsprogs_use_static,
1259 [SAVE_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS -static"
1260 AC_TRY_LINK([#include <stdio.h>],[fflush(stdout);],
1261 ac_cv_e2fsprogs_use_static=yes, ac_cv_e2fsprogs_use_static=no)
1262 LDFLAGS=$SAVE_LDFLAGS])
1264 dnl Regardless of how the test turns out, Solaris doesn't handle -static
1265 dnl This is caused by the socket library requiring the nsl library, which
1266 dnl requires the -dl library, which only works for dynamically linked
1267 dnl programs. It basically means you can't have statically linked programs
1268 dnl which use the network under Solaris.
1272 ac_cv_e2fsprogs_use_static=no
1275 AC_MSG_RESULT($ac_cv_e2fsprogs_use_static)
1277 if test $ac_cv_e2fsprogs_use_static = yes; then
1278 LDFLAG_STATIC=-static
1280 AC_SUBST(LDFLAG_STATIC)
1282 dnl Work around mysterious Darwin / GNU libintl problem
1283 dnl (__asm__ redirection doesn't work for some mysterious reason. Looks like
1284 dnl Apple hacked gcc somehow?)
1288 AC_MSG_RESULT([Using Apple Darwin / GNU libintl workaround])
1289 AC_DEFINE(_INTL_REDIRECT_MACROS, 1,
1290 [Define to 1 if Apple Darwin libintl workaround is needed])
1294 dnl Make the ss and et directories work correctly.
1296 SS_DIR=`cd ${srcdir}/lib/ss; pwd`
1297 ET_DIR=`cd ${srcdir}/lib/et; pwd`
1301 dnl Only try to run the test suite if we're not cross compiling.
1303 if test "$cross_compiling" = yes ; then
1308 AC_SUBST(DO_TEST_SUITE)
1310 dnl Only include the intl include files if we're building with them
1312 INCLUDES='-I. -I$(top_builddir)/lib -I$(top_srcdir)/lib'
1313 if test -n "$CPPFLAGS" ; then
1314 INCLUDES="$INCLUDES $CPPFLAGS"
1316 if test "$USE_INCLUDED_LIBINTL" = "yes" ; then
1317 INCLUDES=$INCLUDES' -I$(top_builddir)/intl -I$(top_srcdir)/intl'
1323 if test $cross_compiling = no; then
1324 BUILD_CFLAGS="$CFLAGS"
1325 BUILD_LDFLAGS="$LDFLAGS"
1330 AC_SUBST(BUILD_CFLAGS)
1331 AC_SUBST(BUILD_LDFLAGS)
1333 dnl Make our output files, being sure that we create the some miscellaneous
1336 test -d lib || mkdir lib
1337 test -d include || mkdir include
1338 test -d include/linux || mkdir include/linux
1339 test -d include/asm || mkdir include/asm
1340 for i in MCONFIG Makefile e2fsprogs.spec \
1341 e2fsprogs-RHEL-6.spec \
1342 e2fsprogs-SUSE_LINUX-11.spec \
1343 util/Makefile util/subst.conf util/gen-tarball util/install-symlink \
1344 lib/et/Makefile lib/ss/Makefile lib/e2p/Makefile \
1345 lib/ext2fs/Makefile lib/ext2fs/ext2_types.h \
1346 lib/uuid/Makefile lib/uuid/uuid_types.h \
1347 lib/blkid/Makefile lib/blkid/blkid_types.h lib/quota/Makefile \
1348 lib/ss/ss.pc lib/uuid/uuid.pc lib/et/com_err.pc \
1349 lib/e2p/e2p.pc lib/blkid/blkid.pc lib/ext2fs/ext2fs.pc \
1350 misc/Makefile ext2ed/Makefile e2fsck/Makefile \
1351 debugfs/Makefile tests/Makefile tests/progs/Makefile \
1352 resize/Makefile doc/Makefile intl/Makefile \
1353 intl/libgnuintl.h po/Makefile.in ; do
1354 if test -d `dirname ${srcdir}/$i` ; then
1355 outlist="$outlist $i"
1359 if test -f util/gen-tarball; then chmod +x util/gen-tarball; fi