X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=configure.in;h=990574213d79fca624ab34245c284d2f3c2c0039;hb=6cadf74f86353808a059b7db702621a9b3e4814a;hp=c1915962d5fde5fdb4193afd5d064134df46ece9;hpb=21c84b71e205b5ab13f14343da5645dcc985856d;p=tools%2Fe2fsprogs.git diff --git a/configure.in b/configure.in index c191596..9905742 100644 --- a/configure.in +++ b/configure.in @@ -1,4 +1,8 @@ AC_INIT(version.h) +AC_PREREQ(2.50) +AC_CONFIG_AUX_DIR(config) +AC_CONFIG_HEADERS([lib/config.h]) +AH_BOTTOM([#include "dirpaths.h"]) MCONFIG=./MCONFIG AC_SUBST_FILE(MCONFIG) BINARY_TYPE=bin @@ -9,117 +13,318 @@ 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 \" " "` +E2FSPROGS_DAY=`echo $DATE | awk -F- '{print $1}'` MONTH=`echo $DATE | awk -F- '{print $2}'` YEAR=`echo $DATE | awk -F- '{print $3}'` -if expr $YEAR ">" 90 >/dev/null ; then +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??" ;; +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" ;; +*) AC_MSG_WARN([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}" +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-*) + E2FSPROGS_PKGVER="$base_ver~WIP-$E2FSPROGS_YEAR-$MONTH_NUM-$E2FSPROGS_DAY" + ;; +*) + E2FSPROGS_PKGVER="$base_ver" + ;; +esac + +unset DATE MONTH YEAR base_ver pre_vers date_spec +AC_MSG_RESULT([Generating configuration file for e2fsprogs version $E2FSPROGS_VERSION]) +AC_MSG_RESULT([Release date is ${E2FSPROGS_MONTH}, ${E2FSPROGS_YEAR}]) AC_SUBST(E2FSPROGS_YEAR) AC_SUBST(E2FSPROGS_MONTH) +AC_SUBST(E2FSPROGS_DAY) AC_SUBST(E2FSPROGS_VERSION) -AC_REQUIRE([AC_CANONICAL_HOST]) -dnl -dnl set $(CC) from --with-cc=value +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 +WITH_DIET_LIBC= +AC_ARG_WITH([diet-libc], +[ --with-diet-libc use diet libc], +CC="diet cc -nostdinc" +WITH_DIET_LIBC=yes +AC_MSG_RESULT(CC=$CC))dnl 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 +AC_HELP_STRING([--with-cc],[no longer supported, use CC= instead]), +AC_MSG_ERROR([--with-cc no longer supported; use CC= instead])) 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) +AC_HELP_STRING([--with-ccopts],[no longer supported, use CFLAGS= instead]), +AC_MSG_ERROR([--with-ccopts no longer supported; use CFLAGS= instead])) +dnl +AC_ARG_WITH([ldopts], +AC_HELP_STRING([--with-ldopts],[no longer supported, use LDFLAGS= instead]), +AC_MSG_ERROR([--with-ldopts no longer supported; use LDFLAGS= instead])) +dnl +AC_PROG_CC +if test "$GCC" = yes; then + RDYNAMIC="-rdynamic" + AC_SUBST(RDYNAMIC) +fi +AC_PROG_CPP +dnl +dnl Alpha computers use fast and imprecise floating point code that may +dnl miss exceptions by default. Force sane options if we're using GCC. +AC_MSG_CHECKING(for additional special compiler flags) +if test "$GCC" = yes +then + case "$host_cpu" in + alpha) addcflags="-mieee" ;; + esac +fi +if test "x$addcflags" != x +then + AC_MSG_RESULT($addcflags) + CFLAGS="$addcflags $CFLAGS" +else + AC_MSG_RESULT([[(none)]]) +fi 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 +PROFILED_LIB_EXT=.a dnl -dnl set $(LDFLAGS) from --with-ldopts=value +dnl Allow separate `root_prefix' to be specified 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) +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-maintainer-mode +dnl +AC_ARG_ENABLE([maintainer-mode], +[ --enable-maintainer-mode enable makefile rules useful for maintainers], +if test "$enableval" = "no" +then + MAINTAINER_CMT=# + AC_MSG_RESULT([Disabling maintainer mode]) +else + MAINTAINER_CMT= + AC_MSG_RESULT([Enabling maintainer mode]) +fi +, +MAINTAINER_CMT=# +AC_MSG_RESULT([Disabling maintainer mode by default]) +) +AC_SUBST(MAINTAINER_CMT) +dnl +dnl handle --enable-symlink-install +dnl +AC_ARG_ENABLE([symlink-install], +[ --enable-symlink-install use symlinks when installing instead of hard links], +if test "$enableval" = "no" +then + LINK_INSTALL_FLAGS=-f + AC_MSG_RESULT([Disabling symlinks for install]) +else + LINK_INSTALL_FLAGS=-sf + AC_MSG_RESULT([Enabling symlinks for install]) +fi +, +LINK_INSTALL_FLAGS=-f +AC_MSG_RESULT([Disabling symlinks for install by default]) +) +AC_SUBST(LINK_INSTALL_FLAGS) dnl -dnl Allow separate `usr_prefix' to be specified +dnl handle --enable-relative-symlinks dnl -AC_ARG_WITH([usr-prefix], -[ --with-usr-prefx=PREFIX specify a prefix corresponding to /usr (default ${prefix})], -usr_prefix=$withval, -usr_prefix=NONE)dnl +AC_ARG_ENABLE([symlink-relative-symlinks], +[ --enable-relative-symlinks use relative symlinks when installing], +if test "$enableval" = "no" +then + SYMLINK_RELATIVE= + AC_MSG_RESULT([Disabling relative symlinks for install]) +else + SYMLINK_RELATIVE=--relative + AC_MSG_RESULT([Enabling symlinks for install]) +fi +, + SYMLINK_RELATIVE= +AC_MSG_RESULT([Disabling relative symlinks for install by default]) +) +AC_SUBST(SYMLINK_RELATIVE) +dnl +dnl handle --enable-symlink-build +dnl +AC_ARG_ENABLE([symlink-build], +[ --enable-symlink-build use symlinks while building instead of hard links], +if test "$enableval" = "no" +then + LINK_BUILD_FLAGS= + AC_MSG_RESULT([Disabling symlinks for build]) +else + LINK_BUILD_FLAGS=-s + AC_MSG_RESULT([Enabling symlinks for build]) +fi +, +LINK_BUILD_FLAGS= +AC_MSG_RESULT([Disabling symlinks for build by default]) +) +AC_SUBST(LINK_BUILD_FLAGS) dnl -dnl handle --enable-dll-shlibs +dnl handle --enable-verbose-makecmds dnl -AC_ARG_ENABLE([dll-shlibs], -[ --enable-dll-shlibs select DLL libraries], +AC_ARG_ENABLE([verbose-makecmds], +[ --enable-verbose-makecmds enable verbose make command output], if test "$enableval" = "no" then - DLL_CMT=# - MAKEFILE_DLL=/dev/null - echo "Disabling DLL shared libraries" + AC_MSG_RESULT([Disabling verbose make commands]) + E=@echo + Q=@ else - DLL_CMT= - MAKEFILE_DLL=$srcdir/lib/Makefile.dll-lib - BINARY_TYPE=dllbin - LIB_EXT=.sa - echo "Enabling DLL shared libraries" + AC_MSG_RESULT([Enabling verbose make commands]) + E=@\\# + Q= fi , -MAKEFILE_DLL=/dev/null -DLL_CMT=# -echo "Disabling DLL shared libraries by default" +AC_MSG_RESULT([Disabling verbose make commands]) +E=@echo +Q=@ ) -AC_SUBST(DLL_CMT) -AC_SUBST_FILE(MAKEFILE_DLL) +AC_SUBST(E) +AC_SUBST(Q) +dnl +dnl handle --enable-lfsck +dnl +AC_ARG_ENABLE([lfsck], +[ --disable-lfsck disable EXPERIMENTAL Lustre lfsck support], +if test "$enableval" = "no" +then + LFSCK_CMT=# + LFSCK_MAN=.\" + ENABLE_LFSCK="--disable-lfsck" + echo "Disabling Lustre lfsck support" +else + LFSCK_CMT= + LFSCK_MAN= + ENABLE_LFSCK="--enable-lfsck" + AC_DEFINE(HAVE_LFSCK, 1, [Define to 1 if Lustre lfsck is enabled]) + echo "Enabling Lustre lfsck support" +fi +, +LFSCK_CMT= +LFSCK_MAN= +ENABLE_LFSCK= +AC_DEFINE(HAVE_LFSCK, 1, [Define to 1 if Lustre lfsck is enabled]) +echo "Enabling Lustre lfsck support by default" +) +AC_SUBST(LFSCK_CMT) +AC_SUBST(LFSCK_MAN) +AC_SUBST(ENABLE_LFSCK) +dnl +dnl set lustre include path and build lfsck +dnl +AC_ARG_WITH([lustre], +[ --with-lustre=LUSTRE path to Lustre sources for lfsck (default=/usr for RPM)], +AC_MSG_RESULT(LUSTRE is in $withval) + LUSTRE="$withval" + WITH_LUSTRE="--with-lustre=$withval", + LUSTRE="/usr" + WITH_LUSTRE= +)dnl +AC_SUBST(LUSTRE) +AC_SUBST(WITH_LUSTRE) +dnl +AS_IF([test "x$enable_lfsck" != "xno"], +[ + AC_CHECK_FILE($LUSTRE/include/lustre/liblustreapi.h,, + AC_CHECK_FILE($LUSTRE/lustre/include/lustre/liblustreapi.h,, + AC_MSG_ERROR([No lustre includes found.])) + ) +dnl # Disable for old autoconf that doesn't check header usability. +dnl # Supposed to check if lustre_idl.h is buildable from userspace. +dnl AC_CHECK_HEADER($LUSTRE/lustre/include/lustre/lustre_idl.h, +dnl AC_DEFINE(HAVE_LUSTRE_LUSTRE_IDL_H), +dnl AC_CHECK_HEADER($LUSTRE/include/lustre/lustre_idl.h, +dnl AC_DEFINE(HAVE_LUSTRE_LUSTRE_IDL_H),) +dnl ) +]) +dnl +dnl handle --enable-compression +dnl +AC_ARG_ENABLE([compression], +[ --enable-compression enable EXPERIMENTAL compression support], +if test "$enableval" = "no" +then + AC_MSG_RESULT([Disabling compression support]) +else + AC_DEFINE(ENABLE_COMPRESSION, 1, + [Define to 1 if ext2 compression enabled]) + AC_MSG_RESULT([Enabling compression support]) + AC_MSG_WARN([Compression support is experimental]) +fi +, +AC_MSG_RESULT([Disabling compression support by default]) +) +dnl +dnl handle --enable-htree +dnl +AH_TEMPLATE([ENABLE_HTREE], [Define to 1 if ext3/4 htree support enabled]) +AC_ARG_ENABLE([htree], +[ --enable-htree enable EXPERIMENTAL htree directory support], +if test "$enableval" = "no" +then + HTREE_CMT=# + AC_MSG_RESULT([Disabling htree directory support]) +else + HTREE_CMT= + AC_DEFINE(ENABLE_HTREE, 1) + AC_MSG_RESULT([Enabling htree directory support]) +fi +, +HTREE_CMT= +AC_DEFINE(ENABLE_HTREE, 1) +AC_MSG_RESULT([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 +LDFLAG_DYNAMIC= +PRIVATE_LIBS_CMT= dnl dnl handle --enable-elf-shlibs dnl @@ -129,18 +334,26 @@ if test "$enableval" = "no" then ELF_CMT=# MAKEFILE_ELF=/dev/null - echo "Disabling ELF shared libraries" + AC_MSG_RESULT([Disabling ELF shared libraries]) else + E2_PKG_CONFIG_STATIC= ELF_CMT= MAKEFILE_ELF=$srcdir/lib/Makefile.elf-lib + [case "$host_os" in + solaris2.*) + MAKEFILE_ELF=$srcdir/lib/Makefile.solaris-lib + ;; + esac] BINARY_TYPE=elfbin LIB_EXT=.so - echo "Enabling ELF shared libraries" + PRIVATE_LIBS_CMT=# + LDFLAG_DYNAMIC=['-Wl,-rpath-link,$(top_builddir)/lib'] + AC_MSG_RESULT([Enabling ELF shared libraries]) fi , MAKEFILE_ELF=/dev/null ELF_CMT=# -echo "Disabling ELF shared libraries by default" +AC_MSG_RESULT([Disabling ELF shared libraries by default]) ) AC_SUBST(ELF_CMT) AC_SUBST_FILE(MAKEFILE_ELF) @@ -153,17 +366,24 @@ if test "$enableval" = "no" then BSDLIB_CMT=# MAKEFILE_BSDLIB=/dev/null - echo "Disabling BSD shared libraries" + AC_MSG_RESULT([Disabling BSD shared libraries]) else + E2_PKG_CONFIG_STATIC= BSDLIB_CMT= MAKEFILE_BSDLIB=$srcdir/lib/Makefile.bsd-lib LIB_EXT=.so - echo "Enabling BSD shared libraries" + [case "$host_os" in + darwin*) + MAKEFILE_BSDLIB=$srcdir/lib/Makefile.darwin-lib + LIB_EXT=.dylib + ;; + esac] + AC_MSG_RESULT([Enabling BSD shared libraries]) fi , MAKEFILE_BSDLIB=/dev/null BSDLIB_CMT=# -echo "Disabling BSD shared libraries by default" +AC_MSG_RESULT([Disabling BSD shared libraries by default]) ) AC_SUBST(BSDLIB_CMT) AC_SUBST_FILE(MAKEFILE_BSDLIB) @@ -176,17 +396,17 @@ if test "$enableval" = "no" then PROFILE_CMT=# MAKEFILE_PROFILE=/dev/null - echo "Disabling profiling libraries" + AC_MSG_RESULT([Disabling profiling libraries]) else PROFILE_CMT= MAKEFILE_PROFILE=$srcdir/lib/Makefile.profile PROFILED_LIB_EXT=_p.a - echo "Building profiling libraries" + AC_MSG_RESULT([Building profiling libraries]) fi , PROFILE_CMT=# MAKEFILE_PROFILE=/dev/null -echo "Disabling profiling libraries by default" +AC_MSG_RESULT([Disabling profiling libraries by default]) ) AC_SUBST(PROFILE_CMT) AC_SUBST_FILE(MAKEFILE_PROFILE) @@ -199,16 +419,16 @@ if test "$enableval" = "no" then CHECKER_CMT=# MAKEFILE_CHECKER=/dev/null - echo "Disabling checker libraries" + AC_MSG_RESULT([Disabling checker libraries]) else CHECKER_CMT= MAKEFILE_CHECKER=$srcdir/lib/Makefile.checker - echo "Building checker libraries" + AC_MSG_RESULT([Building checker libraries]) fi , CHECKER_CMT=# MAKEFILE_CHECKER=/dev/null -echo "Disabling checker libraries by default" +AC_MSG_RESULT([Disabling checker libraries by default]) ) AC_SUBST(CHECKER_CMT) AC_SUBST_FILE(MAKEFILE_CHECKER) @@ -218,39 +438,272 @@ dnl AC_SUBST(LIB_EXT) AC_SUBST(STATIC_LIB_EXT) AC_SUBST(PROFILED_LIB_EXT) +AC_SUBST(LDFLAG_DYNAMIC) +AC_SUBST(PRIVATE_LIBS_CMT) dnl -dnl handle --enable-gcc-wall +dnl handle --enable-jbd-debug dnl -AC_ARG_ENABLE([gcc-wall], -[ --enable-gcc-wall enable GCC anal warnings], +AC_ARG_ENABLE([jbd-debug], +[ --enable-jbd-debug enable journal debugging], if test "$enableval" = "no" then - W=# - echo "Disabling GCC warnings" + AC_MSG_RESULT([Disabling journal debugging]) else - W= - echo "Enabling GCC warnings" + AC_DEFINE(CONFIG_JBD_DEBUG, 1, + [Define to 1 if debugging ext3/4 journal code]) + AC_MSG_RESULT([Enabling journal debugging]) fi , -W=# -echo "Disabling GCC warnings by default" +AC_MSG_RESULT([Disabling journal debugging by default]) ) -AC_SUBST(W) -AC_ARG_ENABLE([dynamic-e2fsck], -[ --enable-dynamic-e2fsck build e2fsck dynamically], +dnl +dnl handle --enable-blkid-debug +dnl +AC_ARG_ENABLE([blkid-debug], +[ --enable-blkid-debug enable blkid debugging], if test "$enableval" = "no" then - E2FSCK_TYPE=static - echo "Building e2fsck statically" + AC_MSG_RESULT([Disabling blkid debugging]) else - E2FSCK_TYPE=shared - echo "Building e2fsck dynamically" + AC_DEFINE(CONFIG_BLKID_DEBUG, 1, + [Define to 1 if debugging the blkid library]) + AC_MSG_RESULT([Enabling blkid debugging]) fi , -E2FSCK_TYPE=static -echo "Building e2fsck statically by default" +AC_MSG_RESULT([Disabling blkid debugging by default]) ) -AC_SUBST(E2FSCK_TYPE) +dnl +dnl handle --enable-testio-debug +dnl +AC_ARG_ENABLE([testio-debug], +[ --disable-testio-debug disable the use of the test I/O manager for debugging], +AH_TEMPLATE([CONFIG_TESTIO_DEBUG], + [Define to 1 if the testio I/O manager should be enabled]) +if test "$enableval" = "no" +then + AC_MSG_RESULT([Disabling testio debugging]) + TEST_IO_CMT="#" +else + TEST_IO_CMT= + AC_DEFINE(CONFIG_TESTIO_DEBUG, 1) + AC_MSG_RESULT([Enabling testio debugging]) +fi +, +AC_MSG_RESULT([Enabling testio debugging by default]) +AC_DEFINE(CONFIG_TESTIO_DEBUG, 1) +TEST_IO_CMT= +) +AC_SUBST(TEST_IO_CMT) +dnl +dnl handle --disable-libuuid +dnl +PKG_PROG_PKG_CONFIG +LIBUUID= +DEPLIBUUID= +STATIC_LIBUUID= +DEPSTATIC_LIBUUID= +PROFILED_LIBUUID= +DEPPROFILED_LIBUUID= +UUID_CMT= +AC_ARG_ENABLE([libuuid], +[ --disable-libuuid do not build private uuid library], +if test "$enableval" = "no" +then + if test -z "$PKG_CONFIG"; then + AC_MSG_ERROR([pkg-config not installed; please install it.]) + fi + + 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]) + UUID_CMT=# + AC_MSG_RESULT([Disabling private uuid library]) +else + LIBUUID='$(LIB)/libuuid'$LIB_EXT + DEPLIBUUID=$LIBUUID + STATIC_LIBUUID='$(LIB)/libuuid'$STATIC_LIB_EXT + DEPSTATIC_LIBUUID=$STATIC_LIBUUID + PROFILED_LIBUUID='$(LIB)/libuuid'$PROFILED_LIB_EXT + DEPPROFILED_LIBUUID=$PROFILED_LIBUUID + AC_MSG_RESULT([Enabling private uuid library]) +fi +, +LIBUUID='$(LIB)/libuuid'$LIB_EXT +DEPLIBUUID=$LIBUUID +STATIC_LIBUUID='$(LIB)/libuuid'$STATIC_LIB_EXT +DEPSTATIC_LIBUUID=$STATIC_LIBUUID +PROFILED_LIBUUID='$(LIB)/libuuid'$PROFILED_LIB_EXT +DEPPROFILED_LIBUUID=$PROFILED_LIBUUID +AC_MSG_RESULT([Enabling private uuid library by default]) +) +AC_SUBST(LIBUUID) +AC_SUBST(DEPLIBUUID) +AC_SUBST(STATIC_LIBUUID) +AC_SUBST(DEPSTATIC_LIBUUID) +AC_SUBST(PROFILED_LIBUUID) +AC_SUBST(DEPPROFILED_LIBUUID) +AC_SUBST(UUID_CMT) +dnl +dnl handle --disable-libblkid +dnl +PKG_PROG_PKG_CONFIG +LIBBLKID= +DEPLIBBLKID= +STATIC_LIBBLKID= +DEPSTATIC_LIBBLKID= +PROFILED_LIBBLKID= +DEPPROFILED_LIBBLKID= +BLKID_CMT= +AH_TEMPLATE([CONFIG_BUILD_FINDFS], [Define to 1 to compile findfs]) +AC_ARG_ENABLE([libblkid], +[ --disable-libblkid do not build private blkid library], +if test "$enableval" = "no" +then + if test -z "$PKG_CONFIG"; then + AC_MSG_ERROR([pkg-config not installed; please install it.]) + fi + + 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]) + BLKID_CMT=# + AC_MSG_RESULT([Disabling private blkid library]) +else + LIBBLKID='$(LIB)/libblkid'$LIB_EXT + DEPLIBBLKID=$LIBBLKID + STATIC_LIBBLKID='$(LIB)/libblkid'$STATIC_LIB_EXT + DEPSTATIC_LIBBLKID=$STATIC_LIBBLKID + PROFILED_LIBBLKID='$(LIB)/libblkid'$PROFILED_LIB_EXT + DEPPROFILED_LIBBLKID=$PROFILED_LIBBLKID + AC_DEFINE(CONFIG_BUILD_FINDFS, 1) + AC_MSG_RESULT([Enabling private blkid library]) +fi +, +LIBBLKID='$(LIB)/libblkid'$LIB_EXT +DEPLIBBLKID=$LIBBLKID +STATIC_LIBBLKID='$(LIB)/libblkid'$STATIC_LIB_EXT +DEPSTATIC_LIBBLKID=$STATIC_LIBBLKID +PROFILED_LIBBLKID='$(LIB)/libblkid'$PROFILED_LIB_EXT +DEPPROFILED_LIBBLKID=$PROFILED_LIBBLKID +AC_DEFINE(CONFIG_BUILD_FINDFS, 1) +AC_MSG_RESULT([Enabling private blkid library by default]) +) +AC_SUBST(LIBBLKID) +AC_SUBST(DEPLIBBLKID) +AC_SUBST(STATIC_LIBBLKID) +AC_SUBST(DEPSTATIC_LIBBLKID) +AC_SUBST(PROFILED_LIBBLKID) +AC_SUBST(DEPPROFILED_LIBBLKID) +AC_SUBST(BLKID_CMT) +dnl +dnl handle --enable-quota +dnl +PKG_PROG_PKG_CONFIG +AH_TEMPLATE([CONFIG_QUOTA], [Define to 1 to enable quota support]) +AC_ARG_ENABLE([quota], +[ --enable-libquota enable quota support], +if test "$enableval" = "no" +then + AC_MSG_RESULT([Disabling quota support]) +else + AC_DEFINE(CONFIG_QUOTA, 1) + AC_MSG_RESULT([Enabling quota support]) +fi +, +AC_MSG_RESULT([Disabling quota support by default]) +) +dnl +dnl Define stuff expected for quota library +dnl +LIBQUOTA='$(LIB)/libquota'$LIB_EXT +DEPLIBQUOTA=$LIBQUOTA +STATIC_LIBQUOTA='$(LIB)/libquota'$STATIC_LIB_EXT +DEPSTATIC_LIBQUOTA=$STATIC_LIBQUOTA +PROFILED_LIBQUOTA='$(LIB)/libquota'$PROFILED_LIB_EXT +DEPPROFILED_LIBQUOTA=$PROFILED_LIBQUOTA +AC_SUBST(LIBQUOTA) +AC_SUBST(DEPLIBQUOTA) +AC_SUBST(STATIC_LIBQUOTA) +AC_SUBST(DEPSTATIC_LIBQUOTA) +AC_SUBST(PROFILED_LIBQUOTA) +AC_SUBST(DEPPROFILED_LIBQUOTA) +AC_SUBST(QUOTA_CMT) +dnl +dnl handle --enable-debugfs +dnl +AC_ARG_ENABLE([debugfs], +[ --disable-debugfs disable support of debugfs program], +if test "$enableval" = "no" +then + AC_MSG_RESULT([Disabling debugfs support]) + DEBUGFS_CMT="#" +else + DEBUGFS_CMT= + AC_MSG_RESULT([Enabling debugfs support]) +fi +, +AC_MSG_RESULT([Enabling debugfs support by default]) +DEBUGFS_CMT= +) +AC_SUBST(DEBUGFS_CMT) +dnl +dnl handle --enable-imager +dnl +AC_ARG_ENABLE([imager], +[ --disable-imager disable support of e2image program], +if test "$enableval" = "no" +then + AC_MSG_RESULT([Disabling e2image support]) + IMAGER_CMT="#" +else + IMAGER_CMT= + AC_MSG_RESULT([Enabling e2image support]) +fi +, +AC_MSG_RESULT([Enabling e2image support by default]) +IMAGER_CMT= +) +AC_SUBST(IMAGER_CMT) +dnl +dnl handle --enable-resizer +dnl +AC_ARG_ENABLE([resizer], +[ --disable-resizer disable support of e2resize program], +if test "$enableval" = "no" +then + AC_MSG_RESULT([Disabling e2resize support]) + RESIZER_CMT="#" +else + RESIZER_CMT= + AC_MSG_RESULT([Enabling e2resize support]) +fi +, +AC_MSG_RESULT([Enabling e2resize support by default]) +RESIZER_CMT= +) +AC_SUBST(RESIZER_CMT) +dnl +dnl handle --enable-defrag +dnl +AC_ARG_ENABLE([defrag], +[ --disable-defrag disable support of e4defrag program], +if test "$enableval" = "no" +then + AC_MSG_RESULT([Disabling e4defrag support]) + DEFRAG_CMT="#" +else + DEFRAG_CMT= + AC_MSG_RESULT([Enabling e4defrag support]) +fi +, +AC_MSG_RESULT([Enabling e4defrag support by default]) +DEFRAG_CMT= +) +AC_SUBST(DEFRAG_CMT) dnl dnl See whether to install the `fsck' wrapper program (that calls e2fsck) dnl @@ -259,92 +712,246 @@ AC_ARG_ENABLE([fsck], [if test "$enableval" = "no" then FSCK_PROG='' FSCK_MAN='' - echo "Not building fsck wrapper" + AC_MSG_RESULT([Not building fsck wrapper]) else FSCK_PROG=fsck FSCK_MAN=fsck.8 - echo "Building fsck wrapper" + AC_MSG_RESULT([Building fsck wrapper]) fi] , [case "$host_os" in gnu*) FSCK_PROG='' FSCK_MAN='' - echo "Not building fsck wrapper by default" + AC_MSG_RESULT([Not building fsck wrapper by default]) ;; *) FSCK_PROG=fsck FSCK_MAN=fsck.8 - echo "Building fsck wrapper by default" + AC_MSG_RESULT([Building fsck wrapper by default]) esac] ) AC_SUBST(FSCK_PROG) AC_SUBST(FSCK_MAN) dnl +dnl See whether to install the `e2initrd-helper' program dnl -MAKEFILE_LIBRARY=$srcdir/lib/Makefile.library -AC_SUBST_FILE(MAKEFILE_LIBRARY) +AC_ARG_ENABLE([e2initrd-helper], +[ --enable-e2initrd-helper build e2initrd-helper program], +[if test "$enableval" = "no" +then + E2INITRD_PROG='' E2INITRD_MAN='' + AC_MSG_RESULT([Not building e2initrd helper]) +else + E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8 + AC_MSG_RESULT([Building e2initrd helper]) +fi] +, +E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8 +AC_MSG_RESULT([Building e2initrd helper by default]) +) +AC_SUBST(E2INITRD_PROG) +AC_SUBST(E2INITRD_MAN) dnl dnl -AC_ARG_ENABLE([old-bitops], -[ --enable-old-bitops Use old (non-standard but native) bitmask operations], -if test "$enableval" = "no" +dnl +AC_ARG_ENABLE([tls], +[ --disable-tls disable use of thread local support], +[if test "$enableval" = "no" then - echo "Using new (standard) bitmask operations" + try_tls="" + AC_MSG_RESULT([Disabling thread local support]) else - AC_DEFINE(EXT2_OLD_BITOPS) - echo "Using old (native) bitmask operations" - + try_tls="yes" + AC_MSG_RESULT([Enabling thread local support]) +fi] +, +if test -n "$WITH_DIET_LIBC" +then + try_tls="" + AC_MSG_RESULT([Diet libc does not support thread local support]) +else + try_tls="yes" + AC_MSG_RESULT([Try using thread local support by default]) +fi +) +if test "$try_tls" = "yes" +then +AX_TLS fi +dnl +dnl +dnl +AH_TEMPLATE([USE_UUIDD], [Define to 1 to build uuidd]) +AC_ARG_ENABLE([uuidd], +[ --disable-uuidd disable building the uuid daemon], +[if test "$enableval" = "no" +then + AC_MSG_RESULT([Not building uuidd]) + UUIDD_CMT="#" +else + AC_DEFINE(USE_UUIDD, 1) + UUIDD_CMT="" + AC_MSG_RESULT([Building uuidd]) +fi] , -echo "Using standard bitmask operations by default" +AC_DEFINE(USE_UUIDD, 1) +UUIDD_CMT="" +AC_MSG_RESULT([Building uuidd by default]) ) +AC_SUBST(UUIDD_CMT) +dnl +dnl +dnl +MAKEFILE_LIBRARY=$srcdir/lib/Makefile.library +AC_SUBST_FILE(MAKEFILE_LIBRARY) +dnl +dnl Add internationalization support, using gettext. +dnl +GETTEXT_PACKAGE=e2fsprogs +PACKAGE=e2fsprogs +VERSION="$E2FSPROGS_VERSION" +VERSION=0.14.1 +AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [package name for gettext]) +AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [version for gettext]) +AC_SUBST(GETTEXT_PACKAGE) +AC_SUBST(PACKAGE) +AC_SUBST(VERSION) + +AM_GNU_GETTEXT dnl dnl End of configuration options dnl AC_SUBST(BINARY_TYPE) AC_PROG_MAKE_SET +CHECK_GNU_MAKE 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_PROG_AWK +AC_PROG_EGREP AC_PATH_PROG(SED, sed, sed) +AC_PATH_PROG(PERL, perl, perl) +AC_PATH_PROG(LDCONFIG, ldconfig, :) AC_CHECK_TOOL(AR, ar, ar) AC_CHECK_TOOL(RANLIB, ranlib, :) AC_CHECK_TOOL(STRIP, strip, :) -AC_PROG_CC +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 -AC_C_CROSS -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 net/if.h netinet/in.h) +# 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(m4_flatten([ + attr/xattr.h + dirent.h + errno.h + execinfo.h + getopt.h + malloc.h + mntent.h + paths.h + semaphore.h + setjmp.h + signal.h + stdarg.h + stdint.h + stdlib.h + termios.h + termio.h + unistd.h + utime.h + linux/falloc.h + linux/fd.h + linux/major.h + net/if_dl.h + netinet/in.h + sys/disklabel.h + sys/file.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 + sys/xattr.h +])) +AC_CHECK_HEADERS(sys/disk.h sys/mount.h,,, +[[ +#if HAVE_SYS_QUEUE_H +#include +#endif +]]) +AC_CHECK_HEADERS(net/if.h,,, +[[ +#if HAVE_SYS_TYPES_H +#include +#endif +#if HAVE_SYS_SOCKET +#include +#endif +]]) +AC_CHECK_HEADERS(db.h) 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 ]) +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])],, + [#include ]) 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 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 -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 +AC_CHECK_DECL(llseek,[AC_DEFINE(HAVE_LLSEEK_PROTOTYPE, 1, + [Define to 1 if llseek declared in unistd.h])],, + [#include ]) +dnl +dnl Check to see if lseek64() is declared in unistd.h. Glibc's header files +dnl are so convoluted that I can't tell whether it will always be defined, +dnl and if it isn't defined while lseek64 is defined in the library, +dnl disaster will strike. +dnl +dnl Warning! Use of --enable-gcc-wall may throw off this test. +dnl +dnl +AC_CHECK_DECL(lseek64,[AC_DEFINE(HAVE_LSEEK64_PROTOTYPE, 1, + [Define to 1 if lseek64 declared in unistd.h])],, + [#define _LARGEFILE_SOURCE + #define _LARGEFILE64_SOURCE + #include ]) 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=0 - AC_MSG_WARN([Cross-compiling, so cannot check type sizes; assuming short=2, int=4, long=4]) -fi AC_CHECK_SIZEOF(short) AC_CHECK_SIZEOF(int) AC_CHECK_SIZEOF(long) @@ -357,6 +964,34 @@ AC_SUBST(SIZEOF_SHORT) AC_SUBST(SIZEOF_INT) AC_SUBST(SIZEOF_LONG) AC_SUBST(SIZEOF_LONG_LONG) +AC_C_BIGENDIAN +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]) +AC_CHECK_TYPES(intptr_t) 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(). @@ -369,40 +1004,79 @@ AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags, [e2fsprogs_cv_struct_st_flags=no])) AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags) if test "$e2fsprogs_cv_struct_st_flags" = yes; then - AC_DEFINE(HAVE_STAT_FLAGS) + 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, 1, + [Define to 1 if struct stat has st_flags]) + fi fi -AC_CHECK_FUNCS(chflags getrusage llseek strdup getmntinfo strcasecmp srandom fchown) dnl -dnl Check to see if ino_t is defined +dnl Check for the presence of SA_LEN 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 +AC_CHECK_MEMBER(struct sockaddr.sa_len, + AC_DEFINE_UNQUOTED(HAVE_SA_LEN,1, + [Define to 1 if if struct sockaddr contains sa_len]),, + [#include + #include ]) 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 This will add -lblkid to the AC_CHECK_FUNCS search if we are using +dnl the system-provided blkid library dnl -AC_CHECK_HEADER(linux/fs.h, [linux_headers=yes], [linux_headers=no]) -AC_SUBST(EXTRA_PROGS) -if test "$linux_headers" = yes; then - AC_DEFINE(HAVE_LINUX_FS_H) - # These are some programs that depend on having linux headers around, and - # won't work otherwise. So we only compile them if we can. - EXTRA_PROGS="$EXTRA_PROGS flushb" -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" +if test -n "$BLKID_CMT"; then + AC_SEARCH_LIBS([blkid_probe_all], [blkid]) fi -AC_SUBST(LINUX_INCLUDE) +dnl +AC_CHECK_FUNCS(m4_flatten([ + __secure_getenv + backtrace + blkid_probe_get_topology + chflags + fallocate + fallocate64 + fchown + fdatasync + fstat64 + ftruncate64 + getdtablesize + getmntinfo + getpwuid_r + getrlimit + getrusage + jrand48 + llseek + lseek64 + mallinfo + mbstowcs + memalign + mmap + msync + nanosleep + open64 + pathconf + posix_fadvise + posix_memalign + prctl + setmntent + setresgid + setresuid + srandom + strcasecmp + strdup + strnlen + strptime + strtoull + sync_file_range + sysconf + usleep + utime + 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 @@ -411,6 +1085,38 @@ SOCKET_LIB='' AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket]) AC_SUBST(SOCKET_LIB) dnl +dnl Check to see if libdb exists for the sake of lfsck +dnl +AC_CHECK_LIB(db-4.1, db_env_create, + [DB4VERSION=4.1 + AC_DEFINE(HAVE_DB4, 1, [Define to 1 if DB4 library is present]) +]) +AC_CHECK_LIB(db-4.2, db_env_create, + [DB4VERSION=4.2 + AC_DEFINE(HAVE_DB4, 1, [Define to 1 if DB4 library is present]) +]) +AC_CHECK_LIB(db-4.3, db_env_create, + [DB4VERSION=4.3 + AC_DEFINE(HAVE_DB4, 1, [Define to 1 if DB4 library is present]) +]) +AC_CHECK_LIB(db-4.5, db_env_create, + [DB4VERSION=4.5 + AC_DEFINE(HAVE_DB4, 1, [Define to 1 if DB4 library is present]) +]) +AC_CHECK_LIB(db-4.6, db_env_create, + [DB4VERSION=4.6 + AC_DEFINE(HAVE_DB4, 1, [Define to 1 if DB4 library is present]) +]) +AC_CHECK_LIB(db-4.7, db_env_create, + [DB4VERSION=4.7 + AC_DEFINE(HAVE_DB4, 1, [Define to 1 if DB4 library is present]) +]) +AC_CHECK_LIB(db-4.8, db_env_create, + [DB4VERSION=4.8 + AC_DEFINE(HAVE_DB4, 1, [Define to 1 if DB4 library is present]) +]) +AC_SUBST(DB4VERSION) +dnl dnl See if optreset exists dnl AC_MSG_CHECKING(for optreset) @@ -419,62 +1125,172 @@ AC_CACHE_VAL(ac_cv_have_optreset, 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) + AC_DEFINE(HAVE_OPTRESET, 1, [Define to 1 if optreset for getopt is present]) 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) +dnl Test for sem_init, and which library it might require: +dnl +AH_TEMPLATE([HAVE_SEM_INIT], [Define to 1 if sem_init() exists]) +SEM_INIT_LIB='' +AC_CHECK_FUNC(sem_init, , + AC_CHECK_LIB(pthread, sem_init, + AC_DEFINE(HAVE_SEM_INIT, 1) + SEM_INIT_LIB=-lpthread, + AC_CHECK_LIB(rt, sem_init, + AC_DEFINE(HAVE_SEM_INIT, 1) + SEM_INIT_LIB=-lrt, + AC_CHECK_LIB(posix4, sem_init, + AC_DEFINE(HAVE_SEM_INIT, 1) + SEM_INIT_LIB=-lposix4))))dnl +AC_SUBST(SEM_INIT_LIB) +dnl +dnl Check for unified diff +dnl +AC_MSG_CHECKING(for unified diff option) +if diff -u $0 $0 > /dev/null 2>&1 ; then + UNI_DIFF_OPTS=-u +else + UNI_DIFF_OPTS=-c fi +AC_MSG_RESULT($UNI_DIFF_OPTS) +AC_SUBST(UNI_DIFF_OPTS) dnl -dnl Linux uses a separate usr_prefix by default +dnl We use the EXT2 ioctls only under Linux dnl case "$host_os" in linux*) - if test "$prefix" = NONE ; then - usr_prefix="\${prefix}/usr"; - echo "On $host_os systems, usr_prefix defaults to $usr_prefix" + AC_DEFINE(HAVE_EXT2_IOCTLS, 1, [Define to 1 if Ext2 ioctls present]) + ;; +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="#" + ;; +esac +AC_SUBST(LINUX_CMT) +AC_SUBST(CYGWIN_CMT) +AC_SUBST(UNIX_CMT) +dnl +dnl Linux and Hurd places root files in the / by default +dnl +case "$host_os" in +linux* | gnu* | k*bsd*-gnu) + if test "$prefix" = NONE -a "$root_prefix" = NONE ; then + root_prefix=""; + AC_MSG_RESULT([On $host_os systems, root_prefix defaults to '']) fi ;; esac -if test "$usr_prefix" = NONE ; then - usr_prefix="\${prefix}" -fi -AC_SUBST(usr_prefix) dnl -dnl On Linux/hurd, force the prefix to be '' +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=''; - echo "On $host_os systems, prefix defaults to ''" + prefix="/usr"; + AC_MSG_RESULT([On $host_os systems, prefix defaults to /usr]) + if test "$mandir" = '${prefix}/man' ; then + AC_MSG_RESULT([...and mandir defaults to /usr/share/man]) + mandir=/usr/share/man + fi fi ;; esac +if test "$root_prefix" = NONE ; then + if test "$prefix" = NONE ; then + root_prefix="$ac_default_prefix" + else + root_prefix="$prefix" + fi + root_bindir=$bindir + root_sbindir=$sbindir + root_libdir=$libdir + root_sysconfdir=$sysconfdir +else + root_bindir='${root_prefix}/bin' + root_sbindir='${root_prefix}/sbin' + root_libdir='${root_prefix}/lib' + root_sysconfdir='${root_prefix}/etc' +fi +if test "$bindir" != '${exec_prefix}/bin'; then + root_bindir=$bindir + AC_MSG_RESULT([Setting root_bindir to $root_bindir]) +fi +if test "$sbindir" != '${exec_prefix}/sbin'; then + root_sbindir=$sbindir + AC_MSG_RESULT([Setting root_sbindir to $root_sbindir]) +fi +if test "$libdir" != '${exec_prefix}/lib'; then + root_libdir=$libdir + AC_MSG_RESULT([Setting root_libdir to $root_libdir]) +fi +if test "$sysconfdir" != '${prefix}/etc'; then + root_sysconfdir=$sysconfdir + AC_MSG_RESULT([Setting root_sysconfdir to $root_sysconfdir]) +fi +AC_SUBST(root_prefix) +AC_SUBST(root_bindir) +AC_SUBST(root_sbindir) +AC_SUBST(root_libdir) +AC_SUBST(root_sysconfdir) +dnl +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 +)dnl dnl dnl See if -static works. -dnl XXX for now, assume that only Linux/hurd systems support -static dnl -AC_REQUIRE([AC_CANONICAL_HOST]) -LDFLAG_STATIC= +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 -linux* | gnu*) - LDFLAG_STATIC=-static - echo "On $host_os systems, assume -static works" +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 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*) + AC_MSG_RESULT([Using Apple Darwin / GNU libintl workaround]) + AC_DEFINE(_INTL_REDIRECT_MACROS, 1, + [Define to 1 if Apple Darwin libintl workaround is needed]) + ;; +esac +dnl dnl Make the ss and et directories work correctly. dnl SS_DIR=`cd ${srcdir}/lib/ss; pwd` @@ -491,10 +1307,28 @@ else fi AC_SUBST(DO_TEST_SUITE) dnl +dnl Only include the intl include files if we're building with them dnl +INCLUDES='-I. -I$(top_builddir)/lib -I$(top_srcdir)/lib' +if test -n "$CPPFLAGS" ; then + INCLUDES="$INCLUDES $CPPFLAGS" +fi +if test "$USE_INCLUDED_LIBINTL" = "yes" ; then + INCLUDES=$INCLUDES' -I$(top_builddir)/intl -I$(top_srcdir)/intl' +fi +AC_SUBST(INCLUDES) dnl -DO_SUBSTITUTE_SCRIPT=$srcdir/lib/do_substitute -AC_SUBST_FILE(DO_SUBSTITUTE_SCRIPT) +dnl Build CFLAGS +dnl +if test $cross_compiling = no; then + BUILD_CFLAGS="$CFLAGS" + BUILD_LDFLAGS="$LDFLAGS" +else + BUILD_CFLAGS= + BUILD_LDFLAGS= +fi +AC_SUBST(BUILD_CFLAGS) +AC_SUBST(BUILD_LDFLAGS) dnl dnl Make our output files, being sure that we create the some miscellaneous dnl directories @@ -502,7 +1336,24 @@ dnl test -d lib || mkdir lib test -d include || mkdir include test -d include/linux || mkdir include/linux -AC_OUTPUT(MCONFIG lib/substitute_sh Makefile 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 doc/Makefile) +test -d include/asm || mkdir include/asm +for i in MCONFIG Makefile e2fsprogs.spec \ + e2fsprogs-RHEL-6.spec \ + e2fsprogs-SUSE_LINUX-11.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 \ + lib/uuid/Makefile lib/uuid/uuid_types.h \ + lib/blkid/Makefile lib/blkid/blkid_types.h lib/quota/Makefile \ + 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 \ + resize/Makefile doc/Makefile intl/Makefile \ + intl/libgnuintl.h po/Makefile.in ; do + if test -d `dirname ${srcdir}/$i` ; then + outlist="$outlist $i" + fi +done +AC_OUTPUT($outlist) +if test -f util/gen-tarball; then chmod +x util/gen-tarball; fi