Whamcloud - gitweb
probe.c: When revalidating a filesystem in the blkid library,
[tools/e2fsprogs.git] / configure.in
index 04f9248..c462b7b 100644 (file)
@@ -10,6 +10,7 @@ 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 \" " "`
        | awk '{print $3}' | tr \" " " | awk '{print $1}'`
 DATE=`grep E2FSPROGS_DATE ${srcdir}/version.h | awk '{print $3}' \
        | tr \" " "`
+E2FSPROGS_DAY=`echo $DATE | awk -F- '{print $1}'`
 MONTH=`echo $DATE | awk -F- '{print $2}'`
 YEAR=`echo $DATE | awk -F- '{print $3}'`
 
 MONTH=`echo $DATE | awk -F- '{print $2}'`
 YEAR=`echo $DATE | awk -F- '{print $3}'`
 
@@ -42,9 +43,23 @@ 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)
 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_CANONICAL_HOST
 dnl
 AC_SUBST(E2FSPROGS_VERSION)
 AC_CANONICAL_HOST
 dnl
+dnl Should we compile EVMS plugin or not.  Complicated logic, spread
+dnl over several different command-line options...
+dnl
+EVMS_CMT=
+dnl
+dnl Use diet libc
+dnl 
+AC_ARG_WITH([diet-libc],
+[  --with-diet-libc      Use diet libc],
+CC="diet cc -nostdinc"
+EVMS_CMT="#"
+AC_MSG_RESULT(CC=$CC))dnl
+dnl
 dnl set $(CC) from --with-cc=value
 dnl
 AC_ARG_WITH([cc],
 dnl set $(CC) from --with-cc=value
 dnl
 AC_ARG_WITH([cc],
@@ -125,6 +140,84 @@ fi
 echo "Disabling compression support by default"
 )
 dnl
 echo "Disabling compression support by default"
 )
 dnl
