Whamcloud - gitweb
9a18617971e1b9d5e207a1bdc85cb0c07e9fd576
[tools/e2fsprogs.git] / configure.in
1 AC_INIT(version.h)
2 AC_PREREQ(2.54)
3 AC_CONFIG_AUX_DIR(config)
4 AC_CONFIG_HEADERS([lib/config.h])
5 AH_BOTTOM([#include <dirpaths.h>])
6 MCONFIG=./MCONFIG
7 AC_SUBST_FILE(MCONFIG)
8 BINARY_TYPE=bin
9 dnl
10 dnl This is to figure out the version number and the date....
11 dnl
12 E2FSPROGS_VERSION=`grep E2FSPROGS_VERSION ${srcdir}/version.h  \
13         | awk '{print $3}' | tr \" " " | awk '{print $1}'`
14 DATE=`grep E2FSPROGS_DATE ${srcdir}/version.h | awk '{print $3}' \
15         | tr \" " "`
16 E2FSPROGS_DAY=`echo $DATE | awk -F- '{print $1}'`
17 MONTH=`echo $DATE | awk -F- '{print $2}'`
18 YEAR=`echo $DATE | awk -F- '{print $3}'`
19
20 if expr $YEAR ">" 1900 > /dev/null ; then
21         E2FSPROGS_YEAR=$YEAR
22 elif expr $YEAR ">" 90 >/dev/null ; then
23         E2FSPROGS_YEAR=19$YEAR
24 else
25         E2FSPROGS_YEAR=20$YEAR
26 fi
27
28 case $MONTH in
29 Jan)    MONTH_NUM=01; E2FSPROGS_MONTH="January" ;;
30 Feb)    MONTH_NUM=02; E2FSPROGS_MONTH="February" ;;
31 Mar)    MONTH_NUM=03; E2FSPROGS_MONTH="March" ;;
32 Apr)    MONTH_NUM=04; E2FSPROGS_MONTH="April" ;;
33 May)    MONTH_NUM=05; E2FSPROGS_MONTH="May" ;;
34 Jun)    MONTH_NUM=06; E2FSPROGS_MONTH="June" ;;
35 Jul)    MONTH_NUM=07; E2FSPROGS_MONTH="July" ;;
36 Aug)    MONTH_NUM=08; E2FSPROGS_MONTH="August" ;;
37 Sep)    MONTH_NUM=09; E2FSPROGS_MONTH="September" ;;
38 Oct)    MONTH_NUM=10; E2FSPROGS_MONTH="October" ;;
39 Nov)    MONTH_NUM=11; E2FSPROGS_MONTH="November" ;;
40 Dec)    MONTH_NUM=12; E2FSPROGS_MONTH="December" ;;
41 *)      AC_MSG_WARN([Unknown month $MONTH??]) ;;
42 esac
43
44 base_ver=`echo $E2FSPROGS_VERSION | \
45                sed -e 's/-WIP//' -e 's/pre-//' -e 's/-PLUS//'`
46
47 date_spec=${E2FSPROGS_YEAR}.${MONTH_NUM}.${E2FSPROGS_DAY}
48
49 case $E2FSPROGS_VERSION in
50 *-WIP|pre-*)
51         E2FSPROGS_PKGVER="$base_ver~WIP-$E2FSPROGS_YEAR-$MONTH_NUM-$E2FSPROGS_DAY"
52         ;;
53 *)
54         E2FSPROGS_PKGVER="$base_ver"
55         ;;
56 esac
57
58 unset DATE MONTH YEAR base_ver pre_vers date_spec
59 AC_MSG_RESULT([Generating configuration file for e2fsprogs version $E2FSPROGS_VERSION])
60 AC_MSG_RESULT([Release date is ${E2FSPROGS_MONTH}, ${E2FSPROGS_YEAR}])
61 AC_SUBST(E2FSPROGS_YEAR)
62 AC_SUBST(E2FSPROGS_MONTH)
63 AC_SUBST(E2FSPROGS_DAY)
64 AC_SUBST(E2FSPROGS_VERSION)
65 AC_SUBST(E2FSPROGS_PKGVER)
66 dnl
67 dnl Use diet libc
68 dnl 
69 WITH_DIET_LIBC=
70 AC_ARG_WITH([diet-libc],
71 [  --with-diet-libc        use diet libc],
72 CC="diet cc -nostdinc"
73 WITH_DIET_LIBC=yes
74 if test -z "$LIBS"
75 then
76         LIBS="-lcompat"
77 else
78         LIBS="$LIBS -lcompat"
79 fi
80 AC_MSG_RESULT(CC=$CC))dnl
81 dnl
82 AC_CANONICAL_HOST
83 dnl
84 dnl Check to see if libdl exists for the sake of dlopen
85 dnl
86 DLOPEN_LIB=''
87 AC_CHECK_LIB(dl, dlopen,
88 [DLOPEN_LIB=-ldl
89 AC_DEFINE(HAVE_DLOPEN, 1, [Define to 1 if dlopen/libdl exists])])
90 AC_SUBST(DLOPEN_LIB)
91 dnl
92 AC_ARG_WITH([cc],
93 AC_HELP_STRING([--with-cc],[no longer supported, use CC= instead]),
94 AC_MSG_ERROR([--with-cc no longer supported; use CC= instead]))
95 dnl
96 AC_ARG_WITH([ccopts],
97 AC_HELP_STRING([--with-ccopts],[no longer supported, use CFLAGS= instead]),
98 AC_MSG_ERROR([--with-ccopts no longer supported; use CFLAGS= instead]))
99 dnl
100 AC_ARG_WITH([ldopts],
101 AC_HELP_STRING([--with-ldopts],[no longer supported, use LDFLAGS= instead]),
102 AC_MSG_ERROR([--with-ldopts no longer supported; use LDFLAGS= instead]))
103 dnl
104 AC_PROG_CC
105 if test "$GCC" = yes; then
106    RDYNAMIC="-rdynamic"
107    AC_SUBST(RDYNAMIC)
108 fi
109 AC_PROG_CPP
110 dnl
111 dnl Alpha computers use fast and imprecise floating point code that may
112 dnl miss exceptions by default. Force sane options if we're using GCC.
113 AC_MSG_CHECKING(for additional special compiler flags)
114 if test "$GCC" = yes
115 then
116     case "$host_cpu" in
117         alpha)          addcflags="-mieee" ;;
118     esac
119 fi
120 if test "x$addcflags" != x
121 then
122     AC_MSG_RESULT($addcflags)
123     CFLAGS="$addcflags $CFLAGS"
124 else
125     AC_MSG_RESULT([[(none)]])
126 fi
127 AC_USE_SYSTEM_EXTENSIONS
128 dnl
129 dnl Set default values for library extentions.  Will be dealt with after
130 dnl parsing configuration opions, which may modify these
131 dnl
132 LIB_EXT=.a
133 STATIC_LIB_EXT=.a
134 PROFILED_LIB_EXT=.a
135 dnl
136 dnl Allow separate `root_prefix' to be specified
137 dnl
138 AC_ARG_WITH([root-prefix],
139 [  --with-root-prefix=PREFIX override prefix variable for files to be placed in the root],
140 root_prefix=$withval,
141 root_prefix=NONE)dnl
142 dnl
143 dnl handle --enable-maintainer-mode
144 dnl
145 AC_ARG_ENABLE([maintainer-mode],
146 [  --enable-maintainer-mode enable makefile rules useful for maintainers],
147 if test "$enableval" = "no"
148 then
149         MAINTAINER_CMT=#
150         AC_MSG_RESULT([Disabling maintainer mode])
151 else
152         MAINTAINER_CMT=
153         AC_MSG_RESULT([Enabling maintainer mode])
154 fi
155 ,
156 MAINTAINER_CMT=#
157 AC_MSG_RESULT([Disabling maintainer mode by default])
158 )
159 AC_SUBST(MAINTAINER_CMT)
160 dnl
161 dnl handle --enable-symlink-install
162 dnl
163 AC_ARG_ENABLE([symlink-install],
164 [  --enable-symlink-install use symlinks when installing instead of hard links],
165 if test "$enableval" = "no"
166 then
167         LINK_INSTALL_FLAGS=-f
168         AC_MSG_RESULT([Disabling symlinks for install])
169 else
170         LINK_INSTALL_FLAGS=-sf
171         AC_MSG_RESULT([Enabling symlinks for install])
172 fi
173 ,
174 LINK_INSTALL_FLAGS=-f
175 AC_MSG_RESULT([Disabling symlinks for install by default])
176 )
177 AC_SUBST(LINK_INSTALL_FLAGS)
178 dnl
179 dnl handle --enable-relative-symlinks
180 dnl
181 relative_symlink_defined=
182 AC_ARG_ENABLE([relative-symlinks],
183 [  --enable-relative-symlinks use relative symlinks when installing],
184 if test "$enableval" = "no"
185 then
186         SYMLINK_RELATIVE=
187         relative_symlink_defined=yes
188         AC_MSG_RESULT([Disabling relative symlinks for install])
189 else
190         SYMLINK_RELATIVE=--relative
191         relative_symlink_defined=yes
192         AC_MSG_RESULT([Enabling relative symlinks for install])
193 fi)
194 AC_ARG_ENABLE([symlink-relative-symlinks],,
195 if test "$enableval" = "no"
196 then
197         SYMLINK_RELATIVE=yes
198         AC_MSG_RESULT([Disabling relative symlinks for install])
199 else
200         SYMLINK_RELATIVE=--relative
201         AC_MSG_RESULT([Enabling relative symlinks for install])
202 fi
203 ,
204 if test -z "$relative_symlink_defined"
205 then
206         SYMLINK_RELATIVE=
207 AC_MSG_RESULT([Disabling relative symlinks for install by default])
208 fi
209 )
210 AC_SUBST(SYMLINK_RELATIVE)
211 dnl
212 dnl handle --enable-symlink-build
213 dnl
214 AC_ARG_ENABLE([symlink-build],
215 [  --enable-symlink-build  use symlinks while building instead of hard links],
216 if test "$enableval" = "no"
217 then
218         LINK_BUILD_FLAGS=
219         AC_MSG_RESULT([Disabling symlinks for build])
220 else
221         LINK_BUILD_FLAGS=-s
222         AC_MSG_RESULT([Enabling symlinks for build])
223 fi
224 ,
225 LINK_BUILD_FLAGS=
226 AC_MSG_RESULT([Disabling symlinks for build by default])
227 )
228 AC_SUBST(LINK_BUILD_FLAGS)
229 dnl
230 dnl handle --enable-verbose-makecmds
231 dnl
232 AC_ARG_ENABLE([verbose-makecmds],
233 [  --enable-verbose-makecmds enable verbose make command output],
234 if test "$enableval" = "no"
235 then
236         AC_MSG_RESULT([Disabling verbose make commands])
237         E=@echo
238         ES=echo
239         Q=@
240 else
241         AC_MSG_RESULT([Enabling verbose make commands])
242         E=@\\#
243         ES=\\#
244         Q= 
245 fi
246 ,
247 AC_MSG_RESULT([Disabling verbose make commands])
248 E=@echo
249 ES=echo
250 Q=@
251 )
252 AC_SUBST(E)
253 AC_SUBST(ES)
254 AC_SUBST(Q)
255 dnl
256 dnl handle --enable-htree
257 dnl
258 AH_TEMPLATE([ENABLE_HTREE], [Define to 1 if ext3/4 htree support enabled])
259 AC_ARG_ENABLE([htree],
260 [  --enable-htree         enable EXPERIMENTAL htree directory support],
261 if test "$enableval" = "no"
262 then
263         HTREE_CMT=#
264         AC_MSG_RESULT([Disabling htree directory support])
265 else
266         HTREE_CMT=
267         AC_DEFINE(ENABLE_HTREE, 1)
268         AC_MSG_RESULT([Enabling htree directory support])
269 fi
270 ,
271 HTREE_CMT=
272 AC_DEFINE(ENABLE_HTREE, 1)
273 AC_MSG_RESULT([Enabling htree directory support by default])
274 )
275 AC_SUBST(HTREE_CMT)
276 dnl
277 dnl This needs to be before all of the --enable-*-shlibs options
278 dnl
279 E2_PKG_CONFIG_STATIC=--static
280 LDFLAG_DYNAMIC=
281 PRIVATE_LIBS_CMT=
282 dnl
283 dnl handle --enable-elf-shlibs
284 dnl
285 AC_ARG_ENABLE([elf-shlibs],
286 [  --enable-elf-shlibs    select ELF shared libraries],
287 if test "$enableval" = "no"
288 then
289         ELF_CMT=#
290         MAKEFILE_ELF=/dev/null
291         AC_MSG_RESULT([Disabling ELF shared libraries])
292 else
293         E2_PKG_CONFIG_STATIC=
294         ELF_CMT=
295         MAKEFILE_ELF=$srcdir/lib/Makefile.elf-lib
296         [case "$host_os" in
297         solaris2.*)
298                 MAKEFILE_ELF=$srcdir/lib/Makefile.solaris-lib
299         ;;
300         esac]
301         BINARY_TYPE=elfbin
302         LIB_EXT=.so
303         PRIVATE_LIBS_CMT=#
304         LDFLAG_DYNAMIC=['-Wl,-rpath-link,$(top_builddir)/lib']
305         AC_MSG_RESULT([Enabling ELF shared libraries])
306 fi
307 ,
308 MAKEFILE_ELF=/dev/null
309 ELF_CMT=#
310 AC_MSG_RESULT([Disabling ELF shared libraries by default])
311 )
312 AC_SUBST(ELF_CMT)
313 AC_SUBST_FILE(MAKEFILE_ELF)
314 dnl
315 dnl handle --enable-bsd-shlibs
316 dnl
317 AC_ARG_ENABLE([bsd-shlibs],
318 [  --enable-bsd-shlibs    select BSD shared libraries],
319 if test "$enableval" = "no"
320 then
321         BSDLIB_CMT=#
322         MAKEFILE_BSDLIB=/dev/null
323         AC_MSG_RESULT([Disabling BSD shared libraries])
324 else
325         E2_PKG_CONFIG_STATIC=
326         BSDLIB_CMT=
327         MAKEFILE_BSDLIB=$srcdir/lib/Makefile.bsd-lib
328         LIB_EXT=.so
329         [case "$host_os" in
330         darwin*)
331                 MAKEFILE_BSDLIB=$srcdir/lib/Makefile.darwin-lib
332                 LIB_EXT=.dylib
333         ;;
334         esac]
335         AC_MSG_RESULT([Enabling BSD shared libraries])
336 fi
337 ,
338 MAKEFILE_BSDLIB=/dev/null
339 BSDLIB_CMT=#
340 AC_MSG_RESULT([Disabling BSD shared libraries by default])
341 )
342 AC_SUBST(BSDLIB_CMT)
343 AC_SUBST_FILE(MAKEFILE_BSDLIB)
344 dnl
345 dnl handle --enable-profile
346 dnl
347 AC_ARG_ENABLE([profile],
348 [  --enable-profile       build profiling libraries],
349 if test "$enableval" = "no"
350 then
351         PROFILE_CMT=#
352         MAKEFILE_PROFILE=/dev/null
353         AC_MSG_RESULT([Disabling profiling libraries])
354 else
355         PROFILE_CMT=
356         MAKEFILE_PROFILE=$srcdir/lib/Makefile.profile
357         PROFILED_LIB_EXT=_p.a
358         AC_MSG_RESULT([Building profiling libraries])
359 fi
360 ,
361 PROFILE_CMT=#
362 MAKEFILE_PROFILE=/dev/null
363 AC_MSG_RESULT([Disabling profiling libraries by default])
364 )
365 AC_SUBST(PROFILE_CMT)
366 AC_SUBST_FILE(MAKEFILE_PROFILE)
367 dnl
368 dnl handle --enable-gcov
369 dnl
370 AC_ARG_ENABLE([gcov],
371 [  --enable-gcov                  build for coverage testing using gcov],
372 if test "$enableval" = "yes"
373 then
374         CFLAGS="-g -fprofile-arcs -ftest-coverage"
375         LDFLAGS="-fprofile-arcs -ftest-coverage"
376         AC_MSG_RESULT([Enabling gcov support])
377 fi
378 )
379
380 dnl
381 dnl Substitute library extensions
382 dnl
383 AC_SUBST(LIB_EXT)
384 AC_SUBST(STATIC_LIB_EXT)
385 AC_SUBST(PROFILED_LIB_EXT)
386 AC_SUBST(LDFLAG_DYNAMIC)
387 AC_SUBST(PRIVATE_LIBS_CMT)
388 dnl
389 dnl handle --enable-jbd-debug
390 dnl
391 AC_ARG_ENABLE([jbd-debug],
392 [  --enable-jbd-debug     enable journal debugging],
393 if test "$enableval" = "no"
394 then
395         AC_MSG_RESULT([Disabling journal debugging])
396 else
397         AC_DEFINE(CONFIG_JBD_DEBUG, 1,
398                 [Define to 1 if debugging ext3/4 journal code])
399         AC_MSG_RESULT([Enabling journal debugging])
400 fi
401 ,
402 AC_MSG_RESULT([Disabling journal debugging by default])
403 )
404 dnl
405 dnl handle --enable-blkid-debug
406 dnl
407 AC_ARG_ENABLE([blkid-debug],
408 [  --enable-blkid-debug    enable blkid debugging],
409 if test "$enableval" = "no"
410 then
411         AC_MSG_RESULT([Disabling blkid debugging])
412 else
413         AC_DEFINE(CONFIG_BLKID_DEBUG, 1,
414                 [Define to 1 if debugging the blkid library])
415         AC_MSG_RESULT([Enabling blkid debugging])
416 fi
417 ,
418 AC_MSG_RESULT([Disabling blkid debugging by default])
419 )
420 dnl
421 dnl handle --enable-testio-debug
422 dnl
423 AC_ARG_ENABLE([testio-debug],
424 [  --disable-testio-debug  disable the use of the test I/O manager for debugging],
425 AH_TEMPLATE([CONFIG_TESTIO_DEBUG],
426         [Define to 1 if the testio I/O manager should be enabled])
427 if test "$enableval" = "no"
428 then
429         AC_MSG_RESULT([Disabling testio debugging])
430         TEST_IO_CMT="#"
431 else
432         TEST_IO_CMT=
433         AC_DEFINE(CONFIG_TESTIO_DEBUG, 1)
434         AC_MSG_RESULT([Enabling testio debugging])
435 fi
436 ,
437 AC_MSG_RESULT([Enabling testio debugging by default])
438 AC_DEFINE(CONFIG_TESTIO_DEBUG, 1)
439 TEST_IO_CMT=
440 )
441 AC_SUBST(TEST_IO_CMT)
442 dnl
443 dnl handle --disable-libuuid
444 dnl
445 PKG_PROG_PKG_CONFIG
446 LIBUUID=
447 DEPLIBUUID=
448 STATIC_LIBUUID=
449 DEPSTATIC_LIBUUID=
450 PROFILED_LIBUUID=
451 DEPPROFILED_LIBUUID=
452 UUID_CMT=
453 AC_ARG_ENABLE([libuuid],
454 [  --disable-libuuid      do not build private uuid library],
455 if test "$enableval" = "no"
456 then
457         if test -z "$PKG_CONFIG"; then
458                 AC_MSG_ERROR([pkg-config not installed; please install it.])
459         fi
460
461         AC_CHECK_LIB(uuid, uuid_generate,
462                 [LIBUUID=`$PKG_CONFIG --libs uuid`;
463                  STATIC_LIBUUID=`$PKG_CONFIG --static --libs uuid`],
464                 [AC_MSG_ERROR([external uuid library not found])])
465         PROFILED_LIBUUID=$LIBUUID
466         UUID_CMT=#
467         AC_MSG_RESULT([Disabling private uuid library])
468 else
469         LIBUUID='$(LIB)/libuuid'$LIB_EXT
470         DEPLIBUUID=$LIBUUID
471         STATIC_LIBUUID='$(LIB)/libuuid'$STATIC_LIB_EXT
472         DEPSTATIC_LIBUUID=$STATIC_LIBUUID
473         PROFILED_LIBUUID='$(LIB)/libuuid'$PROFILED_LIB_EXT
474         DEPPROFILED_LIBUUID=$PROFILED_LIBUUID
475         AC_MSG_RESULT([Enabling private uuid library])
476 fi
477 ,
478 LIBUUID='$(LIB)/libuuid'$LIB_EXT
479 DEPLIBUUID=$LIBUUID
480 STATIC_LIBUUID='$(LIB)/libuuid'$STATIC_LIB_EXT
481 DEPSTATIC_LIBUUID=$STATIC_LIBUUID
482 PROFILED_LIBUUID='$(LIB)/libuuid'$PROFILED_LIB_EXT
483 DEPPROFILED_LIBUUID=$PROFILED_LIBUUID
484 AC_MSG_RESULT([Enabling private uuid library by default])
485 )
486 AC_SUBST(LIBUUID)
487 AC_SUBST(DEPLIBUUID)
488 AC_SUBST(STATIC_LIBUUID)
489 AC_SUBST(DEPSTATIC_LIBUUID)
490 AC_SUBST(PROFILED_LIBUUID)
491 AC_SUBST(DEPPROFILED_LIBUUID)
492 AC_SUBST(UUID_CMT)
493 dnl
494 dnl handle --disable-libblkid
495 dnl
496 PKG_PROG_PKG_CONFIG
497 LIBBLKID=
498 DEPLIBBLKID=
499 STATIC_LIBBLKID=
500 DEPSTATIC_LIBBLKID=
501 PROFILED_LIBBLKID=
502 DEPPROFILED_LIBBLKID=
503 BLKID_CMT=
504 AH_TEMPLATE([CONFIG_BUILD_FINDFS], [Define to 1 to compile findfs])
505 AC_ARG_ENABLE([libblkid],
506 [  --disable-libblkid     do not build private blkid library],
507 if test "$enableval" = "no"
508 then
509         if test -z "$PKG_CONFIG"; then
510                 AC_MSG_ERROR([pkg-config not installed; please install it.])
511         fi
512
513         AC_CHECK_LIB(blkid, blkid_get_cache,
514                 [LIBBLKID=`$PKG_CONFIG --libs blkid`;
515                  STATIC_LIBBLKID=`$PKG_CONFIG --static --libs blkid`],
516                 [AC_MSG_ERROR([external blkid library not found])], -luuid)
517         BLKID_CMT=#
518         PROFILED_LIBBLKID=$LIBBLKID
519         AC_MSG_RESULT([Disabling private blkid library])
520 else
521         LIBBLKID='$(LIB)/libblkid'$LIB_EXT
522         DEPLIBBLKID=$LIBBLKID
523         STATIC_LIBBLKID='$(LIB)/libblkid'$STATIC_LIB_EXT
524         DEPSTATIC_LIBBLKID=$STATIC_LIBBLKID
525         PROFILED_LIBBLKID='$(LIB)/libblkid'$PROFILED_LIB_EXT
526         DEPPROFILED_LIBBLKID=$PROFILED_LIBBLKID
527         AC_DEFINE(CONFIG_BUILD_FINDFS, 1)
528         AC_MSG_RESULT([Enabling private blkid library])
529 fi
530 ,
531 LIBBLKID='$(LIB)/libblkid'$LIB_EXT
532 DEPLIBBLKID=$LIBBLKID
533 STATIC_LIBBLKID='$(LIB)/libblkid'$STATIC_LIB_EXT
534 DEPSTATIC_LIBBLKID=$STATIC_LIBBLKID
535 PROFILED_LIBBLKID='$(LIB)/libblkid'$PROFILED_LIB_EXT
536 DEPPROFILED_LIBBLKID=$PROFILED_LIBBLKID
537 AC_DEFINE(CONFIG_BUILD_FINDFS, 1)
538 AC_MSG_RESULT([Enabling private blkid library by default])
539 )
540 AC_SUBST(LIBBLKID)
541 AC_SUBST(DEPLIBBLKID)
542 AC_SUBST(STATIC_LIBBLKID)
543 AC_SUBST(DEPSTATIC_LIBBLKID)
544 AC_SUBST(PROFILED_LIBBLKID)
545 AC_SUBST(DEPPROFILED_LIBBLKID)
546 AC_SUBST(BLKID_CMT)
547 dnl
548 dnl handle --enable-quota
549 dnl
550 QUOTA_MAN_COMMENT='.\"'
551 QUOTA_CMT=
552 AC_SUBST(QUOTA_MAN_COMMENT)
553 PKG_PROG_PKG_CONFIG
554 AH_TEMPLATE([CONFIG_QUOTA], [Define to 1 to enable quota support])
555 AC_ARG_ENABLE([quota],
556 [  --enable-quota         enable quota support],
557 if test "$enableval" = "no"
558 then
559         QUOTA_CMT=#
560         AC_MSG_RESULT([Disabling quota support])
561 else
562         QUOTA_CMT=
563         AC_DEFINE(CONFIG_QUOTA, 1)
564         AC_MSG_RESULT([Enabling quota support])
565         QUOTA_MAN_COMMENT=""
566         AC_SUBST(QUOTA_MAN_COMMENT)
567 fi
568 ,
569 QUOTA_CMT=#
570 AC_MSG_RESULT([Disabling quota support by default])
571 )
572 dnl
573 dnl Define stuff expected for quota library
574 dnl
575 LIBQUOTA='$(LIB)/libquota'$LIB_EXT
576 DEPLIBQUOTA=$LIBQUOTA
577 STATIC_LIBQUOTA='$(LIB)/libquota'$STATIC_LIB_EXT
578 DEPSTATIC_LIBQUOTA=$STATIC_LIBQUOTA
579 PROFILED_LIBQUOTA='$(LIB)/libquota'$PROFILED_LIB_EXT
580 DEPPROFILED_LIBQUOTA=$PROFILED_LIBQUOTA
581 AC_SUBST(LIBQUOTA)
582 AC_SUBST(DEPLIBQUOTA)
583 AC_SUBST(STATIC_LIBQUOTA)
584 AC_SUBST(DEPSTATIC_LIBQUOTA)
585 AC_SUBST(PROFILED_LIBQUOTA)
586 AC_SUBST(DEPPROFILED_LIBQUOTA)
587 AC_SUBST(QUOTA_CMT)
588 dnl
589 dnl handle --disable-backtrace
590 dnl
591 AH_TEMPLATE([DISABLE_BACKTRACE], [Define to 1 to disable use of backtrace])
592 AC_ARG_ENABLE([backtrace],
593 [  --disable-backtrace    disable use backtrace],
594 if test "$enableval" = "no"
595 then
596         AC_MSG_RESULT([Disabling use of backtrace])
597         AC_DEFINE(DISABLE_BACKTRACE, 1)
598 else
599         AC_MSG_RESULT([Enabling use of backtrace])
600 fi
601 ,
602 AC_MSG_RESULT([Enabling use of backtrace by default])
603 )
604 dnl
605 dnl handle --enable-debugfs
606 dnl
607 AC_ARG_ENABLE([debugfs],
608 [  --disable-debugfs      disable support of debugfs program],
609 if test "$enableval" = "no"
610 then
611         AC_MSG_RESULT([Disabling debugfs support])
612         DEBUGFS_CMT="#"
613 else
614         DEBUGFS_CMT=
615         AC_MSG_RESULT([Enabling debugfs support])
616 fi
617 ,
618 AC_MSG_RESULT([Enabling debugfs support by default])
619 DEBUGFS_CMT=
620 )
621 AC_SUBST(DEBUGFS_CMT)
622 dnl
623 dnl handle --enable-imager
624 dnl
625 AC_ARG_ENABLE([imager],
626 [  --disable-imager       disable support of e2image program],
627 if test "$enableval" = "no"
628 then
629         AC_MSG_RESULT([Disabling e2image support])
630         IMAGER_CMT="#"
631 else
632         IMAGER_CMT=
633         AC_MSG_RESULT([Enabling e2image support])
634 fi
635 ,
636 AC_MSG_RESULT([Enabling e2image support by default])
637 IMAGER_CMT=
638 )
639 AC_SUBST(IMAGER_CMT)
640 dnl
641 dnl handle --enable-resizer
642 dnl
643 AC_ARG_ENABLE([resizer],
644 [  --disable-resizer      disable support of e2resize program],
645 if test "$enableval" = "no"
646 then
647         AC_MSG_RESULT([Disabling e2resize support])
648         RESIZER_CMT="#"
649 else
650         RESIZER_CMT=
651         AC_MSG_RESULT([Enabling e2resize support])
652 fi
653 ,
654 AC_MSG_RESULT([Enabling e2resize support by default])
655 RESIZER_CMT=
656 )
657 AC_SUBST(RESIZER_CMT)
658 dnl
659 dnl handle --enable-defrag
660 dnl
661 AC_ARG_ENABLE([defrag],
662 [  --disable-defrag       disable support of e4defrag program],
663 if test "$enableval" = "no"
664 then
665         AC_MSG_RESULT([Disabling e4defrag support])
666         DEFRAG_CMT="#"
667 else
668         DEFRAG_CMT=
669         AC_MSG_RESULT([Enabling e4defrag support])
670 fi
671 ,
672 if test -z "$WITH_DIET_LIBC"
673 then
674         AC_MSG_RESULT([Enabling e4defrag support by default])
675         DEFRAG_CMT=
676 else
677         AC_MSG_RESULT([Disabling e4defrag support by default])
678         DEFRAG_CMT="#"
679 fi
680 )
681 AC_SUBST(DEFRAG_CMT)
682 dnl
683 dnl See whether to install the `fsck' wrapper program (that calls e2fsck)
684 dnl
685 AC_ARG_ENABLE([fsck],
686 [  --enable-fsck           build fsck wrapper program],
687 [if test "$enableval" = "no"
688 then
689         FSCK_PROG='' FSCK_MAN=''
690         AC_MSG_RESULT([Not building fsck wrapper])
691 else
692         FSCK_PROG=fsck FSCK_MAN=fsck.8
693         AC_MSG_RESULT([Building fsck wrapper])
694 fi]
695 ,
696 [case "$host_os" in
697   gnu*)
698     FSCK_PROG='' FSCK_MAN=''
699     AC_MSG_RESULT([Not building fsck wrapper by default])
700     ;;
701   *)
702     FSCK_PROG=fsck FSCK_MAN=fsck.8
703     AC_MSG_RESULT([Building fsck wrapper by default])
704 esac]
705 )
706 AC_SUBST(FSCK_PROG)
707 AC_SUBST(FSCK_MAN)
708 dnl
709 dnl See whether to install the `e2initrd-helper' program
710 dnl
711 AC_ARG_ENABLE([e2initrd-helper],
712 [  --enable-e2initrd-helper build e2initrd-helper program],
713 [if test "$enableval" = "no"
714 then
715         E2INITRD_PROG='' E2INITRD_MAN=''
716         AC_MSG_RESULT([Not building e2initrd helper])
717 else
718         E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8
719         AC_MSG_RESULT([Building e2initrd helper])
720 fi]
721 ,
722 E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8
723 AC_MSG_RESULT([Building e2initrd helper by default])
724 )
725 AC_SUBST(E2INITRD_PROG)
726 AC_SUBST(E2INITRD_MAN)
727 dnl
728 dnl
729 dnl
730 AC_ARG_ENABLE([tls],
731 [  --disable-tls           disable use of thread local support],
732 [if test "$enableval" = "no"
733 then
734         try_tls=""
735         AC_MSG_RESULT([Disabling thread local support])
736 else
737         try_tls="yes"
738         AC_MSG_RESULT([Enabling thread local support])
739 fi]
740 ,
741 if test -n "$WITH_DIET_LIBC"
742 then
743         try_tls=""
744         AC_MSG_RESULT([Diet libc does not support thread local support])
745 else
746         try_tls="yes"
747         AC_MSG_RESULT([Try using thread local support by default])
748 fi
749 )
750 if test "$try_tls" = "yes"
751 then
752 AX_TLS
753 fi
754 dnl
755 dnl
756 dnl
757 AH_TEMPLATE([USE_UUIDD], [Define to 1 to build uuidd])
758 AC_ARG_ENABLE([uuidd],
759 [  --disable-uuidd         disable building the uuid daemon],
760 [if test "$enableval" = "no"
761 then
762         AC_MSG_RESULT([Not building uuidd])
763         UUIDD_CMT="#"
764 else
765         AC_DEFINE(USE_UUIDD, 1)
766         UUIDD_CMT=""
767         AC_MSG_RESULT([Building uuidd])
768 fi]
769 ,
770 AC_DEFINE(USE_UUIDD, 1)
771 if test -z "$UUID_CMT"
772 then
773         UUIDD_CMT=""
774         AC_MSG_RESULT([Building uuidd by default])
775 else
776         UUIDD_CMT="#"
777         AC_MSG_RESULT([Disabling uuidd by default])
778 fi
779 )
780 AC_SUBST(UUIDD_CMT)
781 dnl
782 dnl handle --disable-mmp
783 dnl
784 AH_TEMPLATE([CONFIG_MMP], [Define to 1 to enable mmp support])
785 AC_ARG_ENABLE([mmp],
786 [  --disable-mmp           disable support mmp, Multi Mount Protection],
787 if test "$enableval" = "no"
788 then
789         AC_MSG_RESULT([Disabling mmp support])
790 else
791         AC_MSG_RESULT([Enabling mmp support])
792         AC_DEFINE(CONFIG_MMP, 1)
793 fi
794 ,
795 AC_MSG_RESULT([Enabling mmp support by default])
796 AC_DEFINE(CONFIG_MMP, 1)
797 )
798 dnl
799 dnl handle --disable-bmap-stats
800 dnl
801 AH_TEMPLATE([ENABLE_BMAP_STATS], [Define to 1 to enable bitmap stats.])
802 AC_ARG_ENABLE([bmap-stats],
803 [  --disable-bmap-stats    disable collection of bitmap stats.],
804 if test "$enableval" = "no"
805 then
806         AC_MSG_RESULT([Disabling bitmap statistics support])
807 else
808         AC_MSG_RESULT([Enabling bitmap statistics support])
809         AC_DEFINE(ENABLE_BMAP_STATS, 1)
810 fi
811 ,
812 AC_MSG_RESULT([Enabling bitmap statistics support by default])
813 AC_DEFINE(ENABLE_BMAP_STATS, 1)
814 )
815 dnl
816 dnl handle --enable-bmap-stats-ops
817 dnl
818 AH_TEMPLATE([ENABLE_BMAP_STATS_OPS], [Define to 1 to enable bitmap stats.])
819 AC_ARG_ENABLE([bmap-stats-ops],
820 [  --enable-bmap-stats-ops enable collection of additional bitmap stats],
821 if test "$enableval" = "no"
822 then
823         AC_MSG_RESULT([Disabling additional bitmap statistics])
824 else
825         dnl There has to be a better way!
826         AS_IF([test "x${enable_bmap_stats}" = "xno"],
827          AC_MSG_FAILURE([Error --enable-bmap-stats-ops requires bmap-stats]))
828
829         AC_MSG_RESULT([Enabling additional bitmap statistics])
830         AC_DEFINE(ENABLE_BMAP_STATS_OPS, 1)
831 fi
832 ,
833 AC_MSG_RESULT([Disabling additional bitmap statistics by default])
834 )
835 dnl
836 dnl
837 dnl
838 MAKEFILE_LIBRARY=$srcdir/lib/Makefile.library
839 AC_SUBST_FILE(MAKEFILE_LIBRARY)
840 dnl
841 dnl Add internationalization support, using gettext.
842 dnl
843 GETTEXT_PACKAGE=e2fsprogs
844 PACKAGE=e2fsprogs
845 VERSION="$E2FSPROGS_VERSION"
846 VERSION=0.14.1
847 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [package name for gettext])
848 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [version for gettext])
849 AC_SUBST(GETTEXT_PACKAGE)
850 AC_SUBST(PACKAGE)
851 AC_SUBST(VERSION)
852
853 AM_GNU_GETTEXT
854 dnl
855 dnl End of configuration options
856 dnl
857 AC_SUBST(BINARY_TYPE)
858 AC_PROG_MAKE_SET
859 CHECK_GNU_MAKE
860 AC_PATH_PROG(LN, ln, ln)
861 AC_PROG_LN_S
862 AC_PATH_PROG(MV, mv, mv)
863 AC_PATH_PROG(CP, cp, cp)
864 AC_PATH_PROG(RM, rm, rm)
865 AC_PATH_PROG(CHMOD, chmod, :)
866 AC_PROG_AWK
867 AC_PROG_EGREP
868 AC_PATH_PROG(SED, sed, sed)
869 AC_PATH_PROG(PERL, perl, perl)
870 AC_PATH_PROG(LDCONFIG, ldconfig, :)
871 AC_CHECK_TOOL(AR, ar, ar)
872 AC_CHECK_TOOL(RANLIB, ranlib, :)
873 AC_CHECK_TOOL(STRIP, strip, :)
874 AC_CHECK_PROG(MAKEINFO, makeinfo, makeinfo, )
875 if test "_$MAKEINFO" = "_"; then
876     MAKEINFO="@echo Makeinfo is missing. Info documentation will not be built.;true"
877 else
878     case "$MAKEINFO" in
879       */missing.*)
880         AC_MSG_WARN([
881 *** Makeinfo is missing. Info documentation will not be built.])
882         ;;
883       *)
884         ;;
885     esac
886 fi
887 AC_SUBST(MAKEINFO)
888 AC_PROG_INSTALL
889 # See if we need a separate native compiler.
890 if test $cross_compiling = no; then
891   BUILD_CC="$CC"
892   AC_SUBST(BUILD_CC)
893 else
894   AC_CHECK_PROGS(BUILD_CC, gcc cc)
895 fi
896 AC_CHECK_HEADERS(m4_flatten([
897         dirent.h
898         errno.h
899         execinfo.h
900         getopt.h
901         malloc.h
902         mntent.h
903         paths.h
904         semaphore.h
905         setjmp.h
906         signal.h
907         stdarg.h
908         stdint.h
909         stdlib.h
910         termios.h
911         termio.h
912         unistd.h
913         utime.h
914         attr/xattr.h
915         linux/falloc.h
916         linux/fd.h
917         linux/major.h
918         linux/loop.h
919         net/if_dl.h
920         netinet/in.h
921         sys/disklabel.h
922         sys/disk.h
923         sys/file.h
924         sys/ioctl.h
925         sys/mkdev.h
926         sys/mman.h
927         sys/mount.h
928         sys/prctl.h
929         sys/resource.h
930         sys/select.h
931         sys/socket.h
932         sys/sockio.h
933         sys/stat.h
934         sys/syscall.h
935         sys/sysctl.h
936         sys/sysmacros.h
937         sys/time.h
938         sys/types.h
939         sys/un.h
940         sys/wait.h
941 ]))
942 AC_CHECK_HEADERS(net/if.h,,,
943 [[
944 #if HAVE_SYS_TYPES_H
945 #include <sys/types.h>
946 #endif
947 #if HAVE_SYS_SOCKET
948 #include <sys/socket.h>
949 #endif
950 ]])
951 AC_FUNC_VPRINTF
952 dnl Check to see if dirent has member d_reclen. On cygwin those d_reclen
953 dnl is not decleared.
954 AC_CHECK_MEMBER(struct dirent.d_reclen,[AC_DEFINE(HAVE_RECLEN_DIRENT, 1,
955                        [Define to 1 if dirent has d_reclen])],,
956                 [#include <dirent.h>])
957 AC_CHECK_MEMBERS([struct stat.st_atim])
958 dnl Check to see if ssize_t was declared
959 AC_CHECK_TYPE(ssize_t,[AC_DEFINE(HAVE_TYPE_SSIZE_T, 1,
960                 [Define to 1 if ssize_t declared])],,
961               [#include <sys/types.h>])
962 dnl
963 dnl Check to see if llseek() is declared in unistd.h.  On some libc's 
964 dnl it is, and on others it isn't..... Thank you glibc developers....
965 dnl
966 AC_CHECK_DECL(llseek,[AC_DEFINE(HAVE_LLSEEK_PROTOTYPE, 1,
967                         [Define to 1 if llseek declared in unistd.h])],,
968               [#include <unistd.h>])
969 dnl
970 dnl Check to see if lseek64() is declared in unistd.h.  Glibc's header files
971 dnl are so convoluted that I can't tell whether it will always be defined,
972 dnl and if it isn't defined while lseek64 is defined in the library, 
973 dnl disaster will strike.  
974 dnl
975 dnl Warning!  Use of --enable-gcc-wall may throw off this test.
976 dnl
977 dnl
978 AC_CHECK_DECL(lseek64,[AC_DEFINE(HAVE_LSEEK64_PROTOTYPE, 1,
979                         [Define to 1 if lseek64 declared in unistd.h])],,
980                 [#define _LARGEFILE_SOURCE
981                  #define _LARGEFILE64_SOURCE
982                  #include <unistd.h>])
983 dnl
984 dnl Word sizes...
985 dnl
986 AC_CHECK_SIZEOF(short)
987 AC_CHECK_SIZEOF(int)
988 AC_CHECK_SIZEOF(long)
989 AC_CHECK_SIZEOF(long long)
990 AC_CHECK_SIZEOF(off_t)
991 SIZEOF_SHORT=$ac_cv_sizeof_short
992 SIZEOF_INT=$ac_cv_sizeof_int
993 SIZEOF_LONG=$ac_cv_sizeof_long
994 SIZEOF_LONG_LONG=$ac_cv_sizeof_long_long
995 SIZEOF_OFF_T=$ac_cv_sizeof_off_t
996 AC_SUBST(SIZEOF_SHORT)
997 AC_SUBST(SIZEOF_INT)
998 AC_SUBST(SIZEOF_LONG)
999 AC_SUBST(SIZEOF_LONG_LONG)
1000 AC_SUBST(SIZEOF_OFF_T)
1001 AC_C_BIGENDIAN
1002 if test $cross_compiling = no; then
1003   BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh
1004 else
1005   CROSS_COMPILE="1" BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh
1006 fi
1007 ASM_TYPES_HEADER=./asm_types.h
1008 AC_SUBST_FILE(ASM_TYPES_HEADER)
1009 dnl
1010 dnl Save the configuration #defines needed for the public ext2fs.h
1011 dnl header file
1012 dnl
1013 echo "/* These defines are needed for the public ext2fs.h header file */" \
1014      > public_config.h
1015 if grep HAVE_SYS_TYPES_H confdefs.h > tmp_config.$$; then
1016   uniq tmp_config.$$ >> public_config.h
1017 else
1018   echo "#undef HAVE_SYS_TYPES_H" >> public_config.h
1019 fi
1020 if grep WORDS_BIGENDIAN confdefs.h > tmp_config.$$; then
1021   uniq tmp_config.$$ >> public_config.h
1022 else
1023   echo "#undef WORDS_BIGENDIAN" >> public_config.h
1024 fi
1025 rm -f tmp_config.$$
1026 PUBLIC_CONFIG_HEADER=./public_config.h
1027 AC_SUBST_FILE(PUBLIC_CONFIG_HEADER)
1028 dnl
1029 dnl See if we have inttypes.h and if intptr_t is defined
1030 dnl
1031 AC_CHECK_HEADERS([inttypes.h])
1032 AC_CHECK_TYPES(intptr_t)
1033 dnl
1034 dnl See if struct stat has a st_flags field, in which case we can get file
1035 dnl flags somewhat portably.  Also check for the analogous setter, chflags().
1036 dnl
1037 AC_MSG_CHECKING(whether struct stat has a st_flags field)
1038 AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags,
1039         AC_TRY_COMPILE([#include <sys/stat.h>],
1040                 [struct stat stat; stat.st_flags = 0;],
1041                 [e2fsprogs_cv_struct_st_flags=yes],
1042                 [e2fsprogs_cv_struct_st_flags=no]))
1043 AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags)
1044 if test "$e2fsprogs_cv_struct_st_flags" = yes; then
1045   AC_MSG_CHECKING(whether st_flags field is useful)
1046   AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags_immut,
1047         AC_TRY_COMPILE([#include <sys/stat.h>],
1048                 [struct stat stat; stat.st_flags |= UF_IMMUTABLE;],
1049                 [e2fsprogs_cv_struct_st_flags_immut=yes],
1050                 [e2fsprogs_cv_struct_st_flags_immut=no]))
1051   AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags_immut)
1052   if test "$e2fsprogs_cv_struct_st_flags_immut" = yes; then
1053           AC_DEFINE(HAVE_STAT_FLAGS, 1,
1054                 [Define to 1 if struct stat has st_flags])
1055   fi
1056 fi
1057 dnl
1058 dnl Check for the presence of SA_LEN
1059 dnl
1060 AC_CHECK_MEMBER(struct sockaddr.sa_len,
1061                 AC_DEFINE_UNQUOTED(HAVE_SA_LEN,1,
1062                         [Define to 1 if if struct sockaddr contains sa_len]),,
1063         [#include <sys/types.h>
1064          #include <sys/socket.h>])
1065 dnl
1066 dnl This will add -lblkid to the AC_CHECK_FUNCS search if we are using
1067 dnl the system-provided blkid library
1068 dnl
1069 if test -n "$BLKID_CMT"; then
1070   AC_SEARCH_LIBS([blkid_probe_all], [blkid])
1071 fi
1072 dnl
1073 AC_CHECK_FUNCS(m4_flatten([
1074         __secure_getenv
1075         backtrace
1076         blkid_probe_get_topology
1077         blkid_probe_enable_partitions
1078         chflags
1079         fadvise64
1080         fallocate
1081         fallocate64
1082         fchown
1083         fdatasync
1084         fstat64
1085         ftruncate64
1086         futimes
1087         getcwd
1088         getdtablesize
1089         getmntinfo
1090         getpwuid_r
1091         getrlimit
1092         getrusage
1093         jrand48
1094         llistxattr
1095         llseek
1096         lseek64
1097         mallinfo
1098         mbstowcs
1099         memalign
1100         mempcpy
1101         mmap
1102         msync
1103         nanosleep
1104         open64
1105         pathconf
1106         posix_fadvise
1107         posix_fadvise64
1108         posix_memalign
1109         prctl
1110         pread
1111         pwrite
1112         pread64
1113         pwrite64
1114         secure_getenv
1115         setmntent
1116         setresgid
1117         setresuid
1118         snprintf
1119         srandom
1120         stpcpy
1121         strcasecmp
1122         strdup
1123         strnlen
1124         strptime
1125         strtoull
1126         sync_file_range
1127         sysconf
1128         usleep
1129         utime
1130         utimes
1131         valloc
1132 ]))
1133 dnl
1134 dnl Check to see if -lsocket is required (solaris) to make something
1135 dnl that uses socket() to compile; this is needed for the UUID library
1136 dnl
1137 SOCKET_LIB=''
1138 AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket])
1139 AC_SUBST(SOCKET_LIB)
1140 dnl
1141 dnl See if libmagic exists
1142 dnl
1143 AC_CHECK_LIB(magic, magic_file, [MAGIC_LIB=-lmagic
1144 AC_CHECK_HEADERS([magic.h])])
1145 if test "$ac_cv_lib_dl_dlopen" = yes ; then
1146    MAGIC_LIB=$DLOPEN_LIB
1147 fi
1148 AC_SUBST(MAGIC_LIB)
1149 dnl
1150 dnl See if optreset exists
1151 dnl
1152 AC_MSG_CHECKING(for optreset)
1153 AC_CACHE_VAL(ac_cv_have_optreset,
1154 [AC_EGREP_HEADER(optreset, unistd.h,
1155   ac_cv_have_optreset=yes, ac_cv_have_optreset=no)])dnl
1156 AC_MSG_RESULT($ac_cv_have_optreset)
1157 if test $ac_cv_have_optreset = yes; then
1158   AC_DEFINE(HAVE_OPTRESET, 1, [Define to 1 if optreset for getopt is present])
1159 fi
1160 dnl
1161 dnl Test for sem_init, and which library it might require:
1162 dnl
1163 AH_TEMPLATE([HAVE_SEM_INIT], [Define to 1 if sem_init() exists])
1164 SEM_INIT_LIB=''
1165 AC_CHECK_FUNC(sem_init, ,
1166   AC_CHECK_LIB(pthread, sem_init,
1167         AC_DEFINE(HAVE_SEM_INIT, 1)
1168         SEM_INIT_LIB=-lpthread,
1169   AC_CHECK_LIB(rt, sem_init,
1170         AC_DEFINE(HAVE_SEM_INIT, 1)
1171         SEM_INIT_LIB=-lrt,
1172   AC_CHECK_LIB(posix4, sem_init,
1173         AC_DEFINE(HAVE_SEM_INIT, 1)
1174         SEM_INIT_LIB=-lposix4))))dnl
1175 AC_SUBST(SEM_INIT_LIB)
1176 dnl
1177 dnl Check for unified diff
1178 dnl
1179 AC_MSG_CHECKING(for unified diff option)
1180 if diff -u $0 $0 > /dev/null 2>&1 ; then
1181    UNI_DIFF_OPTS=-u
1182 else
1183    UNI_DIFF_OPTS=-c
1184 fi
1185 AC_MSG_RESULT($UNI_DIFF_OPTS)
1186 AC_SUBST(UNI_DIFF_OPTS)
1187 dnl
1188 dnl We use the EXT2 ioctls only under Linux
1189 dnl
1190 case "$host_os" in
1191 linux*)
1192         AC_DEFINE(HAVE_EXT2_IOCTLS, 1, [Define to 1 if Ext2 ioctls present])
1193         ;;
1194 esac
1195 dnl
1196 dnl OS-specific uncomment control
1197 dnl
1198 LINUX_CMT="#"
1199 CYGWIN_CMT="#"
1200 UNIX_CMT=
1201 case "$host_os" in
1202 linux*)
1203         LINUX_CMT=
1204         ;;
1205 cygwin)
1206         CYGWIN_CMT=
1207         UNIX_CMT="#"
1208         ;;
1209 esac
1210 AC_SUBST(LINUX_CMT)
1211 AC_SUBST(CYGWIN_CMT)
1212 AC_SUBST(UNIX_CMT)
1213 dnl
1214 dnl Linux and Hurd places root files in the / by default
1215 dnl
1216 case "$host_os" in
1217 linux* | gnu* | k*bsd*-gnu)
1218         if test "$prefix" = NONE -a "$root_prefix" = NONE ; then
1219                 root_prefix="";
1220                 AC_MSG_RESULT([On $host_os systems, root_prefix defaults to ''])
1221         fi
1222         ;;
1223 esac
1224 dnl
1225 dnl On Linux/hurd, force the prefix to be /usr
1226 dnl
1227 case "$host_os" in
1228 linux* | gnu* | k*bsd*-gnu)
1229         if test "$prefix" = NONE ; then
1230                 prefix="/usr";
1231                 AC_MSG_RESULT([On $host_os systems, prefix defaults to /usr])
1232                 if test "$mandir" = '${prefix}/man' ; then
1233                         AC_MSG_RESULT([...and mandir defaults to /usr/share/man])
1234                         mandir=/usr/share/man
1235                 fi
1236         fi
1237 ;;
1238 esac
1239 if test "$root_prefix" = NONE ; then
1240         if test "$prefix" = NONE ; then
1241                 root_prefix="$ac_default_prefix"
1242         else
1243                 root_prefix="$prefix"
1244         fi
1245         root_bindir=$bindir
1246         root_sbindir=$sbindir
1247         root_libdir=$libdir
1248         root_sysconfdir=$sysconfdir
1249 else
1250         root_bindir='${root_prefix}/bin'
1251         root_sbindir='${root_prefix}/sbin'
1252         root_libdir='${root_prefix}/lib'
1253         root_sysconfdir='${root_prefix}/etc'
1254 fi
1255 if test "$bindir" != '${exec_prefix}/bin'; then
1256     root_bindir=$bindir
1257     AC_MSG_RESULT([Setting root_bindir to $root_bindir])
1258 fi
1259 if test "$sbindir" != '${exec_prefix}/sbin'; then
1260     root_sbindir=$sbindir
1261     AC_MSG_RESULT([Setting root_sbindir to $root_sbindir])
1262 fi
1263 if test "$libdir" != '${exec_prefix}/lib'; then
1264     root_libdir=$libdir
1265     AC_MSG_RESULT([Setting root_libdir to $root_libdir])
1266 fi
1267 if test "$sysconfdir" != '${prefix}/etc'; then
1268     root_sysconfdir=$sysconfdir
1269     AC_MSG_RESULT([Setting root_sysconfdir to $root_sysconfdir])
1270 fi
1271 AC_SUBST(root_prefix)
1272 AC_SUBST(root_bindir)
1273 AC_SUBST(root_sbindir)
1274 AC_SUBST(root_libdir)
1275 AC_SUBST(root_sysconfdir)
1276 dnl
1277 dnl Allow specification of the multiarch arch
1278 dnl
1279 AC_ARG_WITH([multiarch],
1280 [  --with-multiarch=ARCH specify the multiarch triplet],
1281 if test "$withval" = "lib64"; then
1282     libdir=/usr/lib64
1283     root_libdir=/lib64
1284 else
1285     libdir=$libdir/$withval
1286     root_libdir=$root_libdir/$withval
1287 fi
1288 )dnl
1289 dnl
1290 dnl See if -static works.  This could fail if the linker does not
1291 dnl support -static, or if required external libraries are not available
1292 dnl in static form.
1293 dnl
1294 AC_MSG_CHECKING([whether we can link with -static])
1295 AC_CACHE_VAL(ac_cv_e2fsprogs_use_static,
1296 [SAVE_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS -static"
1297 AC_TRY_LINK([#include <stdio.h>],[fflush(stdout);],
1298  ac_cv_e2fsprogs_use_static=yes, ac_cv_e2fsprogs_use_static=no)
1299 LDFLAGS=$SAVE_LDFLAGS])
1300 dnl
1301 dnl Regardless of how the test turns out, Solaris doesn't handle -static
1302 dnl This is caused by the socket library requiring the nsl library, which
1303 dnl requires the -dl library, which only works for dynamically linked 
1304 dnl programs.  It basically means you can't have statically linked programs
1305 dnl which use the network under Solaris.  
1306 dnl
1307 case "$host_os" in
1308 solaris2.*)
1309         ac_cv_e2fsprogs_use_static=no   
1310 ;;
1311 esac
1312 AC_MSG_RESULT($ac_cv_e2fsprogs_use_static)
1313 LDFLAG_STATIC=
1314 if test $ac_cv_e2fsprogs_use_static = yes; then
1315         LDFLAG_STATIC=-static
1316 fi
1317 AC_SUBST(LDFLAG_STATIC)
1318 dnl
1319 dnl Work around mysterious Darwin / GNU libintl problem
1320 dnl (__asm__ redirection doesn't work for some mysterious reason.  Looks like
1321 dnl Apple hacked gcc somehow?)
1322 dnl
1323 case "$host_os" in
1324 darwin*)
1325         AC_MSG_RESULT([Using Apple Darwin / GNU libintl workaround])
1326         AC_DEFINE(_INTL_REDIRECT_MACROS, 1,
1327                 [Define to 1 if Apple Darwin libintl workaround is needed])
1328         ;;
1329 esac
1330 dnl
1331 dnl Make the ss and et directories work correctly.
1332 dnl
1333 SS_DIR=`cd ${srcdir}/lib/ss; pwd`
1334 ET_DIR=`cd ${srcdir}/lib/et; pwd`
1335 AC_SUBST(SS_DIR)
1336 AC_SUBST(ET_DIR)
1337 dnl
1338 dnl Only try to run the test suite if we're not cross compiling.
1339 dnl
1340 if test "$cross_compiling" = yes ; then
1341   DO_TEST_SUITE=
1342 else
1343   DO_TEST_SUITE=check
1344 fi
1345 AC_SUBST(DO_TEST_SUITE)
1346 dnl
1347 dnl Only include the intl include files if we're building with them
1348 dnl
1349 INCLUDES='-I. -I$(top_builddir)/lib -I$(top_srcdir)/lib'
1350 if test -n "$CPPFLAGS" ; then
1351         INCLUDES="$INCLUDES $CPPFLAGS"
1352 fi
1353 if test "$USE_INCLUDED_LIBINTL" = "yes" ; then
1354         INCLUDES=$INCLUDES' -I$(top_builddir)/intl -I$(top_srcdir)/intl'
1355 fi
1356 if test -n "$WITH_DIET_LIBC" ; then
1357         INCLUDES="$INCLUDES -D_REENTRANT"
1358 fi
1359 AC_SUBST(INCLUDES)
1360 AM_MKINSTALLDIRS
1361 dnl
1362 dnl Build CFLAGS
1363 dnl
1364 if test $cross_compiling = no; then
1365    BUILD_CFLAGS="$CFLAGS $CPPFLAGS $INCLUDES -DHAVE_CONFIG_H"
1366    BUILD_LDFLAGS="$LDFLAGS"
1367 fi
1368 AC_SUBST(BUILD_CFLAGS)
1369 AC_SUBST(BUILD_LDFLAGS)
1370 dnl
1371 dnl Make our output files, being sure that we create the some miscellaneous 
1372 dnl directories
1373 dnl
1374 test -d lib || mkdir lib
1375 test -d include || mkdir include
1376 test -d include/linux || mkdir include/linux
1377 test -d include/asm || mkdir include/asm
1378 for i in MCONFIG Makefile e2fsprogs.spec \
1379         util/Makefile util/subst.conf util/gen-tarball util/install-symlink \
1380         lib/et/Makefile lib/ss/Makefile lib/e2p/Makefile \
1381         lib/ext2fs/Makefile lib/ext2fs/ext2_types.h \
1382         lib/uuid/Makefile lib/uuid/uuid_types.h \
1383         lib/blkid/Makefile lib/blkid/blkid_types.h lib/quota/Makefile \
1384         lib/ss/ss.pc lib/uuid/uuid.pc lib/et/com_err.pc \
1385         lib/e2p/e2p.pc lib/blkid/blkid.pc lib/ext2fs/ext2fs.pc \
1386         misc/Makefile ext2ed/Makefile e2fsck/Makefile \
1387         debugfs/Makefile tests/Makefile tests/progs/Makefile \
1388         resize/Makefile doc/Makefile intl/Makefile \
1389         intl/libgnuintl.h po/Makefile.in ; do
1390         if test -d `dirname ${srcdir}/$i` ; then
1391                 outlist="$outlist $i"
1392         fi
1393 done
1394 AC_OUTPUT($outlist)
1395 if test -f util/gen-tarball; then chmod +x util/gen-tarball; fi