Whamcloud - gitweb
mke2fs: Print a better error msg when ext2fs_get_device_size() returns EFBIG
[tools/e2fsprogs.git] / configure.in
index 44b718d..9a43f99 100644 (file)
@@ -24,34 +24,50 @@ else
 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" ;;
+Jan)   MONTH_NUM=01; E2FSPROGS_MONTH="January" ;;
+Feb)   MONTH_NUM=02; E2FSPROGS_MONTH="February" ;;
+Mar)   MONTH_NUM=03; E2FSPROGS_MONTH="March" ;;
+Apr)   MONTH_NUM=04; E2FSPROGS_MONTH="April" ;;
+May)   MONTH_NUM=05; E2FSPROGS_MONTH="May" ;;
+Jun)   MONTH_NUM=06; E2FSPROGS_MONTH="June" ;;
+Jul)   MONTH_NUM=07; E2FSPROGS_MONTH="July" ;;
+Aug)   MONTH_NUM=08; E2FSPROGS_MONTH="August" ;;
+Sep)   MONTH_NUM=09; E2FSPROGS_MONTH="September" ;;
+Oct)   MONTH_NUM=10; E2FSPROGS_MONTH="October" ;;
+Nov)   MONTH_NUM=11; E2FSPROGS_MONTH="November" ;;
+Dec)   MONTH_NUM=12; E2FSPROGS_MONTH="December" ;;
 *)     echo "Unknown month $MONTH??" ;;
 esac
 
-unset DATE MONTH YEAR
+base_ver=`echo $E2FSPROGS_VERSION | \
+              sed -e 's/-WIP//' -e 's/pre-//' -e 's/-PLUS//'`
+
+date_spec=${E2FSPROGS_YEAR}.${MONTH_NUM}.${E2FSPROGS_DAY}
+
+case $E2FSPROGS_VERSION in
+*-WIP|pre-*)
+       pre_vers=`echo $base_ver 0.01 - p | dc`
+       E2FSPROGS_PKGVER="$pre_vers+${base_ver}_WIP_$date_spec"
+       ;;
+*)
+       E2FSPROGS_PKGVER="$base_ver"
+       ;;
+esac
+
+unset DATE MONTH YEAR base_ver pre_vers date_spec
 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_DAY)
 AC_SUBST(E2FSPROGS_VERSION)
+AC_SUBST(E2FSPROGS_PKGVER)
 AC_CANONICAL_HOST
 dnl
 dnl Use diet libc
 dnl 
 AC_ARG_WITH([diet-libc],
-[  --with-diet-libc      Use diet libc],
+[  --with-diet-libc        use diet libc],
 CC="diet cc -nostdinc"
 AC_MSG_RESULT(CC=$CC))dnl
 dnl
@@ -66,6 +82,7 @@ if test -z "$CC" ; then CC=cc; fi
 export CC
 AC_SUBST([CC])
 AC_PROG_CC
+AC_PROG_CPP
 dnl
 dnl set $(LD) from --with-linker=value
 dnl
@@ -190,6 +207,10 @@ echo "Enabling htree directory support by default"
 )
 AC_SUBST(HTREE_CMT)
 dnl
+dnl This needs to be before all of the --enable-*-shlibs options
+dnl
+E2_PKG_CONFIG_STATIC=--static
+dnl
 dnl handle --enable-elf-shlibs
 dnl
 AC_ARG_ENABLE([elf-shlibs],
@@ -200,6 +221,7 @@ then
        MAKEFILE_ELF=/dev/null
        echo "Disabling ELF shared libraries"
 else
+       E2_PKG_CONFIG_STATIC=
        ELF_CMT=
        MAKEFILE_ELF=$srcdir/lib/Makefile.elf-lib
        [case "$host_os" in
@@ -229,6 +251,7 @@ then
        MAKEFILE_BSDLIB=/dev/null
        echo "Disabling BSD shared libraries"
 else
+       E2_PKG_CONFIG_STATIC=
        BSDLIB_CMT=
        MAKEFILE_BSDLIB=$srcdir/lib/Makefile.bsd-lib
        LIB_EXT=.so
@@ -344,26 +367,6 @@ fi
 echo "Disabling testio debugging by default"
 )
 dnl
-dnl handle --enable-swapfs
-dnl
-AC_ARG_ENABLE([swapfs],
-[  --disable-swapfs              disable support of legacy byte-swapped filesystems],
-if test "$enableval" = "no"
-then
-       SWAPFS_CMT=#
-       echo "Disabling swapfs support"
-else
-       SWAPFS_CMT=
-       AC_DEFINE(ENABLE_SWAPFS)
-       echo "Enabling swapfs support"
-fi
-,
-SWAPFS_CMT=
-echo "Enabling swapfs support by default"
-AC_DEFINE(ENABLE_SWAPFS)
-)
-AC_SUBST(SWAPFS_CMT)
-dnl
 dnl handle --enable-debugfs
 dnl
 AC_ARG_ENABLE([debugfs],
@@ -418,24 +421,6 @@ RESIZER_CMT=
 )
 AC_SUBST(RESIZER_CMT)
 dnl
-dnl handle --enable-dynamic-e2fsck
-dnl
-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],
@@ -482,6 +467,7 @@ AC_SUBST(E2INITRD_PROG)
 AC_SUBST(E2INITRD_MAN)
 dnl handle --enable-blkid-devmapper
 dnl
