AC_INIT(version.h) AC_PREREQ(2.12) MCONFIG=./MCONFIG AC_SUBST_FILE(MCONFIG) BINARY_TYPE=bin dnl dnl This is to figure out the version number and the date.... dnl E2FSPROGS_VERSION=`grep E2FSPROGS_VERSION ${srcdir}/version.h \ | awk '{print $3}' | tr \" " " | awk '{print $1}'` DATE=`grep E2FSPROGS_DATE ${srcdir}/version.h | awk '{print $3}' \ | tr \" " "` MONTH=`echo $DATE | awk -F- '{print $2}'` YEAR=`echo $DATE | awk -F- '{print $3}'` if expr $YEAR ">" 1900 > /dev/null ; then E2FSPROGS_YEAR=$YEAR elif expr $YEAR ">" 90 >/dev/null ; then E2FSPROGS_YEAR=19$YEAR else E2FSPROGS_YEAR=20$YEAR fi case $MONTH in Jan) E2FSPROGS_MONTH="January" ;; Feb) E2FSPROGS_MONTH="February" ;; Mar) E2FSPROGS_MONTH="March" ;; Apr) E2FSPROGS_MONTH="April" ;; May) E2FSPROGS_MONTH="May" ;; Jun) E2FSPROGS_MONTH="June" ;; Jul) E2FSPROGS_MONTH="July" ;; Aug) E2FSPROGS_MONTH="August" ;; Sep) E2FSPROGS_MONTH="September" ;; Oct) E2FSPROGS_MONTH="October" ;; Nov) E2FSPROGS_MONTH="November" ;; Dec) E2FSPROGS_MONTH="December" ;; *) echo "Unknown month $MONTH??" ;; esac unset DATE MONTH YEAR echo "Generating configuration file for e2fsprogs version $E2FSPROGS_VERSION" echo "Release date is ${E2FSPROGS_MONTH}, ${E2FSPROGS_YEAR}" AC_SUBST(E2FSPROGS_YEAR) AC_SUBST(E2FSPROGS_MONTH) AC_SUBST(E2FSPROGS_VERSION) AC_REQUIRE([AC_CANONICAL_HOST]) dnl dnl set $(CC) from --with-cc=value dnl AC_ARG_WITH([cc], [ --with-cc=COMPILER select compiler to use], AC_MSG_RESULT(CC=$withval) CC=$withval, if test -z "$CC" ; then CC=cc; fi [AC_MSG_RESULT(CC defaults to $CC)])dnl export CC AC_SUBST([CC]) dnl dnl set $(LD) from --with-linker=value dnl AC_ARG_WITH([linker], [ --with-linker=LINKER select linker to use], AC_MSG_RESULT(LD=$withval) LD=$withval, if test -z "$LD" ; then LD=$CC; fi [AC_MSG_RESULT(LD defaults to $LD)])dnl export LD AC_SUBST([LD]) dnl dnl set $(CCOPTS) from --with-ccopts=value dnl AC_ARG_WITH([ccopts], [ --with-ccopts=CCOPTS select compiler command line options], AC_MSG_RESULT(CCOPTS is $withval) CCOPTS=$withval CFLAGS="$CFLAGS $withval", CCOPTS=)dnl AC_SUBST(CCOPTS) dnl dnl On systems without linux header files, we add an extra include directory dnl that holds enough to fake it (hopefully). Note that the $(top_srcdir) here dnl is quoted so that it gets expanded by make, not by configure. dnl AC_CHECK_HEADER(linux/fs.h, [linux_headers=yes], [linux_headers=no]) if test "$linux_headers" = yes; then AC_DEFINE(HAVE_LINUX_FS_H) else LINUX_INCLUDE='-I$(top_srcdir)/include -I$(top_builddir)/include' # Use this include directory with test compiles in the configure script too. CPPFLAGS="$CPPFLAGS -I$srcdir/include -I./include" fi AC_SUBST(LINUX_INCLUDE) dnl dnl Set default values for library extentions. Will be dealt with after dnl parsing configuration opions, which may modify these dnl LIB_EXT=.a STATIC_LIB_EXT=.a PROFILE_LIB_EXT=.a dnl dnl set $(LDFLAGS) from --with-ldopts=value dnl AC_ARG_WITH([ldopts], [ --with-ldopts=LDOPTS select linker command line options], AC_MSG_RESULT(LDFLAGS is $withval) LDFLAGS=$withval, LDFLAGS=)dnl AC_SUBST(LDFLAGS) dnl dnl Allow separate `root_prefix' to be specified dnl AC_ARG_WITH([root-prefix], [ --with-root-prefix=PREFIX override prefix variable for files to be placed in the root], root_prefix=$withval, root_prefix=NONE)dnl dnl dnl handle --enable-dll-shlibs dnl AC_ARG_ENABLE([dll-shlibs], [ --enable-dll-shlibs select DLL libraries], if test "$enableval" = "no" then DLL_CMT=# MAKEFILE_DLL=/dev/null echo "Disabling DLL shared libraries" else DLL_CMT= MAKEFILE_DLL=$srcdir/lib/Makefile.dll-lib BINARY_TYPE=dllbin LIB_EXT=.sa echo "Enabling DLL shared libraries" fi , MAKEFILE_DLL=/dev/null DLL_CMT=# echo "Disabling DLL shared libraries by default" ) AC_SUBST(DLL_CMT) AC_SUBST_FILE(MAKEFILE_DLL) dnl dnl handle --enable-elf-shlibs dnl AC_ARG_ENABLE([elf-shlibs], [ --enable-elf-shlibs select ELF shared libraries], if test "$enableval" = "no" then ELF_CMT=# MAKEFILE_ELF=/dev/null echo "Disabling ELF shared libraries" else ELF_CMT= MAKEFILE_ELF=$srcdir/lib/Makefile.elf-lib BINARY_TYPE=elfbin LIB_EXT=.so echo "Enabling ELF shared libraries" fi , MAKEFILE_ELF=/dev/null ELF_CMT=# echo "Disabling ELF shared libraries by default" ) AC_SUBST(ELF_CMT) AC_SUBST_FILE(MAKEFILE_ELF) dnl dnl handle --enable-bsd-shlibs dnl AC_ARG_ENABLE([bsd-shlibs], [ --enable-bsd-shlibs select BSD shared libraries], if test "$enableval" = "no" then BSDLIB_CMT=# MAKEFILE_BSDLIB=/dev/null echo "Disabling BSD shared libraries" else BSDLIB_CMT= MAKEFILE_BSDLIB=$srcdir/lib/Makefile.bsd-lib LIB_EXT=.so echo "Enabling BSD shared libraries" fi , MAKEFILE_BSDLIB=/dev/null BSDLIB_CMT=# echo "Disabling BSD shared libraries by default" ) AC_SUBST(BSDLIB_CMT) AC_SUBST_FILE(MAKEFILE_BSDLIB) dnl dnl handle --enable-profile dnl AC_ARG_ENABLE([profile], [ --enable-profile build profiling libraries], if test "$enableval" = "no" then PROFILE_CMT=# MAKEFILE_PROFILE=/dev/null echo "Disabling profiling libraries" else PROFILE_CMT= MAKEFILE_PROFILE=$srcdir/lib/Makefile.profile PROFILED_LIB_EXT=_p.a echo "Building profiling libraries" fi , PROFILE_CMT=# MAKEFILE_PROFILE=/dev/null echo "Disabling profiling libraries by default" ) AC_SUBST(PROFILE_CMT) AC_SUBST_FILE(MAKEFILE_PROFILE) dnl dnl handle --enable-checker dnl AC_ARG_ENABLE([checker], [ --enable-checker build checker libraries], if test "$enableval" = "no" then CHECKER_CMT=# MAKEFILE_CHECKER=/dev/null echo "Disabling checker libraries" else CHECKER_CMT= MAKEFILE_CHECKER=$srcdir/lib/Makefile.checker echo "Building checker libraries" fi , CHECKER_CMT=# MAKEFILE_CHECKER=/dev/null echo "Disabling checker libraries by default" ) AC_SUBST(CHECKER_CMT) AC_SUBST_FILE(MAKEFILE_CHECKER) dnl dnl Substitute library extensions dnl AC_SUBST(LIB_EXT) AC_SUBST(STATIC_LIB_EXT) AC_SUBST(PROFILED_LIB_EXT) dnl dnl handle --enable-gcc-wall dnl AC_ARG_ENABLE([gcc-wall], [ --enable-gcc-wall enable GCC anal warnings (DON'T USE IN PRODUCTION)], if test "$enableval" = "no" then W=# echo "Disabling GCC warnings" else W= echo "Enabling GCC warnings" fi , W=# echo "Disabling GCC warnings by default" ) AC_SUBST(W) AC_ARG_ENABLE([dynamic-e2fsck], [ --enable-dynamic-e2fsck build e2fsck dynamically], if test "$enableval" = "no" then E2FSCK_TYPE=static echo "Building e2fsck statically" else E2FSCK_TYPE=shared echo "Building e2fsck dynamically" fi , E2FSCK_TYPE=static echo "Building e2fsck statically by default" ) AC_SUBST(E2FSCK_TYPE) dnl dnl See whether to install the `fsck' wrapper program (that calls e2fsck) dnl AC_ARG_ENABLE([fsck], [ --enable-fsck build fsck wrapper program], [if test "$enableval" = "no" then FSCK_PROG='' FSCK_MAN='' echo "Not building fsck wrapper" else FSCK_PROG=fsck FSCK_MAN=fsck.8 echo "Building fsck wrapper" fi] , [case "$host_os" in gnu*) FSCK_PROG='' FSCK_MAN='' echo "Not building fsck wrapper by default" ;; *) FSCK_PROG=fsck FSCK_MAN=fsck.8 echo "Building fsck wrapper by default" esac] ) AC_SUBST(FSCK_PROG) AC_SUBST(FSCK_MAN) dnl dnl MAKEFILE_LIBRARY=$srcdir/lib/Makefile.library AC_SUBST_FILE(MAKEFILE_LIBRARY) dnl dnl AC_ARG_ENABLE([old-bitops], [ --enable-old-bitops Use old (non-standard but native) bitmask operations], if test "$enableval" = "no" then echo "Using new (standard) bitmask operations" else AC_DEFINE(EXT2_OLD_BITOPS) echo "Using old (native) bitmask operations" fi , echo "Using standard bitmask operations by default" ) dnl dnl End of configuration options dnl AC_SUBST(BINARY_TYPE) AC_PROG_MAKE_SET AC_PATH_PROG(LN, ln, ln) AC_PROG_LN_S AC_PATH_PROG(MV, mv, mv) AC_PATH_PROG(CP, cp, cp) AC_PATH_PROG(RM, rm, rm) AC_PATH_PROG(CHMOD, chmod, :) AC_PATH_PROG(AWK, awk, awk) AC_PATH_PROG(SED, sed, sed) AC_PATH_PROG(PERL, perl, perl) AC_CHECK_TOOL(AR, ar, ar) AC_CHECK_TOOL(RANLIB, ranlib, :) AC_CHECK_TOOL(STRIP, strip, :) AC_PROG_CC AC_PROG_INSTALL AC_C_CROSS # See if we need a separate native compiler. if test $cross_compiling = no; then BUILD_CC="$CC" AC_SUBST(BUILD_CC) else AC_CHECK_PROGS(BUILD_CC, gcc cc) fi 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/sockio.h sys/time.h sys/stat.h sys/types.h net/if.h netinet/in.h) AC_FUNC_VPRINTF dnl dnl See if struct dirent has a d_namlen field (like bsd systems), implying dnl that the actual length of the structure may be grater than the declared dnl length. dnl AC_MSG_CHECKING(whether struct dirent has a d_namlen field) AC_CACHE_VAL(e2fsprogs_cv_struct_d_namlen, AC_TRY_COMPILE( [#include #include ], [struct dirent de; de.d_namlen = 0;], [e2fsprogs_cv_struct_d_namlen=yes], [e2fsprogs_cv_struct_d_namlen=no])) AC_MSG_RESULT($e2fsprogs_cv_struct_d_namlen) if test "$e2fsprogs_cv_struct_d_namlen" = yes; then AC_DEFINE(HAVE_DIRENT_NAMLEN) fi dnl dnl Check to see if llseek() is declared in unistd.h. On some libc's dnl it is, and on others it isn't..... Thank you glibc developers.... dnl dnl Warning! Use of --enable-gcc-wall may throw off this test. dnl dnl AC_MSG_CHECKING(whether llseek declared in unistd.h) AC_CACHE_VAL(e2fsprogs_cv_have_llseek_prototype, AC_TRY_COMPILE( [#include ], [extern int llseek(int);], [e2fsprogs_cv_have_llseek_prototype=no], [e2fsprogs_cv_have_llseek_prototype=yes])) AC_MSG_RESULT($e2fsprogs_cv_have_llseek_prototype) if test "$e2fsprogs_cv_have_llseek_prototype" = yes; then AC_DEFINE(HAVE_LLSEEK_PROTOTYPE) fi dnl dnl Word sizes... dnl if test "$cross_compiling" = yes -a "$ac_cv_sizeof_long" = ""; then # if cross-compiling, with no cached values, just assume something common. ac_cv_sizeof_short=2 ac_cv_sizeof_int=4 ac_cv_sizeof_long=4 ac_cv_sizeof_long_long=8 AC_MSG_WARN([Cross-compiling, so cannot check type sizes; assuming short=2, int=4, long=4, long long=8]) fi AC_CHECK_SIZEOF(short) AC_CHECK_SIZEOF(int) AC_CHECK_SIZEOF(long) AC_CHECK_SIZEOF(long long) SIZEOF_SHORT=$ac_cv_sizeof_short SIZEOF_INT=$ac_cv_sizeof_int SIZEOF_LONG=$ac_cv_sizeof_long SIZEOF_LONG_LONG=$ac_cv_sizeof_long_long AC_SUBST(SIZEOF_SHORT) AC_SUBST(SIZEOF_INT) AC_SUBST(SIZEOF_LONG) AC_SUBST(SIZEOF_LONG_LONG) dnl dnl See if struct stat has a st_flags field, in which case we can get file dnl flags somewhat portably. Also check for the analogous setter, chflags(). dnl AC_MSG_CHECKING(whether struct stat has a st_flags field) AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags, AC_TRY_COMPILE([#include ], [struct stat stat; stat.st_flags = 0;], [e2fsprogs_cv_struct_st_flags=yes], [e2fsprogs_cv_struct_st_flags=no])) AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags) if test "$e2fsprogs_cv_struct_st_flags" = yes; then AC_MSG_CHECKING(whether st_flags field is useful) AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags_immut, AC_TRY_COMPILE([#include ], [struct stat stat; stat.st_flags |= UF_IMMUTABLE;], [e2fsprogs_cv_struct_st_flags_immut=yes], [e2fsprogs_cv_struct_st_flags_immut=no])) AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags_immut) if test "$e2fsprogs_cv_struct_st_flags_immut" = yes; then AC_DEFINE(HAVE_STAT_FLAGS) fi fi AC_CHECK_FUNCS(chflags getrusage llseek strdup getmntinfo strcasecmp srandom fchown mallinfo) dnl dnl Check to see if ino_t is defined dnl AC_MSG_CHECKING(ino_t defined by sys/types.h) AC_CACHE_VAL(e2fsprogs_cv_ino_t, AC_TRY_COMPILE([#include ], [ino_t ino; ino = 0;], [e2fsprogs_cv_ino_t=yes], [e2fsprogs_cv_ino_t=no])) AC_MSG_RESULT($e2fsprogs_cv_ino_t) if test "$e2fsprogs_cv_ino_t" = yes; then AC_DEFINE(HAVE_INO_T) fi dnl dnl Check to see if -lsocket is required (solaris) to make something dnl that uses socket() to compile; this is needed for the UUID library dnl SOCKET_LIB='' AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket]) AC_SUBST(SOCKET_LIB) dnl dnl See if optreset exists dnl AC_MSG_CHECKING(for optreset) AC_CACHE_VAL(ac_cv_have_optreset, [AC_EGREP_HEADER(optreset, unistd.h, ac_cv_have_optreset=yes, ac_cv_have_optreset=no)])dnl AC_MSG_RESULT($ac_cv_have_optreset) if test $ac_cv_have_optreset = yes; then AC_DEFINE(HAVE_OPTRESET) fi dnl dnl See if using the EXT2 ioctls causes a compile-time barf (as on the Hurd). dnl AC_MSG_CHECKING(whether the ext2 ioctls compile) AC_CACHE_VAL(e2fsprogs_cv_ioctl_ext2, AC_TRY_COMPILE([#include #include ], [ioctl (0, EXT2_IOC_SETVERSION, 0);], [e2fsprogs_cv_ioctl_ext2=yes], [e2fsprogs_cv_ioctl_ext2=no])) AC_MSG_RESULT($e2fsprogs_cv_ioctl_ext2) if test "$e2fsprogs_cv_ioctl_ext2" = yes; then AC_DEFINE(HAVE_EXT2_IOCTLS) fi dnl dnl Check if ext2_inode has i_version (changed to i_generation in Linux 2.3) dnl AC_MSG_CHECKING(whether struct ext2_inode has an i_version field) AC_CACHE_VAL(e2fsprogs_cv_ext2_inode_version, AC_TRY_COMPILE([#include ], [struct ext2_inode e2i; e2i.i_version=0;], [e2fsprogs_cv_ext2_inode_version=yes], [e2fsprogs_cv_ext2_inode_version=no])) AC_MSG_RESULT($e2fsprogs_cv_ext2_inode_version) if test "$e2fsprogs_cv_ext2_inode_version" = yes; then AC_DEFINE(HAVE_EXT2_INODE_VERSION) fi dnl dnl Linux and Hurd places root files in the / by default dnl case "$host_os" in linux* | gnu*) if test "$prefix" = NONE -a "$root_prefix" = NONE ; then root_prefix=""; echo "On $host_os systems, root_prefix defaults to ''" fi ;; esac dnl dnl On Linux/hurd, force the prefix to be /usr dnl case "$host_os" in linux* | gnu*) if test "$prefix" = NONE ; then prefix="/usr"; echo "On $host_os systems, prefix defaults to /usr" fi ;; esac if test "$root_prefix" = NONE ; then if test "$prefix" = NONE ; then root_prefix="$ac_default_prefix" else root_prefix="$prefix" fi fi AC_SUBST(root_prefix) dnl dnl See if -static works. dnl AC_MSG_CHECKING([whether linker accepts -static]) AC_CACHE_VAL(ac_cv_e2fsprogs_use_static, [SAVE_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS -static" AC_TRY_LINK([#include ],[fflush(stdout);], ac_cv_e2fsprogs_use_static=yes, ac_cv_e2fsprogs_use_static=no) LDFLAGS=$SAVE_LDFLAGS]) dnl dnl Regardless of how the test turns out, Solaris doesn't handle -static dnl This is caused by the socket library requiring the nsl library, which dnl requires the -dl library, which only works for dynamically linked dnl programs. It basically means you can't have statically linked programs dnl which use the network under Solaris. dnl case "$host_os" in solaris2.*) ac_cv_e2fsprogs_use_static=no ;; esac AC_MSG_RESULT($ac_cv_e2fsprogs_use_static) LDFLAG_STATIC= if test $ac_cv_e2fsprogs_use_static = yes; then LDFLAG_STATIC=-static fi AC_SUBST(LDFLAG_STATIC) dnl dnl Make the ss and et directories work correctly. dnl SS_DIR=`cd ${srcdir}/lib/ss; pwd` ET_DIR=`cd ${srcdir}/lib/et; pwd` AC_SUBST(SS_DIR) AC_SUBST(ET_DIR) dnl dnl Only try to run the test suite if we're not cross compiling. dnl if test "$cross_compiling" = yes ; then DO_TEST_SUITE= else DO_TEST_SUITE=check fi AC_SUBST(DO_TEST_SUITE) dnl dnl dnl DO_SUBSTITUTE_SCRIPT=$srcdir/lib/do_substitute AC_SUBST_FILE(DO_SUBSTITUTE_SCRIPT) dnl dnl Make our output files, being sure that we create the some miscellaneous dnl directories dnl test -d lib || mkdir lib test -d include || mkdir include test -d include/linux || mkdir include/linux test -d include/asm || mkdir include/asm rmakefile= if test -d ${srcdir}/resize ; then rmakefile=resize/Makefile fi AC_OUTPUT(MCONFIG Makefile util/Makefile util/subst.conf lib/et/Makefile lib/ss/Makefile lib/ext2fs/Makefile lib/e2p/Makefile lib/uuid/Makefile misc/Makefile e2fsck/Makefile debugfs/Makefile tests/Makefile tests/progs/Makefile $rmakefile doc/Makefile)