Whamcloud - gitweb
LU-5307 build: add support for RHEL-7 .spec file
[tools/e2fsprogs.git] / configure.in
index 1099309..08c95d9 100644 (file)
@@ -1,8 +1,8 @@
 AC_INIT(version.h)
-AC_PREREQ(2.50)
+AC_PREREQ(2.54)
 AC_CONFIG_AUX_DIR(config)
 AC_CONFIG_HEADERS([lib/config.h])
-AH_BOTTOM([#include "dirpaths.h"])
+AH_BOTTOM([#include <dirpaths.h>])
 MCONFIG=./MCONFIG
 AC_SUBST_FILE(MCONFIG)
 BINARY_TYPE=bin
@@ -63,15 +63,6 @@ AC_SUBST(E2FSPROGS_MONTH)
 AC_SUBST(E2FSPROGS_DAY)
 AC_SUBST(E2FSPROGS_VERSION)
 AC_SUBST(E2FSPROGS_PKGVER)
-AC_CANONICAL_HOST
-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, 1, [Define to 1 if dlopen/libdl exists])])
-AC_SUBST(DLOPEN_LIB)
 dnl
 dnl Use diet libc
 dnl 
@@ -80,8 +71,24 @@ AC_ARG_WITH([diet-libc],
 [  --with-diet-libc        use diet libc],
 CC="diet cc -nostdinc"
 WITH_DIET_LIBC=yes
+if test -z "$LIBS"
+then
+       LIBS="-lcompat"
+else
+       LIBS="$LIBS -lcompat"
+fi
 AC_MSG_RESULT(CC=$CC))dnl
 dnl
+AC_CANONICAL_HOST
+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, 1, [Define to 1 if dlopen/libdl exists])])
+AC_SUBST(DLOPEN_LIB)
+dnl
 AC_ARG_WITH([cc],
 AC_HELP_STRING([--with-cc],[no longer supported, use CC= instead]),
 AC_MSG_ERROR([--with-cc no longer supported; use CC= instead]))
@@ -374,27 +381,18 @@ AC_MSG_RESULT([Disabling profiling libraries by default])
 AC_SUBST(PROFILE_CMT)
 AC_SUBST_FILE(MAKEFILE_PROFILE)
 dnl
-dnl handle --enable-checker
+dnl handle --enable-gcov
 dnl
-AC_ARG_ENABLE([checker],
-[  --enable-checker      build checker libraries],
-if test "$enableval" = "no"
+AC_ARG_ENABLE([gcov],
+[  --enable-gcov                 build for coverage testing using gcov],
+if test "$enableval" = "yes"
 then
-       CHECKER_CMT=#
-       MAKEFILE_CHECKER=/dev/null
-       AC_MSG_RESULT([Disabling checker libraries])
-else
-       CHECKER_CMT=
-       MAKEFILE_CHECKER=$srcdir/lib/Makefile.checker
-       AC_MSG_RESULT([Building checker libraries])
+       CFLAGS="-g -fprofile-arcs -ftest-coverage"
+       LDFLAGS="-fprofile-arcs -ftest-coverage"
+       AC_MSG_RESULT([Enabling gcov support])
 fi
-,
-CHECKER_CMT=#
-MAKEFILE_CHECKER=/dev/null
-AC_MSG_RESULT([Disabling checker libraries by default])
 )
-AC_SUBST(CHECKER_CMT)
-AC_SUBST_FILE(MAKEFILE_CHECKER)
+
 dnl
 dnl Substitute library extensions
 dnl
@@ -479,8 +477,8 @@ then
        AC_CHECK_LIB(uuid, uuid_generate,
                [LIBUUID=`$PKG_CONFIG --libs uuid`;
                 STATIC_LIBUUID=`$PKG_CONFIG --static --libs uuid`],
-               [AC_MSG_ERROR([external uuid library not found])],
-               [$LIBUUID])
+               [AC_MSG_ERROR([external uuid library not found])])
+       PROFILED_LIBUUID=$LIBUUID
        UUID_CMT=#
        AC_MSG_RESULT([Disabling private uuid library])
 else
@@ -531,9 +529,9 @@ then
        AC_CHECK_LIB(blkid, blkid_get_cache,
                [LIBBLKID=`$PKG_CONFIG --libs blkid`;
                 STATIC_LIBBLKID=`$PKG_CONFIG --static --libs blkid`],
-               [AC_MSG_ERROR([external blkid library not found])],
-               [$LIBBLKID])
+               [AC_MSG_ERROR([external blkid library not found])], -luuid)
        BLKID_CMT=#
+       PROFILED_LIBBLKID=$LIBBLKID
        AC_MSG_RESULT([Disabling private blkid library])
 else
        LIBBLKID='$(LIB)/libblkid'$LIB_EXT