+STATIC_BLKID_DEVMAPPER_LIBS=''
 AC_ARG_ENABLE([blkid-devmapper],
 [  --enable-blkid-devmapper  build with device-mapper support],
 [if test "$enableval" = "no"
@@ -494,11 +480,33 @@ else
        AC_DEFINE(HAVE_DEVMAPPER)
        echo "Enabling device-mapper support"
 
-       DEVMAPPER_REQ='libselinux libsepol'
-       DEVMAPPER_PC_LIBS='-ldevmapper'
-       DEVMAPPER_LIBS='-lpthread -ldevmapper -lselinux -lsepol'
-       STATIC_DEVMAPPER_LIBS='-lpthread /usr/lib/libdevmapper.a /usr/lib/libselinux.a /usr/lib/libsepol.a'
+       PKG_PROG_PKG_CONFIG()
 
+       if test -z "$PKG_CONFIG"; then
+               echo "pkg-config not installed; please install it."
+               exit 1;
+       fi
+       AC_CHECK_LIB(devmapper, dm_tree_create,
+               [DEVMAPPER_LIBS=`$PKG_CONFIG --libs devmapper`; 
+                STATIC_DEVMAPPER_LIBS=`$PKG_CONFIG --static --libs devmapper`;
+                DEVMAPPER_REQ="devmapper";
+                DEVMAPPER_PC_LIBS="-ldevmapper"],
+               [AC_MSG_ERROR([device-mapper library not found])],
+               [$DEVMAPPER_LIBS])
+       # work around stupid devmapper.pc bug in Debian
+       case "$STATIC_DEVMAPPER_LIBS" in
+       *pthread*)
+           ;;
+       *)
+           echo "Working around Debian bug #390243..."
+           STATIC_DEVMAPPER_LIBS="-pthread $STATIC_DEVMAPPER_LIBS"
+           ;;
+       esac
+       if test "$E2_PKG_CONFIG_STATIC" = "--static"; then
+           DEVMAPPER_LIBS="$STATIC_DEVMAPPER_LIBS"
+           STATIC_BLKID_DEVMAPPER_LIBS="$STATIC_DEVMAPPER_LIBS"
+       fi
 fi]
 ,
 echo "Disabling device-mapper support by default"
@@ -507,6 +515,48 @@ AC_SUBST(DEVMAPPER_REQ)
 AC_SUBST(DEVMAPPER_PC_LIBS)
 AC_SUBST(DEVMAPPER_LIBS)
 AC_SUBST(STATIC_DEVMAPPER_LIBS)
+AC_SUBST(STATIC_BLKID_DEVMAPPER_LIBS)
+dnl
+dnl
+dnl
+AC_ARG_ENABLE([tls],
+[  --disable-tls           disable use of thread local support],
+[if test "$enableval" = "no"
+then
+       try_tls=""
+       echo "Disabling thread local support"
+else
+       try_tls="yes"
+       echo "Enabling thread local support"
+fi]
+,
+try_tls="yes"
+echo "Try using thread local support by default"
+)
+if test "$try_tls" = "yes"
+then
+AX_TLS
+fi
+dnl
+dnl
+dnl
+AC_ARG_ENABLE([uuidd],
+[  --disable-uuidd         disable building the uuid daemon],
+[if test "$enableval" = "no"
+then
+       echo "Not building uuidd"
+       UUIDD_CMT="#"
+else
+       AC_DEFINE(USE_UUIDD)
+       UUIDD_CMT=""
+       echo "Building uuidd"
+fi]
+,
+AC_DEFINE(USE_UUIDD)
+UUIDD_CMT=""
+echo "Building uuidd by default"
+)
+AC_SUBST(UUIDD_CMT)
 dnl
 dnl
 dnl
@@ -545,6 +595,20 @@ AC_PATH_PROG(LDCONFIG, ldconfig, :)
 AC_CHECK_TOOL(AR, ar, ar)
 AC_CHECK_TOOL(RANLIB, ranlib, :)
 AC_CHECK_TOOL(STRIP, strip, :)
+AC_CHECK_PROG(MAKEINFO, makeinfo, makeinfo, )
+if test "_$MAKEINFO" = "_"; then
+    MAKEINFO="@echo Makeinfo is missing. Info documentation will not be built.;true"
+else
+    case "$MAKEINFO" in
+      */missing.*)
+        AC_MSG_WARN([
+*** Makeinfo is missing. Info documentation will not be built.])
+        ;;
+      *)
+        ;;
+    esac
+fi
+AC_SUBST(MAKEINFO)
 AC_PROG_INSTALL
 # See if we need a separate native compiler.
 if test $cross_compiling = no; then
