2 AC_CONFIG_SRCDIR([version.h])
4 AC_CONFIG_AUX_DIR(config)
5 AC_CONFIG_HEADERS([lib/config.h])
6 AH_BOTTOM([#include <dirpaths.h>])
7 AC_USE_SYSTEM_EXTENSIONS
12 dnl This is to figure out the version number and the date....
14 E2FSPROGS_VERSION=`awk -F\" '/E2FSPROGS_VERS/ { print $2 }' ${srcdir}/version.h`
15 E2FSPROGS_DATE=`awk -F\" '/E2FSPROGS_DATE/ { print $2 }' ${srcdir}/version.h`
16 E2FSPROGS_DAY=$(echo $E2FSPROGS_DATE | awk -F- '{ printf "%02d", $1 }')
17 MONTH=`echo $E2FSPROGS_DATE | awk -F- '{print $2}'`
18 YEAR=`echo $E2FSPROGS_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 | sed -e 's/pre-//' -e 's/-.*//'`
45 base_rel=`echo $E2FSPROGS_VERSION | awk -F- '{ print $2 }'`
47 date_spec=${E2FSPROGS_YEAR}.${MONTH_NUM}.${E2FSPROGS_DAY}
49 case $E2FSPROGS_VERSION in
51 E2FSPROGS_PKGVER="$base_ver"
52 E2FSPROGS_PKGREL="WIP.$date_spec"
55 E2FSPROGS_PKGVER="$base_ver"
56 E2FSPROGS_PKGREL="$base_rel"
60 unset DATE MONTH YEAR base_ver pre_vers date_spec
61 AC_MSG_RESULT([Generating configuration file for e2fsprogs version $E2FSPROGS_VERSION])
62 AC_MSG_RESULT([Package version ${E2FSPROGS_PKGVER} release ${E2FSPROGS_PKGREL}])
63 AC_MSG_RESULT([Release date is ${E2FSPROGS_MONTH}, ${E2FSPROGS_YEAR}])
64 AC_SUBST(E2FSPROGS_YEAR)
65 AC_SUBST(E2FSPROGS_MONTH)
66 AC_SUBST(E2FSPROGS_DAY)
67 AC_SUBST(E2FSPROGS_VERSION)
68 AC_SUBST(E2FSPROGS_PKGREL)
69 AC_SUBST(E2FSPROGS_PKGVER)
70 AC_SUBST(E2FSPROGS_DATE)
75 AC_ARG_WITH([diet-libc],
76 AS_HELP_STRING([--with-diet-libc],[use diet libc]),
77 CC="diet cc -nostdinc"
85 AC_MSG_RESULT(CC=$CC))dnl
89 dnl Check to see if libdl exists for the sake of dlopen
92 AC_CHECK_LIB(dl, dlopen,DLOPEN_LIB=-ldl)
96 AS_HELP_STRING([--with-cc],[no longer supported, use CC= instead]),
97 AC_MSG_ERROR([--with-cc no longer supported; use CC= instead]))
100 AS_HELP_STRING([--with-ccopts],[no longer supported, use CFLAGS= instead]),
101 AC_MSG_ERROR([--with-ccopts no longer supported; use CFLAGS= instead]))
103 AC_ARG_WITH([ldopts],
104 AS_HELP_STRING([--with-ldopts],[no longer supported, use LDFLAGS= instead]),
105 AC_MSG_ERROR([--with-ldopts no longer supported; use LDFLAGS= instead]))
108 if test "$GCC" = yes; then
114 dnl Alpha computers use fast and imprecise floating point code that may
115 dnl miss exceptions by default. Force sane options if we're using GCC.
116 AC_MSG_CHECKING(for additional special compiler flags)
120 alpha) addcflags="-mieee" ;;
123 if test "x$addcflags" != x
125 AC_MSG_RESULT($addcflags)
126 CFLAGS="$addcflags $CFLAGS"
128 AC_MSG_RESULT([[(none)]])
131 dnl Set default values for library extensions. Will be dealt with after
132 dnl parsing configuration options, which may modify these
138 dnl Allow separate `root_prefix' to be specified
140 AC_ARG_WITH([root-prefix],
141 AS_HELP_STRING([--with-root-prefix=PREFIX],[override prefix variable for files to be placed in the root]),
142 root_prefix=$withval,
145 dnl handle --enable-maintainer-mode
147 AC_ARG_ENABLE([maintainer-mode],
148 AS_HELP_STRING([--enable-maintainer-mode],[enable makefile rules useful for maintainers]),
149 if test "$enableval" = "no"
152 AC_MSG_RESULT([Disabling maintainer mode])
155 AC_MSG_RESULT([Enabling maintainer mode])
159 AC_MSG_RESULT([Disabling maintainer mode by default])
161 AC_SUBST(MAINTAINER_CMT)
163 dnl handle --enable-symlink-install
165 AC_ARG_ENABLE([symlink-install],
166 AS_HELP_STRING([--enable-symlink-install],[use symlinks when installing instead of hard links]),
167 if test "$enableval" = "no"
169 LINK_INSTALL_FLAGS=-f
170 AC_MSG_RESULT([Disabling symlinks for install])
172 LINK_INSTALL_FLAGS=-sf
173 AC_MSG_RESULT([Enabling symlinks for install])
176 LINK_INSTALL_FLAGS=-f
177 AC_MSG_RESULT([Disabling symlinks for install by default])
179 AC_SUBST(LINK_INSTALL_FLAGS)
181 dnl handle --enable-relative-symlinks
183 relative_symlink_defined=
184 AC_ARG_ENABLE([relative-symlinks],
185 AS_HELP_STRING([--enable-relative-symlinks],[use relative symlinks when installing]),
186 if test "$enableval" = "no"
189 relative_symlink_defined=yes
190 AC_MSG_RESULT([Disabling relative symlinks for install])
192 SYMLINK_RELATIVE=--relative
193 relative_symlink_defined=yes
194 AC_MSG_RESULT([Enabling relative symlinks for install])
196 AC_ARG_ENABLE([symlink-relative-symlinks],,
197 if test "$enableval" = "no"
200 AC_MSG_RESULT([Disabling relative symlinks for install])
202 SYMLINK_RELATIVE=--relative
203 AC_MSG_RESULT([Enabling relative symlinks for install])
206 if test -z "$relative_symlink_defined"
209 AC_MSG_RESULT([Disabling relative symlinks for install by default])
212 AC_SUBST(SYMLINK_RELATIVE)
214 dnl handle --enable-symlink-build
216 AC_ARG_ENABLE([symlink-build],
217 AS_HELP_STRING([--enable-symlink-build],[use symlinks while building instead of hard links]),
218 if test "$enableval" = "no"
221 AC_MSG_RESULT([Disabling symlinks for build])
224 AC_MSG_RESULT([Enabling symlinks for build])
228 AC_MSG_RESULT([Disabling symlinks for build by default])
230 AC_SUBST(LINK_BUILD_FLAGS)
232 dnl handle --enable-verbose-makecmds
234 AC_ARG_ENABLE([verbose-makecmds],
235 AS_HELP_STRING([--enable-verbose-makecmds],[enable verbose make command output]),
236 if test "$enableval" = "no"
238 AC_MSG_RESULT([Disabling verbose make commands])
243 AC_MSG_RESULT([Enabling verbose make commands])
249 AC_MSG_RESULT([Disabling verbose make commands])
258 dnl This needs to be before all of the --enable-*-shlibs options
260 E2_PKG_CONFIG_STATIC=--static
264 dnl handle --enable-elf-shlibs
266 AC_ARG_ENABLE([elf-shlibs],
267 AS_HELP_STRING([--enable-elf-shlibs],[select ELF shared libraries]),
268 if test "$enableval" = "no"
271 MAKEFILE_ELF=/dev/null
272 AC_MSG_RESULT([Disabling ELF shared libraries])
274 E2_PKG_CONFIG_STATIC=
276 MAKEFILE_ELF=$srcdir/lib/Makefile.elf-lib
279 MAKEFILE_ELF=$srcdir/lib/Makefile.solaris-lib
285 LDFLAG_DYNAMIC=['-Wl,-rpath-link,$(top_builddir)/lib']
286 AC_MSG_RESULT([Enabling ELF shared libraries])
289 MAKEFILE_ELF=/dev/null
291 AC_MSG_RESULT([Disabling ELF shared libraries by default])
294 AC_SUBST_FILE(MAKEFILE_ELF)
296 dnl handle --enable-bsd-shlibs
298 AC_ARG_ENABLE([bsd-shlibs],
299 AS_HELP_STRING([--enable-bsd-shlibs],[select BSD shared libraries]),
300 if test "$enableval" = "no"
303 MAKEFILE_BSDLIB=/dev/null
304 AC_MSG_RESULT([Disabling BSD shared libraries])
306 E2_PKG_CONFIG_STATIC=
308 MAKEFILE_BSDLIB=$srcdir/lib/Makefile.bsd-lib
312 MAKEFILE_BSDLIB=$srcdir/lib/Makefile.darwin-lib
316 AC_MSG_RESULT([Enabling BSD shared libraries])
319 MAKEFILE_BSDLIB=/dev/null
321 AC_MSG_RESULT([Disabling BSD shared libraries by default])
324 AC_SUBST_FILE(MAKEFILE_BSDLIB)
326 dnl handle --enable-profile
328 AC_ARG_ENABLE([profile],
329 AS_HELP_STRING([--enable-profile],[build profiling libraries]),
330 if test "$enableval" = "no"
333 MAKEFILE_PROFILE=/dev/null
334 AC_MSG_RESULT([Disabling profiling libraries])
337 MAKEFILE_PROFILE=$srcdir/lib/Makefile.profile
338 PROFILED_LIB_EXT=_p.a
339 AC_MSG_RESULT([Building profiling libraries])
343 MAKEFILE_PROFILE=/dev/null
344 AC_MSG_RESULT([Disabling profiling libraries by default])
346 AC_SUBST(PROFILE_CMT)
347 AC_SUBST_FILE(MAKEFILE_PROFILE)
349 dnl handle --enable-gcov
351 AC_ARG_ENABLE([gcov],
352 AS_HELP_STRING([--enable-gcov],[build for coverage testing using gcov]),
353 if test "$enableval" = "yes"
355 CFLAGS="-g -fprofile-arcs -ftest-coverage"
356 LDFLAGS="-fprofile-arcs -ftest-coverage"
357 AC_MSG_RESULT([Enabling gcov support])
361 dnl handle --enable-hardening
363 CFLAGS_SHLIB="${CFLAGS_SHLIB:-$CFLAGS}"
364 CFLAGS_STLIB="${CFLAGS_STLIB:-$CFLAGS}"
365 LDFLAGS_SHLIB=${LDFLAGS_SHLIB:-$LDFLAGS}
366 LDFLAGS_STATIC=${LDFLAGS_STATIC:-$LDFLAGS}
367 AC_ARG_ENABLE([hardening],
368 AS_HELP_STRING([--enable-hardening],[build with hardening flags such as fortify]),
369 if test "$enableval" = "yes"
371 HARDEN_CFLAGS="-D_FORTIFY_SOURCE=3 -fstack-protector-strong"
372 HARDEN_LDFLAGS=["-Wl,-z,relro -Wl,-z,now"]
373 CFLAGS="$CFLAGS $HARDEN_CFLAGS -fPIE"
374 CFLAGS_SHLIB="$CFLAGS_SHLIB $HARDEN_CFLAGS"
375 CFLAGS_STLIB="$CFLAGS_STLIB $HARDEN_CFLAGS -fPIE"
376 LDFLAGS="$LDFLAGS $HARDEN_LDFLAGS -fPIE -pie"
377 LDFLAGS_STATIC="$LDFLAGS_STATIC $HARDEN_LDFLAGS"
378 LDFLAGS_SHLIB="$LDFLAGS_SHLIB $HARDEN_LDFLAGS"
379 AC_MSG_RESULT([Enabling hardening support])
383 dnl Substitute library extensions
386 AC_SUBST(STATIC_LIB_EXT)
387 AC_SUBST(PROFILED_LIB_EXT)
388 AC_SUBST(LDFLAG_DYNAMIC)
389 AC_SUBST(PRIVATE_LIBS_CMT)
391 dnl handle --enable-jbd-debug
393 AC_ARG_ENABLE([jbd-debug],
394 AS_HELP_STRING([--enable-jbd-debug],[enable journal debugging]),
395 if test "$enableval" = "no"
397 AC_MSG_RESULT([Disabling journal debugging])
399 AC_DEFINE(CONFIG_JBD_DEBUG, 1,
400 [Define to 1 if debugging ext3/4 journal code])
401 AC_MSG_RESULT([Enabling journal debugging])
404 AC_MSG_RESULT([Disabling journal debugging by default])
407 dnl handle --enable-blkid-debug
409 AC_ARG_ENABLE([blkid-debug],
410 AS_HELP_STRING([--enable-blkid-debug],[enable blkid debugging]),
411 if test "$enableval" = "no"
413 AC_MSG_RESULT([Disabling blkid debugging])
415 AC_DEFINE(CONFIG_BLKID_DEBUG, 1,
416 [Define to 1 if debugging the blkid library])
417 AC_MSG_RESULT([Enabling blkid debugging])
420 AC_MSG_RESULT([Disabling blkid debugging by default])
423 dnl handle --enable-testio-debug
425 AC_ARG_ENABLE([testio-debug],
426 AS_HELP_STRING([--disable-testio-debug],[disable the use of the test I/O manager for debugging]),
427 AH_TEMPLATE([CONFIG_TESTIO_DEBUG],
428 [Define to 1 if the testio I/O manager should be enabled])
429 if test "$enableval" = "no"
431 AC_MSG_RESULT([Disabling testio debugging])
435 AC_DEFINE(CONFIG_TESTIO_DEBUG, 1)
436 AC_MSG_RESULT([Enabling testio debugging])
439 AC_MSG_RESULT([Enabling testio debugging by default])
440 AC_DEFINE(CONFIG_TESTIO_DEBUG, 1)
443 AC_SUBST(TEST_IO_CMT)
445 dnl handle --enable-developer-features
447 AC_ARG_ENABLE([developer-features],
448 AS_HELP_STRING([--enable-developer-features],[enable features for use by ext4 developers]),
449 AH_TEMPLATE([CONFIG_DEVELOPER_FEATURES],
450 [Define to 1 for features for use by ext4 developers])
451 if test "$enableval" = "yes"
454 AC_DEFINE(CONFIG_DEVELOPER_FEATURES, 1)
455 AC_MSG_RESULT([Enabling ext4 developer features])
457 AC_MSG_RESULT([Disabling ext4 developer features])
461 AC_MSG_RESULT([Disabling ext4 developer features by default])
464 AC_SUBST(DEV_FEATURES_CMT)
466 dnl handle --disable-libuuid
476 AC_ARG_ENABLE([libuuid],
477 AS_HELP_STRING([--enable-libuuid],[build and use private uuid library]),
478 if test "$enableval" = "no"
480 if test -z "$PKG_CONFIG"; then
481 AC_MSG_ERROR([pkg-config not installed; please install it.])
484 AC_CHECK_LIB(uuid, uuid_generate,
485 [LIBUUID=`$PKG_CONFIG --libs uuid`;
486 STATIC_LIBUUID=`$PKG_CONFIG --static --libs uuid`],
487 [AC_MSG_ERROR([external uuid library not found])])
488 PROFILED_LIBUUID=$LIBUUID
490 AC_MSG_RESULT([Disabling private uuid library])
492 LIBUUID='$(LIB)/libuuid'$LIB_EXT
494 STATIC_LIBUUID='$(LIB)/libuuid'$STATIC_LIB_EXT
495 DEPSTATIC_LIBUUID=$STATIC_LIBUUID
496 PROFILED_LIBUUID='$(LIB)/libuuid'$PROFILED_LIB_EXT
497 DEPPROFILED_LIBUUID=$PROFILED_LIBUUID
498 AC_MSG_RESULT([Enabling private uuid library])
501 if test -n "$PKG_CONFIG"; then
502 AC_CHECK_LIB(uuid, uuid_generate,
503 [LIBUUID=`$PKG_CONFIG --libs uuid`;
504 STATIC_LIBUUID=`$PKG_CONFIG --static --libs uuid`])
506 if test -n "$LIBUUID"; then
507 PROFILED_LIBUUID=$LIBUUID
509 AC_MSG_RESULT([Using system uuid by default])
511 LIBUUID='$(LIB)/libuuid'$LIB_EXT
513 STATIC_LIBUUID='$(LIB)/libuuid'$STATIC_LIB_EXT
514 DEPSTATIC_LIBUUID=$STATIC_LIBUUID
515 PROFILED_LIBUUID='$(LIB)/libuuid'$PROFILED_LIB_EXT
516 DEPPROFILED_LIBUUID=$PROFILED_LIBUUID
517 AC_MSG_RESULT([Enabling private uuid library by default])
522 AC_SUBST(STATIC_LIBUUID)
523 AC_SUBST(DEPSTATIC_LIBUUID)
524 AC_SUBST(PROFILED_LIBUUID)
525 AC_SUBST(DEPPROFILED_LIBUUID)
528 dnl handle --disable-libblkid
536 DEPPROFILED_LIBBLKID=
538 AH_TEMPLATE([CONFIG_BUILD_FINDFS], [Define to 1 to compile findfs])
539 AC_ARG_ENABLE([libblkid],
540 AS_HELP_STRING([--enable-libblkid],[build and use private blkid library]),
541 if test "$enableval" = "no"
543 if test -z "$PKG_CONFIG"; then
544 AC_MSG_ERROR([pkg-config not installed; please install it.])
547 AC_CHECK_LIB(blkid, blkid_get_cache,
548 [LIBBLKID=`$PKG_CONFIG --libs blkid`;
549 STATIC_LIBBLKID=`$PKG_CONFIG --static --libs blkid`],
550 [AC_MSG_ERROR([external blkid library not found])], -luuid)
552 PROFILED_LIBBLKID=$LIBBLKID
553 AC_MSG_RESULT([Disabling private blkid library])
555 LIBBLKID='$(LIB)/libblkid'$LIB_EXT
556 DEPLIBBLKID=$LIBBLKID
557 STATIC_LIBBLKID='$(LIB)/libblkid'$STATIC_LIB_EXT
558 DEPSTATIC_LIBBLKID=$STATIC_LIBBLKID
559 PROFILED_LIBBLKID='$(LIB)/libblkid'$PROFILED_LIB_EXT
560 DEPPROFILED_LIBBLKID=$PROFILED_LIBBLKID
561 AC_DEFINE(CONFIG_BUILD_FINDFS, 1)
562 AC_MSG_RESULT([Enabling private blkid library])
565 if test -n "$PKG_CONFIG"; then
566 AC_CHECK_LIB(blkid, blkid_get_cache,
567 [LIBBLKID=`$PKG_CONFIG --libs blkid`;
568 STATIC_LIBBLKID=`$PKG_CONFIG --static --libs blkid`])
570 if test -n "$LIBBLKID"; then
572 PROFILED_LIBBLKID=$LIBBLKID
573 AC_MSG_RESULT([Using system blkid library by default])
575 LIBBLKID='$(LIB)/libblkid'$LIB_EXT
576 DEPLIBBLKID=$LIBBLKID
577 STATIC_LIBBLKID='$(LIB)/libblkid'$STATIC_LIB_EXT
578 DEPSTATIC_LIBBLKID=$STATIC_LIBBLKID
579 PROFILED_LIBBLKID='$(LIB)/libblkid'$PROFILED_LIB_EXT
580 DEPPROFILED_LIBBLKID=$PROFILED_LIBBLKID
581 AC_DEFINE(CONFIG_BUILD_FINDFS, 1)
582 AC_MSG_RESULT([Enabling private blkid library by default])
586 AC_SUBST(DEPLIBBLKID)
587 AC_SUBST(STATIC_LIBBLKID)
588 AC_SUBST(DEPSTATIC_LIBBLKID)
589 AC_SUBST(PROFILED_LIBBLKID)
590 AC_SUBST(DEPPROFILED_LIBBLKID)
593 dnl handle --enable-subset
597 AC_ARG_ENABLE([subset],
598 AS_HELP_STRING([--enable-subset],[enable subset-only build]),
599 if test "$enableval" = "no"
602 AC_MSG_RESULT([Disabling subset-only build])
605 AC_MSG_RESULT([Enabling subset-only-build])
611 dnl handle --disable-backtrace
613 AH_TEMPLATE([DISABLE_BACKTRACE], [Define to 1 to disable use of backtrace])
614 AC_ARG_ENABLE([backtrace],
615 AS_HELP_STRING([--disable-backtrace],[disable use backtrace]),
616 if test "$enableval" = "no"
618 AC_MSG_RESULT([Disabling use of backtrace])
619 AC_DEFINE(DISABLE_BACKTRACE, 1)
621 AC_MSG_RESULT([Enabling use of backtrace])
624 AC_MSG_RESULT([Enabling use of backtrace by default])
627 dnl handle --enable-debugfs
629 AC_ARG_ENABLE([debugfs],
630 AS_HELP_STRING([--disable-debugfs],[disable support of debugfs program]),
631 if test "$enableval" = "no"
633 AC_MSG_RESULT([Disabling debugfs support])
637 AC_MSG_RESULT([Enabling debugfs support])
640 AC_MSG_RESULT([Enabling debugfs support by default])
643 AC_SUBST(DEBUGFS_CMT)
645 dnl handle --enable-imager
647 AC_ARG_ENABLE([imager],
648 AS_HELP_STRING([--disable-imager],[disable support of e2image program]),
649 if test "$enableval" = "no"
651 AC_MSG_RESULT([Disabling e2image support])
655 AC_MSG_RESULT([Enabling e2image support])
658 AC_MSG_RESULT([Enabling e2image support by default])
663 dnl handle --enable-resizer
665 AC_ARG_ENABLE([resizer],
666 AS_HELP_STRING([--disable-resizer],[disable support of e2resize program]),
667 if test "$enableval" = "no"
669 AC_MSG_RESULT([Disabling e2resize support])
673 AC_MSG_RESULT([Enabling e2resize support])
676 AC_MSG_RESULT([Enabling e2resize support by default])
679 AC_SUBST(RESIZER_CMT)
681 dnl handle --enable-defrag
683 AC_ARG_ENABLE([defrag],
684 AS_HELP_STRING([--disable-defrag],[disable support of e4defrag program]),
685 if test "$enableval" = "no"
687 AC_MSG_RESULT([Disabling e4defrag support])
691 AC_MSG_RESULT([Enabling e4defrag support])
694 if test -z "$WITH_DIET_LIBC"
696 AC_MSG_RESULT([Enabling e4defrag support by default])
699 AC_MSG_RESULT([Disabling e4defrag support by default])
705 dnl See whether to install the `fsck' wrapper program (that calls e2fsck)
707 AC_ARG_ENABLE([fsck],
708 AS_HELP_STRING([--enable-fsck],[build fsck wrapper program]),
709 [if test "$enableval" = "no"
711 FSCK_PROG='' FSCK_MAN=''
712 AC_MSG_RESULT([Not building fsck wrapper])
714 FSCK_PROG=fsck FSCK_MAN=fsck.8
715 AC_MSG_RESULT([Building fsck wrapper])
720 FSCK_PROG='' FSCK_MAN=''
721 AC_MSG_RESULT([Not building fsck wrapper by default])
724 FSCK_PROG=fsck FSCK_MAN=fsck.8
725 AC_MSG_RESULT([Building fsck wrapper by default])
731 dnl See whether to install the `e2initrd-helper' program
733 AC_ARG_ENABLE([e2initrd-helper],
734 AS_HELP_STRING([--enable-e2initrd-helper],[build e2initrd-helper program]),
735 [if test "$enableval" = "no"
737 E2INITRD_PROG='' E2INITRD_MAN=''
738 AC_MSG_RESULT([Not building e2initrd helper])
740 E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8
741 AC_MSG_RESULT([Building e2initrd helper])
744 E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8
745 AC_MSG_RESULT([Building e2initrd helper by default])
747 AC_SUBST(E2INITRD_PROG)
748 AC_SUBST(E2INITRD_MAN)
753 AS_HELP_STRING([--disable-tls],[disable use of thread local support]),
754 [if test "$enableval" = "no"
757 AC_MSG_RESULT([Disabling thread local support])
760 AC_MSG_RESULT([Enabling thread local support])
763 if test -n "$WITH_DIET_LIBC"
766 AC_MSG_RESULT([Diet libc does not support thread local support])
769 AC_MSG_RESULT([Try using thread local support by default])
772 if test "$try_tls" = "yes"
779 AC_ARG_WITH([pthread],
780 AS_HELP_STRING([--without-pthread],[disable use of pthread support]),
781 [if test "$withval" = "no"
784 AC_MSG_RESULT([Disabling pthread support])
787 AC_MSG_RESULT([Testing for pthread support])
791 AC_MSG_RESULT([Try testing for pthread support by default])
793 if test "$try_pthread" = "yes"
797 test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
798 AC_SUBST([PTHREAD_CC])
803 AH_TEMPLATE([USE_UUIDD], [Define to 1 to build uuidd])
804 AC_ARG_ENABLE([uuidd],
805 AS_HELP_STRING([--disable-uuidd],[disable building the uuid daemon]),
806 [if test "$enableval" = "no"
808 AC_MSG_RESULT([Not building uuidd])
811 AC_DEFINE(USE_UUIDD, 1)
813 AC_MSG_RESULT([Building uuidd])
816 AC_DEFINE(USE_UUIDD, 1)
817 if test -z "$UUID_CMT"
820 AC_MSG_RESULT([Building uuidd by default])
823 AC_MSG_RESULT([Disabling uuidd by default])
828 dnl handle --disable-mmp
830 AH_TEMPLATE([CONFIG_MMP], [Define to 1 to enable mmp support])
832 AS_HELP_STRING([--disable-mmp],[disable support mmp, Multi Mount Protection]),
833 if test "$enableval" = "no"
835 AC_MSG_RESULT([Disabling mmp support])
837 AC_MSG_RESULT([Enabling mmp support])
838 AC_DEFINE(CONFIG_MMP, 1)
841 AC_MSG_RESULT([Enabling mmp support by default])
842 AC_DEFINE(CONFIG_MMP, 1)
845 dnl handle --disable-tdb
847 AH_TEMPLATE([CONFIG_TDB], [Define to 1 to enable tdb support])
849 AS_HELP_STRING([--disable-tdb],[disable tdb support]),
851 if test "$enableval" = "no"
853 AC_MSG_RESULT([Disabling tdb support])
856 AC_MSG_RESULT([Enabling tdb support])
864 AC_MSG_RESULT([Disabling tdb support by default])
868 AC_MSG_RESULT([Enabling tdb support by default])
874 if test "$CONFIG_TDB" = "1"
876 AC_DEFINE(CONFIG_TDB, 1)
881 TDB_MAN_COMMENT='.\"'
884 AC_SUBST(TDB_MAN_COMMENT)
886 dnl handle --disable-bmap-stats
888 AH_TEMPLATE([ENABLE_BMAP_STATS], [Define to 1 to enable bitmap stats.])
889 AC_ARG_ENABLE([bmap-stats],
890 AS_HELP_STRING([--disable-bmap-stats],[disable collection of bitmap stats]),
891 if test "$enableval" = "no"
893 AC_MSG_RESULT([Disabling bitmap statistics support])
895 AC_MSG_RESULT([Enabling bitmap statistics support])
896 AC_DEFINE(ENABLE_BMAP_STATS, 1)
899 AC_MSG_RESULT([Enabling bitmap statistics support by default])
900 AC_DEFINE(ENABLE_BMAP_STATS, 1)
903 dnl handle --enable-bmap-stats-ops
905 AH_TEMPLATE([ENABLE_BMAP_STATS_OPS], [Define to 1 to enable bitmap stats.])
906 AC_ARG_ENABLE([bmap-stats-ops],
907 AS_HELP_STRING([--enable-bmap-stats-ops],[enable collection of additional bitmap stats]),
908 if test "$enableval" = "no"
910 AC_MSG_RESULT([Disabling additional bitmap statistics])
912 dnl There has to be a better way!
913 AS_IF([test "x${enable_bmap_stats}" = "xno"],
914 AC_MSG_FAILURE([Error --enable-bmap-stats-ops requires bmap-stats]))
916 AC_MSG_RESULT([Enabling additional bitmap statistics])
917 AC_DEFINE(ENABLE_BMAP_STATS_OPS, 1)
920 AC_MSG_RESULT([Disabling additional bitmap statistics by default])
925 MAKEFILE_LIBRARY=$srcdir/lib/Makefile.library
926 AC_SUBST_FILE(MAKEFILE_LIBRARY)
928 dnl Add internationalization support, using gettext.
930 GETTEXT_PACKAGE=e2fsprogs
932 VERSION="$E2FSPROGS_VERSION"
934 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [package name for gettext])
935 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [version for gettext])
936 AC_SUBST(GETTEXT_PACKAGE)
940 AM_GNU_GETTEXT([external])
942 dnl End of configuration options
944 AC_SUBST(BINARY_TYPE)
947 AC_PATH_PROG(LN, ln, ln)
950 dnl @mkdir_p@ is used by po's Makefile.in
955 AC_PATH_PROG(MV, mv, mv)
956 AC_PATH_PROG(CP, cp, cp)
957 AC_PATH_PROG(RM, rm, rm)
958 AC_PATH_PROG(CHMOD, chmod, :)
961 AC_PATH_PROG(SED, sed, sed)
962 AC_PATH_PROG(PERL, perl, perl)
963 AC_PATH_PROG(LDCONFIG, ldconfig, :)
964 AC_CHECK_TOOL(AR, ar, ar)
965 AC_CHECK_TOOL(RANLIB, ranlib, :)
966 AC_CHECK_TOOL(STRIP, strip, :)
967 AC_CHECK_PROG(MAKEINFO, makeinfo, makeinfo, )
968 if test "_$MAKEINFO" = "_"; then
969 MAKEINFO="echo Makeinfo is missing. Info documentation will not be built."
974 *** Makeinfo is missing. Info documentation will not be built.])
982 # See if we need a separate native compiler.
983 if test $cross_compiling = no; then
987 AC_CHECK_PROGS(BUILD_CC, gcc cc)
989 AC_CHECK_HEADERS(m4_flatten([
1043 # The above checks only detect system headers, not the headers in
1044 # ./include/mingw/, so explicitly define them to be available.
1045 AC_DEFINE(HAVE_LINUX_TYPES_H, 1)
1046 AC_DEFINE(HAVE_SYS_STAT_H, 1)
1047 AC_DEFINE(HAVE_SYS_SYSMACROS_H, 1)
1048 AC_DEFINE(HAVE_SYS_TYPES_H, 1)
1049 AC_DEFINE(HAVE_UNISTD_H, 1)
1052 dnl Check where to find a dd(1) that supports iflag=fullblock
1053 dnl and oflag=append
1054 AC_MSG_CHECKING([for a dd(1) program that supports iflag=fullblock])
1056 for i in dd gdd ; do
1057 if "$i" if=/dev/null of=/dev/null count=1 bs=10k 2>/dev/null iflag=fullblock oflag=append ; then
1062 if test -n "$DD" ; then
1063 AC_MSG_RESULT([$DD])
1065 AC_MSG_RESULT([not found, using dd])
1067 AC_MSG_WARN([No GNU-compatible dd(1) program found, expect some self-test failures.])
1071 AC_CHECK_HEADERS(net/if.h,,,
1073 #if HAVE_SYS_TYPES_H
1074 #include <sys/types.h>
1077 #include <sys/socket.h>
1081 dnl Check to see if dirent has member d_reclen. On cygwin those d_reclen
1082 dnl is not declared.
1083 AC_CHECK_MEMBER(struct dirent.d_reclen,[AC_DEFINE(HAVE_RECLEN_DIRENT, 1,
1084 [Define to 1 if dirent has d_reclen])],,
1085 [#include <dirent.h>])
1086 AC_CHECK_MEMBERS([struct stat.st_atim])
1087 dnl Check to see if ssize_t was declared
1088 AC_CHECK_TYPE(ssize_t,[AC_DEFINE(HAVE_TYPE_SSIZE_T, 1,
1089 [Define to 1 if ssize_t declared])],,
1090 [#include <sys/types.h>])
1092 dnl Check to see if llseek() is declared in unistd.h. On some libc's
1093 dnl it is, and on others it isn't..... Thank you glibc developers....
1095 AC_CHECK_DECL(llseek,[AC_DEFINE(HAVE_LLSEEK_PROTOTYPE, 1,
1096 [Define to 1 if llseek declared in unistd.h])],,
1097 [#include <unistd.h>])
1099 dnl Check to see if lseek64() is declared in unistd.h. Glibc's header files
1100 dnl are so convoluted that I can't tell whether it will always be defined,
1101 dnl and if it isn't defined while lseek64 is defined in the library,
1102 dnl disaster will strike.
1104 dnl Warning! Use of --enable-gcc-wall may throw off this test.
1107 AC_CHECK_DECL(lseek64,[AC_DEFINE(HAVE_LSEEK64_PROTOTYPE, 1,
1108 [Define to 1 if lseek64 declared in unistd.h])],,
1109 [#define _LARGEFILE_SOURCE
1110 #define _LARGEFILE64_SOURCE
1111 #include <unistd.h>])
1113 dnl The Android NDK has <linux/fsmap.h>, but it is missing the inline functions
1114 dnl fsmap_sizeof() and fsmap_advance(). Check whether this is the case.
1115 AC_CHECK_DECL(fsmap_sizeof,[AC_DEFINE(HAVE_FSMAP_SIZEOF, 1,
1116 [Define to 1 if fsmap_sizeof() is declared in linux/fsmap.h])],,
1117 [#include <linux/fsmap.h>])
1122 AC_CHECK_SIZEOF(short)
1123 AC_CHECK_SIZEOF(int)
1124 AC_CHECK_SIZEOF(long)
1125 AC_CHECK_SIZEOF(long long)
1126 AC_CHECK_SIZEOF(off_t)
1127 AC_CHECK_SIZEOF(time_t)
1128 SIZEOF_SHORT=$ac_cv_sizeof_short
1129 SIZEOF_INT=$ac_cv_sizeof_int
1130 SIZEOF_LONG=$ac_cv_sizeof_long
1131 SIZEOF_LONG_LONG=$ac_cv_sizeof_long_long
1132 SIZEOF_OFF_T=$ac_cv_sizeof_off_t
1133 SIZEOF_TIME_T=$ac_cv_sizeof_time_t
1134 AC_SUBST(SIZEOF_SHORT)
1135 AC_SUBST(SIZEOF_INT)
1136 AC_SUBST(SIZEOF_LONG)
1137 AC_SUBST(SIZEOF_LONG_LONG)
1138 AC_SUBST(SIZEOF_OFF_T)
1139 AC_SUBST(SIZEOF_TIME_T)
1141 if test $cross_compiling = no; then
1142 BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh
1144 CROSS_COMPILE="1" BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh
1146 ASM_TYPES_HEADER=./asm_types.h
1147 AC_SUBST_FILE(ASM_TYPES_HEADER)
1149 dnl Save the configuration #defines needed for the public ext2fs.h
1152 echo "/* These defines are needed for the public ext2fs.h header file */" \
1154 if grep HAVE_SYS_TYPES_H confdefs.h > tmp_config.$$; then
1155 uniq tmp_config.$$ >> public_config.h
1157 echo "#undef HAVE_SYS_TYPES_H" >> public_config.h
1159 if grep SIZEOF_TIME_T confdefs.h > tmp_config.$$; then
1160 uniq tmp_config.$$ >> public_config.h
1162 echo "#undef SIZEOF_TIME_T" >> public_config.h
1164 if grep WORDS_BIGENDIAN confdefs.h > tmp_config.$$; then
1165 uniq tmp_config.$$ >> public_config.h
1167 echo "#undef WORDS_BIGENDIAN" >> public_config.h
1170 PUBLIC_CONFIG_HEADER=./public_config.h
1171 AC_SUBST_FILE(PUBLIC_CONFIG_HEADER)
1173 dnl See if we have inttypes.h and if intptr_t is defined
1175 AC_CHECK_HEADERS([inttypes.h])
1176 AC_CHECK_TYPES(intptr_t)
1178 dnl See if struct stat has a st_flags field, in which case we can get file
1179 dnl flags somewhat portably. Also check for the analogous setter, chflags().
1181 AC_MSG_CHECKING(whether struct stat has a st_flags field)
1182 AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags,
1183 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[struct stat stat; stat.st_flags = 0;]])],[e2fsprogs_cv_struct_st_flags=yes],[e2fsprogs_cv_struct_st_flags=no]))
1184 AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags)
1185 if test "$e2fsprogs_cv_struct_st_flags" = yes; then
1186 AC_MSG_CHECKING(whether st_flags field is useful)
1187 AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags_immut,
1188 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[struct stat stat; stat.st_flags |= UF_IMMUTABLE;]])],[e2fsprogs_cv_struct_st_flags_immut=yes],[e2fsprogs_cv_struct_st_flags_immut=no]))
1189 AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags_immut)
1190 if test "$e2fsprogs_cv_struct_st_flags_immut" = yes; then
1191 AC_DEFINE(HAVE_STAT_FLAGS, 1,
1192 [Define to 1 if struct stat has st_flags])
1196 dnl Check for the presence of SA_LEN
1198 AC_CHECK_MEMBER(struct sockaddr.sa_len,
1199 AC_DEFINE_UNQUOTED(HAVE_SA_LEN,1,
1200 [Define to 1 if if struct sockaddr contains sa_len]),,
1201 [#include <sys/types.h>
1202 #include <sys/socket.h>])
1204 dnl If we are using the system-provided blkid library, check for
1205 dnl the functions added after migrating that library to util-linux
1207 if test -n "$BLKID_CMT"; then
1208 AC_CHECK_LIB(blkid, blkid_probe_get_topology,
1209 AC_DEFINE(HAVE_BLKID_PROBE_GET_TOPOLOGY, 1,
1210 [Define to 1 if blkid has blkid_probe_get_topology]))
1211 AC_CHECK_LIB(blkid, blkid_topology_get_dax,
1212 AC_DEFINE(HAVE_BLKID_TOPOLOGY_GET_DAX, 1,
1213 [Define to 1 if blkid has blkid_topology_get_dax]))
1214 AC_CHECK_LIB(blkid, blkid_probe_enable_partitions,
1215 AC_DEFINE(HAVE_BLKID_PROBE_ENABLE_PARTITIONS, 1,
1216 [Define to 1 if blkid has blkid_probe_enable_partitions]))
1219 if test -n "$DLOPEN_LIB" ; then
1220 ac_cv_func_dlopen=yes
1222 AC_CHECK_FUNCS(m4_flatten([
1291 dnl Check to see if -lsocket is required (solaris) to make something
1292 dnl that uses socket() to compile; this is needed for the UUID library
1295 AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket])
1296 AC_SUBST(SOCKET_LIB)
1298 dnl See if libmagic exists
1300 AC_CHECK_LIB(magic, magic_file, [MAGIC_LIB=-lmagic
1301 AC_CHECK_HEADERS([magic.h])])
1302 if test "$ac_cv_func_dlopen" = yes ; then
1303 MAGIC_LIB=$DLOPEN_LIB
1309 AC_ARG_WITH([libarchive],
1310 AS_HELP_STRING([--without-libarchive],[disable use of libarchive]),
1311 [if test "$withval" = "no"
1314 AC_MSG_RESULT([Disabling libarchive support])
1315 AC_DEFINE(CONFIG_DISABLE_LIBARCHIVE, 1,
1316 [Define to 1 to completely disable libarchive])
1317 elif test "$withval" = "direct"
1319 try_libarchive="direct"
1320 AC_MSG_RESULT([Testing for libarchive support (forced direct link)])
1322 try_libarchive="yes"
1323 AC_MSG_RESULT([Testing for libarchive support (with dlopen)])
1326 try_libarchive="yes"
1327 AC_MSG_RESULT([Try testing for libarchive support (with dlopen) by default])
1330 if test -n "$try_libarchive"
1332 AC_CHECK_LIB(archive, archive_read_new, [ARCHIVE_LIB=-larchive
1333 AC_CHECK_HEADERS([archive.h])])
1334 if test "$ac_cv_func_dlopen" = yes -a "$try_libarchive" != "direct"; then
1335 ARCHIVE_LIB=$DLOPEN_LIB
1336 AC_DEFINE(CONFIG_DLOPEN_LIBARCHIVE, 1,
1337 [Define to 1 if using dlopen to access libarchive])
1340 if test "$ac_cv_header_archive_h" != "yes"
1345 AC_SUBST(ARCHIVE_LIB)
1347 dnl Check to see if librt is required for clock_gettime() (glibc < 2.17)
1349 AC_CHECK_LIB(rt, clock_gettime, [CLOCK_GETTIME_LIB=-lrt])
1350 AC_SUBST(CLOCK_GETTIME_LIB)
1352 dnl Check to see if the FUSE library is -lfuse3, -losxfuse, or -lfuse
1356 dnl osxfuse.dylib supersedes fuselib.dylib
1357 AC_ARG_ENABLE([fuse2fs],
1358 AS_HELP_STRING([--disable-fuse2fs],[do not build fuse2fs]),
1359 if test "$enableval" = "no"
1362 AC_MSG_RESULT([Disabling fuse2fs])
1365 [AC_LANG_PROGRAM([[#ifdef __linux__
1366 #include <linux/fs.h>
1367 #include <linux/falloc.h>
1368 #include <linux/xattr.h>
1370 ]], [])], [], [AC_MSG_FAILURE([Cannot find fuse2fs Linux headers.])])
1372 PKG_CHECK_MODULES([fuse3], [fuse3],
1376 AC_CHECK_HEADERS([pthread.h fuse.h], [],
1377 [AC_MSG_FAILURE([Cannot find fuse2fs headers.])],
1378 [#define _FILE_OFFSET_BITS 64
1379 #define FUSE_USE_VERSION 29])
1381 AC_CHECK_LIB(osxfuse, fuse_main, [FUSE_LIB=-losxfuse],
1382 [AC_CHECK_LIB(fuse, fuse_main, [FUSE_LIB=-lfuse],
1383 [AC_MSG_FAILURE([Cannot find fuse library.])])])
1385 AC_MSG_RESULT([Enabling fuse2fs])
1388 PKG_CHECK_MODULES([fuse3], [fuse3],
1392 AC_CHECK_HEADERS([pthread.h fuse.h], [], [FUSE_CMT="#"],
1393 [#define _FILE_OFFSET_BITS 64
1394 #define FUSE_USE_VERSION 29
1396 # include <linux/fs.h>
1397 # include <linux/falloc.h>
1398 # include <linux/xattr.h>
1400 if test -z "$FUSE_CMT"
1402 AC_CHECK_LIB(osxfuse, fuse_main, [FUSE_LIB=-losxfuse],
1403 [AC_CHECK_LIB(fuse, fuse_main, [FUSE_LIB=-lfuse],
1407 if test -z "$FUSE_CMT"
1409 AC_MSG_RESULT([Enabling fuse2fs by default.])
1414 if test "$FUSE_LIB" = "-lfuse3"
1417 CFLAGS="$CFLAGS $fuse3_CFLAGS"
1418 LDFLAGS="$LDFLAGS $fuse3_LDFLAGS"
1419 AC_CHECK_HEADERS([pthread.h fuse.h], [],
1420 [AC_MSG_FAILURE([Cannot find fuse3 fuse2fs headers.])],
1421 [#define _FILE_OFFSET_BITS 64
1422 #define FUSE_USE_VERSION 35
1424 #include <linux/fs.h>
1425 #include <linux/falloc.h>
1426 #include <linux/xattr.h>
1428 elif test -n "$FUSE_LIB"
1432 if test -n "$FUSE_USE_VERSION"
1434 AC_DEFINE_UNQUOTED(FUSE_USE_VERSION, $FUSE_USE_VERSION,
1435 [Define to the version of FUSE to use])
1438 dnl See if optreset exists
1440 AC_MSG_CHECKING(for optreset)
1441 AC_CACHE_VAL(ac_cv_have_optreset,
1442 [AC_EGREP_HEADER(optreset, unistd.h,
1443 ac_cv_have_optreset=yes, ac_cv_have_optreset=no)])dnl
1444 AC_MSG_RESULT($ac_cv_have_optreset)
1445 if test $ac_cv_have_optreset = yes; then
1446 AC_DEFINE(HAVE_OPTRESET, 1, [Define to 1 if optreset for getopt is present])
1449 dnl Test for sem_init, and which library it might require:
1451 AH_TEMPLATE([HAVE_SEM_INIT], [Define to 1 if sem_init() exists])
1453 echo GL_THREADS_API: ${gl_threads_api}
1454 if test "${gl_threads_api}" != none
1456 AC_CHECK_FUNC(sem_init, ,
1457 AC_CHECK_LIB(pthread, sem_init,
1458 AC_DEFINE(HAVE_SEM_INIT, 1)
1459 SEM_INIT_LIB=-lpthread,
1460 AC_CHECK_LIB(rt, sem_init,
1461 AC_DEFINE(HAVE_SEM_INIT, 1)
1463 AC_CHECK_LIB(posix4, sem_init,
1464 AC_DEFINE(HAVE_SEM_INIT, 1)
1465 SEM_INIT_LIB=-lposix4))))dnl
1467 AC_SUBST(SEM_INIT_LIB)
1469 dnl qsort_r detection
1471 AS_IF([test "$ac_cv_func_qsort_r" != no], [
1472 AC_CACHE_CHECK(whether qsort_r is GNU version, e2_cv_gnu_qsort_r,
1473 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1474 @%:@include <stdlib.h>
1475 void (qsort_r)(void *base, size_t nmemb, size_t size,
1476 int (*compar)(const void *, const void *, void *),
1478 ]], [[ ]])],[e2_cv_gnu_qsort_r=yes],[e2_cv_gnu_qsort_r=no])
1480 AC_CACHE_CHECK(whether qsort_r is BSD version, e2_cv_bsd_qsort_r,
1481 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1482 @%:@include <stdlib.h>
1483 void (qsort_r)(void *base, size_t nmemb, size_t size,
1484 void *arg, int (*compar)(void *, const void *, const void *));
1485 ]], [[ ]])],[e2_cv_bsd_qsort_r=yes],[e2_cv_bsd_qsort_r=no])
1487 AS_CASE("$e2_cv_gnu_qsort_r:$e2_cv_bsd_qsort_r",
1489 AC_DEFINE(HAVE_GNU_QSORT_R, 1, [ Define to 1 if you have the GNU-style 'qsort_r' function.])
1492 AC_DEFINE(HAVE_BSD_QSORT_R, 1, [ Define to 1 if you have the BSD-style 'qsort_r' function.])
1496 dnl Check for unified diff
1498 AC_MSG_CHECKING(for unified diff option)
1499 if diff -u $0 $0 > /dev/null 2>&1 ; then
1504 AC_MSG_RESULT($UNI_DIFF_OPTS)
1505 AC_SUBST(UNI_DIFF_OPTS)
1507 dnl We use the EXT2 ioctls only under Linux
1511 AC_DEFINE(HAVE_EXT2_IOCTLS, 1, [Define to 1 if Ext2 ioctls present])
1515 dnl Check the available mount options
1517 AX_CHECK_MOUNT_OPT(nosuid)
1518 AX_CHECK_MOUNT_OPT(nodev)
1519 dnl Enable LTO for all packages
1521 AC_ARG_ENABLE([lto],
1522 AS_HELP_STRING([--enable-lto],[enable link time optimization]),,
1524 if test "$enable_lto" = "yes" || test "$enable_lto" = "probe"; then
1525 AC_MSG_CHECKING([if C compiler supports LTO])
1526 OLD_CFLAGS="$CFLAGS"
1527 OLD_LDFLAGS="$LDFLAGS"
1528 LTO_FLAGS="-g -flto -ffat-lto-objects"
1529 CFLAGS="$CFLAGS $LTO_FLAGS"
1530 LDFLAGS="$LDFLAGS $LTO_FLAGS"
1531 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1532 [AC_MSG_RESULT([yes])]
1533 [lto_cflags=$LTO_FLAGS]
1534 [lto_ldflags=$LTO_FLAGS]
1535 [AC_PATH_PROG(gcc_ar, gcc-ar,,)]
1536 [AC_PATH_PROG(gcc_ranlib, gcc-ranlib,,)],
1537 [AC_MSG_RESULT([no])])
1538 if test -x "$gcc_ar" && test -x "$gcc_ranlib"; then
1541 RANLIB="${gcc_ranlib}"
1543 CFLAGS="${OLD_CFLAGS}"
1544 LDFLAGS="${OLD_LDFLAGS}"
1546 AC_SUBST(lto_cflags)
1547 AC_SUBST(lto_ldflags)
1549 if test "$enable_lto" = "yes" && test "$have_lto" != "yes"; then
1550 AC_MSG_ERROR([LTO not supported by compiler.])
1553 dnl Enable UBSAN for all packages
1555 AC_ARG_ENABLE([ubsan],
1556 AS_HELP_STRING([--enable-ubsan],[enable undefined behavior sanitizer]),,
1558 if test "$enable_ubsan" = "yes" || test "$enable_ubsan" = "probe"; then
1559 AC_MSG_CHECKING([if C compiler supports UBSAN])
1560 OLD_CFLAGS="$CFLAGS"
1561 OLD_LDFLAGS="$LDFLAGS"
1562 UBSAN_FLAGS="-fsanitize=undefined"
1563 CFLAGS="$CFLAGS $UBSAN_FLAGS"
1564 LDFLAGS="$LDFLAGS $UBSAN_FLAGS"
1565 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1566 [AC_MSG_RESULT([yes])]
1567 [ubsan_cflags=$UBSAN_FLAGS]
1568 [ubsan_ldflags=$UBSAN_FLAGS]
1570 [AC_MSG_RESULT([no])])
1571 CFLAGS="${OLD_CFLAGS}"
1572 LDFLAGS="${OLD_LDFLAGS}"
1573 AC_SUBST(have_ubsan)
1574 AC_SUBST(ubsan_cflags)
1575 AC_SUBST(ubsan_ldflags)
1577 if test "$enable_ubsan" = "yes" && test "$have_ubsan" != "yes"; then
1578 AC_MSG_ERROR([UBSAN not supported by compiler.])
1581 dnl Enable ADDRSAN for all packages
1583 AC_ARG_ENABLE([addrsan],
1584 AS_HELP_STRING([--enable-addrsan],[enable address sanitizer]),,
1586 if test "$enable_addrsan" = "yes" || test "$enable_addrsan" = "probe"; then
1587 AC_MSG_CHECKING([if C compiler supports ADDRSAN])
1588 OLD_CFLAGS="$CFLAGS"
1589 OLD_LDFLAGS="$LDFLAGS"
1590 ADDRSAN_FLAGS="-fsanitize=address"
1591 CFLAGS="$CFLAGS $ADDRSAN_FLAGS"
1592 LDFLAGS="$LDFLAGS $ADDRSAN_FLAGS"
1593 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1594 [AC_MSG_RESULT([yes])]
1595 [addrsan_cflags=$ADDRSAN_FLAGS]
1596 [addrsan_ldflags=$ADDRSAN_FLAGS]
1598 [AC_MSG_RESULT([no])])
1599 CFLAGS="${OLD_CFLAGS}"
1600 LDFLAGS="${OLD_LDFLAGS}"
1601 AC_SUBST(have_addrsan)
1602 AC_SUBST(addrsan_cflags)
1603 AC_SUBST(addrsan_ldflags)
1605 if test "$enable_addrsan" = "yes" && test "$have_addrsan" != "yes"; then
1606 AC_MSG_ERROR([ADDRSAN not supported by compiler.])
1609 dnl Enable THREADSAN for all packages
1611 AC_ARG_ENABLE([threadsan],
1612 AS_HELP_STRING([--enable-threadsan],[enable thread sanitizer]),,
1613 enable_threadsan=no)
1614 if test "$enable_threadsan" = "yes" || test "$enable_threadsan" = "probe"; then
1615 AC_MSG_CHECKING([if C compiler supports THREADSAN])
1616 OLD_CFLAGS="$CFLAGS"
1617 OLD_LDFLAGS="$LDFLAGS"
1618 THREADSAN_FLAGS="-fsanitize=thread"
1619 CFLAGS="$CFLAGS $THREADSAN_FLAGS"
1620 LDFLAGS="$LDFLAGS $THREADSAN_FLAGS"
1621 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1622 [AC_MSG_RESULT([yes])]
1623 [threadsan_cflags=$THREADSAN_FLAGS]
1624 [threadsan_ldflags=$THREADSAN_FLAGS]
1625 [have_threadsan=yes],
1626 [AC_MSG_RESULT([no])])
1627 CFLAGS="${OLD_CFLAGS}"
1628 LDFLAGS="${OLD_LDFLAGS}"
1629 AC_SUBST(have_threadsan)
1630 AC_SUBST(threadsan_cflags)
1631 AC_SUBST(threadsan_ldflags)
1633 if test "$enable_threadsan" = "yes" && test "$have_threadsan" != "yes"; then
1634 AC_MSG_ERROR([THREADSAN not supported by compiler.])
1636 if test "$have_threadsan" = "yes" && test "$have_addrsan" = "yes"; then
1637 AC_MSG_WARN([ADDRSAN and THREADSAN are not known to work together.])
1640 dnl Enable the fuzzer sanitizer for all packages
1643 AC_ARG_ENABLE([fuzzing],
1644 AS_HELP_STRING([--enable-fuzzing],[enable fuzzing sanitizer]),,
1646 if test "$enable_fuzzing" = "yes" || test "$enable_fuzzing" = "probe"; then
1648 AC_MSG_CHECKING([if C compiler supports fuzzing sanitizer])
1650 OLD_CXXFLAGS="$CXXFLAGS"
1651 OLD_LDFLAGS="$LDFLAGS"
1652 FUZZER_FLAGS="-fsanitize=fuzzer"
1653 CXXFLAGS="$CXXFLAGS $FUZZER_FLAGS"
1654 LDFLAGS="$LDFLAGS $FUZZER_FLAGS"
1655 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1660 [AC_MSG_RESULT([yes])]
1661 [fuzzer_cflags=$FUZZER_FLAGS]
1662 [fuzzer_ldflags=$FUZZER_FLAGS]
1665 [AC_MSG_RESULT([no])]
1666 [AC_MSG_ERROR([fuzzing requested but not available])])
1667 CXXFLAGS="${OLD_CXXFLAGS}"
1668 LDFLAGS="${OLD_LDFLAGS}"
1670 AC_SUBST(have_fuzzer)
1671 AC_SUBST(fuzzer_cflags)
1672 AC_SUBST(fuzzer_ldflags)
1674 AC_SUBST(FUZZING_CMT)
1676 dnl OS-specific uncomment control
1691 AC_SUBST(CYGWIN_CMT)
1694 dnl e2scrub only builds on linux
1696 E2SCRUB_CMT="$LINUX_CMT"
1697 AC_SUBST(E2SCRUB_CMT)
1699 dnl Linux and Hurd places root files in the / by default
1702 linux* | gnu* | k*bsd*-gnu)
1703 if test "$prefix" = NONE -a "$root_prefix" = NONE ; then
1705 AC_MSG_RESULT([On $host_os systems, root_prefix defaults to ''])
1710 dnl On Linux/hurd, force the prefix to be /usr
1713 linux* | gnu* | k*bsd*-gnu)
1714 if test "$prefix" = NONE ; then
1716 AC_MSG_RESULT([On $host_os systems, prefix defaults to /usr])
1717 if test "$mandir" = '${prefix}/man' ; then
1718 AC_MSG_RESULT([...and mandir defaults to /usr/share/man])
1719 mandir=/usr/share/man
1724 if test "$root_prefix" = NONE ; then
1725 if test "$prefix" = NONE ; then
1726 root_prefix="$ac_default_prefix"
1728 root_prefix="$prefix"
1731 root_sbindir=$sbindir
1733 root_sysconfdir=$sysconfdir
1735 root_bindir='${root_prefix}/bin'
1736 root_sbindir='${root_prefix}/sbin'
1737 root_libdir='${root_prefix}/lib'
1738 root_sysconfdir='${root_prefix}/etc'
1740 if test "$bindir" != '${exec_prefix}/bin'; then
1742 AC_MSG_RESULT([Setting root_bindir to $root_bindir])
1744 if test "$sbindir" != '${exec_prefix}/sbin'; then
1745 root_sbindir=$sbindir
1746 AC_MSG_RESULT([Setting root_sbindir to $root_sbindir])
1748 if test "$libdir" != '${exec_prefix}/lib'; then
1750 AC_MSG_RESULT([Setting root_libdir to $root_libdir])
1752 if test "$sysconfdir" != '${prefix}/etc'; then
1753 root_sysconfdir=$sysconfdir
1754 AC_MSG_RESULT([Setting root_sysconfdir to $root_sysconfdir])
1756 AC_SUBST(root_prefix)
1757 AC_SUBST(root_bindir)
1758 AC_SUBST(root_sbindir)
1759 AC_SUBST(root_libdir)
1760 AC_SUBST(root_sysconfdir)
1762 dnl Allow specification of the multiarch arch
1764 AC_ARG_WITH([multiarch],
1765 AS_HELP_STRING([--with-multiarch=ARCH],[specify the multiarch triplet]),
1766 if test "$withval" = "lib64"; then
1770 libdir=$libdir/$withval
1771 root_libdir=$root_libdir/$withval
1776 dnl See if -static works. This could fail if the linker does not
1777 dnl support -static, or if required external libraries are not available
1780 AC_MSG_CHECKING([whether we can link with -static])
1781 AC_CACHE_VAL(ac_cv_e2fsprogs_use_static,
1782 [SAVE_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS_STATIC -static"
1783 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[fflush(stdout);]])],[ac_cv_e2fsprogs_use_static=yes],[ac_cv_e2fsprogs_use_static=no])
1784 LDFLAGS=$SAVE_LDFLAGS])
1786 dnl Regardless of how the test turns out, Solaris doesn't handle -static
1787 dnl This is caused by the socket library requiring the nsl library, which
1788 dnl requires the -dl library, which only works for dynamically linked
1789 dnl programs. It basically means you can't have statically linked programs
1790 dnl which use the network under Solaris.
1794 ac_cv_e2fsprogs_use_static=no
1797 AC_MSG_RESULT($ac_cv_e2fsprogs_use_static)
1798 if test $ac_cv_e2fsprogs_use_static = yes; then
1799 LDFLAGS_STATIC="$LDFLAGS_STATIC -static"
1801 AC_SUBST(LDFLAGS_STATIC)
1803 dnl Work around mysterious Darwin / GNU libintl problem
1804 dnl (__asm__ redirection doesn't work for some mysterious reason. Looks like
1805 dnl Apple hacked gcc somehow?)
1809 AC_MSG_RESULT([Using Apple Darwin / GNU libintl workaround])
1810 AC_DEFINE(_INTL_REDIRECT_MACROS, 1,
1811 [Define to 1 if Apple Darwin libintl workaround is needed])
1815 dnl Only try to run the test suite if we're not cross compiling.
1817 if test "$cross_compiling" = yes ; then
1822 AC_SUBST(DO_TEST_SUITE)
1824 dnl Only include the intl include files if we're building with them
1826 INCLUDES='-I. -I$(top_builddir)/lib -I$(top_srcdir)/lib'
1827 if test -n "$CPPFLAGS" ; then
1828 INCLUDES="$INCLUDES $CPPFLAGS"
1830 if test "$USE_INCLUDED_LIBINTL" = "yes" ; then
1831 INCLUDES=$INCLUDES' -I$(top_builddir)/intl -I$(top_srcdir)/intl'
1833 if test -n "$WITH_DIET_LIBC" ; then
1834 INCLUDES="$INCLUDES -D_REENTRANT"
1838 INCLUDES=$INCLUDES' -I$(top_srcdir)/include/mingw'
1845 if test $cross_compiling = no; then
1846 BUILD_CFLAGS="$CFLAGS $CPPFLAGS $INCLUDES -DHAVE_CONFIG_H"
1847 BUILD_LDFLAGS="$LDFLAGS"
1849 AC_SUBST(BUILD_CFLAGS)
1850 AC_SUBST(BUILD_LDFLAGS)
1852 dnl Define CFLAGS and LDFLAGS for shared libraries
1854 CFLAGS_SHLIB=${CFLAGS_SHLIB:-$CFLAGS}
1855 CFLAGS_STLIB=${CFLAGS_STLIB:-$CFLAGS}
1856 LDFLAGS_SHLIB=${LDFLAGS_SHLIB:-$LDFLAGS}
1857 AC_SUBST(CFLAGS_SHLIB)
1858 AC_SUBST(CFLAGS_STLIB)
1859 AC_SUBST(LDFLAGS_SHLIB)
1862 dnl Where do udev rules go?
1864 AC_ARG_WITH([udev_rules_dir],
1865 [AS_HELP_STRING([--with-udev-rules-dir@<:@=DIR@:>@],
1866 [Install udev rules into DIR.])],
1868 [with_udev_rules_dir=yes])
1869 AS_IF([test "x${with_udev_rules_dir}" != "xno"],
1871 AS_IF([test "x${with_udev_rules_dir}" = "xyes"],
1873 PKG_CHECK_MODULES([udev], [udev],
1875 with_udev_rules_dir="$($PKG_CONFIG --variable=udevdir udev)/rules.d"
1877 with_udev_rules_dir=""
1880 AC_MSG_CHECKING([for udev rules dir])
1881 pkg_udev_rules_dir="${with_udev_rules_dir}"
1882 AS_IF([test -n "${pkg_udev_rules_dir}"],
1884 AC_MSG_RESULT(${pkg_udev_rules_dir})
1893 have_udev="disabled"
1896 AC_SUBST(pkg_udev_rules_dir)
1899 dnl Where do cron jobs go?
1901 AC_ARG_WITH([crond_dir],
1902 [AS_HELP_STRING([--with-crond-dir@<:@=DIR@:>@],
1903 [Install system crontabs into DIR.])],
1905 [with_crond_dir=yes])
1906 AS_IF([test "x${with_crond_dir}" != "xno"],
1908 AS_IF([test "x${with_crond_dir}" = "xyes"],
1910 AS_IF([test -d "/etc/cron.d"],
1911 [with_crond_dir="/etc/cron.d"],
1912 [have_crond="no"; with_crond_dir=""])
1914 AC_MSG_CHECKING([for system crontab dir])
1915 crond_dir="${with_crond_dir}"
1916 AS_IF([test -n "${crond_dir}"],
1918 AC_MSG_RESULT(${crond_dir})
1927 have_crond="disabled"
1929 AC_SUBST(have_crond)
1933 dnl Where do systemd services go?
1935 AC_ARG_WITH([systemd_unit_dir],
1936 [AS_HELP_STRING([--with-systemd-unit-dir@<:@=DIR@:>@],
1937 [Install systemd system units into DIR.])],
1939 [with_systemd_unit_dir=yes])
1940 AS_IF([test "x${with_systemd_unit_dir}" != "xno"],
1942 AS_IF([test "x${with_systemd_unit_dir}" = "xyes"],
1944 PKG_CHECK_MODULES([systemd], [systemd],
1946 with_systemd_unit_dir="$($PKG_CONFIG --variable=systemdsystemunitdir systemd)"
1948 with_systemd_unit_dir=""
1950 m4_pattern_allow([^PKG_(MAJOR|MINOR|BUILD|REVISION)$])
1952 AC_MSG_CHECKING([for systemd system unit dir])
1953 systemd_system_unit_dir="${with_systemd_unit_dir}"
1954 AS_IF([test -n "${systemd_system_unit_dir}"],
1956 AC_MSG_RESULT(${systemd_system_unit_dir})
1965 have_systemd="disabled"
1967 AC_SUBST(have_systemd)
1968 AC_SUBST(systemd_system_unit_dir)
1969 dnl Adjust the compiled files if we are on windows vs everywhere else
1974 OS_IO_FILE=windows_io
1980 AC_SUBST(OS_IO_FILE)
1983 dnl Make our output files, being sure that we create the some miscellaneous
1986 test -d lib || mkdir lib
1987 test -d include || mkdir include
1988 test -d include/linux || mkdir include/linux
1989 test -d include/asm || mkdir include/asm
1990 if test -z "$UUID_CMT" ; then
1991 uuid_out_list="lib/uuid/Makefile lib/uuid/uuid.pc \
1992 lib/uuid/uuid_types.h"
1994 if test -z "$BLKID_CMT" ; then
1995 blkid_out_list="lib/blkid/Makefile lib/blkid/blkid.pc \
1996 lib/blkid/blkid_types.h"
1998 for i in MCONFIG Makefile \
1999 util/Makefile util/subst.conf util/gen-tarball util/install-symlink \
2000 lib/et/Makefile lib/ss/Makefile lib/e2p/Makefile \
2001 lib/ext2fs/Makefile lib/ext2fs/ext2_types.h \
2002 $uuid_out_list $blkid_out_list lib/support/Makefile \
2003 lib/ss/ss.pc lib/et/com_err.pc lib/e2p/e2p.pc lib/ext2fs/ext2fs.pc \
2004 misc/Makefile ext2ed/Makefile e2fsck/Makefile \
2005 debugfs/Makefile tests/Makefile tests/progs/Makefile \
2006 tests/fuzz/Makefile resize/Makefile doc/Makefile \
2007 po/Makefile.in scrub/Makefile; do
2008 if test -d `dirname ${srcdir}/$i` ; then
2009 outlist="$outlist $i"
2012 AC_CONFIG_FILES([$outlist])
2014 if test -f util/gen-tarball; then chmod +x util/gen-tarball; fi