7 dnl This is to figure out the version number and the date....
9 E2FSPROGS_VERSION=`grep E2FSPROGS_VERSION ${srcdir}/version.h \
10 | awk '{print $3}' | tr \" " " | awk '{print $1}'`
11 DATE=`grep E2FSPROGS_DATE ${srcdir}/version.h | awk '{print $3}' \
13 MONTH=`echo $DATE | awk -F- '{print $2}'`
14 YEAR=`echo $DATE | awk -F- '{print $3}'`
16 if expr $YEAR ">" 1900 > /dev/null ; then
18 elif expr $YEAR ">" 90 >/dev/null ; then
19 E2FSPROGS_YEAR=19$YEAR
21 E2FSPROGS_YEAR=20$YEAR
25 Jan) E2FSPROGS_MONTH="January" ;;
26 Feb) E2FSPROGS_MONTH="February" ;;
27 Mar) E2FSPROGS_MONTH="March" ;;
28 Apr) E2FSPROGS_MONTH="April" ;;
29 May) E2FSPROGS_MONTH="May" ;;
30 Jun) E2FSPROGS_MONTH="June" ;;
31 Jul) E2FSPROGS_MONTH="July" ;;
32 Aug) E2FSPROGS_MONTH="August" ;;
33 Sep) E2FSPROGS_MONTH="September" ;;
34 Oct) E2FSPROGS_MONTH="October" ;;
35 Nov) E2FSPROGS_MONTH="November" ;;
36 Dec) E2FSPROGS_MONTH="December" ;;
37 *) echo "Unknown month $MONTH??" ;;
41 echo "Generating configuration file for e2fsprogs version $E2FSPROGS_VERSION"
42 echo "Release date is ${E2FSPROGS_MONTH}, ${E2FSPROGS_YEAR}"
43 AC_SUBST(E2FSPROGS_YEAR)
44 AC_SUBST(E2FSPROGS_MONTH)
45 AC_SUBST(E2FSPROGS_VERSION)
48 dnl set $(CC) from --with-cc=value
51 [ --with-cc=COMPILER select compiler to use],
52 AC_MSG_RESULT(CC=$withval)
54 if test -z "$CC" ; then CC=cc; fi
55 [AC_MSG_RESULT(CC defaults to $CC)])dnl
60 dnl set $(LD) from --with-linker=value
63 [ --with-linker=LINKER select linker to use],
64 AC_MSG_RESULT(LD=$withval)
66 if test -z "$LD" ; then LD=$CC; fi
67 [AC_MSG_RESULT(LD defaults to $LD)])dnl
71 dnl set $(CCOPTS) from --with-ccopts=value
74 [ --with-ccopts=CCOPTS select compiler command line options],
75 AC_MSG_RESULT(CCOPTS is $withval)
79 dnl On systems without linux header files, we add an extra include directory
80 dnl that holds enough to fake it (hopefully). Note that the $(top_srcdir) here
81 dnl is quoted so that it gets expanded by make, not by configure.
83 AC_CHECK_HEADER(linux/fs.h, [linux_headers=yes], [linux_headers=no])
84 if test "$linux_headers" != yes; then
85 LINUX_INCLUDE='-I$(top_builddir)/include'
87 AC_SUBST(LINUX_INCLUDE)
89 dnl Set default values for library extentions. Will be dealt with after
90 dnl parsing configuration opions, which may modify these
96 dnl set $(LDFLAGS) from --with-ldopts=value
99 [ --with-ldopts=LDOPTS select linker command line options],
100 AC_MSG_RESULT(LDFLAGS is $withval)
105 dnl Allow separate `root_prefix' to be specified
107 AC_ARG_WITH([root-prefix],
108 [ --with-root-prefix=PREFIX override prefix variable for files to be placed in the root],
109 root_prefix=$withval,
112 dnl handle --enable-compression
114 AC_ARG_ENABLE([compression],
115 [ --enable-compression enable EXPERIMENTAL compression support],
116 if test "$enableval" = "no"
118 echo "Disabling compression support"
120 AC_DEFINE(ENABLE_COMPRESSION)
121 echo "Enabling compression support"
122 echo "WARNING: Compression support is experimental"
125 echo "Disabling compression support by default"
128 dnl handle --enable-htree
130 AC_ARG_ENABLE([htree],
131 [ --enable-htree enable EXPERIMENTAL htree directory support],
132 if test "$enableval" = "no"
135 echo "Disabling htree directory support"
138 AC_DEFINE(ENABLE_HTREE)
139 echo "Enabling htree directory support"
143 AC_DEFINE(ENABLE_HTREE)
144 echo "Enabling htree directory support by default"
148 dnl handle --enable-clear-htree
150 AC_ARG_ENABLE([htree-clear],
151 [ --enable-htree-clear clear htree because we don't trust e2fsck],
152 if test "$enableval" = "no"
155 echo "Disabling htree clearing"
158 AC_DEFINE(ENABLE_HTREE_CLEAR)
159 echo "Enabling htree clearing"
163 echo "Disabling htree clearing by default"
165 AC_SUBST(HTREE_CLR_CMT)
167 dnl handle --enable-emvs-10
170 AC_ARG_ENABLE([evms-10],
171 [ --enable-evms-10 use EVMS 1.0 ABI (instead of EVMS 1.2)],
172 if test "$enableval" != "no"
175 echo "Enabling EVMS 1.0.0 ABI"
179 dnl handle --enable-emvs-11
181 AC_ARG_ENABLE([evms-11],
182 [ --enable-evms-11 use EVMS 1.1 ABI (instead of EVMS 1.1)],
183 if test "$enableval" != "no"
186 echo "Enabling EVMS 1.1.0 ABI"
189 if test "$EVMS_ABI_CODE" = "120"
191 echo "Using EVMS 1.2.0 ABI by default"
193 AC_SUBST(EVMS_ABI_CODE)
195 dnl handle --enable-dll-shlibs
197 AC_ARG_ENABLE([dll-shlibs],
198 [ --enable-dll-shlibs select DLL libraries],
199 if test "$enableval" = "no"
202 MAKEFILE_DLL=/dev/null
203 echo "Disabling DLL shared libraries"
206 MAKEFILE_DLL=$srcdir/lib/Makefile.dll-lib
209 echo "Enabling DLL shared libraries"
212 MAKEFILE_DLL=/dev/null
214 echo "Disabling DLL shared libraries by default"
217 AC_SUBST_FILE(MAKEFILE_DLL)
219 dnl handle --enable-elf-shlibs
221 AC_ARG_ENABLE([elf-shlibs],
222 [ --enable-elf-shlibs select ELF shared libraries],
223 if test "$enableval" = "no"
226 MAKEFILE_ELF=/dev/null
227 echo "Disabling ELF shared libraries"
230 MAKEFILE_ELF=$srcdir/lib/Makefile.elf-lib
233 MAKEFILE_ELF=$srcdir/lib/Makefile.solaris-lib
238 echo "Enabling ELF shared libraries"
241 MAKEFILE_ELF=/dev/null
243 echo "Disabling ELF shared libraries by default"
246 AC_SUBST_FILE(MAKEFILE_ELF)
248 dnl handle --enable-bsd-shlibs
250 AC_ARG_ENABLE([bsd-shlibs],
251 [ --enable-bsd-shlibs select BSD shared libraries],
252 if test "$enableval" = "no"
255 MAKEFILE_BSDLIB=/dev/null
256 echo "Disabling BSD shared libraries"
259 MAKEFILE_BSDLIB=$srcdir/lib/Makefile.bsd-lib
261 echo "Enabling BSD shared libraries"
264 MAKEFILE_BSDLIB=/dev/null
266 echo "Disabling BSD shared libraries by default"
269 AC_SUBST_FILE(MAKEFILE_BSDLIB)
271 dnl handle --enable-profile
273 AC_ARG_ENABLE([profile],
274 [ --enable-profile build profiling libraries],
275 if test "$enableval" = "no"
278 MAKEFILE_PROFILE=/dev/null
279 echo "Disabling profiling libraries"
282 MAKEFILE_PROFILE=$srcdir/lib/Makefile.profile
283 PROFILED_LIB_EXT=_p.a
284 echo "Building profiling libraries"
288 MAKEFILE_PROFILE=/dev/null
289 echo "Disabling profiling libraries by default"
291 AC_SUBST(PROFILE_CMT)
292 AC_SUBST_FILE(MAKEFILE_PROFILE)
294 dnl handle --enable-checker
296 AC_ARG_ENABLE([checker],
297 [ --enable-checker build checker libraries],
298 if test "$enableval" = "no"
301 MAKEFILE_CHECKER=/dev/null
302 echo "Disabling checker libraries"
305 MAKEFILE_CHECKER=$srcdir/lib/Makefile.checker
306 echo "Building checker libraries"
310 MAKEFILE_CHECKER=/dev/null
311 echo "Disabling checker libraries by default"
313 AC_SUBST(CHECKER_CMT)
314 AC_SUBST_FILE(MAKEFILE_CHECKER)
316 dnl Substitute library extensions
319 AC_SUBST(STATIC_LIB_EXT)
320 AC_SUBST(PROFILED_LIB_EXT)
322 dnl handle --enable-jfs-debug
324 AC_ARG_ENABLE([jfs-debug],
325 [ --enable-jfs-debug enable journal debugging],
326 if test "$enableval" = "no"
328 echo "Disabling journal debugging"
330 AC_DEFINE(CONFIG_JBD_DEBUG)
331 echo "Enabling journal debugging"
334 echo "Disabling journal debugging by default"
337 dnl handle --enable-swapfs
339 AC_ARG_ENABLE([swapfs],
340 [ --disable-swapfs disable support of legacy byte-swapped filesystems],
341 if test "$enableval" = "no"
343 echo "Disabling swapfs support"
345 AC_DEFINE(ENABLE_SWAPFS)
346 echo "Enabling swapfs support"
349 echo "Enabling swapfs support by default"
350 AC_DEFINE(ENABLE_SWAPFS)
353 dnl handle --enable-debugfs
355 AC_ARG_ENABLE([debugfs],
356 [ --disable-debugfs disable support of debugfs program],
357 if test "$enableval" = "no"
359 echo "Disabling debugfs support"
363 echo "Enabling debugfs support"
366 echo "Enabling debugfs support by default"
369 AC_SUBST(DEBUGFS_CMT)
371 dnl handle --enable-imager
373 AC_ARG_ENABLE([imager],
374 [ --disable-imager disable support of e2image program],
375 if test "$enableval" = "no"
377 echo "Disabling e2image support"
381 echo "Enabling e2image support"
384 echo "Enabling e2image support by default"
389 dnl handle --enable-resizer
391 AC_ARG_ENABLE([resizer],
392 [ --disable-resizer disable support of e2resize program],
393 if test "$enableval" = "no"
395 echo "Disabling e2resize support"
399 echo "Enabling e2resize support"
402 echo "Enabling e2resize support by default"
405 AC_SUBST(RESIZER_CMT)
407 dnl handle --enable-dynamic-e2fsck
409 AC_ARG_ENABLE([dynamic-e2fsck],
410 [ --enable-dynamic-e2fsck build e2fsck dynamically],
411 if test "$enableval" = "no"
414 echo "Building e2fsck statically"
417 echo "Building e2fsck dynamically"
421 echo "Building e2fsck statically by default"
423 AC_SUBST(E2FSCK_TYPE)
425 dnl See whether to install the `fsck' wrapper program (that calls e2fsck)
427 AC_ARG_ENABLE([fsck],
428 [ --enable-fsck build fsck wrapper program],
429 [if test "$enableval" = "no"
431 FSCK_PROG='' FSCK_MAN=''
432 echo "Not building fsck wrapper"
434 FSCK_PROG=fsck FSCK_MAN=fsck.8
435 echo "Building fsck wrapper"
440 FSCK_PROG='' FSCK_MAN=''
441 echo "Not building fsck wrapper by default"
444 FSCK_PROG=fsck FSCK_MAN=fsck.8
445 echo "Building fsck wrapper by default"
452 MAKEFILE_LIBRARY=$srcdir/lib/Makefile.library
453 AC_SUBST_FILE(MAKEFILE_LIBRARY)
456 AC_ARG_ENABLE([old-bitops],
457 [ --enable-old-bitops Use old (non-standard but native) bitmask operations],
458 if test "$enableval" = "no"
460 echo "Using new (standard) bitmask operations"
462 AC_DEFINE(EXT2_OLD_BITOPS)
463 echo "Using old (native) bitmask operations"
467 echo "Using standard bitmask operations by default"
470 dnl Add internationalization support, using gettext.
473 VERSION="$E2FSPROGS_VERSION"
474 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
475 AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
479 ALL_LINGUAS="it nyc tr"
482 dnl End of configuration options
484 AC_SUBST(BINARY_TYPE)
486 AC_PATH_PROG(LN, ln, ln)
488 AC_PATH_PROG(MV, mv, mv)
489 AC_PATH_PROG(CP, cp, cp)
490 AC_PATH_PROG(RM, rm, rm)
491 AC_PATH_PROG(CHMOD, chmod, :)
492 AC_PATH_PROG(AWK, awk, awk)
493 AC_PATH_PROG(SED, sed, sed)
494 AC_PATH_PROG(PERL, perl, perl)
495 AC_PATH_PROG(LDCONFIG, ldconfig, :)
496 AC_CHECK_TOOL(AR, ar, ar)
497 AC_CHECK_TOOL(RANLIB, ranlib, :)
498 AC_CHECK_TOOL(STRIP, strip, :)
500 # See if we need a separate native compiler.
501 if test $cross_compiling = no; then
505 AC_CHECK_PROGS(BUILD_CC, gcc cc)
507 AC_CHECK_HEADERS(stdlib.h unistd.h stdarg.h errno.h malloc.h mntent.h paths.h dirent.h getopt.h setjmp.h signal.h termios.h linux/fd.h linux/major.h sys/disklabel.h sys/ioctl.h sys/mkdev.h sys/mount.h sys/sockio.h sys/sysmacros.h sys/time.h sys/stat.h sys/types.h net/if.h netinet/in.h)
510 dnl Check to see if llseek() is declared in unistd.h. On some libc's
511 dnl it is, and on others it isn't..... Thank you glibc developers....
513 dnl Warning! Use of --enable-gcc-wall may throw off this test.
516 AC_MSG_CHECKING(whether llseek declared in unistd.h)
517 AC_CACHE_VAL(e2fsprogs_cv_have_llseek_prototype,
519 [#include <unistd.h>], [extern int llseek(int);],
520 [e2fsprogs_cv_have_llseek_prototype=no],
521 [e2fsprogs_cv_have_llseek_prototype=yes]))
522 AC_MSG_RESULT($e2fsprogs_cv_have_llseek_prototype)
523 if test "$e2fsprogs_cv_have_llseek_prototype" = yes; then
524 AC_DEFINE(HAVE_LLSEEK_PROTOTYPE)
527 dnl Check to see if lseek64() is declared in unistd.h. Glibc's header files
528 dnl are so convoluted that I can't tell whether it will always be defined,
529 dnl and if it isn't defined while lseek64 is defined in the library,
530 dnl disaster will strike.
532 dnl Warning! Use of --enable-gcc-wall may throw off this test.
535 AC_MSG_CHECKING(whether lseek64 declared in unistd.h)
536 AC_CACHE_VAL(e2fsprogs_cv_have_lseek64_prototype,
538 [#define _LARGEFILE_SOURCE
539 #define _LARGEFILE64_SOURCE
540 #include <unistd.h>], [extern int lseek64(int);],
541 [e2fsprogs_cv_have_lseek64_prototype=no],
542 [e2fsprogs_cv_have_lseek64_prototype=yes]))
543 AC_MSG_RESULT($e2fsprogs_cv_have_lseek64_prototype)
544 if test "$e2fsprogs_cv_have_lseek64_prototype" = yes; then
545 AC_DEFINE(HAVE_LSEEK64_PROTOTYPE)
550 if test "$cross_compiling" = yes -a "$ac_cv_sizeof_long" = ""; then
551 # if cross-compiling, with no cached values, just assume something common.
555 ac_cv_sizeof_long_long=8
556 AC_MSG_WARN([Cross-compiling, so cannot check type sizes; assuming short=2, int=4, long=4, long long=8])
558 AC_CHECK_SIZEOF(short)
560 AC_CHECK_SIZEOF(long)
561 AC_CHECK_SIZEOF(long long)
562 SIZEOF_SHORT=$ac_cv_sizeof_short
563 SIZEOF_INT=$ac_cv_sizeof_int
564 SIZEOF_LONG=$ac_cv_sizeof_long
565 SIZEOF_LONG_LONG=$ac_cv_sizeof_long_long
566 AC_SUBST(SIZEOF_SHORT)
568 AC_SUBST(SIZEOF_LONG)
569 AC_SUBST(SIZEOF_LONG_LONG)
572 dnl See if struct stat has a st_flags field, in which case we can get file
573 dnl flags somewhat portably. Also check for the analogous setter, chflags().
575 AC_MSG_CHECKING(whether struct stat has a st_flags field)
576 AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags,
577 AC_TRY_COMPILE([#include <sys/stat.h>],
578 [struct stat stat; stat.st_flags = 0;],
579 [e2fsprogs_cv_struct_st_flags=yes],
580 [e2fsprogs_cv_struct_st_flags=no]))
581 AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags)
582 if test "$e2fsprogs_cv_struct_st_flags" = yes; then
583 AC_MSG_CHECKING(whether st_flags field is useful)
584 AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags_immut,
585 AC_TRY_COMPILE([#include <sys/stat.h>],
586 [struct stat stat; stat.st_flags |= UF_IMMUTABLE;],
587 [e2fsprogs_cv_struct_st_flags_immut=yes],
588 [e2fsprogs_cv_struct_st_flags_immut=no]))
589 AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags_immut)
590 if test "$e2fsprogs_cv_struct_st_flags_immut" = yes; then
591 AC_DEFINE(HAVE_STAT_FLAGS)
594 AC_CHECK_FUNCS(chflags getrusage llseek lseek64 open64 getmntinfo strcasecmp srandom fchown mallinfo fdatasync strnlen sysconf pathconf)
596 dnl Check to see if -lsocket is required (solaris) to make something
597 dnl that uses socket() to compile; this is needed for the UUID library
600 AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket])
603 dnl See if optreset exists
605 AC_MSG_CHECKING(for optreset)
606 AC_CACHE_VAL(ac_cv_have_optreset,
607 [AC_EGREP_HEADER(optreset, unistd.h,
608 ac_cv_have_optreset=yes, ac_cv_have_optreset=no)])dnl
609 AC_MSG_RESULT($ac_cv_have_optreset)
610 if test $ac_cv_have_optreset = yes; then
611 AC_DEFINE(HAVE_OPTRESET)
614 dnl We use the EXT2 ioctls only under Linux
618 AC_DEFINE(HAVE_EXT2_IOCTLS)
622 dnl Uncomment only if Linux
632 dnl Linux and Hurd places root files in the / by default
636 if test "$prefix" = NONE -a "$root_prefix" = NONE ; then
638 echo "On $host_os systems, root_prefix defaults to ''"
643 dnl On Linux/hurd, force the prefix to be /usr
647 if test "$prefix" = NONE ; then
649 echo "On $host_os systems, prefix defaults to /usr"
650 if test "$mandir" = '${prefix}/man' ; then
651 echo "...and mandir defaults to /usr/share/man"
652 mandir=/usr/share/man
657 if test "$root_prefix" = NONE ; then
658 if test "$prefix" = NONE ; then
659 root_prefix="$ac_default_prefix"
661 root_prefix="$prefix"
664 root_sbindir=$sbindir
666 root_sysconfdir=$sysconfdir
668 root_bindir='${root_prefix}/bin'
669 root_sbindir='${root_prefix}/sbin'
670 root_libdir='${root_prefix}/lib'
671 root_sysconfdir='${root_prefix}/etc'
673 AC_SUBST(root_prefix)
674 AC_SUBST(root_bindir)
675 AC_SUBST(root_sbindir)
676 AC_SUBST(root_libdir)
677 AC_SUBST(root_sysconfdir)
679 dnl See if -static works.
681 AC_MSG_CHECKING([whether linker accepts -static])
682 AC_CACHE_VAL(ac_cv_e2fsprogs_use_static,
683 [SAVE_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS -static"
684 AC_TRY_LINK([#include <stdio.h>],[fflush(stdout);],
685 ac_cv_e2fsprogs_use_static=yes, ac_cv_e2fsprogs_use_static=no)
686 LDFLAGS=$SAVE_LDFLAGS])
688 dnl Regardless of how the test turns out, Solaris doesn't handle -static
689 dnl This is caused by the socket library requiring the nsl library, which
690 dnl requires the -dl library, which only works for dynamically linked
691 dnl programs. It basically means you can't have statically linked programs
692 dnl which use the network under Solaris.
696 ac_cv_e2fsprogs_use_static=no
699 AC_MSG_RESULT($ac_cv_e2fsprogs_use_static)
701 if test $ac_cv_e2fsprogs_use_static = yes; then
702 LDFLAG_STATIC=-static
704 AC_SUBST(LDFLAG_STATIC)
706 dnl Make the ss and et directories work correctly.
708 SS_DIR=`cd ${srcdir}/lib/ss; pwd`
709 ET_DIR=`cd ${srcdir}/lib/et; pwd`
713 dnl Only try to run the test suite if we're not cross compiling.
715 if test "$cross_compiling" = yes ; then
720 AC_SUBST(DO_TEST_SUITE)
722 dnl Make our output files, being sure that we create the some miscellaneous
725 test -d lib || mkdir lib
726 test -d include || mkdir include
727 test -d include/linux || mkdir include/linux
728 test -d include/asm || mkdir include/asm
730 if test -d ${srcdir}/resize ; then
731 rmakefile=resize/Makefile
733 AC_OUTPUT(MCONFIG Makefile util/Makefile util/subst.conf lib/et/Makefile
734 lib/ss/Makefile lib/ext2fs/Makefile lib/e2p/Makefile lib/uuid/Makefile
736 misc/Makefile ext2ed/Makefile e2fsck/Makefile debugfs/Makefile \
737 tests/Makefile tests/progs/Makefile $rmakefile doc/Makefile
738 intl/Makefile po/Makefile.in)