3 AC_CONFIG_AUX_DIR(config)
8 dnl This is to figure out the version number and the date....
10 E2FSPROGS_VERSION=`grep E2FSPROGS_VERSION ${srcdir}/version.h \
11 | awk '{print $3}' | tr \" " " | awk '{print $1}'`
12 DATE=`grep E2FSPROGS_DATE ${srcdir}/version.h | awk '{print $3}' \
14 E2FSPROGS_DAY=`echo $DATE | awk -F- '{print $1}'`
15 MONTH=`echo $DATE | awk -F- '{print $2}'`
16 YEAR=`echo $DATE | awk -F- '{print $3}'`
18 if expr $YEAR ">" 1900 > /dev/null ; then
20 elif expr $YEAR ">" 90 >/dev/null ; then
21 E2FSPROGS_YEAR=19$YEAR
23 E2FSPROGS_YEAR=20$YEAR
27 Jan) MONTH_NUM=01; E2FSPROGS_MONTH="January" ;;
28 Feb) MONTH_NUM=02; E2FSPROGS_MONTH="February" ;;
29 Mar) MONTH_NUM=03; E2FSPROGS_MONTH="March" ;;
30 Apr) MONTH_NUM=04; E2FSPROGS_MONTH="April" ;;
31 May) MONTH_NUM=05; E2FSPROGS_MONTH="May" ;;
32 Jun) MONTH_NUM=06; E2FSPROGS_MONTH="June" ;;
33 Jul) MONTH_NUM=07; E2FSPROGS_MONTH="July" ;;
34 Aug) MONTH_NUM=08; E2FSPROGS_MONTH="August" ;;
35 Sep) MONTH_NUM=09; E2FSPROGS_MONTH="September" ;;
36 Oct) MONTH_NUM=10; E2FSPROGS_MONTH="October" ;;
37 Nov) MONTH_NUM=11; E2FSPROGS_MONTH="November" ;;
38 Dec) MONTH_NUM=12; E2FSPROGS_MONTH="December" ;;
39 *) AC_MSG_WARN([Unknown month $MONTH??]) ;;
42 base_ver=`echo $E2FSPROGS_VERSION | \
43 sed -e 's/-WIP//' -e 's/pre-//' -e 's/-PLUS//'`
45 date_spec=${E2FSPROGS_YEAR}.${MONTH_NUM}.${E2FSPROGS_DAY}
47 case $E2FSPROGS_VERSION in
49 E2FSPROGS_PKGVER="$base_ver~WIP-$E2FSPROGS_YEAR-$MONTH_NUM-$E2FSPROGS_DAY"
52 E2FSPROGS_PKGVER="$base_ver"
56 unset DATE MONTH YEAR base_ver pre_vers date_spec
57 AC_MSG_RESULT([Generating configuration file for e2fsprogs version $E2FSPROGS_VERSION])
58 AC_MSG_RESULT([Release date is ${E2FSPROGS_MONTH}, ${E2FSPROGS_YEAR}])
59 AC_SUBST(E2FSPROGS_YEAR)
60 AC_SUBST(E2FSPROGS_MONTH)
61 AC_SUBST(E2FSPROGS_DAY)
62 AC_SUBST(E2FSPROGS_VERSION)
63 AC_SUBST(E2FSPROGS_PKGVER)
69 AC_ARG_WITH([diet-libc],
70 [ --with-diet-libc use diet libc],
71 CC="diet cc -nostdinc"
73 AC_MSG_RESULT(CC=$CC))dnl
75 dnl set $(CC) from --with-cc=value
78 [ --with-cc=COMPILER select compiler to use],
79 AC_MSG_RESULT(CC=$withval)
81 if test -z "$CC" ; then CC=cc; fi
82 [AC_MSG_RESULT(CC defaults to $CC)])dnl
88 dnl set $(LD) from --with-linker=value
91 [ --with-linker=LINKER select linker to use],
92 AC_MSG_RESULT(LD=$withval)
94 if test -z "$LD" ; then LD=$CC; fi
95 [AC_MSG_RESULT(LD defaults to $LD)])dnl
99 dnl set $(CCOPTS) from --with-ccopts=value
101 AC_ARG_WITH([ccopts],
102 [ --with-ccopts=CCOPTS select compiler command line options],
103 AC_MSG_RESULT(CCOPTS is $withval)
107 dnl On systems without linux header files, we add an extra include directory
108 dnl that holds enough to fake it (hopefully). Note that the $(top_srcdir) here
109 dnl is quoted so that it gets expanded by make, not by configure.
111 AC_CHECK_HEADER(linux/fs.h, [linux_headers=yes], [linux_headers=no])
112 if test "$linux_headers" != yes; then
113 LINUX_INCLUDE='-I$(top_builddir)/include'
115 AC_SUBST(LINUX_INCLUDE)
117 dnl Alpha computers use fast and imprecise floating point code that may
118 dnl miss exceptions by default. Force sane options if we're using GCC.
119 AC_MSG_CHECKING(for additional special compiler flags)
123 alpha) addcflags="-mieee" ;;
126 if test "x$addcflags" != x
128 AC_MSG_RESULT($addcflags)
129 CFLAGS="$addcflags $CFLAGS"
131 AC_MSG_RESULT([[(none)]])
134 dnl Set default values for library extentions. Will be dealt with after
135 dnl parsing configuration opions, which may modify these
141 dnl set $(LDFLAGS) from --with-ldopts=value
143 AC_ARG_WITH([ldopts],
144 [ --with-ldopts=LDOPTS select linker command line options],
145 AC_MSG_RESULT(LDFLAGS is $withval)
150 dnl Allow separate `root_prefix' to be specified
152 AC_ARG_WITH([root-prefix],
153 [ --with-root-prefix=PREFIX override prefix variable for files to be placed in the root],
154 root_prefix=$withval,
157 dnl handle --enable-maintainer-mode
159 AC_ARG_ENABLE([maintainer-mode],
160 [ --enable-maintainer-mode enable makefile rules useful for maintainers],
161 if test "$enableval" = "no"
164 AC_MSG_RESULT([Disabling maintainer mode])
167 AC_MSG_RESULT([Enabling maintainer mode])
171 AC_MSG_RESULT([Disabling maintainer mode by default])
173 AC_SUBST(MAINTAINER_CMT)
175 dnl handle --enable-verbose-makecmds
177 AC_ARG_ENABLE([verbose-makecmds],
178 [ --enable-verbose-makecmds enable verbose make command output],
179 if test "$enableval" = "no"
181 AC_MSG_RESULT([Disabling verbose make commands])
185 AC_MSG_RESULT([Enabling verbose make commands])
190 AC_MSG_RESULT([Disabling verbose make commands])
197 dnl handle --enable-compression
199 AC_ARG_ENABLE([compression],
200 [ --enable-compression enable EXPERIMENTAL compression support],
201 if test "$enableval" = "no"
203 AC_MSG_RESULT([Disabling compression support])
205 AC_DEFINE(ENABLE_COMPRESSION)
206 AC_MSG_RESULT([Enabling compression support])
207 AC_MSG_WARN([Compression support is experimental])
210 AC_MSG_RESULT([Disabling compression support by default])
213 dnl handle --enable-htree
215 AC_ARG_ENABLE([htree],
216 [ --enable-htree enable EXPERIMENTAL htree directory support],
217 if test "$enableval" = "no"
220 AC_MSG_RESULT([Disabling htree directory support])
223 AC_DEFINE(ENABLE_HTREE)
224 AC_MSG_RESULT([Enabling htree directory support])
228 AC_DEFINE(ENABLE_HTREE)
229 AC_MSG_RESULT([Enabling htree directory support by default])
233 dnl This needs to be before all of the --enable-*-shlibs options
235 E2_PKG_CONFIG_STATIC=--static
239 dnl handle --enable-elf-shlibs
241 AC_ARG_ENABLE([elf-shlibs],
242 [ --enable-elf-shlibs select ELF shared libraries],
243 if test "$enableval" = "no"
246 MAKEFILE_ELF=/dev/null
247 AC_MSG_RESULT([Disabling ELF shared libraries])
249 E2_PKG_CONFIG_STATIC=
251 MAKEFILE_ELF=$srcdir/lib/Makefile.elf-lib
254 MAKEFILE_ELF=$srcdir/lib/Makefile.solaris-lib
260 LDFLAG_DYNAMIC=['-Wl,-rpath-link,$(top_builddir)/lib']
261 AC_MSG_RESULT([Enabling ELF shared libraries])
264 MAKEFILE_ELF=/dev/null
266 AC_MSG_RESULT([Disabling ELF shared libraries by default])
269 AC_SUBST_FILE(MAKEFILE_ELF)
271 dnl handle --enable-bsd-shlibs
273 AC_ARG_ENABLE([bsd-shlibs],
274 [ --enable-bsd-shlibs select BSD shared libraries],
275 if test "$enableval" = "no"
278 MAKEFILE_BSDLIB=/dev/null
279 AC_MSG_RESULT([Disabling BSD shared libraries])
281 E2_PKG_CONFIG_STATIC=
283 MAKEFILE_BSDLIB=$srcdir/lib/Makefile.bsd-lib
287 MAKEFILE_BSDLIB=$srcdir/lib/Makefile.darwin-lib
291 AC_MSG_RESULT([Enabling BSD shared libraries])
294 MAKEFILE_BSDLIB=/dev/null
296 AC_MSG_RESULT([Disabling BSD shared libraries by default])
299 AC_SUBST_FILE(MAKEFILE_BSDLIB)
301 dnl handle --enable-profile
303 AC_ARG_ENABLE([profile],
304 [ --enable-profile build profiling libraries],
305 if test "$enableval" = "no"
308 MAKEFILE_PROFILE=/dev/null
309 AC_MSG_RESULT([Disabling profiling libraries])
312 MAKEFILE_PROFILE=$srcdir/lib/Makefile.profile
313 PROFILED_LIB_EXT=_p.a
314 AC_MSG_RESULT([Building profiling libraries])
318 MAKEFILE_PROFILE=/dev/null
319 AC_MSG_RESULT([Disabling profiling libraries by default])
321 AC_SUBST(PROFILE_CMT)
322 AC_SUBST_FILE(MAKEFILE_PROFILE)
324 dnl handle --enable-checker
326 AC_ARG_ENABLE([checker],
327 [ --enable-checker build checker libraries],
328 if test "$enableval" = "no"
331 MAKEFILE_CHECKER=/dev/null
332 AC_MSG_RESULT([Disabling checker libraries])
335 MAKEFILE_CHECKER=$srcdir/lib/Makefile.checker
336 AC_MSG_RESULT([Building checker libraries])
340 MAKEFILE_CHECKER=/dev/null
341 AC_MSG_RESULT([Disabling checker libraries by default])
343 AC_SUBST(CHECKER_CMT)
344 AC_SUBST_FILE(MAKEFILE_CHECKER)
346 dnl Substitute library extensions
349 AC_SUBST(STATIC_LIB_EXT)
350 AC_SUBST(PROFILED_LIB_EXT)
351 AC_SUBST(LDFLAG_DYNAMIC)
352 AC_SUBST(PRIVATE_LIBS_CMT)
354 dnl handle --enable-jbd-debug
356 AC_ARG_ENABLE([jbd-debug],
357 [ --enable-jbd-debug enable journal debugging],
358 if test "$enableval" = "no"
360 AC_MSG_RESULT([Disabling journal debugging])
362 AC_DEFINE(CONFIG_JBD_DEBUG)
363 AC_MSG_RESULT([Enabling journal debugging])
366 AC_MSG_RESULT([Disabling journal debugging by default])
369 dnl handle --enable-blkid-debug
371 AC_ARG_ENABLE([blkid-debug],
372 [ --enable-blkid-debug enable blkid debugging],
373 if test "$enableval" = "no"
375 AC_MSG_RESULT([Disabling blkid debugging])
377 AC_DEFINE(CONFIG_BLKID_DEBUG)
378 AC_MSG_RESULT([Enabling blkid debugging])
381 AC_MSG_RESULT([Disabling blkid debugging by default])
384 dnl handle --enable-testio-debug
386 AC_ARG_ENABLE([testio-debug],
387 [ --disable-testio-debug disable the use of the test I/O manager for debugging],
388 if test "$enableval" = "no"
390 AC_MSG_RESULT([Disabling testio debugging])
394 AC_DEFINE(CONFIG_TESTIO_DEBUG)
395 AC_MSG_RESULT([Enabling testio debugging])
398 AC_MSG_RESULT([Enabling testio debugging by default])
399 AC_DEFINE(CONFIG_TESTIO_DEBUG)
402 AC_SUBST(TEST_IO_CMT)
404 dnl handle --disable-libuuid
414 AC_ARG_ENABLE([libuuid],
415 [ --disable-libuuid do not build private uuid library],
416 if test "$enableval" = "no"
418 if test -z "$PKG_CONFIG"; then
419 AC_MSG_ERROR([pkg-config not installed; please install it.])
422 AC_CHECK_LIB(uuid, uuid_generate,
423 [LIBUUID=`$PKG_CONFIG --libs uuid`;
424 STATIC_LIBUUID=`$PKG_CONFIG --static --libs uuid`],
425 [AC_MSG_ERROR([external uuid library not found])],
428 AC_MSG_RESULT([Disabling private uuid library])
430 LIBUUID='$(LIB)/libuuid'$LIB_EXT
432 STATIC_LIBUUID='$(LIB)/libuuid'$STATIC_LIB_EXT
433 DEPSTATIC_LIBUUID=$STATIC_LIBUUID
434 PROFILED_LIBUUID='$(LIB)/libuuid'$PROFILED_LIB_EXT
435 DEPPROFILED_LIBUUID=$PROFILED_LIBUUID
436 AC_MSG_RESULT([Enabling private uuid library])
439 LIBUUID='$(LIB)/libuuid'$LIB_EXT
441 STATIC_LIBUUID='$(LIB)/libuuid'$STATIC_LIB_EXT
442 DEPSTATIC_LIBUUID=$STATIC_LIBUUID
443 PROFILED_LIBUUID='$(LIB)/libuuid'$PROFILED_LIB_EXT
444 DEPPROFILED_LIBUUID=$PROFILED_LIBUUID
445 AC_MSG_RESULT([Enabling private uuid library by default])
449 AC_SUBST(STATIC_LIBUUID)
450 AC_SUBST(DEPSTATIC_LIBUUID)
451 AC_SUBST(PROFILED_LIBUUID)
452 AC_SUBST(DEPPROFILED_LIBUUID)
455 dnl handle --disable-libblkid
463 DEPPROFILED_LIBBLKID=
465 AC_ARG_ENABLE([libblkid],
466 [ --disable-libblkid do not build private blkid library],
467 if test "$enableval" = "no"
469 if test -z "$PKG_CONFIG"; then
470 AC_MSG_ERROR([pkg-config not installed; please install it.])
473 AC_CHECK_LIB(blkid, blkid_get_cache,
474 [LIBBLKID=`$PKG_CONFIG --libs blkid`;
475 STATIC_LIBBLKID=`$PKG_CONFIG --static --libs blkid`],
476 [AC_MSG_ERROR([external blkid library not found])],
479 AC_MSG_RESULT([Disabling private blkid library])
481 LIBBLKID='$(LIB)/libblkid'$LIB_EXT
482 DEPLIBBLKID=$LIBBLKID
483 STATIC_LIBBLKID='$(LIB)/libblkid'$STATIC_LIB_EXT
484 DEPSTATIC_LIBBLKID=$STATIC_LIBBLKID
485 PROFILED_LIBBLKID='$(LIB)/libblkid'$PROFILED_LIB_EXT
486 DEPPROFILED_LIBBLKID=$PROFILED_LIBBLKID
487 AC_DEFINE(CONFIG_BUILD_FINDFS)
488 AC_MSG_RESULT([Enabling private blkid library])
491 LIBBLKID='$(LIB)/libblkid'$LIB_EXT
492 DEPLIBBLKID=$LIBBLKID
493 STATIC_LIBBLKID='$(LIB)/libblkid'$STATIC_LIB_EXT
494 DEPSTATIC_LIBBLKID=$STATIC_LIBBLKID
495 PROFILED_LIBBLKID='$(LIB)/libblkid'$PROFILED_LIB_EXT
496 DEPPROFILED_LIBBLKID=$PROFILED_LIBBLKID
497 AC_DEFINE(CONFIG_BUILD_FINDFS)
498 AC_MSG_RESULT([Enabling private blkid library by default])
501 AC_SUBST(DEPLIBBLKID)
502 AC_SUBST(STATIC_LIBBLKID)
503 AC_SUBST(DEPSTATIC_LIBBLKID)
504 AC_SUBST(PROFILED_LIBBLKID)
505 AC_SUBST(DEPPROFILED_LIBBLKID)
508 dnl handle --enable-debugfs
510 AC_ARG_ENABLE([debugfs],
511 [ --disable-debugfs disable support of debugfs program],
512 if test "$enableval" = "no"
514 AC_MSG_RESULT([Disabling debugfs support])
518 AC_MSG_RESULT([Enabling debugfs support])
521 AC_MSG_RESULT([Enabling debugfs support by default])
524 AC_SUBST(DEBUGFS_CMT)
526 dnl handle --enable-imager
528 AC_ARG_ENABLE([imager],
529 [ --disable-imager disable support of e2image program],
530 if test "$enableval" = "no"
532 AC_MSG_RESULT([Disabling e2image support])
536 AC_MSG_RESULT([Enabling e2image support])
539 AC_MSG_RESULT([Enabling e2image support by default])
544 dnl handle --enable-resizer
546 AC_ARG_ENABLE([resizer],
547 [ --disable-resizer disable support of e2resize program],
548 if test "$enableval" = "no"
550 AC_MSG_RESULT([Disabling e2resize support])
554 AC_MSG_RESULT([Enabling e2resize support])
557 AC_MSG_RESULT([Enabling e2resize support by default])
560 AC_SUBST(RESIZER_CMT)
562 dnl See whether to install the `fsck' wrapper program (that calls e2fsck)
564 AC_ARG_ENABLE([fsck],
565 [ --enable-fsck build fsck wrapper program],
566 [if test "$enableval" = "no"
568 FSCK_PROG='' FSCK_MAN=''
569 AC_MSG_RESULT([Not building fsck wrapper])
571 FSCK_PROG=fsck FSCK_MAN=fsck.8
572 AC_MSG_RESULT([Building fsck wrapper])
577 FSCK_PROG='' FSCK_MAN=''
578 AC_MSG_RESULT([Not building fsck wrapper by default])
581 FSCK_PROG=fsck FSCK_MAN=fsck.8
582 AC_MSG_RESULT([Building fsck wrapper by default])
588 dnl See whether to install the `e2initrd-helper' program
590 AC_ARG_ENABLE([e2initrd-helper],
591 [ --enable-e2initrd-helper build e2initrd-helper program],
592 [if test "$enableval" = "no"
594 E2INITRD_PROG='' E2INITRD_MAN=''
595 AC_MSG_RESULT([Not building e2initrd helper])
597 E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8
598 AC_MSG_RESULT([Building e2initrd helper])
601 E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8
602 AC_MSG_RESULT([Building e2initrd helper by default])
604 AC_SUBST(E2INITRD_PROG)
605 AC_SUBST(E2INITRD_MAN)
610 [ --disable-tls disable use of thread local support],
611 [if test "$enableval" = "no"
614 AC_MSG_RESULT([Disabling thread local support])
617 AC_MSG_RESULT([Enabling thread local support])
620 if test -n "$WITH_DIET_LIBC"
623 AC_MSG_RESULT([Diet libc does not support thread local support])
626 AC_MSG_RESULT([Try using thread local support by default])
629 if test "$try_tls" = "yes"
636 AC_ARG_ENABLE([uuidd],
637 [ --disable-uuidd disable building the uuid daemon],
638 [if test "$enableval" = "no"
640 AC_MSG_RESULT([Not building uuidd])
645 AC_MSG_RESULT([Building uuidd])
650 AC_MSG_RESULT([Building uuidd by default])
656 MAKEFILE_LIBRARY=$srcdir/lib/Makefile.library
657 AC_SUBST_FILE(MAKEFILE_LIBRARY)
659 dnl Add internationalization support, using gettext.
661 GETTEXT_PACKAGE=e2fsprogs
663 VERSION="$E2FSPROGS_VERSION"
665 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
666 AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
667 AC_SUBST(GETTEXT_PACKAGE)
673 dnl End of configuration options
675 AC_SUBST(BINARY_TYPE)
678 AC_PATH_PROG(LN, ln, ln)
680 AC_PATH_PROG(MV, mv, mv)
681 AC_PATH_PROG(CP, cp, cp)
682 AC_PATH_PROG(RM, rm, rm)
683 AC_PATH_PROG(CHMOD, chmod, :)
686 AC_PATH_PROG(SED, sed, sed)
687 AC_PATH_PROG(PERL, perl, perl)
688 AC_PATH_PROG(LDCONFIG, ldconfig, :)
689 AC_CHECK_TOOL(AR, ar, ar)
690 AC_CHECK_TOOL(RANLIB, ranlib, :)
691 AC_CHECK_TOOL(STRIP, strip, :)
692 AC_CHECK_PROG(MAKEINFO, makeinfo, makeinfo, )
693 if test "_$MAKEINFO" = "_"; then
694 MAKEINFO="@echo Makeinfo is missing. Info documentation will not be built.;true"
699 *** Makeinfo is missing. Info documentation will not be built.])
707 # See if we need a separate native compiler.
708 if test $cross_compiling = no; then
712 AC_CHECK_PROGS(BUILD_CC, gcc cc)
714 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)
715 AC_CHECK_HEADERS(sys/disk.h sys/mount.h,,,
718 #include <sys/queue.h>
721 AC_CHECK_HEADERS(net/if.h,,,
724 #include <sys/types.h>
727 #include <sys/socket.h>
731 dnl Check to see if dirent has member d_reclen. On cygwin those d_reclen
732 dnl is not decleared.
733 AC_CHECK_MEMBER(struct dirent.d_reclen,[AC_DEFINE(HAVE_RECLEN_DIRENT)],,
734 [#include <dirent.h>])
735 dnl Check to see if ssize_t was decleared
736 AC_CHECK_TYPE(ssize_t,[AC_DEFINE(HAVE_TYPE_SSIZE_T)],,
737 [#include <sys/types.h>])
739 dnl Check to see if llseek() is declared in unistd.h. On some libc's
740 dnl it is, and on others it isn't..... Thank you glibc developers....
742 AC_CHECK_DECL(llseek,[AC_DEFINE(HAVE_LLSEEK_PROTOTYPE)],,
743 [#include <unistd.h>])
745 dnl Check to see if lseek64() is declared in unistd.h. Glibc's header files
746 dnl are so convoluted that I can't tell whether it will always be defined,
747 dnl and if it isn't defined while lseek64 is defined in the library,
748 dnl disaster will strike.
750 dnl Warning! Use of --enable-gcc-wall may throw off this test.
753 AC_CHECK_DECL(lseek64,[AC_DEFINE(HAVE_LSEEK64_PROTOTYPE)],,
754 [#define _LARGEFILE_SOURCE
755 #define _LARGEFILE64_SOURCE
756 #include <unistd.h>])
760 AC_CHECK_SIZEOF(short)
762 AC_CHECK_SIZEOF(long)
763 AC_CHECK_SIZEOF(long long)
764 SIZEOF_SHORT=$ac_cv_sizeof_short
765 SIZEOF_INT=$ac_cv_sizeof_int
766 SIZEOF_LONG=$ac_cv_sizeof_long
767 SIZEOF_LONG_LONG=$ac_cv_sizeof_long_long
768 AC_SUBST(SIZEOF_SHORT)
770 AC_SUBST(SIZEOF_LONG)
771 AC_SUBST(SIZEOF_LONG_LONG)
773 BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh
774 ASM_TYPES_HEADER=./asm_types.h
775 AC_SUBST_FILE(ASM_TYPES_HEADER)
777 dnl Save the configuration #defines needed for the public ext2fs.h
780 echo "/* These defines are needed for the public ext2fs.h header file */" \
782 if grep HAVE_SYS_TYPES_H confdefs.h > tmp_config.$$; then
783 uniq tmp_config.$$ >> public_config.h
785 echo "#undef HAVE_SYS_TYPES_H" >> public_config.h
787 if grep WORDS_BIGENDIAN confdefs.h > tmp_config.$$; then
788 uniq tmp_config.$$ >> public_config.h
790 echo "#undef WORDS_BIGENDIAN" >> public_config.h
793 PUBLIC_CONFIG_HEADER=./public_config.h
794 AC_SUBST_FILE(PUBLIC_CONFIG_HEADER)
796 dnl See if we have inttypes.h and if intptr_t is defined
798 AC_CHECK_HEADERS([inttypes.h])
799 AC_CHECK_TYPES(intptr_t)
801 dnl See if struct stat has a st_flags field, in which case we can get file
802 dnl flags somewhat portably. Also check for the analogous setter, chflags().
804 AC_MSG_CHECKING(whether struct stat has a st_flags field)
805 AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags,
806 AC_TRY_COMPILE([#include <sys/stat.h>],
807 [struct stat stat; stat.st_flags = 0;],
808 [e2fsprogs_cv_struct_st_flags=yes],
809 [e2fsprogs_cv_struct_st_flags=no]))
810 AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags)
811 if test "$e2fsprogs_cv_struct_st_flags" = yes; then
812 AC_MSG_CHECKING(whether st_flags field is useful)
813 AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags_immut,
814 AC_TRY_COMPILE([#include <sys/stat.h>],
815 [struct stat stat; stat.st_flags |= UF_IMMUTABLE;],
816 [e2fsprogs_cv_struct_st_flags_immut=yes],
817 [e2fsprogs_cv_struct_st_flags_immut=no]))
818 AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags_immut)
819 if test "$e2fsprogs_cv_struct_st_flags_immut" = yes; then
820 AC_DEFINE(HAVE_STAT_FLAGS)
824 dnl Check for the presence of SA_LEN
826 AC_CHECK_MEMBER(struct sockaddr.sa_len,
827 AC_DEFINE_UNQUOTED(HAVE_SA_LEN,1,[Define if struct sockaddr contains sa_len]),,
828 [#include <sys/types.h>
829 #include <sys/socket.h>])
831 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)
833 dnl Check to see if -lsocket is required (solaris) to make something
834 dnl that uses socket() to compile; this is needed for the UUID library
837 AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket])
840 dnl Check to see if libdl exists for the sake of dlopen
843 AC_CHECK_LIB(dl, dlopen,
845 AC_DEFINE(HAVE_DLOPEN)])
848 dnl See if optreset exists
850 AC_MSG_CHECKING(for optreset)
851 AC_CACHE_VAL(ac_cv_have_optreset,
852 [AC_EGREP_HEADER(optreset, unistd.h,
853 ac_cv_have_optreset=yes, ac_cv_have_optreset=no)])dnl
854 AC_MSG_RESULT($ac_cv_have_optreset)
855 if test $ac_cv_have_optreset = yes; then
856 AC_DEFINE(HAVE_OPTRESET)
859 dnl Test for sem_init, and which library it might require:
862 AC_CHECK_FUNC(sem_init, ,
863 AC_CHECK_LIB(pthread, sem_init,
864 AC_DEFINE(HAVE_SEM_INIT)
865 SEM_INIT_LIB=-lpthread,
866 AC_CHECK_LIB(rt, sem_init,
867 AC_DEFINE(HAVE_SEM_INIT)
869 AC_CHECK_LIB(posix4, sem_init,
870 AC_DEFINE(HAVE_SEM_INIT)
871 SEM_INIT_LIB=-lposix4))))dnl
872 AC_SUBST(SEM_INIT_LIB)
874 dnl Check for unified diff
876 AC_MSG_CHECKING(for unified diff option)
877 if diff -u $0 $0 > /dev/null 2>&1 ; then
882 AC_MSG_RESULT($UNI_DIFF_OPTS)
883 AC_SUBST(UNI_DIFF_OPTS)
885 dnl We use the EXT2 ioctls only under Linux
889 AC_DEFINE(HAVE_EXT2_IOCTLS)
893 dnl OS-specific uncomment control
911 dnl Linux and Hurd places root files in the / by default
914 linux* | gnu* | k*bsd*-gnu)
915 if test "$prefix" = NONE -a "$root_prefix" = NONE ; then
917 AC_MSG_RESULT([On $host_os systems, root_prefix defaults to ''])
922 dnl On Linux/hurd, force the prefix to be /usr
925 linux* | gnu* | k*bsd*-gnu)
926 if test "$prefix" = NONE ; then
928 AC_MSG_RESULT([On $host_os systems, prefix defaults to /usr])
929 if test "$mandir" = '${prefix}/man' ; then
930 AC_MSG_RESULT([...and mandir defaults to /usr/share/man])
931 mandir=/usr/share/man
936 if test "$root_prefix" = NONE ; then
937 if test "$prefix" = NONE ; then
938 root_prefix="$ac_default_prefix"
940 root_prefix="$prefix"
943 root_sbindir=$sbindir
945 root_sysconfdir=$sysconfdir
947 root_bindir='${root_prefix}/bin'
948 root_sbindir='${root_prefix}/sbin'
949 root_libdir='${root_prefix}/lib'
950 root_sysconfdir='${root_prefix}/etc'
952 if test "$bindir" != '${exec_prefix}/bin'; then
954 AC_MSG_RESULT([Setting root_bindir to $root_bindir])
956 if test "$sbindir" != '${exec_prefix}/sbin'; then
957 root_sbindir=$sbindir
958 AC_MSG_RESULT([Setting root_sbindir to $root_sbindir])
960 if test "$libdir" != '${exec_prefix}/lib'; then
962 AC_MSG_RESULT([Setting root_libdir to $root_libdir])
964 if test "$sysconfdir" != '${prefix}/etc'; then
965 root_sysconfdir=$sysconfdir
966 AC_MSG_RESULT([Setting root_sysconfdir to $root_sysconfdir])
968 AC_SUBST(root_prefix)
969 AC_SUBST(root_bindir)
970 AC_SUBST(root_sbindir)
971 AC_SUBST(root_libdir)
972 AC_SUBST(root_sysconfdir)
974 dnl See if -static works.
976 AC_MSG_CHECKING([whether linker accepts -static])
977 AC_CACHE_VAL(ac_cv_e2fsprogs_use_static,
978 [SAVE_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS -static"
979 AC_TRY_LINK([#include <stdio.h>],[fflush(stdout);],
980 ac_cv_e2fsprogs_use_static=yes, ac_cv_e2fsprogs_use_static=no)
981 LDFLAGS=$SAVE_LDFLAGS])
983 dnl Regardless of how the test turns out, Solaris doesn't handle -static
984 dnl This is caused by the socket library requiring the nsl library, which
985 dnl requires the -dl library, which only works for dynamically linked
986 dnl programs. It basically means you can't have statically linked programs
987 dnl which use the network under Solaris.
991 ac_cv_e2fsprogs_use_static=no
994 AC_MSG_RESULT($ac_cv_e2fsprogs_use_static)
996 if test $ac_cv_e2fsprogs_use_static = yes; then
997 LDFLAG_STATIC=-static
999 AC_SUBST(LDFLAG_STATIC)
1001 dnl Work around mysterious Darwin / GNU libintl problem
1002 dnl (__asm__ redirection doesn't work for some mysterious reason. Looks like
1003 dnl Apple hacked gcc somehow?)
1007 AC_MSG_RESULT([Using Apple Darwin / GNU libintl workaround])
1008 AC_DEFINE(_INTL_REDIRECT_MACROS)
1012 dnl Make the ss and et directories work correctly.
1014 SS_DIR=`cd ${srcdir}/lib/ss; pwd`
1015 ET_DIR=`cd ${srcdir}/lib/et; pwd`
1019 dnl Only try to run the test suite if we're not cross compiling.
1021 if test "$cross_compiling" = yes ; then
1026 AC_SUBST(DO_TEST_SUITE)
1028 dnl Only include the intl include files if we're building with them
1031 if test "$USE_INCLUDED_LIBINTL" = "yes" ; then
1032 INTL_FLAGS='-I$(top_builddir)/intl -I$(top_srcdir)/intl'
1034 AC_SUBST(INTL_FLAGS)
1038 if test $cross_compiling = no; then
1039 BUILD_CFLAGS="$CFLAGS"
1040 BUILD_LDFLAGS="$LDFLAGS"
1045 AC_SUBST(BUILD_CFLAGS)
1046 AC_SUBST(BUILD_LDFLAGS)
1048 dnl Make our output files, being sure that we create the some miscellaneous
1051 test -d lib || mkdir lib
1052 test -d include || mkdir include
1053 test -d include/linux || mkdir include/linux
1054 test -d include/asm || mkdir include/asm
1055 for i in MCONFIG Makefile e2fsprogs.spec \
1056 util/Makefile util/subst.conf util/gen-tarball \
1057 lib/et/Makefile lib/ss/Makefile lib/e2p/Makefile \
1058 lib/ext2fs/Makefile lib/ext2fs/ext2_types.h \
1059 lib/uuid/Makefile lib/uuid/uuid_types.h \
1060 lib/blkid/Makefile lib/blkid/blkid_types.h \
1061 lib/ss/ss.pc lib/uuid/uuid.pc lib/et/com_err.pc \
1062 lib/e2p/e2p.pc lib/blkid/blkid.pc lib/ext2fs/ext2fs.pc \
1063 misc/Makefile ext2ed/Makefile e2fsck/Makefile \
1064 debugfs/Makefile tests/Makefile tests/progs/Makefile \
1065 resize/Makefile doc/Makefile intl/Makefile \
1066 intl/libgnuintl.h po/Makefile.in ; do
1067 if test -d `dirname ${srcdir}/$i` ; then
1068 outlist="$outlist $i"
1072 if test -f util/gen-tarball; then chmod +x util/gen-tarball; fi