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"
140 echo "WARNING: htree support is experimental"
144 echo "Disabling 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-old-evms
169 AC_ARG_ENABLE([old-evms],
170 [ --enable-old-evms use EVMS 1.0 ABI (instead of EVMS 1.1)],
171 if test "$enableval" = "no"
173 echo "Using EVMS 1.1.0 ABI"
175 AC_DEFINE(ABI_EVMS_1_0)
176 echo "Enabling EVMS 1.0.0 ABI"
179 echo "Using EVMS 1.1.0 ABI by default"
182 dnl handle --enable-dll-shlibs
184 AC_ARG_ENABLE([dll-shlibs],
185 [ --enable-dll-shlibs select DLL libraries],
186 if test "$enableval" = "no"
189 MAKEFILE_DLL=/dev/null
190 echo "Disabling DLL shared libraries"
193 MAKEFILE_DLL=$srcdir/lib/Makefile.dll-lib
196 echo "Enabling DLL shared libraries"
199 MAKEFILE_DLL=/dev/null
201 echo "Disabling DLL shared libraries by default"
204 AC_SUBST_FILE(MAKEFILE_DLL)
206 dnl handle --enable-elf-shlibs
208 AC_ARG_ENABLE([elf-shlibs],
209 [ --enable-elf-shlibs select ELF shared libraries],
210 if test "$enableval" = "no"
213 MAKEFILE_ELF=/dev/null
214 echo "Disabling ELF shared libraries"
217 MAKEFILE_ELF=$srcdir/lib/Makefile.elf-lib
220 MAKEFILE_ELF=$srcdir/lib/Makefile.solaris-lib
225 echo "Enabling ELF shared libraries"
228 MAKEFILE_ELF=/dev/null
230 echo "Disabling ELF shared libraries by default"
233 AC_SUBST_FILE(MAKEFILE_ELF)
235 dnl handle --enable-bsd-shlibs
237 AC_ARG_ENABLE([bsd-shlibs],
238 [ --enable-bsd-shlibs select BSD shared libraries],
239 if test "$enableval" = "no"
242 MAKEFILE_BSDLIB=/dev/null
243 echo "Disabling BSD shared libraries"
246 MAKEFILE_BSDLIB=$srcdir/lib/Makefile.bsd-lib
248 echo "Enabling BSD shared libraries"
251 MAKEFILE_BSDLIB=/dev/null
253 echo "Disabling BSD shared libraries by default"
256 AC_SUBST_FILE(MAKEFILE_BSDLIB)
258 dnl handle --enable-profile
260 AC_ARG_ENABLE([profile],
261 [ --enable-profile build profiling libraries],
262 if test "$enableval" = "no"
265 MAKEFILE_PROFILE=/dev/null
266 echo "Disabling profiling libraries"
269 MAKEFILE_PROFILE=$srcdir/lib/Makefile.profile
270 PROFILED_LIB_EXT=_p.a
271 echo "Building profiling libraries"
275 MAKEFILE_PROFILE=/dev/null
276 echo "Disabling profiling libraries by default"
278 AC_SUBST(PROFILE_CMT)
279 AC_SUBST_FILE(MAKEFILE_PROFILE)
281 dnl handle --enable-checker
283 AC_ARG_ENABLE([checker],
284 [ --enable-checker build checker libraries],
285 if test "$enableval" = "no"
288 MAKEFILE_CHECKER=/dev/null
289 echo "Disabling checker libraries"
292 MAKEFILE_CHECKER=$srcdir/lib/Makefile.checker
293 echo "Building checker libraries"
297 MAKEFILE_CHECKER=/dev/null
298 echo "Disabling checker libraries by default"
300 AC_SUBST(CHECKER_CMT)
301 AC_SUBST_FILE(MAKEFILE_CHECKER)
303 dnl Substitute library extensions
306 AC_SUBST(STATIC_LIB_EXT)
307 AC_SUBST(PROFILED_LIB_EXT)
309 dnl handle --enable-jfs-debug
311 AC_ARG_ENABLE([jfs-debug],
312 [ --enable-jfs-debug enable journal debugging],
313 if test "$enableval" = "no"
315 echo "Disabling journal debugging"
317 AC_DEFINE(CONFIG_JBD_DEBUG)
318 echo "Enabling journal debugging"
321 echo "Disabling journal debugging by default"
324 dnl handle --enable-swapfs
326 AC_ARG_ENABLE([swapfs],
327 [ --disable-swapfs disable support of legacy byte-swapped filesystems],
328 if test "$enableval" = "no"
330 echo "Disabling swapfs support"
332 AC_DEFINE(ENABLE_SWAPFS)
333 echo "Enabling swapfs support"
336 echo "Enabling swapfs support by default"
337 AC_DEFINE(ENABLE_SWAPFS)
340 dnl handle --enable-debugfs
342 AC_ARG_ENABLE([debugfs],
343 [ --disable-debugfs disable support of debugfs program],
344 if test "$enableval" = "no"
346 echo "Disabling debugfs support"
350 echo "Enabling debugfs support"
353 echo "Enabling debugfs support by default"
356 AC_SUBST(DEBUGFS_CMT)
358 dnl handle --enable-imager
360 AC_ARG_ENABLE([imager],
361 [ --disable-imager disable support of e2image program],
362 if test "$enableval" = "no"
364 echo "Disabling e2image support"
368 echo "Enabling e2image support"
371 echo "Enabling e2image support by default"
376 dnl handle --enable-resizer
378 AC_ARG_ENABLE([resizer],
379 [ --disable-resizer disable support of e2resize program],
380 if test "$enableval" = "no"
382 echo "Disabling e2resize support"
386 echo "Enabling e2resize support"
389 echo "Enabling e2resize support by default"
392 AC_SUBST(RESIZER_CMT)
394 dnl handle --enable-dynamic-e2fsck
396 AC_ARG_ENABLE([dynamic-e2fsck],
397 [ --enable-dynamic-e2fsck build e2fsck dynamically],
398 if test "$enableval" = "no"
401 echo "Building e2fsck statically"
404 echo "Building e2fsck dynamically"
408 echo "Building e2fsck statically by default"
410 AC_SUBST(E2FSCK_TYPE)
412 dnl See whether to install the `fsck' wrapper program (that calls e2fsck)
414 AC_ARG_ENABLE([fsck],
415 [ --enable-fsck build fsck wrapper program],
416 [if test "$enableval" = "no"
418 FSCK_PROG='' FSCK_MAN=''
419 echo "Not building fsck wrapper"
421 FSCK_PROG=fsck FSCK_MAN=fsck.8
422 echo "Building fsck wrapper"
427 FSCK_PROG='' FSCK_MAN=''
428 echo "Not building fsck wrapper by default"
431 FSCK_PROG=fsck FSCK_MAN=fsck.8
432 echo "Building fsck wrapper by default"
439 MAKEFILE_LIBRARY=$srcdir/lib/Makefile.library
440 AC_SUBST_FILE(MAKEFILE_LIBRARY)
443 AC_ARG_ENABLE([old-bitops],
444 [ --enable-old-bitops Use old (non-standard but native) bitmask operations],
445 if test "$enableval" = "no"
447 echo "Using new (standard) bitmask operations"
449 AC_DEFINE(EXT2_OLD_BITOPS)
450 echo "Using old (native) bitmask operations"
454 echo "Using standard bitmask operations by default"
457 dnl Add internationalization support, using gettext.
460 VERSION="$E2FSPROGS_VERSION"
461 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
462 AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
466 ALL_LINGUAS="it nyc tr"
469 dnl End of configuration options
471 AC_SUBST(BINARY_TYPE)
473 AC_PATH_PROG(LN, ln, ln)
475 AC_PATH_PROG(MV, mv, mv)
476 AC_PATH_PROG(CP, cp, cp)
477 AC_PATH_PROG(RM, rm, rm)
478 AC_PATH_PROG(CHMOD, chmod, :)
479 AC_PATH_PROG(AWK, awk, awk)
480 AC_PATH_PROG(SED, sed, sed)
481 AC_PATH_PROG(PERL, perl, perl)
482 AC_PATH_PROG(LDCONFIG, ldconfig, :)
483 AC_CHECK_TOOL(AR, ar, ar)
484 AC_CHECK_TOOL(RANLIB, ranlib, :)
485 AC_CHECK_TOOL(STRIP, strip, :)
487 # See if we need a separate native compiler.
488 if test $cross_compiling = no; then
492 AC_CHECK_PROGS(BUILD_CC, gcc cc)
494 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)
497 dnl Check to see if llseek() is declared in unistd.h. On some libc's
498 dnl it is, and on others it isn't..... Thank you glibc developers....
500 dnl Warning! Use of --enable-gcc-wall may throw off this test.
503 AC_MSG_CHECKING(whether llseek declared in unistd.h)
504 AC_CACHE_VAL(e2fsprogs_cv_have_llseek_prototype,
506 [#include <unistd.h>], [extern int llseek(int);],
507 [e2fsprogs_cv_have_llseek_prototype=no],
508 [e2fsprogs_cv_have_llseek_prototype=yes]))
509 AC_MSG_RESULT($e2fsprogs_cv_have_llseek_prototype)
510 if test "$e2fsprogs_cv_have_llseek_prototype" = yes; then
511 AC_DEFINE(HAVE_LLSEEK_PROTOTYPE)
514 dnl Check to see if lseek64() is declared in unistd.h. Glibc's header files
515 dnl are so convoluted that I can't tell whether it will always be defined,
516 dnl and if it isn't defined while lseek64 is defined in the library,
517 dnl disaster will strike.
519 dnl Warning! Use of --enable-gcc-wall may throw off this test.
522 AC_MSG_CHECKING(whether lseek64 declared in unistd.h)
523 AC_CACHE_VAL(e2fsprogs_cv_have_lseek64_prototype,
525 [#define _LARGEFILE_SOURCE
526 #define _LARGEFILE64_SOURCE
527 #include <unistd.h>], [extern int lseek64(int);],
528 [e2fsprogs_cv_have_lseek64_prototype=no],
529 [e2fsprogs_cv_have_lseek64_prototype=yes]))
530 AC_MSG_RESULT($e2fsprogs_cv_have_lseek64_prototype)
531 if test "$e2fsprogs_cv_have_lseek64_prototype" = yes; then
532 AC_DEFINE(HAVE_LSEEK64_PROTOTYPE)
537 if test "$cross_compiling" = yes -a "$ac_cv_sizeof_long" = ""; then
538 # if cross-compiling, with no cached values, just assume something common.
542 ac_cv_sizeof_long_long=8
543 AC_MSG_WARN([Cross-compiling, so cannot check type sizes; assuming short=2, int=4, long=4, long long=8])
545 AC_CHECK_SIZEOF(short)
547 AC_CHECK_SIZEOF(long)
548 AC_CHECK_SIZEOF(long long)
549 SIZEOF_SHORT=$ac_cv_sizeof_short
550 SIZEOF_INT=$ac_cv_sizeof_int
551 SIZEOF_LONG=$ac_cv_sizeof_long
552 SIZEOF_LONG_LONG=$ac_cv_sizeof_long_long
553 AC_SUBST(SIZEOF_SHORT)
555 AC_SUBST(SIZEOF_LONG)
556 AC_SUBST(SIZEOF_LONG_LONG)
559 dnl See if struct stat has a st_flags field, in which case we can get file
560 dnl flags somewhat portably. Also check for the analogous setter, chflags().
562 AC_MSG_CHECKING(whether struct stat has a st_flags field)
563 AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags,
564 AC_TRY_COMPILE([#include <sys/stat.h>],
565 [struct stat stat; stat.st_flags = 0;],
566 [e2fsprogs_cv_struct_st_flags=yes],
567 [e2fsprogs_cv_struct_st_flags=no]))
568 AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags)
569 if test "$e2fsprogs_cv_struct_st_flags" = yes; then
570 AC_MSG_CHECKING(whether st_flags field is useful)
571 AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags_immut,
572 AC_TRY_COMPILE([#include <sys/stat.h>],
573 [struct stat stat; stat.st_flags |= UF_IMMUTABLE;],
574 [e2fsprogs_cv_struct_st_flags_immut=yes],
575 [e2fsprogs_cv_struct_st_flags_immut=no]))
576 AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags_immut)
577 if test "$e2fsprogs_cv_struct_st_flags_immut" = yes; then
578 AC_DEFINE(HAVE_STAT_FLAGS)
581 AC_CHECK_FUNCS(chflags getrusage llseek lseek64 open64 getmntinfo strcasecmp srandom fchown mallinfo fdatasync strnlen sysconf pathconf)
583 dnl Check to see if -lsocket is required (solaris) to make something
584 dnl that uses socket() to compile; this is needed for the UUID library
587 AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket])
590 dnl See if optreset exists
592 AC_MSG_CHECKING(for optreset)
593 AC_CACHE_VAL(ac_cv_have_optreset,
594 [AC_EGREP_HEADER(optreset, unistd.h,
595 ac_cv_have_optreset=yes, ac_cv_have_optreset=no)])dnl
596 AC_MSG_RESULT($ac_cv_have_optreset)
597 if test $ac_cv_have_optreset = yes; then
598 AC_DEFINE(HAVE_OPTRESET)
601 dnl We use the EXT2 ioctls only under Linux
605 AC_DEFINE(HAVE_EXT2_IOCTLS)
609 dnl Linux and Hurd places root files in the / by default
613 if test "$prefix" = NONE -a "$root_prefix" = NONE ; then
615 echo "On $host_os systems, root_prefix defaults to ''"
620 dnl On Linux/hurd, force the prefix to be /usr
624 if test "$prefix" = NONE ; then
626 echo "On $host_os systems, prefix defaults to /usr"
627 if test "$mandir" = '${prefix}/man' ; then
628 echo "...and mandir defaults to /usr/share/man"
629 mandir=/usr/share/man
634 if test "$root_prefix" = NONE ; then
635 if test "$prefix" = NONE ; then
636 root_prefix="$ac_default_prefix"
638 root_prefix="$prefix"
641 root_sbindir=$sbindir
643 root_sysconfdir=$sysconfdir
645 root_bindir='${root_prefix}/bin'
646 root_sbindir='${root_prefix}/sbin'
647 root_libdir='${root_prefix}/lib'
648 root_sysconfdir='${root_prefix}/etc'
650 AC_SUBST(root_prefix)
651 AC_SUBST(root_bindir)
652 AC_SUBST(root_sbindir)
653 AC_SUBST(root_libdir)
654 AC_SUBST(root_sysconfdir)
656 dnl See if -static works.
658 AC_MSG_CHECKING([whether linker accepts -static])
659 AC_CACHE_VAL(ac_cv_e2fsprogs_use_static,
660 [SAVE_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS -static"
661 AC_TRY_LINK([#include <stdio.h>],[fflush(stdout);],
662 ac_cv_e2fsprogs_use_static=yes, ac_cv_e2fsprogs_use_static=no)
663 LDFLAGS=$SAVE_LDFLAGS])
665 dnl Regardless of how the test turns out, Solaris doesn't handle -static
666 dnl This is caused by the socket library requiring the nsl library, which
667 dnl requires the -dl library, which only works for dynamically linked
668 dnl programs. It basically means you can't have statically linked programs
669 dnl which use the network under Solaris.
673 ac_cv_e2fsprogs_use_static=no
676 AC_MSG_RESULT($ac_cv_e2fsprogs_use_static)
678 if test $ac_cv_e2fsprogs_use_static = yes; then
679 LDFLAG_STATIC=-static
681 AC_SUBST(LDFLAG_STATIC)
683 dnl Make the ss and et directories work correctly.
685 SS_DIR=`cd ${srcdir}/lib/ss; pwd`
686 ET_DIR=`cd ${srcdir}/lib/et; pwd`
690 dnl Only try to run the test suite if we're not cross compiling.
692 if test "$cross_compiling" = yes ; then
697 AC_SUBST(DO_TEST_SUITE)
699 dnl Make our output files, being sure that we create the some miscellaneous
702 test -d lib || mkdir lib
703 test -d include || mkdir include
704 test -d include/linux || mkdir include/linux
705 test -d include/asm || mkdir include/asm
707 if test -d ${srcdir}/resize ; then
708 rmakefile=resize/Makefile
710 AC_OUTPUT(MCONFIG Makefile util/Makefile util/subst.conf lib/et/Makefile
711 lib/ss/Makefile lib/ext2fs/Makefile lib/e2p/Makefile lib/uuid/Makefile
713 misc/Makefile ext2ed/Makefile e2fsck/Makefile debugfs/Makefile \
714 tests/Makefile tests/progs/Makefile $rmakefile doc/Makefile
715 intl/Makefile po/Makefile.in)