@@ -553,7 +617,7 @@ if test $cross_compiling = no; then
 else
   AC_CHECK_PROGS(BUILD_CC, gcc cc)
 fi
-AC_CHECK_HEADERS(stdlib.h unistd.h stdarg.h stdint.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/prctl.h sys/queue.h sys/sockio.h sys/socket.h sys/sysmacros.h sys/time.h sys/stat.h sys/types.h sys/wait.h sys/resource.h net/if_dl.h netinet/in.h)
+AC_CHECK_HEADERS(dirent.h errno.h getopt.h malloc.h mntent.h paths.h setjmp.h signal.h stdarg.h stdint.h stdlib.h termios.h unistd.h utime.h linux/fd.h linux/major.h net/if_dl.h netinet/in.h sys/disklabel.h sys/ioctl.h sys/mkdev.h sys/mman.h sys/prctl.h sys/queue.h sys/resource.h sys/select.h sys/socket.h sys/sockio.h sys/stat.h sys/syscall.h sys/sysmacros.h sys/time.h sys/types.h sys/un.h sys/wait.h)
 AC_CHECK_HEADERS(sys/disk.h sys/mount.h,,,
 [[
 #if HAVE_SYS_QUEUE_H
@@ -599,14 +663,6 @@ AC_CHECK_DECL(lseek64,[AC_DEFINE(HAVE_LSEEK64_PROTOTYPE)],,
 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)
@@ -620,10 +676,29 @@ AC_SUBST(SIZEOF_INT)
 AC_SUBST(SIZEOF_LONG)
 AC_SUBST(SIZEOF_LONG_LONG)
 AC_C_BIGENDIAN
-/bin/sh $ac_aux_dir/parse-types.sh
+BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh
 ASM_TYPES_HEADER=./asm_types.h
 AC_SUBST_FILE(ASM_TYPES_HEADER)
 dnl
+dnl Save the configuration #defines needed for the public ext2fs.h
+dnl header file
+dnl
+echo "/* These defines are needed for the public ext2fs.h header file */" \
+     > public_config.h
+if grep HAVE_SYS_TYPES_H confdefs.h > tmp_config.$$; then
+  uniq tmp_config.$$ >> public_config.h
+else
+  echo "#undef HAVE_SYS_TYPES_H" >> public_config.h
+fi
+if grep WORDS_BIGENDIAN confdefs.h > tmp_config.$$; then
+  uniq tmp_config.$$ >> public_config.h
+else
+  echo "#undef WORDS_BIGENDIAN" >> public_config.h
+fi
+rm -f tmp_config.$$
+PUBLIC_CONFIG_HEADER=./public_config.h
+AC_SUBST_FILE(PUBLIC_CONFIG_HEADER)
+dnl
 dnl See if we have inttypes.h and if intptr_t is defined
 dnl
 AC_CHECK_HEADERS([inttypes.h])
@@ -659,7 +734,7 @@ AC_CHECK_MEMBER(struct sockaddr.sa_len,
        [#include <sys/types.h>
         #include <sys/socket.h>])
 dnl
-AC_CHECK_FUNCS(chflags getrusage llseek lseek64 open64 fstat64 getmntinfo strtoull strcasecmp srandom fchown mallinfo fdatasync strnlen strptime sysconf pathconf posix_memalign memalign valloc __secure_getenv prctl)
+AC_CHECK_FUNCS(chflags getrusage llseek lseek64 open64 fstat64 ftruncate64 getmntinfo strtoull strcasecmp srandom jrand48 fchown mallinfo fdatasync strnlen strptime strdup sysconf pathconf posix_memalign memalign valloc __secure_getenv prctl mmap utime setresuid setresgid)
 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
@@ -690,7 +765,7 @@ dnl
 dnl Check for unified diff
 dnl
 AC_MSG_CHECKING(for unified diff option)
-if diff -u $0 $0 >& /dev/null ; then
+if diff -u $0 $0 > /dev/null 2>&1 ; then
    UNI_DIFF_OPTS=-u
 else
    UNI_DIFF_OPTS=-c
@@ -765,6 +840,22 @@ else
        root_libdir='${root_prefix}/lib'
        root_sysconfdir='${root_prefix}/etc'
 fi
+if test "$bindir" != '${exec_prefix}/bin'; then
+    root_bindir=$bindir
+    echo "Setting root_bindir to $root_bindir"
+fi
+if test "$sbindir" != '${exec_prefix}/sbin'; then
+    root_sbindir=$sbindir
+    echo "Setting root_sbindir to $root_sbindir"
+fi
+if test "$libdir" != '${exec_prefix}/lib'; then
+    root_libdir=$libdir
+    echo "Setting root_libdir to $root_libdir"
+fi
+if test "$sysconfdir" != '${prefix}/etc'; then
+    root_sysconfdir=$sysconfdir
+    echo "Setting root_sysconfdir to $root_sysconfdir"
+fi
 AC_SUBST(root_prefix)
 AC_SUBST(root_bindir)
 AC_SUBST(root_sbindir)