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)
66 dnl Check to see if libdl exists for the sake of dlopen
69 AC_CHECK_LIB(dl, dlopen,
71 AC_DEFINE(HAVE_DLOPEN)])
77 AC_ARG_WITH([diet-libc],
78 [ --with-diet-libc use diet libc],
79 CC="diet cc -nostdinc"
81 AC_MSG_RESULT(CC=$CC))dnl
84 AC_HELP_STRING([--with-cc],[no longer supported, use CC= instead]),
85 AC_MSG_ERROR([--with-cc no longer supported; use CC= instead]))
88 AC_HELP_STRING([--with-ccopts],[no longer supported, use CFLAGS= instead]),
89 AC_MSG_ERROR([--with-ccopts no longer supported; use CFLAGS= instead]))
92 AC_HELP_STRING([--with-ldopts],[no longer supported, use LDFLAGS= instead]),
93 AC_MSG_ERROR([--with-ldopts no longer supported; use LDFLAGS= instead]))
98 dnl On systems without linux header files, we add an extra include directory
99 dnl that holds enough to fake it (hopefully). Note that the $(top_srcdir) here
100 dnl is quoted so that it gets expanded by make, not by configure.
102 AC_CHECK_HEADER(linux/fs.h, [linux_headers=yes], [linux_headers=no])
103 if test "$linux_headers" != yes; then
104 LINUX_INCLUDE='-I$(top_builddir)/include'
106 AC_SUBST(LINUX_INCLUDE)
108 dnl Alpha computers use fast and imprecise floating point code that may
109 dnl miss exceptions by default. Force sane options if we're using GCC.
110 AC_MSG_CHECKING(for additional special compiler flags)
114 alpha) addcflags="-mieee" ;;
117 if test "x$addcflags" != x
119 AC_MSG_RESULT($addcflags)
120 CFLAGS="$addcflags $CFLAGS"
122 AC_MSG_RESULT([[(none)]])
125 dnl Set default values for library extentions. Will be dealt with after
126 dnl parsing configuration opions, which may modify these
132 dnl Allow separate `root_prefix' to be specified
134 AC_ARG_WITH([root-prefix],
135 [ --with-root-prefix=PREFIX override prefix variable for files to be placed in the root],
136 root_prefix=$withval,
139 dnl handle --enable-maintainer-mode
141 AC_ARG_ENABLE([maintainer-mode],
142 [ --enable-maintainer-mode enable makefile rules useful for maintainers],
143 if test "$enableval" = "no"
146 AC_MSG_RESULT([Disabling maintainer mode])
149 AC_MSG_RESULT([Enabling maintainer mode])
153 AC_MSG_RESULT([Disabling maintainer mode by default])
155 AC_SUBST(MAINTAINER_CMT)
157 dnl handle --enable-verbose-makecmds
159 AC_ARG_ENABLE([verbose-makecmds],
160 [ --enable-verbose-makecmds enable verbose make command output],
161 if test "$enableval" = "no"
163 AC_MSG_RESULT([Disabling verbose make commands])
167 AC_MSG_RESULT([Enabling verbose make commands])
172 AC_MSG_RESULT([Disabling verbose make commands])
179 dnl handle --enable-compression
181 AC_ARG_ENABLE([compression],
182 [ --enable-compression enable EXPERIMENTAL compression support],
183 if test "$enableval" = "no"
185 AC_MSG_RESULT([Disabling compression support])
187 AC_DEFINE(ENABLE_COMPRESSION)
188 AC_MSG_RESULT([Enabling compression support])
189 AC_MSG_WARN([Compression support is experimental])
192 AC_MSG_RESULT([Disabling compression support by default])
195 dnl handle --enable-htree
197 AC_ARG_ENABLE([htree],
198 [ --enable-htree enable EXPERIMENTAL htree directory support],
199 if test "$enableval" = "no"
202 AC_MSG_RESULT([Disabling htree directory support])
205 AC_DEFINE(ENABLE_HTREE)
206 AC_MSG_RESULT([Enabling htree directory support])
210 AC_DEFINE(ENABLE_HTREE)
211 AC_MSG_RESULT([Enabling htree directory support by default])
215 dnl This needs to be before all of the --enable-*-shlibs options
217 E2_PKG_CONFIG_STATIC=--static
221 dnl handle --enable-elf-shlibs
223 AC_ARG_ENABLE([elf-shlibs],
224 [ --enable-elf-shlibs select ELF shared libraries],
225 if test "$enableval" = "no"
228 MAKEFILE_ELF=/dev/null
229 AC_MSG_RESULT([Disabling ELF shared libraries])
231 E2_PKG_CONFIG_STATIC=
233 MAKEFILE_ELF=$srcdir/lib/Makefile.elf-lib
236 MAKEFILE_ELF=$srcdir/lib/Makefile.solaris-lib
242 LDFLAG_DYNAMIC=['-Wl,-rpath-link,$(top_builddir)/lib']
243 AC_MSG_RESULT([Enabling ELF shared libraries])
246 MAKEFILE_ELF=/dev/null
248 AC_MSG_RESULT([Disabling ELF shared libraries by default])
251 AC_SUBST_FILE(MAKEFILE_ELF)
253 dnl handle --enable-bsd-shlibs
255 AC_ARG_ENABLE([bsd-shlibs],
256 [ --enable-bsd-shlibs select BSD shared libraries],
257 if test "$enableval" = "no"
260 MAKEFILE_BSDLIB=/dev/null
261 AC_MSG_RESULT([Disabling BSD shared libraries])
263 E2_PKG_CONFIG_STATIC=
265 MAKEFILE_BSDLIB=$srcdir/lib/Makefile.bsd-lib
269 MAKEFILE_BSDLIB=$srcdir/lib/Makefile.darwin-lib
273 AC_MSG_RESULT([Enabling BSD shared libraries])
276 MAKEFILE_BSDLIB=/dev/null
278 AC_MSG_RESULT([Disabling BSD shared libraries by default])
281 AC_SUBST_FILE(MAKEFILE_BSDLIB)
283 dnl handle --enable-profile
285 AC_ARG_ENABLE([profile],
286 [ --enable-profile build profiling libraries],
287 if test "$enableval" = "no"
290 MAKEFILE_PROFILE=/dev/null
291 AC_MSG_RESULT([Disabling profiling libraries])
294 MAKEFILE_PROFILE=$srcdir/lib/Makefile.profile
295 PROFILED_LIB_EXT=_p.a
296 AC_MSG_RESULT([Building profiling libraries])
300 MAKEFILE_PROFILE=/dev/null
301 AC_MSG_RESULT([Disabling profiling libraries by default])
303 AC_SUBST(PROFILE_CMT)
304 AC_SUBST_FILE(MAKEFILE_PROFILE)
306 dnl handle --enable-checker
308 AC_ARG_ENABLE([checker],
309 [ --enable-checker build checker libraries],
310 if test "$enableval" = "no"
313 MAKEFILE_CHECKER=/dev/null
314 AC_MSG_RESULT([Disabling checker libraries])
317 MAKEFILE_CHECKER=$srcdir/lib/Makefile.checker
318 AC_MSG_RESULT([Building checker libraries])
322 MAKEFILE_CHECKER=/dev/null
323 AC_MSG_RESULT([Disabling checker libraries by default])
325 AC_SUBST(CHECKER_CMT)
326 AC_SUBST_FILE(MAKEFILE_CHECKER)
328 dnl Substitute library extensions
331 AC_SUBST(STATIC_LIB_EXT)
332 AC_SUBST(PROFILED_LIB_EXT)
333 AC_SUBST(LDFLAG_DYNAMIC)
334 AC_SUBST(PRIVATE_LIBS_CMT)
336 dnl handle --enable-jbd-debug
338 AC_ARG_ENABLE([jbd-debug],
339 [ --enable-jbd-debug enable journal debugging],
340 if test "$enableval" = "no"
342 AC_MSG_RESULT([Disabling journal debugging])
344 AC_DEFINE(CONFIG_JBD_DEBUG)
345 AC_MSG_RESULT([Enabling journal debugging])
348 AC_MSG_RESULT([Disabling journal debugging by default])
351 dnl handle --enable-blkid-debug
353 AC_ARG_ENABLE([blkid-debug],
354 [ --enable-blkid-debug enable blkid debugging],
355 if test "$enableval" = "no"
357 AC_MSG_RESULT([Disabling blkid debugging])
359 AC_DEFINE(CONFIG_BLKID_DEBUG)
360 AC_MSG_RESULT([Enabling blkid debugging])
363 AC_MSG_RESULT([Disabling blkid debugging by default])
366 dnl handle --enable-testio-debug
368 AC_ARG_ENABLE([testio-debug],
369 [ --disable-testio-debug disable the use of the test I/O manager for debugging],
370 if test "$enableval" = "no"
372 AC_MSG_RESULT([Disabling testio debugging])
376 AC_DEFINE(CONFIG_TESTIO_DEBUG)
377 AC_MSG_RESULT([Enabling testio debugging])
380 AC_MSG_RESULT([Enabling testio debugging by default])
381 AC_DEFINE(CONFIG_TESTIO_DEBUG)
384 AC_SUBST(TEST_IO_CMT)
386 dnl handle --disable-libuuid
396 AC_ARG_ENABLE([libuuid],
397 [ --disable-libuuid do not build private uuid library],
398 if test "$enableval" = "no"
400 if test -z "$PKG_CONFIG"; then
401 AC_MSG_ERROR([pkg-config not installed; please install it.])
404 AC_CHECK_LIB(uuid, uuid_generate,
405 [LIBUUID=`$PKG_CONFIG --libs uuid`;
406 STATIC_LIBUUID=`$PKG_CONFIG --static --libs uuid`],
407 [AC_MSG_ERROR([external uuid library not found])],
410 AC_MSG_RESULT([Disabling private uuid library])
412 LIBUUID='$(LIB)/libuuid'$LIB_EXT
414 STATIC_LIBUUID='$(LIB)/libuuid'$STATIC_LIB_EXT
415 DEPSTATIC_LIBUUID=$STATIC_LIBUUID
416 PROFILED_LIBUUID='$(LIB)/libuuid'$PROFILED_LIB_EXT
417 DEPPROFILED_LIBUUID=$PROFILED_LIBUUID
418 AC_MSG_RESULT([Enabling private uuid library])
421 LIBUUID='$(LIB)/libuuid'$LIB_EXT
423 STATIC_LIBUUID='$(LIB)/libuuid'$STATIC_LIB_EXT
424 DEPSTATIC_LIBUUID=$STATIC_LIBUUID
425 PROFILED_LIBUUID='$(LIB)/libuuid'$PROFILED_LIB_EXT
426 DEPPROFILED_LIBUUID=$PROFILED_LIBUUID
427 AC_MSG_RESULT([Enabling private uuid library by default])
431 AC_SUBST(STATIC_LIBUUID)
432 AC_SUBST(DEPSTATIC_LIBUUID)
433 AC_SUBST(PROFILED_LIBUUID)
434 AC_SUBST(DEPPROFILED_LIBUUID)
437 dnl handle --disable-libblkid
445 DEPPROFILED_LIBBLKID=
447 AC_ARG_ENABLE([libblkid],
448 [ --disable-libblkid do not build private blkid library],
449 if test "$enableval" = "no"
451 if test -z "$PKG_CONFIG"; then
452 AC_MSG_ERROR([pkg-config not installed; please install it.])
455 AC_CHECK_LIB(blkid, blkid_get_cache,
456 [LIBBLKID=`$PKG_CONFIG --libs blkid`;
457 STATIC_LIBBLKID=`$PKG_CONFIG --static --libs blkid`],
458 [AC_MSG_ERROR([external blkid library not found])],
461 AC_MSG_RESULT([Disabling private blkid library])
463 LIBBLKID='$(LIB)/libblkid'$LIB_EXT
464 DEPLIBBLKID=$LIBBLKID
465 STATIC_LIBBLKID='$(LIB)/libblkid'$STATIC_LIB_EXT
466 DEPSTATIC_LIBBLKID=$STATIC_LIBBLKID
467 PROFILED_LIBBLKID='$(LIB)/libblkid'$PROFILED_LIB_EXT
468 DEPPROFILED_LIBBLKID=$PROFILED_LIBBLKID
469 AC_DEFINE(CONFIG_BUILD_FINDFS)
470 AC_MSG_RESULT([Enabling private blkid library])
473 LIBBLKID='$(LIB)/libblkid'$LIB_EXT
474 DEPLIBBLKID=$LIBBLKID
475 STATIC_LIBBLKID='$(LIB)/libblkid'$STATIC_LIB_EXT
476 DEPSTATIC_LIBBLKID=$STATIC_LIBBLKID
477 PROFILED_LIBBLKID='$(LIB)/libblkid'$PROFILED_LIB_EXT
478 DEPPROFILED_LIBBLKID=$PROFILED_LIBBLKID
479 AC_DEFINE(CONFIG_BUILD_FINDFS)
480 AC_MSG_RESULT([Enabling private blkid library by default])
483 AC_SUBST(DEPLIBBLKID)
484 AC_SUBST(STATIC_LIBBLKID)
485 AC_SUBST(DEPSTATIC_LIBBLKID)
486 AC_SUBST(PROFILED_LIBBLKID)
487 AC_SUBST(DEPPROFILED_LIBBLKID)
490 dnl handle --enable-debugfs
492 AC_ARG_ENABLE([debugfs],
493 [ --disable-debugfs disable support of debugfs program],
494 if test "$enableval" = "no"
496 AC_MSG_RESULT([Disabling debugfs support])
500 AC_MSG_RESULT([Enabling debugfs support])
503 AC_MSG_RESULT([Enabling debugfs support by default])
506 AC_SUBST(DEBUGFS_CMT)
508 dnl handle --enable-imager
510 AC_ARG_ENABLE([imager],
511 [ --disable-imager disable support of e2image program],
512 if test "$enableval" = "no"
514 AC_MSG_RESULT([Disabling e2image support])
518 AC_MSG_RESULT([Enabling e2image support])
521 AC_MSG_RESULT([Enabling e2image support by default])
526 dnl handle --enable-resizer
528 AC_ARG_ENABLE([resizer],
529 [ --disable-resizer disable support of e2resize program],
530 if test "$enableval" = "no"
532 AC_MSG_RESULT([Disabling e2resize support])
536 AC_MSG_RESULT([Enabling e2resize support])
539 AC_MSG_RESULT([Enabling e2resize support by default])
542 AC_SUBST(RESIZER_CMT)
544 dnl See whether to install the `fsck' wrapper program (that calls e2fsck)
546 AC_ARG_ENABLE([fsck],
547 [ --enable-fsck build fsck wrapper program],
548 [if test "$enableval" = "no"
550 FSCK_PROG='' FSCK_MAN=''
551 AC_MSG_RESULT([Not building fsck wrapper])
553 FSCK_PROG=fsck FSCK_MAN=fsck.8
554 AC_MSG_RESULT([Building fsck wrapper])
559 FSCK_PROG='' FSCK_MAN=''
560 AC_MSG_RESULT([Not building fsck wrapper by default])
563 FSCK_PROG=fsck FSCK_MAN=fsck.8
564 AC_MSG_RESULT([Building fsck wrapper by default])
570 dnl See whether to install the `e2initrd-helper' program
572 AC_ARG_ENABLE([e2initrd-helper],
573 [ --enable-e2initrd-helper build e2initrd-helper program],
574 [if test "$enableval" = "no"
576 E2INITRD_PROG='' E2INITRD_MAN=''
577 AC_MSG_RESULT([Not building e2initrd helper])
579 E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8
580 AC_MSG_RESULT([Building e2initrd helper])
583 E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8
584 AC_MSG_RESULT([Building e2initrd helper by default])
586 AC_SUBST(E2INITRD_PROG)
587 AC_SUBST(E2INITRD_MAN)
592 [ --disable-tls disable use of thread local support],
593 [if test "$enableval" = "no"
596 AC_MSG_RESULT([Disabling thread local support])
599 AC_MSG_RESULT([Enabling thread local support])
602 if test -n "$WITH_DIET_LIBC"
605 AC_MSG_RESULT([Diet libc does not support thread local support])
608 AC_MSG_RESULT([Try using thread local support by default])
611 if test "$try_tls" = "yes"
618 AC_ARG_ENABLE([uuidd],
619 [ --disable-uuidd disable building the uuid daemon],
620 [if test "$enableval" = "no"
622 AC_MSG_RESULT([Not building uuidd])
627 AC_MSG_RESULT([Building uuidd])
632 AC_MSG_RESULT([Building uuidd by default])
638 MAKEFILE_LIBRARY=$srcdir/lib/Makefile.library
639 AC_SUBST_FILE(MAKEFILE_LIBRARY)
641 dnl Add internationalization support, using gettext.
643 GETTEXT_PACKAGE=e2fsprogs
645 VERSION="$E2FSPROGS_VERSION"
647 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
648 AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
649 AC_SUBST(GETTEXT_PACKAGE)
655 dnl End of configuration options
657 AC_SUBST(BINARY_TYPE)
660 AC_PATH_PROG(LN, ln, ln)
662 AC_PATH_PROG(MV, mv, mv)
663 AC_PATH_PROG(CP, cp, cp)
664 AC_PATH_PROG(RM, rm, rm)
665 AC_PATH_PROG(CHMOD, chmod, :)
668 AC_PATH_PROG(SED, sed, sed)
669 AC_PATH_PROG(PERL, perl, perl)
670 AC_PATH_PROG(LDCONFIG, ldconfig, :)
671 AC_CHECK_TOOL(AR, ar, ar)
672 AC_CHECK_TOOL(RANLIB, ranlib, :)
673 AC_CHECK_TOOL(STRIP, strip, :)
674 AC_CHECK_PROG(MAKEINFO, makeinfo, makeinfo, )
675 if test "_$MAKEINFO" = "_"; then
676 MAKEINFO="@echo Makeinfo is missing. Info documentation will not be built.;true"
681 *** Makeinfo is missing. Info documentation will not be built.])
689 # See if we need a separate native compiler.
690 if test $cross_compiling = no; then
694 AC_CHECK_PROGS(BUILD_CC, gcc cc)
696 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)
697 AC_CHECK_HEADERS(sys/disk.h sys/mount.h,,,
700 #include <sys/queue.h>
703 AC_CHECK_HEADERS(net/if.h,,,
706 #include <sys/types.h>
709 #include <sys/socket.h>
713 dnl Check to see if dirent has member d_reclen. On cygwin those d_reclen
714 dnl is not decleared.
715 AC_CHECK_MEMBER(struct dirent.d_reclen,[AC_DEFINE(HAVE_RECLEN_DIRENT)],,
716 [#include <dirent.h>])
717 dnl Check to see if ssize_t was decleared
718 AC_CHECK_TYPE(ssize_t,[AC_DEFINE(HAVE_TYPE_SSIZE_T)],,
719 [#include <sys/types.h>])
721 dnl Check to see if llseek() is declared in unistd.h. On some libc's
722 dnl it is, and on others it isn't..... Thank you glibc developers....
724 AC_CHECK_DECL(llseek,[AC_DEFINE(HAVE_LLSEEK_PROTOTYPE)],,
725 [#include <unistd.h>])
727 dnl Check to see if lseek64() is declared in unistd.h. Glibc's header files
728 dnl are so convoluted that I can't tell whether it will always be defined,
729 dnl and if it isn't defined while lseek64 is defined in the library,
730 dnl disaster will strike.
732 dnl Warning! Use of --enable-gcc-wall may throw off this test.
735 AC_CHECK_DECL(lseek64,[AC_DEFINE(HAVE_LSEEK64_PROTOTYPE)],,
736 [#define _LARGEFILE_SOURCE
737 #define _LARGEFILE64_SOURCE
738 #include <unistd.h>])
742 AC_CHECK_SIZEOF(short)
744 AC_CHECK_SIZEOF(long)
745 AC_CHECK_SIZEOF(long long)
746 SIZEOF_SHORT=$ac_cv_sizeof_short
747 SIZEOF_INT=$ac_cv_sizeof_int
748 SIZEOF_LONG=$ac_cv_sizeof_long
749 SIZEOF_LONG_LONG=$ac_cv_sizeof_long_long
750 AC_SUBST(SIZEOF_SHORT)
752 AC_SUBST(SIZEOF_LONG)
753 AC_SUBST(SIZEOF_LONG_LONG)
755 BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh
756 ASM_TYPES_HEADER=./asm_types.h
757 AC_SUBST_FILE(ASM_TYPES_HEADER)
759 dnl Save the configuration #defines needed for the public ext2fs.h
762 echo "/* These defines are needed for the public ext2fs.h header file */" \
764 if grep HAVE_SYS_TYPES_H confdefs.h > tmp_config.$$; then
765 uniq tmp_config.$$ >> public_config.h
767 echo "#undef HAVE_SYS_TYPES_H" >> public_config.h
769 if grep WORDS_BIGENDIAN confdefs.h > tmp_config.$$; then
770 uniq tmp_config.$$ >> public_config.h
772 echo "#undef WORDS_BIGENDIAN" >> public_config.h
775 PUBLIC_CONFIG_HEADER=./public_config.h
776 AC_SUBST_FILE(PUBLIC_CONFIG_HEADER)
778 dnl See if we have inttypes.h and if intptr_t is defined
780 AC_CHECK_HEADERS([inttypes.h])
781 AC_CHECK_TYPES(intptr_t)
783 dnl See if struct stat has a st_flags field, in which case we can get file
784 dnl flags somewhat portably. Also check for the analogous setter, chflags().
786 AC_MSG_CHECKING(whether struct stat has a st_flags field)
787 AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags,
788 AC_TRY_COMPILE([#include <sys/stat.h>],
789 [struct stat stat; stat.st_flags = 0;],
790 [e2fsprogs_cv_struct_st_flags=yes],
791 [e2fsprogs_cv_struct_st_flags=no]))
792 AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags)
793 if test "$e2fsprogs_cv_struct_st_flags" = yes; then
794 AC_MSG_CHECKING(whether st_flags field is useful)
795 AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags_immut,
796 AC_TRY_COMPILE([#include <sys/stat.h>],
797 [struct stat stat; stat.st_flags |= UF_IMMUTABLE;],
798 [e2fsprogs_cv_struct_st_flags_immut=yes],
799 [e2fsprogs_cv_struct_st_flags_immut=no]))
800 AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags_immut)
801 if test "$e2fsprogs_cv_struct_st_flags_immut" = yes; then
802 AC_DEFINE(HAVE_STAT_FLAGS)
806 dnl Check for the presence of SA_LEN
808 AC_CHECK_MEMBER(struct sockaddr.sa_len,
809 AC_DEFINE_UNQUOTED(HAVE_SA_LEN,1,[Define if struct sockaddr contains sa_len]),,
810 [#include <sys/types.h>
811 #include <sys/socket.h>])
813 dnl This will add -lblkid to the AC_CHECK_FUNCS search if we are using
814 dnl the system-provided blkid library
816 if test -n "$BLKID_CMT"; then
817 AC_SEARCH_LIBS([blkid_probe_all], [blkid])
820 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)
822 dnl Check to see if -lsocket is required (solaris) to make something
823 dnl that uses socket() to compile; this is needed for the UUID library
826 AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket])
829 dnl See if optreset exists
831 AC_MSG_CHECKING(for optreset)
832 AC_CACHE_VAL(ac_cv_have_optreset,
833 [AC_EGREP_HEADER(optreset, unistd.h,
834 ac_cv_have_optreset=yes, ac_cv_have_optreset=no)])dnl
835 AC_MSG_RESULT($ac_cv_have_optreset)
836 if test $ac_cv_have_optreset = yes; then
837 AC_DEFINE(HAVE_OPTRESET)
840 dnl Test for sem_init, and which library it might require:
843 AC_CHECK_FUNC(sem_init, ,
844 AC_CHECK_LIB(pthread, sem_init,
845 AC_DEFINE(HAVE_SEM_INIT)
846 SEM_INIT_LIB=-lpthread,
847 AC_CHECK_LIB(rt, sem_init,
848 AC_DEFINE(HAVE_SEM_INIT)
850 AC_CHECK_LIB(posix4, sem_init,
851 AC_DEFINE(HAVE_SEM_INIT)
852 SEM_INIT_LIB=-lposix4))))dnl
853 AC_SUBST(SEM_INIT_LIB)
855 dnl Check for unified diff
857 AC_MSG_CHECKING(for unified diff option)
858 if diff -u $0 $0 > /dev/null 2>&1 ; then
863 AC_MSG_RESULT($UNI_DIFF_OPTS)
864 AC_SUBST(UNI_DIFF_OPTS)
866 dnl We use the EXT2 ioctls only under Linux
870 AC_DEFINE(HAVE_EXT2_IOCTLS)
874 dnl OS-specific uncomment control
892 dnl Linux and Hurd places root files in the / by default
895 linux* | gnu* | k*bsd*-gnu)
896 if test "$prefix" = NONE -a "$root_prefix" = NONE ; then
898 AC_MSG_RESULT([On $host_os systems, root_prefix defaults to ''])
903 dnl On Linux/hurd, force the prefix to be /usr
906 linux* | gnu* | k*bsd*-gnu)
907 if test "$prefix" = NONE ; then
909 AC_MSG_RESULT([On $host_os systems, prefix defaults to /usr])
910 if test "$mandir" = '${prefix}/man' ; then
911 AC_MSG_RESULT([...and mandir defaults to /usr/share/man])
912 mandir=/usr/share/man
917 if test "$root_prefix" = NONE ; then
918 if test "$prefix" = NONE ; then
919 root_prefix="$ac_default_prefix"
921 root_prefix="$prefix"
924 root_sbindir=$sbindir
926 root_sysconfdir=$sysconfdir
928 root_bindir='${root_prefix}/bin'
929 root_sbindir='${root_prefix}/sbin'
930 root_libdir='${root_prefix}/lib'
931 root_sysconfdir='${root_prefix}/etc'
933 if test "$bindir" != '${exec_prefix}/bin'; then
935 AC_MSG_RESULT([Setting root_bindir to $root_bindir])
937 if test "$sbindir" != '${exec_prefix}/sbin'; then
938 root_sbindir=$sbindir
939 AC_MSG_RESULT([Setting root_sbindir to $root_sbindir])
941 if test "$libdir" != '${exec_prefix}/lib'; then
943 AC_MSG_RESULT([Setting root_libdir to $root_libdir])
945 if test "$sysconfdir" != '${prefix}/etc'; then
946 root_sysconfdir=$sysconfdir
947 AC_MSG_RESULT([Setting root_sysconfdir to $root_sysconfdir])
949 AC_SUBST(root_prefix)
950 AC_SUBST(root_bindir)
951 AC_SUBST(root_sbindir)
952 AC_SUBST(root_libdir)
953 AC_SUBST(root_sysconfdir)
955 dnl See if -static works.
957 AC_MSG_CHECKING([whether linker accepts -static])
958 AC_CACHE_VAL(ac_cv_e2fsprogs_use_static,
959 [SAVE_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS -static"
960 AC_TRY_LINK([#include <stdio.h>],[fflush(stdout);],
961 ac_cv_e2fsprogs_use_static=yes, ac_cv_e2fsprogs_use_static=no)
962 LDFLAGS=$SAVE_LDFLAGS])
964 dnl Regardless of how the test turns out, Solaris doesn't handle -static
965 dnl This is caused by the socket library requiring the nsl library, which
966 dnl requires the -dl library, which only works for dynamically linked
967 dnl programs. It basically means you can't have statically linked programs
968 dnl which use the network under Solaris.
972 ac_cv_e2fsprogs_use_static=no
975 AC_MSG_RESULT($ac_cv_e2fsprogs_use_static)
977 if test $ac_cv_e2fsprogs_use_static = yes; then
978 LDFLAG_STATIC=-static
980 AC_SUBST(LDFLAG_STATIC)
982 dnl Work around mysterious Darwin / GNU libintl problem
983 dnl (__asm__ redirection doesn't work for some mysterious reason. Looks like
984 dnl Apple hacked gcc somehow?)
988 AC_MSG_RESULT([Using Apple Darwin / GNU libintl workaround])
989 AC_DEFINE(_INTL_REDIRECT_MACROS)
993 dnl Make the ss and et directories work correctly.
995 SS_DIR=`cd ${srcdir}/lib/ss; pwd`
996 ET_DIR=`cd ${srcdir}/lib/et; pwd`
1000 dnl Only try to run the test suite if we're not cross compiling.
1002 if test "$cross_compiling" = yes ; then
1007 AC_SUBST(DO_TEST_SUITE)
1009 dnl Only include the intl include files if we're building with them
1012 if test "$USE_INCLUDED_LIBINTL" = "yes" ; then
1013 INTL_FLAGS='-I$(top_builddir)/intl -I$(top_srcdir)/intl'
1015 AC_SUBST(INTL_FLAGS)
1019 if test $cross_compiling = no; then
1020 BUILD_CFLAGS="$CFLAGS"
1021 BUILD_LDFLAGS="$LDFLAGS"
1026 AC_SUBST(BUILD_CFLAGS)
1027 AC_SUBST(BUILD_LDFLAGS)
1029 dnl Make our output files, being sure that we create the some miscellaneous
1032 test -d lib || mkdir lib
1033 test -d include || mkdir include
1034 test -d include/linux || mkdir include/linux
1035 test -d include/asm || mkdir include/asm
1036 for i in MCONFIG Makefile e2fsprogs.spec \
1037 util/Makefile util/subst.conf util/gen-tarball \
1038 lib/et/Makefile lib/ss/Makefile lib/e2p/Makefile \
1039 lib/ext2fs/Makefile lib/ext2fs/ext2_types.h \
1040 lib/uuid/Makefile lib/uuid/uuid_types.h \
1041 lib/blkid/Makefile lib/blkid/blkid_types.h \
1042 lib/ss/ss.pc lib/uuid/uuid.pc lib/et/com_err.pc \
1043 lib/e2p/e2p.pc lib/blkid/blkid.pc lib/ext2fs/ext2fs.pc \
1044 misc/Makefile ext2ed/Makefile e2fsck/Makefile \
1045 debugfs/Makefile tests/Makefile tests/progs/Makefile \
1046 resize/Makefile doc/Makefile intl/Makefile \
1047 intl/libgnuintl.h po/Makefile.in ; do
1048 if test -d `dirname ${srcdir}/$i` ; then
1049 outlist="$outlist $i"
1053 if test -f util/gen-tarball; then chmod +x util/gen-tarball; fi