X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=configure.in;h=da224b45d33614d31a22d994c38b3fa61bb5a87c;hb=30ab7f4c65bd32a7d24f53e8c87ed5b5ae757626;hp=01e8290041036a83baf7740797c8361b5ba9462c;hpb=fff45483ede7fe38a31b3364a9c07e2418776dee;p=tools%2Fe2fsprogs.git diff --git a/configure.in b/configure.in index 01e8290..da224b4 100644 --- a/configure.in +++ b/configure.in @@ -1,5 +1,6 @@ AC_INIT(version.h) -AC_PREREQ(2.12) +AC_PREREQ(2.50) +AC_CONFIG_AUX_DIR(config) MCONFIG=./MCONFIG AC_SUBST_FILE(MCONFIG) BINARY_TYPE=bin @@ -23,30 +24,54 @@ 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" ;; -*) 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_SUBST(E2FSPROGS_PKGVER) AC_CANONICAL_HOST 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 dnl set $(CC) from --with-cc=value dnl AC_ARG_WITH([cc], @@ -58,6 +83,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 @@ -88,6 +114,23 @@ if test "$linux_headers" != yes; then fi AC_SUBST(LINUX_INCLUDE) 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 @@ -101,7 +144,7 @@ AC_ARG_WITH([ldopts], [ --with-ldopts=LDOPTS select linker command line options], AC_MSG_RESULT(LDFLAGS is $withval) LDFLAGS=$withval, -LDFLAGS=)dnl +)dnl AC_SUBST(LDFLAGS) dnl dnl Allow separate `root_prefix' to be specified @@ -111,20 +154,38 @@ AC_ARG_WITH([root-prefix], 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-compression dnl AC_ARG_ENABLE([compression], [ --enable-compression enable EXPERIMENTAL compression support], if test "$enableval" = "no" then - echo "Disabling compression support" + AC_MSG_RESULT([Disabling compression support]) else AC_DEFINE(ENABLE_COMPRESSION) - echo "Enabling compression support" - echo "WARNING: Compression support is experimental" + AC_MSG_RESULT([Enabling compression support]) + AC_MSG_WARN([Compression support is experimental]) fi , -echo "Disabling compression support by default" +AC_MSG_RESULT([Disabling compression support by default]) ) dnl dnl handle --enable-htree @@ -134,89 +195,22 @@ AC_ARG_ENABLE([htree], if test "$enableval" = "no" then HTREE_CMT=# - echo "Disabling htree directory support" + AC_MSG_RESULT([Disabling htree directory support]) else HTREE_CMT= AC_DEFINE(ENABLE_HTREE) - echo "Enabling htree directory support" + AC_MSG_RESULT([Enabling htree directory support]) fi , HTREE_CMT= AC_DEFINE(ENABLE_HTREE) -echo "Enabling htree directory support by default" +AC_MSG_RESULT([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-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 This needs to be before all of the --enable-*-shlibs options dnl -AC_ARG_ENABLE([evms-11], -[ --enable-evms-11 use EVMS 1.1 ABI (instead of EVMS 1.1)], -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], -[ --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) +E2_PKG_CONFIG_STATIC=--static dnl dnl handle --enable-elf-shlibs dnl @@ -226,8 +220,9 @@ 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 @@ -237,12 +232,12 @@ else esac] BINARY_TYPE=elfbin LIB_EXT=.so - echo "Enabling ELF shared libraries" + 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) @@ -255,8 +250,9 @@ 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 @@ -266,12 +262,12 @@ else LIB_EXT=.dylib ;; esac] - echo "Enabling BSD shared libraries" + 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) @@ -284,17 +280,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) @@ -307,16 +303,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) @@ -333,49 +329,44 @@ AC_ARG_ENABLE([jbd-debug], [ --enable-jbd-debug enable journal debugging], if test "$enableval" = "no" then - echo "Disabling journal debugging" + AC_MSG_RESULT([Disabling journal debugging]) else AC_DEFINE(CONFIG_JBD_DEBUG) - echo "Enabling journal debugging" + AC_MSG_RESULT([Enabling journal debugging]) fi , -echo "Disabling journal debugging by default" +AC_MSG_RESULT([Disabling journal debugging by default]) ) dnl dnl handle --enable-blkid-debug dnl AC_ARG_ENABLE([blkid-debug], -[ --enable-blkid-debug enable blkid debugging], +[ --enable-blkid-debug enable blkid debugging], if test "$enableval" = "no" then - echo "Disabling blkid debugging" + AC_MSG_RESULT([Disabling blkid debugging]) else AC_DEFINE(CONFIG_BLKID_DEBUG) - echo "Enabling blkid debugging" + AC_MSG_RESULT([Enabling blkid debugging]) fi , -echo "Disabling blkid debugging by default" +AC_MSG_RESULT([Disabling blkid debugging by default]) ) dnl -dnl handle --enable-swapfs +dnl handle --enable-testio-debug dnl -AC_ARG_ENABLE([swapfs], -[ --disable-swapfs disable support of legacy byte-swapped filesystems], +AC_ARG_ENABLE([testio-debug], +[ --enable-testio-debug enable the use of the test I/O manager for debugging], if test "$enableval" = "no" then - SWAPFS_CMT=# - echo "Disabling swapfs support" + AC_MSG_RESULT([Disabling testio debugging]) else - SWAPFS_CMT= - AC_DEFINE(ENABLE_SWAPFS) - echo "Enabling swapfs support" + AC_DEFINE(CONFIG_TESTIO_DEBUG) + AC_MSG_RESULT([Enabling testio debugging]) fi , -SWAPFS_CMT= -echo "Enabling swapfs support by default" -AC_DEFINE(ENABLE_SWAPFS) +AC_MSG_RESULT([Disabling testio debugging by default]) ) -AC_SUBST(SWAPFS_CMT) dnl dnl handle --enable-debugfs dnl @@ -383,14 +374,14 @@ AC_ARG_ENABLE([debugfs], [ --disable-debugfs disable support of debugfs program], if test "$enableval" = "no" then - echo "Disabling debugfs support" + AC_MSG_RESULT([Disabling debugfs support]) DEBUGFS_CMT="#" else DEBUGFS_CMT= - echo "Enabling debugfs support" + AC_MSG_RESULT([Enabling debugfs support]) fi , -echo "Enabling debugfs support by default" +AC_MSG_RESULT([Enabling debugfs support by default]) DEBUGFS_CMT= ) AC_SUBST(DEBUGFS_CMT) @@ -401,14 +392,14 @@ AC_ARG_ENABLE([imager], [ --disable-imager disable support of e2image program], if test "$enableval" = "no" then - echo "Disabling e2image support" + AC_MSG_RESULT([Disabling e2image support]) IMAGER_CMT="#" else IMAGER_CMT= - echo "Enabling e2image support" + AC_MSG_RESULT([Enabling e2image support]) fi , -echo "Enabling e2image support by default" +AC_MSG_RESULT([Enabling e2image support by default]) IMAGER_CMT= ) AC_SUBST(IMAGER_CMT) @@ -419,36 +410,18 @@ AC_ARG_ENABLE([resizer], [ --disable-resizer disable support of e2resize program], if test "$enableval" = "no" then - echo "Disabling e2resize support" + AC_MSG_RESULT([Disabling e2resize support]) RESIZER_CMT="#" else RESIZER_CMT= - echo "Enabling e2resize support" + AC_MSG_RESULT([Enabling e2resize support]) fi , -echo "Enabling e2resize support by default" +AC_MSG_RESULT([Enabling e2resize support by default]) 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], @@ -456,54 +429,158 @@ 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) -dnl +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 handle --enable-blkid-devmapper dnl -AC_ARG_ENABLE([old-bitops], -[ --enable-old-bitops Use old (non-standard but native) bitmask operations], -if test "$enableval" = "no" +STATIC_BLKID_DEVMAPPER_LIBS='' +AC_ARG_ENABLE([blkid-devmapper], +[ --enable-blkid-devmapper build with device-mapper support], +[if test "$enableval" = "no" then - echo "Using new (standard) bitmask operations" + AC_MSG_RESULT([Disabling device-mapper support]) + DEVMAPPER_REQ='' + DEVMAPPER_LIBS='' + STATIC_DEVMAPPER_LIBS='' else - AC_DEFINE(EXT2_OLD_BITOPS) - echo "Using old (native) bitmask operations" + AC_DEFINE(HAVE_DEVMAPPER) + AC_MSG_RESULT([Enabling device-mapper support]) + + PKG_PROG_PKG_CONFIG() + if test -z "$PKG_CONFIG"; then + AC_MSG_ERROR([pkg-config not installed; please install it.]) + 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*) + ;; + *) + AC_MSG_WARN([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] +, +AC_MSG_RESULT([Disabling device-mapper support by default]) +) +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="" + AC_MSG_RESULT([Disabling thread local support]) +else + 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 +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) + UUIDD_CMT="" + AC_MSG_RESULT([Building uuidd]) +fi] , -echo "Using standard bitmask operations by default" +AC_DEFINE(USE_UUIDD) +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") AC_DEFINE_UNQUOTED(VERSION, "$VERSION") +AC_SUBST(GETTEXT_PACKAGE) AC_SUBST(PACKAGE) AC_SUBST(VERSION) -ALL_LINGUAS="it nyc tr de de-utf" AM_GNU_GETTEXT dnl dnl End of configuration options @@ -516,13 +593,28 @@ 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_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 @@ -531,48 +623,36 @@ if test $cross_compiling = no; then 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/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_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 termio.h unistd.h utime.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) +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_FUNC_VPRINTF 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( -[#include ], [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 +AC_CHECK_MEMBER(struct dirent.d_reclen,[AC_DEFINE(HAVE_RECLEN_DIRENT)],, + [#include ]) 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 ], [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 +AC_CHECK_TYPE(ssize_t,[AC_DEFINE(HAVE_TYPE_SSIZE_T)],, + [#include ]) 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 +AC_CHECK_DECL(llseek,[AC_DEFINE(HAVE_LLSEEK_PROTOTYPE)],, + [#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, @@ -582,29 +662,13 @@ dnl dnl Warning! Use of --enable-gcc-wall may throw off this test. dnl dnl -AC_MSG_CHECKING(whether lseek64 declared in unistd.h) -AC_CACHE_VAL(e2fsprogs_cv_have_lseek64_prototype, - AC_TRY_COMPILE( -[#define _LARGEFILE_SOURCE -#define _LARGEFILE64_SOURCE -#include ], [extern int lseek64(int);], - [e2fsprogs_cv_have_lseek64_prototype=no], - [e2fsprogs_cv_have_lseek64_prototype=yes])) -AC_MSG_RESULT($e2fsprogs_cv_have_lseek64_prototype) -if test "$e2fsprogs_cv_have_lseek64_prototype" = yes; then - AC_DEFINE(HAVE_LSEEK64_PROTOTYPE) -fi +AC_CHECK_DECL(lseek64,[AC_DEFINE(HAVE_LSEEK64_PROTOTYPE)],, + [#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=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) @@ -618,6 +682,33 @@ 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(). @@ -641,7 +732,15 @@ if test "$e2fsprogs_cv_struct_st_flags" = yes; then AC_DEFINE(HAVE_STAT_FLAGS) fi fi -AC_CHECK_FUNCS(chflags getrusage llseek lseek64 open64 getmntinfo strtoull strcasecmp srandom fchown mallinfo fdatasync strnlen sysconf pathconf) +dnl +dnl Check for the presence of SA_LEN +dnl +AC_CHECK_MEMBER(struct sockaddr.sa_len, + AC_DEFINE_UNQUOTED(HAVE_SA_LEN,1,[Define if struct sockaddr contains sa_len]),, + [#include + #include ]) +dnl +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 usleep nanosleep) 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 @@ -669,6 +768,17 @@ if test $ac_cv_have_optreset = yes; then AC_DEFINE(HAVE_OPTRESET) fi 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 We use the EXT2 ioctls only under Linux dnl case "$host_os" in @@ -689,7 +799,6 @@ linux*) cygwin) CYGWIN_CMT= UNIX_CMT="#" - AC_DEFINE(CYGWIN) ;; esac AC_SUBST(LINUX_CMT) @@ -699,10 +808,10 @@ dnl 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 ''" + AC_MSG_RESULT([On $host_os systems, root_prefix defaults to '']) fi ;; esac @@ -710,12 +819,12 @@ dnl 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" + AC_MSG_RESULT([On $host_os systems, prefix defaults to /usr]) if test "$mandir" = '${prefix}/man' ; then - echo "...and mandir defaults to /usr/share/man" + AC_MSG_RESULT([...and mandir defaults to /usr/share/man]) mandir=/usr/share/man fi fi @@ -737,6 +846,22 @@ else 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) @@ -770,6 +895,17 @@ if test $ac_cv_e2fsprogs_use_static = yes; then 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) + ;; +esac +dnl dnl Make the ss and et directories work correctly. dnl SS_DIR=`cd ${srcdir}/lib/ss; pwd` @@ -786,6 +922,26 @@ else 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 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 dnl @@ -795,10 +951,13 @@ test -d include/linux || mkdir include/linux test -d include/asm || mkdir include/asm 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/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/evms/Makefile misc/Makefile ext2ed/Makefile e2fsck/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 po/Makefile.in ; do if test -d `dirname ${srcdir}/$i` ; then @@ -806,3 +965,5 @@ for i in MCONFIG Makefile e2fsprogs.spec \ fi done AC_OUTPUT($outlist) +if test -f util/gen-tarball; then chmod +x util/gen-tarball; fi +