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)
46 AC_REQUIRE([AC_CANONICAL_HOST])
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-dll-shlibs
130 AC_ARG_ENABLE([dll-shlibs],
131 [ --enable-dll-shlibs select DLL libraries],
132 if test "$enableval" = "no"
135 MAKEFILE_DLL=/dev/null
136 echo "Disabling DLL shared libraries"
139 MAKEFILE_DLL=$srcdir/lib/Makefile.dll-lib
142 echo "Enabling DLL shared libraries"
145 MAKEFILE_DLL=/dev/null
147 echo "Disabling DLL shared libraries by default"
150 AC_SUBST_FILE(MAKEFILE_DLL)
152 dnl handle --enable-elf-shlibs
154 AC_ARG_ENABLE([elf-shlibs],
155 [ --enable-elf-shlibs select ELF shared libraries],
156 if test "$enableval" = "no"
159 MAKEFILE_ELF=/dev/null
160 echo "Disabling ELF shared libraries"
163 MAKEFILE_ELF=$srcdir/lib/Makefile.elf-lib
166 MAKEFILE_ELF=$srcdir/lib/Makefile.solaris-lib
171 echo "Enabling ELF shared libraries"
174 MAKEFILE_ELF=/dev/null
176 echo "Disabling ELF shared libraries by default"
179 AC_SUBST_FILE(MAKEFILE_ELF)
181 dnl handle --enable-bsd-shlibs
183 AC_ARG_ENABLE([bsd-shlibs],
184 [ --enable-bsd-shlibs select BSD shared libraries],
185 if test "$enableval" = "no"
188 MAKEFILE_BSDLIB=/dev/null
189 echo "Disabling BSD shared libraries"
192 MAKEFILE_BSDLIB=$srcdir/lib/Makefile.bsd-lib
194 echo "Enabling BSD shared libraries"
197 MAKEFILE_BSDLIB=/dev/null
199 echo "Disabling BSD shared libraries by default"
202 AC_SUBST_FILE(MAKEFILE_BSDLIB)
204 dnl handle --enable-profile
206 AC_ARG_ENABLE([profile],
207 [ --enable-profile build profiling libraries],
208 if test "$enableval" = "no"
211 MAKEFILE_PROFILE=/dev/null
212 echo "Disabling profiling libraries"
215 MAKEFILE_PROFILE=$srcdir/lib/Makefile.profile
216 PROFILED_LIB_EXT=_p.a
217 echo "Building profiling libraries"
221 MAKEFILE_PROFILE=/dev/null
222 echo "Disabling profiling libraries by default"
224 AC_SUBST(PROFILE_CMT)
225 AC_SUBST_FILE(MAKEFILE_PROFILE)
227 dnl handle --enable-checker
229 AC_ARG_ENABLE([checker],
230 [ --enable-checker build checker libraries],
231 if test "$enableval" = "no"
234 MAKEFILE_CHECKER=/dev/null
235 echo "Disabling checker libraries"
238 MAKEFILE_CHECKER=$srcdir/lib/Makefile.checker
239 echo "Building checker libraries"
243 MAKEFILE_CHECKER=/dev/null
244 echo "Disabling checker libraries by default"
246 AC_SUBST(CHECKER_CMT)
247 AC_SUBST_FILE(MAKEFILE_CHECKER)
249 dnl Substitute library extensions
252 AC_SUBST(STATIC_LIB_EXT)
253 AC_SUBST(PROFILED_LIB_EXT)
255 dnl handle --enable-jfs-debug
257 AC_ARG_ENABLE([jfs-debug],
258 [ --enable-jfs-debug enable journal debugging],
259 if test "$enableval" = "no"
261 echo "Disabling journal debugging"
264 echo "Enabling journal debugging"
267 echo "Disabling journal debugging by default"
270 dnl handle --enable-swapfs
272 AC_ARG_ENABLE([swapfs],
273 [ --disable-swapfs disable support of legacy byte-swapped filesystems],
274 if test "$enableval" = "no"
276 echo "Disabling swapfs support"
278 AC_DEFINE(ENABLE_SWAPFS)
279 echo "Enabling swapfs support"
282 echo "Enabling swapfs support by default"
283 AC_DEFINE(ENABLE_SWAPFS)
286 dnl handle --enable-debugfs
288 AC_ARG_ENABLE([debugfs],
289 [ --disable-debugfs disable support of debugfs program],
290 if test "$enableval" = "no"
292 echo "Disabling debugfs support"
296 echo "Enabling debugfs support"
299 echo "Enabling debugfs support by default"
302 AC_SUBST(DEBUGFS_CMT)
304 dnl handle --enable-imager
306 AC_ARG_ENABLE([imager],
307 [ --disable-imager disable support of e2image program],
308 if test "$enableval" = "no"
310 echo "Disabling e2image support"
314 echo "Enabling e2image support"
317 echo "Enabling e2image support by default"
322 dnl handle --enable-resizer
324 AC_ARG_ENABLE([resizer],
325 [ --disable-resizer disable support of e2resize program],
326 if test "$enableval" = "no"
328 echo "Disabling e2resize support"
332 echo "Enabling e2resize support"
335 echo "Enabling e2resize support by default"
338 AC_SUBST(RESIZER_CMT)
340 dnl handle --enable-dynamic-e2fsck
342 AC_ARG_ENABLE([dynamic-e2fsck],
343 [ --enable-dynamic-e2fsck build e2fsck dynamically],
344 if test "$enableval" = "no"
347 echo "Building e2fsck statically"
350 echo "Building e2fsck dynamically"
354 echo "Building e2fsck statically by default"
356 AC_SUBST(E2FSCK_TYPE)
358 dnl See whether to install the `fsck' wrapper program (that calls e2fsck)
360 AC_ARG_ENABLE([fsck],
361 [ --enable-fsck build fsck wrapper program],
362 [if test "$enableval" = "no"
364 FSCK_PROG='' FSCK_MAN=''
365 echo "Not building fsck wrapper"
367 FSCK_PROG=fsck FSCK_MAN=fsck.8
368 echo "Building fsck wrapper"
373 FSCK_PROG='' FSCK_MAN=''
374 echo "Not building fsck wrapper by default"
377 FSCK_PROG=fsck FSCK_MAN=fsck.8
378 echo "Building fsck wrapper by default"
385 MAKEFILE_LIBRARY=$srcdir/lib/Makefile.library
386 AC_SUBST_FILE(MAKEFILE_LIBRARY)
389 AC_ARG_ENABLE([old-bitops],
390 [ --enable-old-bitops Use old (non-standard but native) bitmask operations],
391 if test "$enableval" = "no"
393 echo "Using new (standard) bitmask operations"
395 AC_DEFINE(EXT2_OLD_BITOPS)
396 echo "Using old (native) bitmask operations"
400 echo "Using standard bitmask operations by default"
403 dnl Add internationalization support, using gettext.
406 VERSION="$E2FSPROGS_VERSION"
407 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
408 AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
415 dnl End of configuration options
417 AC_SUBST(BINARY_TYPE)
419 AC_PATH_PROG(LN, ln, ln)
421 AC_PATH_PROG(MV, mv, mv)
422 AC_PATH_PROG(CP, cp, cp)
423 AC_PATH_PROG(RM, rm, rm)
424 AC_PATH_PROG(CHMOD, chmod, :)
425 AC_PATH_PROG(AWK, awk, awk)
426 AC_PATH_PROG(SED, sed, sed)
427 AC_PATH_PROG(PERL, perl, perl)
428 AC_PATH_PROG(LDCONFIG, ldconfig, :)
429 AC_CHECK_TOOL(AR, ar, ar)
430 AC_CHECK_TOOL(RANLIB, ranlib, :)
431 AC_CHECK_TOOL(STRIP, strip, :)
433 # See if we need a separate native compiler.
434 if test $cross_compiling = no; then
438 AC_CHECK_PROGS(BUILD_CC, gcc cc)
440 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)
443 dnl See if struct dirent has a d_namlen field (like bsd systems), implying
444 dnl that the actual length of the structure may be grater than the declared
447 AC_MSG_CHECKING(whether struct dirent has a d_namlen field)
448 AC_CACHE_VAL(e2fsprogs_cv_struct_d_namlen,
450 [#include <sys/types.h>
451 #include <dirent.h>],
452 [struct dirent de; de.d_namlen = 0;],
453 [e2fsprogs_cv_struct_d_namlen=yes],
454 [e2fsprogs_cv_struct_d_namlen=no]))
455 AC_MSG_RESULT($e2fsprogs_cv_struct_d_namlen)
456 if test "$e2fsprogs_cv_struct_d_namlen" = yes; then
457 AC_DEFINE(HAVE_DIRENT_NAMLEN)
460 dnl Check to see if llseek() is declared in unistd.h. On some libc's
461 dnl it is, and on others it isn't..... Thank you glibc developers....
463 dnl Warning! Use of --enable-gcc-wall may throw off this test.
466 AC_MSG_CHECKING(whether llseek declared in unistd.h)
467 AC_CACHE_VAL(e2fsprogs_cv_have_llseek_prototype,
469 [#include <unistd.h>], [extern int llseek(int);],
470 [e2fsprogs_cv_have_llseek_prototype=no],
471 [e2fsprogs_cv_have_llseek_prototype=yes]))
472 AC_MSG_RESULT($e2fsprogs_cv_have_llseek_prototype)
473 if test "$e2fsprogs_cv_have_llseek_prototype" = yes; then
474 AC_DEFINE(HAVE_LLSEEK_PROTOTYPE)
477 dnl Check to see if lseek64() is declared in unistd.h. Glibc's header files
478 dnl are so convoluted that I can't tell whether it will always be defined,
479 dnl and if it isn't defined while lseek64 is defined in the library,
480 dnl disaster will strike.
482 dnl Warning! Use of --enable-gcc-wall may throw off this test.
485 AC_MSG_CHECKING(whether lseek64 declared in unistd.h)
486 AC_CACHE_VAL(e2fsprogs_cv_have_lseek64_prototype,
488 [#define _LARGEFILE_SOURCE
489 #define _LARGEFILE64_SOURCE
490 #include <unistd.h>], [extern int lseek64(int);],
491 [e2fsprogs_cv_have_lseek64_prototype=no],
492 [e2fsprogs_cv_have_lseek64_prototype=yes]))
493 AC_MSG_RESULT($e2fsprogs_cv_have_lseek64_prototype)
494 if test "$e2fsprogs_cv_have_lseek64_prototype" = yes; then
495 AC_DEFINE(HAVE_LSEEK64_PROTOTYPE)
500 if test "$cross_compiling" = yes -a "$ac_cv_sizeof_long" = ""; then
501 # if cross-compiling, with no cached values, just assume something common.
505 ac_cv_sizeof_long_long=8
506 AC_MSG_WARN([Cross-compiling, so cannot check type sizes; assuming short=2, int=4, long=4, long long=8])
508 AC_CHECK_SIZEOF(short)
510 AC_CHECK_SIZEOF(long)
511 AC_CHECK_SIZEOF(long long)
512 SIZEOF_SHORT=$ac_cv_sizeof_short
513 SIZEOF_INT=$ac_cv_sizeof_int
514 SIZEOF_LONG=$ac_cv_sizeof_long
515 SIZEOF_LONG_LONG=$ac_cv_sizeof_long_long
516 AC_SUBST(SIZEOF_SHORT)
518 AC_SUBST(SIZEOF_LONG)
519 AC_SUBST(SIZEOF_LONG_LONG)
522 dnl See if struct stat has a st_flags field, in which case we can get file
523 dnl flags somewhat portably. Also check for the analogous setter, chflags().
525 AC_MSG_CHECKING(whether struct stat has a st_flags field)
526 AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags,
527 AC_TRY_COMPILE([#include <sys/stat.h>],
528 [struct stat stat; stat.st_flags = 0;],
529 [e2fsprogs_cv_struct_st_flags=yes],
530 [e2fsprogs_cv_struct_st_flags=no]))
531 AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags)
532 if test "$e2fsprogs_cv_struct_st_flags" = yes; then
533 AC_MSG_CHECKING(whether st_flags field is useful)
534 AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags_immut,
535 AC_TRY_COMPILE([#include <sys/stat.h>],
536 [struct stat stat; stat.st_flags |= UF_IMMUTABLE;],
537 [e2fsprogs_cv_struct_st_flags_immut=yes],
538 [e2fsprogs_cv_struct_st_flags_immut=no]))
539 AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags_immut)
540 if test "$e2fsprogs_cv_struct_st_flags_immut" = yes; then
541 AC_DEFINE(HAVE_STAT_FLAGS)
544 AC_CHECK_FUNCS(chflags getrusage llseek lseek64 open64 strdup getmntinfo strcasecmp srandom fchown mallinfo fdatasync)
546 dnl Check to see if -lsocket is required (solaris) to make something
547 dnl that uses socket() to compile; this is needed for the UUID library
550 AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket])
553 dnl See if optreset exists
555 AC_MSG_CHECKING(for optreset)
556 AC_CACHE_VAL(ac_cv_have_optreset,
557 [AC_EGREP_HEADER(optreset, unistd.h,
558 ac_cv_have_optreset=yes, ac_cv_have_optreset=no)])dnl
559 AC_MSG_RESULT($ac_cv_have_optreset)
560 if test $ac_cv_have_optreset = yes; then
561 AC_DEFINE(HAVE_OPTRESET)
564 dnl We use the EXT2 ioctls only under Linux
568 AC_DEFINE(HAVE_EXT2_IOCTLS)
572 dnl Linux and Hurd places root files in the / by default
576 if test "$prefix" = NONE -a "$root_prefix" = NONE ; then
578 echo "On $host_os systems, root_prefix defaults to ''"
583 dnl On Linux/hurd, force the prefix to be /usr
587 if test "$prefix" = NONE ; then
589 echo "On $host_os systems, prefix defaults to /usr"
593 if test "$root_prefix" = NONE ; then
594 if test "$prefix" = NONE ; then
595 root_prefix="$ac_default_prefix"
597 root_prefix="$prefix"
600 AC_SUBST(root_prefix)
602 dnl See if -static works.
604 AC_MSG_CHECKING([whether linker accepts -static])
605 AC_CACHE_VAL(ac_cv_e2fsprogs_use_static,
606 [SAVE_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS -static"
607 AC_TRY_LINK([#include <stdio.h>],[fflush(stdout);],
608 ac_cv_e2fsprogs_use_static=yes, ac_cv_e2fsprogs_use_static=no)
609 LDFLAGS=$SAVE_LDFLAGS])
611 dnl Regardless of how the test turns out, Solaris doesn't handle -static
612 dnl This is caused by the socket library requiring the nsl library, which
613 dnl requires the -dl library, which only works for dynamically linked
614 dnl programs. It basically means you can't have statically linked programs
615 dnl which use the network under Solaris.
619 ac_cv_e2fsprogs_use_static=no
622 AC_MSG_RESULT($ac_cv_e2fsprogs_use_static)
624 if test $ac_cv_e2fsprogs_use_static = yes; then
625 LDFLAG_STATIC=-static
627 AC_SUBST(LDFLAG_STATIC)
629 dnl Make the ss and et directories work correctly.
631 SS_DIR=`cd ${srcdir}/lib/ss; pwd`
632 ET_DIR=`cd ${srcdir}/lib/et; pwd`
636 dnl Only try to run the test suite if we're not cross compiling.
638 if test "$cross_compiling" = yes ; then
643 AC_SUBST(DO_TEST_SUITE)
645 dnl Make our output files, being sure that we create the some miscellaneous
648 test -d lib || mkdir lib
649 test -d include || mkdir include
650 test -d include/linux || mkdir include/linux
651 test -d include/asm || mkdir include/asm
653 if test -d ${srcdir}/resize ; then
654 rmakefile=resize/Makefile
656 AC_OUTPUT(MCONFIG Makefile util/Makefile util/subst.conf lib/et/Makefile
657 lib/ss/Makefile lib/ext2fs/Makefile lib/e2p/Makefile lib/uuid/Makefile
658 misc/Makefile e2fsck/Makefile debugfs/Makefile tests/Makefile
659 tests/progs/Makefile $rmakefile doc/Makefile
660 intl/Makefile po/Makefile.in)