6 dnl This is to figure out the version number and the date....
8 E2FSPROGS_VERSION=`grep E2FSPROGS_VERSION ${srcdir}/version.h \
9 | awk '{print $3}' | tr \" " " | awk '{print $1}'`
10 DATE=`grep E2FSPROGS_DATE ${srcdir}/version.h | awk '{print $3}' \
12 MONTH=`echo $DATE | awk -F- '{print $2}'`
13 YEAR=`echo $DATE | awk -F- '{print $3}'`
15 if expr $YEAR ">" 90 >/dev/null ; then
16 E2FSPROGS_YEAR=19$YEAR
18 E2FSPROGS_YEAR=20$YEAR
22 Jan) E2FSPROGS_MONTH="January" ;;
23 Feb) E2FSPROGS_MONTH="February" ;;
24 Mar) E2FSPROGS_MONTH="March" ;;
25 Apr) E2FSPROGS_MONTH="April" ;;
26 May) E2FSPROGS_MONTH="May" ;;
27 Jun) E2FSPROGS_MONTH="June" ;;
28 Jul) E2FSPROGS_MONTH="July" ;;
29 Aug) E2FSPROGS_MONTH="August" ;;
30 Sep) E2FSPROGS_MONTH="September" ;;
31 Oct) E2FSPROGS_MONTH="October" ;;
32 Nov) E2FSPROGS_MONTH="November" ;;
33 Dec) E2FSPROGS_MONTH="December" ;;
34 *) echo "Unknown month $MONTH??" ;;
38 echo "Generating configuration file for e2fsprogs version $E2FSPROGS_VERSION"
39 echo "Release date is ${E2FSPROGS_MONTH}, ${E2FSPROGS_YEAR}"
40 AC_SUBST(E2FSPROGS_YEAR)
41 AC_SUBST(E2FSPROGS_MONTH)
42 AC_SUBST(E2FSPROGS_VERSION)
43 AC_REQUIRE([AC_CANONICAL_HOST])
45 dnl set $(CC) from --with-cc=value
48 [ --with-cc=COMPILER select compiler to use],
49 AC_MSG_RESULT(CC=$withval)
51 if test -z "$CC" ; then CC=cc; fi
52 [AC_MSG_RESULT(CC defaults to $CC)])dnl
56 dnl set $(LD) from --with-linker=value
59 [ --with-linker=LINKER select linker to use],
60 AC_MSG_RESULT(LD=$withval)
62 if test -z "$LD" ; then LD=$CC; fi
63 [AC_MSG_RESULT(LD defaults to $LD)])dnl
67 dnl set $(CCOPTS) from --with-ccopts=value
70 [ --with-ccopts=CCOPTS select compiler command line options],
71 AC_MSG_RESULT(CCOPTS is $withval)
73 CFLAGS="$CFLAGS $withval",
77 dnl Set default values for library extentions. Will be dealt with after
78 dnl parsing configuration opions, which may modify these
84 dnl set $(LDFLAGS) from --with-ldopts=value
87 [ --with-ldopts=LDOPTS select linker command line options],
88 AC_MSG_RESULT(LDFLAGS is $withval)
93 dnl Allow separate `usr_prefix' to be specified
95 AC_ARG_WITH([usr-prefix],
96 [ --with-usr-prefx=PREFIX specify a prefix corresponding to /usr (default ${prefix})],
100 dnl handle --enable-dll-shlibs
102 AC_ARG_ENABLE([dll-shlibs],
103 [ --enable-dll-shlibs select DLL libraries],
104 if test "$enableval" = "no"
107 MAKEFILE_DLL=/dev/null
108 echo "Disabling DLL shared libraries"
111 MAKEFILE_DLL=$srcdir/lib/Makefile.dll-lib
114 echo "Enabling DLL shared libraries"
117 MAKEFILE_DLL=/dev/null
119 echo "Disabling DLL shared libraries by default"
122 AC_SUBST_FILE(MAKEFILE_DLL)
124 dnl handle --enable-elf-shlibs
126 AC_ARG_ENABLE([elf-shlibs],
127 [ --enable-elf-shlibs select ELF shared libraries],
128 if test "$enableval" = "no"
131 MAKEFILE_ELF=/dev/null
132 echo "Disabling ELF shared libraries"
135 MAKEFILE_ELF=$srcdir/lib/Makefile.elf-lib
138 echo "Enabling ELF shared libraries"
141 MAKEFILE_ELF=/dev/null
143 echo "Disabling ELF shared libraries by default"
146 AC_SUBST_FILE(MAKEFILE_ELF)
148 dnl handle --enable-bsd-shlibs
150 AC_ARG_ENABLE([bsd-shlibs],
151 [ --enable-bsd-shlibs select BSD shared libraries],
152 if test "$enableval" = "no"
155 MAKEFILE_BSDLIB=/dev/null
156 echo "Disabling BSD shared libraries"
159 MAKEFILE_BSDLIB=$srcdir/lib/Makefile.bsd-lib
161 echo "Enabling BSD shared libraries"
164 MAKEFILE_BSDLIB=/dev/null
166 echo "Disabling BSD shared libraries by default"
169 AC_SUBST_FILE(MAKEFILE_BSDLIB)
171 dnl handle --enable-profile
173 AC_ARG_ENABLE([profile],
174 [ --enable-profile build profiling libraries],
175 if test "$enableval" = "no"
178 MAKEFILE_PROFILE=/dev/null
179 echo "Disabling profiling libraries"
182 MAKEFILE_PROFILE=$srcdir/lib/Makefile.profile
183 PROFILED_LIB_EXT=_p.a
184 echo "Building profiling libraries"
188 MAKEFILE_PROFILE=/dev/null
189 echo "Disabling profiling libraries by default"
191 AC_SUBST(PROFILE_CMT)
192 AC_SUBST_FILE(MAKEFILE_PROFILE)
194 dnl handle --enable-checker
196 AC_ARG_ENABLE([checker],
197 [ --enable-checker build checker libraries],
198 if test "$enableval" = "no"
201 MAKEFILE_CHECKER=/dev/null
202 echo "Disabling checker libraries"
205 MAKEFILE_CHECKER=$srcdir/lib/Makefile.checker
206 echo "Building checker libraries"
210 MAKEFILE_CHECKER=/dev/null
211 echo "Disabling checker libraries by default"
213 AC_SUBST(CHECKER_CMT)
214 AC_SUBST_FILE(MAKEFILE_CHECKER)
216 dnl Substitute library extensions
219 AC_SUBST(STATIC_LIB_EXT)
220 AC_SUBST(PROFILED_LIB_EXT)
222 dnl handle --enable-gcc-wall
224 AC_ARG_ENABLE([gcc-wall],
225 [ --enable-gcc-wall enable GCC anal warnings (DON'T USE IN PRODUCTION)],
226 if test "$enableval" = "no"
229 echo "Disabling GCC warnings"
232 echo "Enabling GCC warnings"
236 echo "Disabling GCC warnings by default"
239 AC_ARG_ENABLE([dynamic-e2fsck],
240 [ --enable-dynamic-e2fsck build e2fsck dynamically],
241 if test "$enableval" = "no"
244 echo "Building e2fsck statically"
247 echo "Building e2fsck dynamically"
251 echo "Building e2fsck statically by default"
253 AC_SUBST(E2FSCK_TYPE)
255 dnl See whether to install the `fsck' wrapper program (that calls e2fsck)
257 AC_ARG_ENABLE([fsck],
258 [ --enable-fsck build fsck wrapper program],
259 [if test "$enableval" = "no"
261 FSCK_PROG='' FSCK_MAN=''
262 echo "Not building fsck wrapper"
264 FSCK_PROG=fsck FSCK_MAN=fsck.8
265 echo "Building fsck wrapper"
270 FSCK_PROG='' FSCK_MAN=''
271 echo "Not building fsck wrapper by default"
274 FSCK_PROG=fsck FSCK_MAN=fsck.8
275 echo "Building fsck wrapper by default"
282 MAKEFILE_LIBRARY=$srcdir/lib/Makefile.library
283 AC_SUBST_FILE(MAKEFILE_LIBRARY)
286 AC_ARG_ENABLE([old-bitops],
287 [ --enable-old-bitops Use old (non-standard but native) bitmask operations],
288 if test "$enableval" = "no"
290 echo "Using new (standard) bitmask operations"
292 AC_DEFINE(EXT2_OLD_BITOPS)
293 echo "Using old (native) bitmask operations"
297 echo "Using standard bitmask operations by default"
300 dnl End of configuration options
302 AC_SUBST(BINARY_TYPE)
304 AC_PATH_PROG(LN, ln, ln)
306 AC_PATH_PROG(MV, mv, mv)
307 AC_PATH_PROG(CP, cp, cp)
308 AC_PATH_PROG(RM, rm, rm)
309 AC_PATH_PROG(CHMOD, chmod, :)
310 AC_PATH_PROG(AWK, awk, awk)
311 AC_PATH_PROG(SED, sed, sed)
312 AC_CHECK_TOOL(AR, ar, ar)
313 AC_CHECK_TOOL(RANLIB, ranlib, :)
314 AC_CHECK_TOOL(STRIP, strip, :)
318 AC_CHECK_HEADERS(stdlib.h unistd.h stdarg.h errno.h mntent.h dirent.h getopt.h linux/fd.h linux/major.h sys/disklabel.h sys/sockio.h sys/time.h sys/stat.h sys/types.h net/if.h netinet/in.h)
321 dnl See if struct dirent has a d_namlen field (like bsd systems), implying
322 dnl that the actual length of the structure may be grater than the declared
325 AC_MSG_CHECKING(whether struct dirent has a d_namlen field)
326 AC_CACHE_VAL(e2fsprogs_cv_struct_d_namlen,
328 [#include <sys/types.h>
329 #include <dirent.h>],
330 [struct dirent de; de.d_namlen = 0;],
331 [e2fsprogs_cv_struct_d_namlen=yes],
332 [e2fsprogs_cv_struct_d_namlen=no]))
333 AC_MSG_RESULT($e2fsprogs_cv_struct_d_namlen)
334 if test "$e2fsprogs_cv_struct_d_namlen" = yes; then
335 AC_DEFINE(HAVE_DIRENT_NAMLEN)
338 dnl Check to see if llseek() is declared in unistd.h. On some libc's
339 dnl it is, and on others it isn't..... Thank you glibc developers....
341 dnl Warning! Use of --enable-gcc-wall may throw off this test.
344 AC_MSG_CHECKING(whether llseek declared in unistd.h)
345 AC_CACHE_VAL(e2fsprogs_cv_have_llseek_prototype,
347 [#include <unistd.h>], [extern int llseek(int);],
348 [e2fsprogs_cv_have_llseek_prototype=no],
349 [e2fsprogs_cv_have_llseek_prototype=yes]))
350 AC_MSG_RESULT($e2fsprogs_cv_have_llseek_prototype)
351 if test "$e2fsprogs_cv_have_llseek_prototype" = yes; then
352 AC_DEFINE(HAVE_LLSEEK_PROTOTYPE)
357 if test "$cross_compiling" = yes -a "$ac_cv_sizeof_long" = ""; then
358 # if cross-compiling, with no cached values, just assume something common.
362 ac_cv_sizeof_long_long=0
363 AC_MSG_WARN([Cross-compiling, so cannot check type sizes; assuming short=2, int=4, long=4])
365 AC_CHECK_SIZEOF(short)
367 AC_CHECK_SIZEOF(long)
368 AC_CHECK_SIZEOF(long long)
369 SIZEOF_SHORT=$ac_cv_sizeof_short
370 SIZEOF_INT=$ac_cv_sizeof_int
371 SIZEOF_LONG=$ac_cv_sizeof_long
372 SIZEOF_LONG_LONG=$ac_cv_sizeof_long_long
373 AC_SUBST(SIZEOF_SHORT)
375 AC_SUBST(SIZEOF_LONG)
376 AC_SUBST(SIZEOF_LONG_LONG)
378 dnl See if struct stat has a st_flags field, in which case we can get file
379 dnl flags somewhat portably. Also check for the analogous setter, chflags().
381 AC_MSG_CHECKING(whether struct stat has a st_flags field)
382 AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags,
383 AC_TRY_COMPILE([#include <sys/stat.h>],
384 [struct stat stat; stat.st_flags = 0;],
385 [e2fsprogs_cv_struct_st_flags=yes],
386 [e2fsprogs_cv_struct_st_flags=no]))
387 AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags)
388 if test "$e2fsprogs_cv_struct_st_flags" = yes; then
389 AC_DEFINE(HAVE_STAT_FLAGS)
391 AC_CHECK_FUNCS(chflags getrusage llseek strdup getmntinfo strcasecmp srandom fchown)
393 dnl Check to see if ino_t is defined
395 AC_MSG_CHECKING(ino_t defined by sys/types.h)
396 AC_CACHE_VAL(e2fsprogs_cv_ino_t,
397 AC_TRY_COMPILE([#include <sys/types.h>],
398 [ino_t ino; ino = 0;],
399 [e2fsprogs_cv_ino_t=yes],
400 [e2fsprogs_cv_ino_t=no]))
401 AC_MSG_RESULT($e2fsprogs_cv_ino_t)
402 if test "$e2fsprogs_cv_ino_t" = yes; then
403 AC_DEFINE(HAVE_INO_T)
406 dnl On systems without linux header files, we add an extra include directory
407 dnl that holds enough to fake it (hopefully). Note that the $(top_srcdir) here
408 dnl is quoted so that it gets expanded by make, not by configure.
410 AC_CHECK_HEADER(linux/fs.h, [linux_headers=yes], [linux_headers=no])
411 AC_SUBST(EXTRA_PROGS)
412 if test "$linux_headers" = yes; then
413 AC_DEFINE(HAVE_LINUX_FS_H)
414 # These are some programs that depend on having linux headers around, and
415 # won't work otherwise. So we only compile them if we can.
416 EXTRA_PROGS="$EXTRA_PROGS flushb"
418 LINUX_INCLUDE='-I$(top_srcdir)/include -I$(top_builddir)/include'
419 # Use this include directory with test compiles in the configure script too.
420 CPPFLAGS="$CPPFLAGS -I$srcdir/include -I./include"
422 AC_SUBST(LINUX_INCLUDE)
424 dnl Check to see if -lsocket is required (solaris) to make something
425 dnl that uses socket() to compile; this is needed for the UUID library
428 AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket])
431 dnl See if optreset exists
433 AC_MSG_CHECKING(for optreset)
434 AC_CACHE_VAL(ac_cv_have_optreset,
435 [AC_EGREP_HEADER(optreset, unistd.h,
436 ac_cv_have_optreset=yes, ac_cv_have_optreset=no)])dnl
437 AC_MSG_RESULT($ac_cv_have_optreset)
438 if test $ac_cv_have_optreset = yes; then
439 AC_DEFINE(HAVE_OPTRESET)
442 dnl See if using the EXT2 ioctls causes a compile-time barf (as on the hurd).
444 AC_MSG_CHECKING(whether the ext2 ioctls compile)
445 AC_CACHE_VAL(e2fsprogs_cv_ioctl_ext2,
446 AC_TRY_COMPILE([#include <linux/ext2_fs.h>
447 #include <sys/ioctl.h>],
448 [ioctl (0, EXT2_IOC_SETVERSION, 0);],
449 [e2fsprogs_cv_ioctl_ext2=yes],
450 [e2fsprogs_cv_ioctl_ext2=no]))
451 AC_MSG_RESULT($e2fsprogs_cv_ioctl_ext2)
452 if test "$e2fsprogs_cv_ioctl_ext2" = yes; then
453 AC_DEFINE(HAVE_EXT2_IOCTLS)
456 dnl Linux uses a separate usr_prefix by default
460 if test "$prefix" = NONE ; then
461 usr_prefix="\${prefix}/usr";
462 echo "On $host_os systems, usr_prefix defaults to $usr_prefix"
466 if test "$usr_prefix" = NONE ; then
467 usr_prefix="\${prefix}"
471 dnl On Linux/hurd, force the prefix to be ''
475 if test "$prefix" = NONE ; then
477 echo "On $host_os systems, prefix defaults to ''"
482 dnl See if -static works.
484 AC_MSG_CHECKING([whether linker accepts -static])
485 AC_CACHE_VAL(ac_cv_e2fsprogs_use_static,
486 [SAVE_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS -static"
487 AC_TRY_LINK([#include <stdio.h>],[fflush(stdout);],
488 ac_cv_e2fsprogs_use_static=yes, ac_cv_e2fsprogs_use_static=no)
489 LDFLAGS=$SAVE_LDFLAGS])
490 AC_MSG_RESULT($ac_cv_e2fsprogs_use_static)
492 if test $ac_cv_e2fsprogs_use_static = yes; then
493 LDFLAG_STATIC=-static
495 AC_SUBST(LDFLAG_STATIC)
497 dnl Make the ss and et directories work correctly.
499 SS_DIR=`cd ${srcdir}/lib/ss; pwd`
500 ET_DIR=`cd ${srcdir}/lib/et; pwd`
504 dnl Only try to run the test suite if we're not cross compiling.
506 if test "$cross_compiling" = yes ; then
511 AC_SUBST(DO_TEST_SUITE)
515 DO_SUBSTITUTE_SCRIPT=$srcdir/lib/do_substitute
516 AC_SUBST_FILE(DO_SUBSTITUTE_SCRIPT)
518 dnl Make our output files, being sure that we create the some miscellaneous
521 test -d lib || mkdir lib
522 test -d include || mkdir include
523 test -d include/linux || mkdir include/linux
525 if test -d ${srcdir}/resize ; then
526 rmakefile=resize/Makefile
528 AC_OUTPUT(MCONFIG Makefile util/Makefile util/subst.conf lib/et/Makefile
529 lib/ss/Makefile lib/ext2fs/Makefile lib/e2p/Makefile lib/uuid/Makefile
530 misc/Makefile e2fsck/Makefile debugfs/Makefile tests/Makefile
531 tests/progs/Makefile $rmakefile doc/Makefile)