+dnl handle --enable-htree
+dnl
+AC_ARG_ENABLE([htree],
+[  --enable-htree                enable EXPERIMENTAL htree directory support],
+if test "$enableval" = "no"
+then
+       HTREE_CMT=#
+       echo "Disabling htree directory support"
+else
+       HTREE_CMT=
+       AC_DEFINE(ENABLE_HTREE)
+       echo "Enabling htree directory support"
+fi
+,
+HTREE_CMT=
+AC_DEFINE(ENABLE_HTREE)
+echo "Enabling htree directory support by default"
+)
+AC_SUBST(HTREE_CMT)
+dnl
+dnl handle --enable-clear-htree
+dnl
+AC_ARG_ENABLE([htree-clear],
+[  --enable-htree-clear          clear htree because we don't trust e2fsck],
+if test "$enableval" = "no"
+then
+       HTREE_CLR_CMT=#
+       echo "Disabling htree clearing"
+else
+       HTREE_CLR_CMT=
+       AC_DEFINE(ENABLE_HTREE_CLEAR)
+       echo "Enabling htree clearing"
+fi
+,
+HTREE_CLR_CMT=#
+echo "Disabling htree clearing by default"
+)
+AC_SUBST(HTREE_CLR_CMT)
+dnl
+dnl handle --enable-evms
+dnl
+AC_ARG_ENABLE([evms],
+[  --disable-evms        don't build EVMS plugin],
+if test "$enableval" == "no"
+then
+       EVMS_CMT="#"
+       echo "Disabling EVMS plugin"
+fi
+)
+dnl
+dnl handle --enable-emvs-10
+dnl
+EVMS_ABI_CODE=120
+AC_ARG_ENABLE([evms-10],
+[  --enable-evms-10      use EVMS 1.0 ABI (instead of EVMS 1.2)],
+if test "$enableval" != "no"
+then
+       EVMS_ABI_CODE=100
+       echo "Enabling EVMS 1.0.0 ABI"
+fi
+)
+dnl
+dnl handle --enable-emvs-11
+dnl
+AC_ARG_ENABLE([evms-11],
+[  --enable-evms-11      use EVMS 1.1 ABI (instead of EVMS 1.2)],
+if test "$enableval" != "no"
+then
+       EVMS_ABI_CODE=110
+       echo "Enabling EVMS 1.1.0 ABI"
+fi
+)
+if test "$EVMS_ABI_CODE" = "120"
+then
+       echo "Using EVMS 1.2.0 ABI by default"
+fi
+AC_SUBST(EVMS_ABI_CODE)
+dnl
 dnl handle --enable-dll-shlibs
 dnl
 AC_ARG_ENABLE([dll-shlibs],
 dnl handle --enable-dll-shlibs
 dnl
 AC_ARG_ENABLE([dll-shlibs],
@@ -191,6 +284,12 @@ else
        BSDLIB_CMT=
        MAKEFILE_BSDLIB=$srcdir/lib/Makefile.bsd-lib
        LIB_EXT=.so
        BSDLIB_CMT=
        MAKEFILE_BSDLIB=$srcdir/lib/Makefile.bsd-lib
        LIB_EXT=.so
+       [case "$host_os" in
+       darwin*)
+               MAKEFILE_BSDLIB=$srcdir/lib/Makefile.darwin-lib
+               LIB_EXT=.dylib
+       ;;
+       esac]
        echo "Enabling BSD shared libraries"
 fi
 ,
        echo "Enabling BSD shared libraries"
 fi
 ,
@@ -252,10 +351,10 @@ AC_SUBST(LIB_EXT)
 AC_SUBST(STATIC_LIB_EXT)
 AC_SUBST(PROFILED_LIB_EXT)
 dnl
 AC_SUBST(STATIC_LIB_EXT)
 AC_SUBST(PROFILED_LIB_EXT)
 dnl
-dnl handle --enable-jfs-debug
+dnl handle --enable-jbd-debug
 dnl
 dnl
-AC_ARG_ENABLE([jfs-debug],
-[  --enable-jfs-debug            enable journal debugging],
+AC_ARG_ENABLE([jbd-debug],
+[  --enable-jbd-debug            enable journal debugging],
 if test "$enableval" = "no"
 then
        echo "Disabling journal debugging"
 if test "$enableval" = "no"
 then
        echo "Disabling journal debugging"
@@ -267,21 +366,55 @@ fi
 echo "Disabling journal debugging by default"
 )
 dnl
 echo "Disabling journal debugging by default"
 )
 dnl
+dnl handle --enable-blkid-debug
+dnl
+AC_ARG_ENABLE([blkid-debug],
+[  --enable-blkid-debug    enable blkid debugging],
+if test "$enableval" = "no"
+then
+       echo "Disabling blkid debugging"
+else
+       AC_DEFINE(CONFIG_BLKID_DEBUG)
+       echo "Enabling blkid debugging"
+fi
+,
+echo "Disabling blkid debugging by default"
+)
+dnl
+dnl handle --enable-testio-debug
+dnl
+AC_ARG_ENABLE([testio-debug],
+[  --enable-testio-debug   enable the use of the test I/O manager for debugging],
+if test "$enableval" = "no"
+then
+       echo "Disabling testio debugging"
+else
+       AC_DEFINE(CONFIG_TESTIO_DEBUG)
+       echo "Enabling testio debugging"
+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
 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
        echo "Disabling swapfs support"
 else
+       SWAPFS_CMT=
        AC_DEFINE(ENABLE_SWAPFS)
        echo "Enabling swapfs support"
 fi
 ,
        AC_DEFINE(ENABLE_SWAPFS)
        echo "Enabling swapfs support"
 fi
 ,
+SWAPFS_CMT=
 echo "Enabling swapfs support by default"
 AC_DEFINE(ENABLE_SWAPFS)
 )
 echo "Enabling swapfs support by default"
 AC_DEFINE(ENABLE_SWAPFS)
 )
+AC_SUBST(SWAPFS_CMT)
 dnl
 dnl handle --enable-debugfs
 dnl
 dnl
 dnl handle --enable-debugfs
 dnl
@@ -369,7 +502,7 @@ else
 fi]
 ,
 [case "$host_os" in
 fi]
 ,
 [case "$host_os" in
-  gnu*)
+  gnu* | k*bsd*-gnu)
     FSCK_PROG='' FSCK_MAN=''
     echo "Not building fsck wrapper by default"
     ;;
     FSCK_PROG='' FSCK_MAN=''
     echo "Not building fsck wrapper by default"
     ;;
@@ -409,7 +542,6 @@ AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
 AC_SUBST(PACKAGE)
 AC_SUBST(VERSION)
 
 AC_SUBST(PACKAGE)
 AC_SUBST(VERSION)
 
