Whamcloud - gitweb
mke2fs: use lazy inode init on some discard-able devices
[tools/e2fsprogs.git] / configure.in
index dbec692..5c6b801 100644 (file)
@@ -63,6 +63,14 @@ 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)])
+AC_SUBST(DLOPEN_LIB)
+dnl
 dnl Use diet libc
 dnl 
 WITH_DIET_LIBC=
@@ -72,37 +80,20 @@ 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],
-[  --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])
-AC_PROG_CC
-AC_PROG_CPP
-dnl
-dnl set $(LD) from --with-linker=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([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])
+AC_ARG_WITH([ccopts],
+AC_HELP_STRING([--with-ccopts],[no longer supported, use CFLAGS= instead]),
+AC_MSG_ERROR([--with-ccopts no longer supported; use CFLAGS= instead]))
 dnl
-dnl set $(CCOPTS) from --with-ccopts=value
+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_ARG_WITH([ccopts],
-[  --with-ccopts=CCOPTS    select compiler command line options],
-AC_MSG_RESULT(CCOPTS is $withval)
-CFLAGS=$withval,
-)dnl
+AC_PROG_CC
+AC_PROG_CPP
 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
@@ -136,16 +127,7 @@ dnl parsing configuration opions, which may modify these
 dnl
 LIB_EXT=.a
 STATIC_LIB_EXT=.a
-PROFILE_LIB_EXT=.a
-dnl
-dnl set $(LDFLAGS) from --with-ldopts=value
-dnl
-AC_ARG_WITH([ldopts],
-[  --with-ldopts=LDOPTS    select linker command line options],
-AC_MSG_RESULT(LDFLAGS is $withval)
-LDFLAGS=$withval,
-)dnl
-AC_SUBST(LDFLAGS)
+PROFILED_LIB_EXT=.a
 dnl
 dnl Allow separate `root_prefix' to be specified
 dnl
@@ -172,6 +154,64 @@ 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])
+)
+AC_SUBST(LINK_INSTALL_FLAGS)
+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])
+)
+AC_SUBST(LINK_BUILD_FLAGS)
+dnl
+dnl handle --enable-verbose-makecmds
+dnl
+AC_ARG_ENABLE([verbose-makecmds],
+[  --enable-verbose-makecmds enable verbose make command output],
+if test "$enableval" = "no"
+then
+       AC_MSG_RESULT([Disabling verbose make commands])
+       E=@echo
+       Q=@
+else
+       AC_MSG_RESULT([Enabling verbose make commands])
+       E=@\\#
+       Q= 
+fi
+,
+AC_MSG_RESULT([Disabling verbose make commands])
+E=@echo
+Q=@
+)
+AC_SUBST(E)
+AC_SUBST(Q)
+dnl
 dnl handle --enable-compression
 dnl
 AC_ARG_ENABLE([compression],
@@ -211,6 +251,8 @@ 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
@@ -232,6 +274,8 @@ else
        esac]
        BINARY_TYPE=elfbin
        LIB_EXT=.so
+       PRIVATE_LIBS_CMT=#
+       LDFLAG_DYNAMIC=['-Wl,-rpath-link,$(top_builddir)/lib']
        AC_MSG_RESULT([Enabling ELF shared libraries])
 fi
 ,
@@ -322,6 +366,8 @@ 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-jbd-debug
 dnl
@@ -356,17 +402,126 @@ 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],
+[  --disable-testio-debug  disable the use of the test I/O manager for debugging],
 if test "$enableval" = "no"
 then
        AC_MSG_RESULT([Disabling testio debugging])
+       TEST_IO_CMT="#"
 else
+       TEST_IO_CMT=
        AC_DEFINE(CONFIG_TESTIO_DEBUG)
        AC_MSG_RESULT([Enabling testio debugging])
 fi
 ,
-AC_MSG_RESULT([Disabling testio debugging by default])
+AC_MSG_RESULT([Enabling testio debugging by default])
+AC_DEFINE(CONFIG_TESTIO_DEBUG)
+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=
+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)
+       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)
+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-debugfs
 dnl
@@ -537,6 +692,7 @@ 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)
@@ -573,7 +729,7 @@ if test $cross_compiling = no; then
 else
   AC_CHECK_PROGS(BUILD_CC, gcc cc)
 fi
-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(dirent.h errno.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/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
@@ -690,7 +846,14 @@ AC_CHECK_MEMBER(struct sockaddr.sa_len,
        [#include <sys/types.h>
         #include <sys/socket.h>])
 dnl
-AC_CHECK_FUNCS(chflags getrusage llseek lseek64 open64 fstat64 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 This will add -lblkid to the AC_CHECK_FUNCS search if we are using
+dnl the system-provided blkid library
+dnl
+if test -n "$BLKID_CMT"; then
+  AC_SEARCH_LIBS([blkid_probe_all], [blkid])
+fi
+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 getdtablesize getrlimit blkid_probe_get_topology mbstowcs)
 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
@@ -699,14 +862,6 @@ SOCKET_LIB=''
 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)
@@ -718,6 +873,21 @@ if test $ac_cv_have_optreset = yes; then
   AC_DEFINE(HAVE_OPTRESET)
 fi
 dnl
+dnl Test for sem_init, and which library it might require:
+dnl
+SEM_INIT_LIB=''
+AC_CHECK_FUNC(sem_init, ,
+  AC_CHECK_LIB(pthread, sem_init,
+       AC_DEFINE(HAVE_SEM_INIT)
+       SEM_INIT_LIB=-lpthread,
+  AC_CHECK_LIB(rt, sem_init,
+       AC_DEFINE(HAVE_SEM_INIT)
+       SEM_INIT_LIB=-lrt,
+  AC_CHECK_LIB(posix4, sem_init,
+       AC_DEFINE(HAVE_SEM_INIT)
+       SEM_INIT_LIB=-lposix4))))dnl
+AC_SUBST(SEM_INIT_LIB)
+dnl
 dnl Check for unified diff
 dnl
 AC_MSG_CHECKING(for unified diff option)
@@ -909,11 +1079,11 @@ for i in MCONFIG Makefile e2fsprogs.spec \
        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
+       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
-