@@ -565,19 +563,30 @@ AC_SUBST(BLKID_CMT)
 dnl
 dnl handle --enable-quota
 dnl
+QUOTA_MAN_COMMENT='.\"'
+QUOTA_CMT=
+AC_SUBST(QUOTA_MAN_COMMENT)
 PKG_PROG_PKG_CONFIG
 AH_TEMPLATE([CONFIG_QUOTA], [Define to 1 to enable quota support])
 AC_ARG_ENABLE([quota],
-[  --enable-quota        enable quota support],
+[  --disable-quota       disable quota support],
 if test "$enableval" = "no"
 then
+       QUOTA_CMT=#
        AC_MSG_RESULT([Disabling quota support])
+       QUOTA_CMT="#"
 else
+       QUOTA_CMT=
        AC_DEFINE(CONFIG_QUOTA, 1)
+       QUOTA_CMT=
        AC_MSG_RESULT([Enabling quota support])
+       QUOTA_MAN_COMMENT=""
+       AC_SUBST(QUOTA_MAN_COMMENT)
 fi
 ,
-AC_MSG_RESULT([Disabling quota support by default])
+AC_DEFINE(CONFIG_QUOTA, 1)
+QUOTA_CMT=
+AC_MSG_RESULT([Enabling quota support by default])
 )
 dnl
 dnl Define stuff expected for quota library
@@ -596,6 +605,22 @@ AC_SUBST(PROFILED_LIBQUOTA)
 AC_SUBST(DEPPROFILED_LIBQUOTA)
 AC_SUBST(QUOTA_CMT)
 dnl
+dnl handle --disable-backtrace
+dnl
+AH_TEMPLATE([DISABLE_BACKTRACE], [Define to 1 to disable use of backtrace])
+AC_ARG_ENABLE([backtrace],
+[  --disable-backtrace   disable use backtrace],
+if test "$enableval" = "no"
+then
+       AC_MSG_RESULT([Disabling use of backtrace])
+       AC_DEFINE(DISABLE_BACKTRACE, 1)
+else
+       AC_MSG_RESULT([Enabling use of backtrace])
+fi
+,
+AC_MSG_RESULT([Enabling use of backtrace by default])
+)
+dnl
 dnl handle --enable-debugfs
 dnl
 AC_ARG_ENABLE([debugfs],
@@ -614,6 +639,28 @@ DEBUGFS_CMT=
 )
 AC_SUBST(DEBUGFS_CMT)
 dnl
+dnl handle --enable-e2scan
+dnl
+AC_ARG_ENABLE([e2scan],
+[  --disable-e2scan      disable support of e2scan program],
+if test "$enableval" = "no"
+then
+       echo "Disabling e2scan support"
+       E2SCAN_CMT="#"
+       E2SCAN_MAN='.\"'
+else
+       E2SCAN_CMT=
+       E2SCAN_MAN=
+       echo "Enabling e2scan support"
+fi
+,
+echo "Enabling e2scan support by default"
+E2SCAN_CMT=
+E2SCAN_MAN=
+)
+AC_SUBST(E2SCAN_CMT)
+AC_SUBST(E2SCAN_MAN)
+dnl
 dnl handle --enable-imager
 dnl
 AC_ARG_ENABLE([imager],
@@ -663,8 +710,14 @@ else
        AC_MSG_RESULT([Enabling e4defrag support])
 fi
 ,
-AC_MSG_RESULT([Enabling e4defrag support by default])
-DEFRAG_CMT=
+if test -z "$WITH_DIET_LIBC"
+then
+       AC_MSG_RESULT([Enabling e4defrag support by default])
+       DEFRAG_CMT=
+else
+       AC_MSG_RESULT([Disabling e4defrag support by default])
+       DEFRAG_CMT="#"
+fi
 )
 AC_SUBST(DEFRAG_CMT)
 dnl
@@ -756,8 +809,14 @@ else
 fi]
 ,
 AC_DEFINE(USE_UUIDD, 1)
-UUIDD_CMT=""
-AC_MSG_RESULT([Building uuidd by default])
+if test -z "$UUID_CMT"
+then
+       UUIDD_CMT=""
+       AC_MSG_RESULT([Building uuidd by default])
+else
+       UUIDD_CMT="#"
+       AC_MSG_RESULT([Disabling uuidd by default])
+fi
 )
 AC_SUBST(UUIDD_CMT)
 dnl