-ALL_LINGUAS="it nyc tr"
 AM_GNU_GETTEXT
 dnl
 dnl End of configuration options
 AM_GNU_GETTEXT
 dnl
 dnl End of configuration options
@@ -437,24 +569,30 @@ if test $cross_compiling = no; then
 else
   AC_CHECK_PROGS(BUILD_CC, gcc cc)
 fi
 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/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)
+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/socket.h sys/sysmacros.h sys/time.h sys/stat.h sys/types.h sys/wait.h sys/resource.h net/if.h netinet/in.h)
 AC_FUNC_VPRINTF
 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,
+dnl Check to see if dirent has member d_reclen. On cygwin those d_reclen
+dnl is not decleared.
+AC_MSG_CHECKING(whether d_reclen declared in dirent)
+AC_CACHE_VAL(e2fsprogs_cv_have_d_reclen_dirent,
        AC_TRY_COMPILE(
        AC_TRY_COMPILE(
-[#include <sys/types.h>
-#include <dirent.h>],
-               [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)
+[#include <dirent.h>], [struct dirent de; de.d_reclen = 0; ],
+       [e2fsprogs_cv_have_d_reclen_dirent=yes],
+       [e2fsprogs_cv_have_d_reclen_dirent=no]))
+AC_MSG_RESULT($e2fsprogs_cv_have_d_reclen_dirent)
+if test "$e2fsprogs_cv_have_d_reclen_dirent" = yes; then
+   AC_DEFINE(HAVE_RECLEN_DIRENT)
+fi
+dnl Check to see if ssize_t was decleared
+AC_MSG_CHECKING(whether ssize_t declared)
+AC_CACHE_VAL(e2fsprogs_cv_have_ssize_t,
+       AC_TRY_COMPILE(
+[#include <sys/types.h>], [ssize_t a = 0; ],
+       [e2fsprogs_cv_have_ssize_t=yes],
+       [e2fsprogs_cv_have_ssize_t=no]))
+AC_MSG_RESULT($e2fsprogs_cv_have_ssize_t)
+if test "$e2fsprogs_cv_have_ssize_t" = yes; then
+   AC_DEFINE(HAVE_TYPE_SSIZE_T)
 fi
 dnl
 dnl Check to see if llseek() is declared in unistd.h.  On some libc's 
 fi
 dnl
 dnl Check to see if llseek() is declared in unistd.h.  On some libc's 
@@ -541,7 +679,7 @@ if test "$e2fsprogs_cv_struct_st_flags" = yes; then
          AC_DEFINE(HAVE_STAT_FLAGS)
   fi
 fi
          AC_DEFINE(HAVE_STAT_FLAGS)
   fi
 fi
-AC_CHECK_FUNCS(chflags getrusage llseek lseek64 open64 getmntinfo strcasecmp srandom fchown mallinfo fdatasync strnlen sysconf)
+AC_CHECK_FUNCS(chflags getrusage llseek lseek64 open64 getmntinfo strtoull strcasecmp srandom fchown mallinfo fdatasync strnlen strptime sysconf pathconf posix_memalign memalign valloc)
 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
 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
@@ -550,6 +688,14 @@ SOCKET_LIB=''
 AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket])
 AC_SUBST(SOCKET_LIB)
 dnl
 AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket])
 AC_SUBST(SOCKET_LIB)
 dnl
+dnl Check to see if libdl exists for the sake of dlopen
+dnl
+DLOPEN_LIB=''
+AC_CHECK_LIB(dl, dlopen, 
+[DLOPEN_LIB=-ldl
+AC_DEFINE(HAVE_DLOPEN)])
+AC_SUBST(DLOPEN_LIB)
+dnl
 dnl See if optreset exists
 dnl
 AC_MSG_CHECKING(for optreset)
 dnl See if optreset exists
 dnl
 AC_MSG_CHECKING(for optreset)
@@ -569,10 +715,32 @@ linux*)
        ;;
 esac
 dnl
        ;;
 esac
 dnl
+dnl OS-specific uncomment control
+dnl
+LINUX_CMT="#"
+CYGWIN_CMT="#"
+UNIX_CMT=
+case "$host_os" in
+linux*)
+       LINUX_CMT=
+       ;;
+cygwin)
+       CYGWIN_CMT=
+       UNIX_CMT="#"
+       EVMS_CMT="#"
+       ;;
+*)
+       EVMS_CMT="#"
+esac
+AC_SUBST(LINUX_CMT)
+AC_SUBST(CYGWIN_CMT)
+AC_SUBST(UNIX_CMT)
+AC_SUBST([EVMS_CMT])
+dnl
 dnl Linux and Hurd places root files in the / by default
 dnl
 case "$host_os" in
 dnl Linux and Hurd places root files in the / by default
 dnl
 case "$host_os" in
-linux* | gnu*)
+linux* | gnu* | k*bsd*-gnu)
        if test "$prefix" = NONE -a "$root_prefix" = NONE ; then
                root_prefix="";
                echo "On $host_os systems, root_prefix defaults to ''"
        if test "$prefix" = NONE -a "$root_prefix" = NONE ; then
                root_prefix="";
                echo "On $host_os systems, root_prefix defaults to ''"
@@ -583,7 +751,7 @@ dnl
 dnl On Linux/hurd, force the prefix to be /usr
 dnl
 case "$host_os" in
 dnl On Linux/hurd, force the prefix to be /usr
 dnl
 case "$host_os" in
-linux* | gnu*)
+linux* | gnu* | k*bsd*-gnu)
        if test "$prefix" = NONE ; then
                prefix="/usr";
                echo "On $host_os systems, prefix defaults to /usr"
        if test "$prefix" = NONE ; then
                prefix="/usr";
                echo "On $host_os systems, prefix defaults to /usr"
@@ -643,6 +811,17 @@ if test $ac_cv_e2fsprogs_use_static = yes; then
 fi
 AC_SUBST(LDFLAG_STATIC)
 dnl
 fi
 AC_SUBST(LDFLAG_STATIC)
 dnl
+dnl Work around mysterious Darwin / GNU libintl problem
+dnl (__asm__ redirection doesn't work for some mysterious reason.  Looks like
+dnl Apple hacked gcc somehow?)
+dnl
+case "$host_os" in
+darwin*)
+       echo "Using Apple Darwin / GNU libintl workaround"
+       AC_DEFINE(_INTL_REDIRECT_MACROS)
+       ;;
+esac
+dnl
 dnl Make the ss and et directories work correctly.
 dnl
 SS_DIR=`cd ${srcdir}/lib/ss; pwd`
 dnl Make the ss and et directories work correctly.
 dnl
 SS_DIR=`cd ${srcdir}/lib/ss; pwd`
@@ -659,6 +838,14 @@ else
 fi
 AC_SUBST(DO_TEST_SUITE)
 dnl
 fi
 AC_SUBST(DO_TEST_SUITE)
 dnl
+dnl Only include the intl include files if we're building with them
+dnl 
+INTL_FLAGS=
+if test "$USE_INCLUDED_LIBINTL" = "yes" ; then
+       INTL_FLAGS='-I$(top_builddir)/intl -I$(top_srcdir)/intl'
+fi
+AC_SUBST(INTL_FLAGS)
+dnl
 dnl Make our output files, being sure that we create the some miscellaneous 
 dnl directories
 dnl
 dnl Make our output files, being sure that we create the some miscellaneous 
 dnl directories
 dnl
@@ -666,12 +853,16 @@ test -d lib || mkdir lib
 test -d include || mkdir include
 test -d include/linux || mkdir include/linux
 test -d include/asm || mkdir include/asm
 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 ext2ed/Makefile e2fsck/Makefile debugfs/Makefile \
-       tests/Makefile tests/progs/Makefile $rmakefile doc/Makefile 
-       intl/Makefile po/Makefile.in)
+for i in MCONFIG Makefile e2fsprogs.spec \
+       util/Makefile util/subst.conf util/gen-tarball \
+       lib/et/Makefile lib/ss/Makefile lib/ext2fs/Makefile lib/e2p/Makefile \
+       lib/uuid/Makefile lib/uuid/uuid_types.h \
+       lib/blkid/Makefile lib/blkid/blkid_types.h \
+       lib/evms/Makefile misc/Makefile ext2ed/Makefile e2fsck/Makefile \
+       debugfs/Makefile tests/Makefile tests/progs/Makefile \
+       resize/Makefile doc/Makefile intl/Makefile po/Makefile.in ; do
+       if test -d `dirname ${srcdir}/$i` ; then
+               outlist="$outlist $i"
+       fi
+done
+AC_OUTPUT($outlist)