@@ -822,6 +881,7 @@ else
   AC_CHECK_PROGS(BUILD_CC, gcc cc)
 fi
 AC_CHECK_HEADERS(m4_flatten([
+       attr/xattr.h
        dirent.h
        errno.h
        execinfo.h
@@ -842,15 +902,17 @@ AC_CHECK_HEADERS(m4_flatten([
        linux/falloc.h
        linux/fd.h
        linux/major.h
+       linux/loop.h
        net/if_dl.h
        netinet/in.h
        sys/disklabel.h
+       sys/disk.h
        sys/file.h
        sys/ioctl.h
        sys/mkdev.h
        sys/mman.h
+       sys/mount.h
        sys/prctl.h
-       sys/queue.h
        sys/resource.h
        sys/select.h
        sys/socket.h
@@ -862,13 +924,8 @@ AC_CHECK_HEADERS(m4_flatten([
        sys/types.h
        sys/un.h
        sys/wait.h
+       sys/xattr.h
 ]))
-AC_CHECK_HEADERS(sys/disk.h sys/mount.h,,,
-[[
-#if HAVE_SYS_QUEUE_H
-#include <sys/queue.h>
-#endif
-]])
 AC_CHECK_HEADERS(net/if.h,,,
 [[
 #if HAVE_SYS_TYPES_H
@@ -878,12 +935,17 @@ AC_CHECK_HEADERS(net/if.h,,,
 #include <sys/socket.h>
 #endif
 ]])
+dnl do not check sqlite3.h if e2scan is disabled
+if test x"$E2SCAN_CMT" == x; then
+AC_CHECK_HEADERS(sqlite3.h)
+fi
 AC_FUNC_VPRINTF
 dnl Check to see if dirent has member d_reclen. On cygwin those d_reclen
 dnl is not decleared.
 AC_CHECK_MEMBER(struct dirent.d_reclen,[AC_DEFINE(HAVE_RECLEN_DIRENT, 1,
                       [Define to 1 if dirent has d_reclen])],,
                [#include <dirent.h>])
+AC_CHECK_MEMBERS([struct stat.st_atim])
 dnl Check to see if ssize_t was declared
 AC_CHECK_TYPE(ssize_t,[AC_DEFINE(HAVE_TYPE_SSIZE_T, 1,
                [Define to 1 if ssize_t declared])],,
@@ -916,16 +978,23 @@ AC_CHECK_SIZEOF(short)
 AC_CHECK_SIZEOF(int)
 AC_CHECK_SIZEOF(long)
 AC_CHECK_SIZEOF(long long)
+AC_CHECK_SIZEOF(off_t)
 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
+SIZEOF_OFF_T=$ac_cv_sizeof_off_t
 AC_SUBST(SIZEOF_SHORT)
 AC_SUBST(SIZEOF_INT)
 AC_SUBST(SIZEOF_LONG)
 AC_SUBST(SIZEOF_LONG_LONG)
+AC_SUBST(SIZEOF_OFF_T)
 AC_C_BIGENDIAN
-BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh
+if test $cross_compiling = no; then
+  BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh
+else
+  CROSS_COMPILE="1" BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh
+fi
 ASM_TYPES_HEADER=./asm_types.h
 AC_SUBST_FILE(ASM_TYPES_HEADER)
 dnl
@@ -996,13 +1065,17 @@ AC_CHECK_FUNCS(m4_flatten([
        __secure_getenv
        backtrace
        blkid_probe_get_topology
+       blkid_probe_enable_partitions
        chflags
+       fadvise64
        fallocate
        fallocate64
        fchown
        fdatasync
        fstat64
        ftruncate64
+       futimes
+       getcwd
        getdtablesize
        getmntinfo
        getpwuid_r
@@ -1014,18 +1087,27 @@ AC_CHECK_FUNCS(m4_flatten([
        mallinfo
        mbstowcs
        memalign
+       mempcpy
        mmap
        msync
        nanosleep
        open64
        pathconf
        posix_fadvise
+       posix_fadvise64
        posix_memalign
        prctl
+       pread
+       pwrite
+       pread64
+       pwrite64
+       secure_getenv
        setmntent
        setresgid
        setresuid
+       snprintf
        srandom
+       stpcpy
        strcasecmp
        strdup
        strnlen
@@ -1035,6 +1117,7 @@ AC_CHECK_FUNCS(m4_flatten([
        sysconf
        usleep
        utime
+       utimes
        valloc
 ]))
 dnl
@@ -1045,6 +1128,53 @@ SOCKET_LIB=''
 AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket])
 AC_SUBST(SOCKET_LIB)
 dnl
+dnl
+dnl Check to see if static sqlite exists
+dnl
+AC_ARG_WITH(
+       [sqlite3],
+       [  --with-sqlite3=DIR      location of sqlite3 library (default /usr/lib)],
+       [SQLITE3_LIBS="-L$with_sqlite3"],,
+       [SQLITE3_LIBS="-L/usr/lib64 -L/usr/lib"])
+
+dnl do not check sqlite3 library if e2scan is disabled
+if test x"$E2SCAN_CMT" == x; then
+
+CFLAGS_OLD=$CFLAGS
+SQLITE3_LIB=''
+dnl
+dnl check static sqlite3 first
+dnl
+CFLAGS="$CFLAGS_OLD $SQLITE3_LIBS -static -pthread"
+AC_CHECK_LIB(sqlite3, sqlite3_open,
+       [
+       SQLITE3_LIB="$SQLITE3_LIBS -static -pthread -lsqlite3"
+       AC_DEFINE(HAVE_SQLITE3, 1, [Define to 1 if SQLite library is present])
+       ])
+
+if test x"$SQLITE3_LIB" == x; then
+dnl
+dnl static sqlite3 is not found, check dynamic sqlite3
+dnl
+       AC_MSG_WARN(no static sqlite3 - looking for dynamic one)
+       CFLAGS="$CFLAGS_OLD $SQLITE3_LIBS -pthread"
+       AC_CHECK_LIB(sqlite3, sqlite3_close,
+               [
+               SQLITE3_LIB="$SQLITE3_LIBS -pthread -lsqlite3"
+               AC_DEFINE(HAVE_SQLITE3, 1, [Define to 1 if SQLite library is present])
+               ])
+fi
+
+AC_SUBST(SQLITE3_LIB)
+CFLAGS=$CFLAGS_OLD
+
+if test x"$SQLITE3_LIB" == x; then
+       AC_MSG_WARN(no sqlite3 - e2scan will not support database based scanning)
+fi
+
+fi
+
+dnl
 dnl See if optreset exists
 dnl
 AC_MSG_CHECKING(for optreset)
@@ -1176,8 +1306,13 @@ dnl Allow specification of the multiarch arch
 dnl
 AC_ARG_WITH([multiarch],
 [  --with-multiarch=ARCH specify the multiarch triplet],
-libdir=$libdir/$withval
-root_libdir=$root_libdir/$withval
+if test "$withval" = "lib64"; then
+    libdir=/usr/lib64
+    root_libdir=/lib64
+else
+    libdir=$libdir/$withval
+    root_libdir=$root_libdir/$withval
+fi
 )dnl
 dnl
 dnl See if -static works.  This could fail if the linker does not
@@ -1246,16 +1381,17 @@ fi
 if test "$USE_INCLUDED_LIBINTL" = "yes" ; then
        INCLUDES=$INCLUDES' -I$(top_builddir)/intl -I$(top_srcdir)/intl'
 fi
+if test -n "$WITH_DIET_LIBC" ; then
+       INCLUDES="$INCLUDES -D_REENTRANT"
+fi
 AC_SUBST(INCLUDES)
+AM_MKINSTALLDIRS
 dnl
 dnl Build CFLAGS
 dnl
 if test $cross_compiling = no; then
-   BUILD_CFLAGS="$CFLAGS $CPPFLAGS"
+   BUILD_CFLAGS="$CFLAGS $CPPFLAGS $INCLUDES -DHAVE_CONFIG_H"
    BUILD_LDFLAGS="$LDFLAGS"
-else
-   BUILD_CFLAGS=
-   BUILD_LDFLAGS=
 fi
 AC_SUBST(BUILD_CFLAGS)
 AC_SUBST(BUILD_LDFLAGS)
@@ -1268,6 +1404,9 @@ test -d include || mkdir include
 test -d include/linux || mkdir include/linux
 test -d include/asm || mkdir include/asm
 for i in MCONFIG Makefile e2fsprogs.spec \
+       e2fsprogs-RHEL-6.spec \
+       e2fsprogs-SUSE_LINUX-11.spec \
+       e2fsprogs-RHEL-7.spec \
        util/Makefile util/subst.conf util/gen-tarball util/install-symlink \
        lib/et/Makefile lib/ss/Makefile lib/e2p/Makefile \
        lib/ext2fs/Makefile lib/ext2fs/ext2_types.h \
@@ -1276,7 +1415,7 @@ for i in MCONFIG Makefile e2fsprogs.spec \
        lib/ss/ss.pc lib/uuid/uuid.pc lib/et/com_err.pc \
        lib/e2p/e2p.pc lib/blkid/blkid.pc lib/ext2fs/ext2fs.pc \
        misc/Makefile ext2ed/Makefile e2fsck/Makefile \
-       debugfs/Makefile tests/Makefile tests/progs/Makefile \
+       debugfs/Makefile e2scan/Makefile tests/Makefile tests/progs/Makefile \
        resize/Makefile doc/Makefile intl/Makefile \
        intl/libgnuintl.h po/Makefile.in ; do
        if test -d `dirname ${srcdir}/$i` ; then