Whamcloud - gitweb
e2fsck: Move check to add an index to a directory after fixing i_size
[tools/e2fsprogs.git] / configure.in
1 AC_INIT(version.h)
2 AC_PREREQ(2.50)
3 AC_CONFIG_AUX_DIR(config)
4 MCONFIG=./MCONFIG
5 AC_SUBST_FILE(MCONFIG)
6 BINARY_TYPE=bin
7 dnl
8 dnl This is to figure out the version number and the date....
9 dnl
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}' \
13         | tr \" " "`
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}'`
17
18 if expr $YEAR ">" 1900 > /dev/null ; then
19         E2FSPROGS_YEAR=$YEAR
20 elif expr $YEAR ">" 90 >/dev/null ; then
21         E2FSPROGS_YEAR=19$YEAR
22 else
23         E2FSPROGS_YEAR=20$YEAR
24 fi
25
26 case $MONTH in
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??]) ;;
40 esac
41
42 base_ver=`echo $E2FSPROGS_VERSION | \
43                sed -e 's/-WIP//' -e 's/pre-//' -e 's/-PLUS//'`
44
45 date_spec=${E2FSPROGS_YEAR}.${MONTH_NUM}.${E2FSPROGS_DAY}
46
47 case $E2FSPROGS_VERSION in
48 *-WIP|pre-*)
49         E2FSPROGS_PKGVER="$base_ver~WIP-$E2FSPROGS_YEAR-$MONTH_NUM-$E2FSPROGS_DAY"
50         ;;
51 *)
52         E2FSPROGS_PKGVER="$base_ver"
53         ;;
54 esac
55
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)
64 AC_CANONICAL_HOST
65 dnl
66 dnl Check to see if libdl exists for the sake of dlopen
67 dnl
68 DLOPEN_LIB=''
69 AC_CHECK_LIB(dl, dlopen, 
70 [DLOPEN_LIB=-ldl
71 AC_DEFINE(HAVE_DLOPEN)])
72 AC_SUBST(DLOPEN_LIB)
73 dnl
74 dnl Use diet libc
75 dnl 
76 WITH_DIET_LIBC=
77 AC_ARG_WITH([diet-libc],
78 [  --with-diet-libc        use diet libc],
79 CC="diet cc -nostdinc"
80 WITH_DIET_LIBC=yes
81 AC_MSG_RESULT(CC=$CC))dnl
82 dnl
83 AC_ARG_WITH([cc],
84 AC_HELP_STRING([--with-cc],[no longer supported, use CC= instead]),
85 AC_MSG_ERROR([--with-cc no longer supported; use CC= instead]))
86 dnl
87 AC_ARG_WITH([ccopts],
88 AC_HELP_STRING([--with-ccopts],[no longer supported, use CFLAGS= instead]),
89 AC_MSG_ERROR([--with-ccopts no longer supported; use CFLAGS= instead]))
90 dnl
91 AC_ARG_WITH([ldopts],
92 AC_HELP_STRING([--with-ldopts],[no longer supported, use LDFLAGS= instead]),
93 AC_MSG_ERROR([--with-ldopts no longer supported; use LDFLAGS= instead]))
94 dnl
95 AC_PROG_CC
96 AC_PROG_CPP
97 dnl
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.
101 dnl
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'
105 fi
106 AC_SUBST(LINUX_INCLUDE)
107 dnl
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)
111 if test "$GCC" = yes
112 then
113     case "$host_cpu" in
114         alpha)          addcflags="-mieee" ;;
115     esac
116 fi
117 if test "x$addcflags" != x
118 then
119     AC_MSG_RESULT($addcflags)
120     CFLAGS="$addcflags $CFLAGS"
121 else
122     AC_MSG_RESULT([[(none)]])
123 fi
124 dnl
125 dnl Set default values for library extentions.  Will be dealt with after
126 dnl parsing configuration opions, which may modify these
127 dnl
128 LIB_EXT=.a
129 STATIC_LIB_EXT=.a
130 PROFILED_LIB_EXT=.a
131 dnl
132 dnl Allow separate `root_prefix' to be specified
133 dnl
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,
137 root_prefix=NONE)dnl
138 dnl
139 dnl handle --enable-maintainer-mode
140 dnl
141 AC_ARG_ENABLE([maintainer-mode],
142 [  --enable-maintainer-mode enable makefile rules useful for maintainers],
143 if test "$enableval" = "no"
144 then
145         MAINTAINER_CMT=#
146         AC_MSG_RESULT([Disabling maintainer mode])
147 else
148         MAINTAINER_CMT=
149         AC_MSG_RESULT([Enabling maintainer mode])
150 fi
151 ,
152 MAINTAINER_CMT=#
153 AC_MSG_RESULT([Disabling maintainer mode by default])
154 )
155 AC_SUBST(MAINTAINER_CMT)
156 dnl
157 dnl handle --enable-verbose-makecmds
158 dnl
159 AC_ARG_ENABLE([verbose-makecmds],
160 [  --enable-verbose-makecmds  enable verbose make command output],
161 if test "$enableval" = "no"
162 then
163         AC_MSG_RESULT([Disabling verbose make commands])
164         E=@echo
165         Q=@
166 else
167         AC_MSG_RESULT([Enabling verbose make commands])
168         E=@\\#
169         Q= 
170 fi
171 ,
172 AC_MSG_RESULT([Disabling verbose make commands])
173 E=@echo
174 Q=@
175 )
176 AC_SUBST(E)
177 AC_SUBST(Q)
178 dnl
179 dnl handle --enable-compression
180 dnl
181 AC_ARG_ENABLE([compression],
182 [  --enable-compression   enable EXPERIMENTAL compression support],
183 if test "$enableval" = "no"
184 then
185         AC_MSG_RESULT([Disabling compression support])
186 else
187         AC_DEFINE(ENABLE_COMPRESSION)
188         AC_MSG_RESULT([Enabling compression support])
189         AC_MSG_WARN([Compression support is experimental])
190 fi
191 ,
192 AC_MSG_RESULT([Disabling compression support by default])
193 )
194 dnl
195 dnl handle --enable-htree
196 dnl
197 AC_ARG_ENABLE([htree],
198 [  --enable-htree         enable EXPERIMENTAL htree directory support],
199 if test "$enableval" = "no"
200 then
201         HTREE_CMT=#
202         AC_MSG_RESULT([Disabling htree directory support])
203 else
204         HTREE_CMT=
205         AC_DEFINE(ENABLE_HTREE)
206         AC_MSG_RESULT([Enabling htree directory support])
207 fi
208 ,
209 HTREE_CMT=
210 AC_DEFINE(ENABLE_HTREE)
211 AC_MSG_RESULT([Enabling htree directory support by default])
212 )
213 AC_SUBST(HTREE_CMT)
214 dnl
215 dnl This needs to be before all of the --enable-*-shlibs options
216 dnl
217 E2_PKG_CONFIG_STATIC=--static
218 LDFLAG_DYNAMIC=
219 PRIVATE_LIBS_CMT=
220 dnl
221 dnl handle --enable-elf-shlibs
222 dnl
223 AC_ARG_ENABLE([elf-shlibs],
224 [  --enable-elf-shlibs    select ELF shared libraries],
225 if test "$enableval" = "no"
226 then
227         ELF_CMT=#
228         MAKEFILE_ELF=/dev/null
229         AC_MSG_RESULT([Disabling ELF shared libraries])
230 else
231         E2_PKG_CONFIG_STATIC=
232         ELF_CMT=
233         MAKEFILE_ELF=$srcdir/lib/Makefile.elf-lib
234         [case "$host_os" in
235         solaris2.*)
236                 MAKEFILE_ELF=$srcdir/lib/Makefile.solaris-lib
237         ;;
238         esac]
239         BINARY_TYPE=elfbin
240         LIB_EXT=.so
241         PRIVATE_LIBS_CMT=#
242         LDFLAG_DYNAMIC=['-Wl,-rpath-link,$(top_builddir)/lib']
243         AC_MSG_RESULT([Enabling ELF shared libraries])
244 fi
245 ,
246 MAKEFILE_ELF=/dev/null
247 ELF_CMT=#
248 AC_MSG_RESULT([Disabling ELF shared libraries by default])
249 )
250 AC_SUBST(ELF_CMT)
251 AC_SUBST_FILE(MAKEFILE_ELF)
252 dnl
253 dnl handle --enable-bsd-shlibs
254 dnl
255 AC_ARG_ENABLE([bsd-shlibs],
256 [  --enable-bsd-shlibs    select BSD shared libraries],
257 if test "$enableval" = "no"
258 then
259         BSDLIB_CMT=#
260         MAKEFILE_BSDLIB=/dev/null
261         AC_MSG_RESULT([Disabling BSD shared libraries])
262 else
263         E2_PKG_CONFIG_STATIC=
264         BSDLIB_CMT=
265         MAKEFILE_BSDLIB=$srcdir/lib/Makefile.bsd-lib
266         LIB_EXT=.so
267         [case "$host_os" in
268         darwin*)
269                 MAKEFILE_BSDLIB=$srcdir/lib/Makefile.darwin-lib
270                 LIB_EXT=.dylib
271         ;;
272         esac]
273         AC_MSG_RESULT([Enabling BSD shared libraries])
274 fi
275 ,
276 MAKEFILE_BSDLIB=/dev/null
277 BSDLIB_CMT=#
278 AC_MSG_RESULT([Disabling BSD shared libraries by default])
279 )
280 AC_SUBST(BSDLIB_CMT)
281 AC_SUBST_FILE(MAKEFILE_BSDLIB)
282 dnl
283 dnl handle --enable-profile
284 dnl
285 AC_ARG_ENABLE([profile],
286 [  --enable-profile       build profiling libraries],
287 if test "$enableval" = "no"
288 then
289         PROFILE_CMT=#
290         MAKEFILE_PROFILE=/dev/null
291         AC_MSG_RESULT([Disabling profiling libraries])
292 else
293         PROFILE_CMT=
294         MAKEFILE_PROFILE=$srcdir/lib/Makefile.profile
295         PROFILED_LIB_EXT=_p.a
296         AC_MSG_RESULT([Building profiling libraries])
297 fi
298 ,
299 PROFILE_CMT=#
300 MAKEFILE_PROFILE=/dev/null
301 AC_MSG_RESULT([Disabling profiling libraries by default])
302 )
303 AC_SUBST(PROFILE_CMT)
304 AC_SUBST_FILE(MAKEFILE_PROFILE)
305 dnl
306 dnl handle --enable-checker
307 dnl
308 AC_ARG_ENABLE([checker],
309 [  --enable-checker       build checker libraries],
310 if test "$enableval" = "no"
311 then
312         CHECKER_CMT=#
313         MAKEFILE_CHECKER=/dev/null
314         AC_MSG_RESULT([Disabling checker libraries])
315 else
316         CHECKER_CMT=
317         MAKEFILE_CHECKER=$srcdir/lib/Makefile.checker
318         AC_MSG_RESULT([Building checker libraries])
319 fi
320 ,
321 CHECKER_CMT=#
322 MAKEFILE_CHECKER=/dev/null
323 AC_MSG_RESULT([Disabling checker libraries by default])
324 )
325 AC_SUBST(CHECKER_CMT)
326 AC_SUBST_FILE(MAKEFILE_CHECKER)
327 dnl
328 dnl Substitute library extensions
329 dnl
330 AC_SUBST(LIB_EXT)
331 AC_SUBST(STATIC_LIB_EXT)
332 AC_SUBST(PROFILED_LIB_EXT)
333 AC_SUBST(LDFLAG_DYNAMIC)
334 AC_SUBST(PRIVATE_LIBS_CMT)
335 dnl
336 dnl handle --enable-jbd-debug
337 dnl
338 AC_ARG_ENABLE([jbd-debug],
339 [  --enable-jbd-debug     enable journal debugging],
340 if test "$enableval" = "no"
341 then
342         AC_MSG_RESULT([Disabling journal debugging])
343 else
344         AC_DEFINE(CONFIG_JBD_DEBUG)
345         AC_MSG_RESULT([Enabling journal debugging])
346 fi
347 ,
348 AC_MSG_RESULT([Disabling journal debugging by default])
349 )
350 dnl
351 dnl handle --enable-blkid-debug
352 dnl
353 AC_ARG_ENABLE([blkid-debug],
354 [  --enable-blkid-debug    enable blkid debugging],
355 if test "$enableval" = "no"
356 then
357         AC_MSG_RESULT([Disabling blkid debugging])
358 else
359         AC_DEFINE(CONFIG_BLKID_DEBUG)
360         AC_MSG_RESULT([Enabling blkid debugging])
361 fi
362 ,
363 AC_MSG_RESULT([Disabling blkid debugging by default])
364 )
365 dnl
366 dnl handle --enable-testio-debug
367 dnl
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"
371 then
372         AC_MSG_RESULT([Disabling testio debugging])
373         TEST_IO_CMT="#"
374 else
375         TEST_IO_CMT=
376         AC_DEFINE(CONFIG_TESTIO_DEBUG)
377         AC_MSG_RESULT([Enabling testio debugging])
378 fi
379 ,
380 AC_MSG_RESULT([Enabling testio debugging by default])
381 AC_DEFINE(CONFIG_TESTIO_DEBUG)
382 TEST_IO_CMT=
383 )
384 AC_SUBST(TEST_IO_CMT)
385 dnl
386 dnl handle --disable-libuuid
387 dnl
388 PKG_PROG_PKG_CONFIG
389 LIBUUID=
390 DEPLIBUUID=
391 STATIC_LIBUUID=
392 DEPSTATIC_LIBUUID=
393 PROFILED_LIBUUID=
394 DEPPROFILED_LIBUUID=
395 UUID_CMT=
396 AC_ARG_ENABLE([libuuid],
397 [  --disable-libuuid      do not build private uuid library],
398 if test "$enableval" = "no"
399 then
400         if test -z "$PKG_CONFIG"; then
401                 AC_MSG_ERROR([pkg-config not installed; please install it.])
402         fi
403
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])],
408                 [$LIBUUID])
409         UUID_CMT=#
410         AC_MSG_RESULT([Disabling private uuid library])
411 else
412         LIBUUID='$(LIB)/libuuid'$LIB_EXT
413         DEPLIBUUID=$LIBUUID
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])
419 fi
420 ,
421 LIBUUID='$(LIB)/libuuid'$LIB_EXT
422 DEPLIBUUID=$LIBUUID
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])
428 )
429 AC_SUBST(LIBUUID)
430 AC_SUBST(DEPLIBUUID)
431 AC_SUBST(STATIC_LIBUUID)
432 AC_SUBST(DEPSTATIC_LIBUUID)
433 AC_SUBST(PROFILED_LIBUUID)
434 AC_SUBST(DEPPROFILED_LIBUUID)
435 AC_SUBST(UUID_CMT)
436 dnl
437 dnl handle --disable-libblkid
438 dnl
439 PKG_PROG_PKG_CONFIG
440 LIBBLKID=
441 DEPLIBBLKID=
442 STATIC_LIBBLKID=
443 DEPSTATIC_LIBBLKID=
444 PROFILED_LIBBLKID=
445 DEPPROFILED_LIBBLKID=
446 BLKID_CMT=
447 AC_ARG_ENABLE([libblkid],
448 [  --disable-libblkid     do not build private blkid library],
449 if test "$enableval" = "no"
450 then
451         if test -z "$PKG_CONFIG"; then
452                 AC_MSG_ERROR([pkg-config not installed; please install it.])
453         fi
454
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])],
459                 [$LIBBLKID])
460         BLKID_CMT=#
461         AC_MSG_RESULT([Disabling private blkid library])
462 else
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])
471 fi
472 ,
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])
481 )
482 AC_SUBST(LIBBLKID)
483 AC_SUBST(DEPLIBBLKID)
484 AC_SUBST(STATIC_LIBBLKID)
485 AC_SUBST(DEPSTATIC_LIBBLKID)
486 AC_SUBST(PROFILED_LIBBLKID)
487 AC_SUBST(DEPPROFILED_LIBBLKID)
488 AC_SUBST(BLKID_CMT)
489 dnl
490 dnl handle --enable-debugfs
491 dnl
492 AC_ARG_ENABLE([debugfs],
493 [  --disable-debugfs      disable support of debugfs program],
494 if test "$enableval" = "no"
495 then
496         AC_MSG_RESULT([Disabling debugfs support])
497         DEBUGFS_CMT="#"
498 else
499         DEBUGFS_CMT=
500         AC_MSG_RESULT([Enabling debugfs support])
501 fi
502 ,
503 AC_MSG_RESULT([Enabling debugfs support by default])
504 DEBUGFS_CMT=
505 )
506 AC_SUBST(DEBUGFS_CMT)
507 dnl
508 dnl handle --enable-imager
509 dnl
510 AC_ARG_ENABLE([imager],
511 [  --disable-imager       disable support of e2image program],
512 if test "$enableval" = "no"
513 then
514         AC_MSG_RESULT([Disabling e2image support])
515         IMAGER_CMT="#"
516 else
517         IMAGER_CMT=
518         AC_MSG_RESULT([Enabling e2image support])
519 fi
520 ,
521 AC_MSG_RESULT([Enabling e2image support by default])
522 IMAGER_CMT=
523 )
524 AC_SUBST(IMAGER_CMT)
525 dnl
526 dnl handle --enable-resizer
527 dnl
528 AC_ARG_ENABLE([resizer],
529 [  --disable-resizer      disable support of e2resize program],
530 if test "$enableval" = "no"
531 then
532         AC_MSG_RESULT([Disabling e2resize support])
533         RESIZER_CMT="#"
534 else
535         RESIZER_CMT=
536         AC_MSG_RESULT([Enabling e2resize support])
537 fi
538 ,
539 AC_MSG_RESULT([Enabling e2resize support by default])
540 RESIZER_CMT=
541 )
542 AC_SUBST(RESIZER_CMT)
543 dnl
544 dnl See whether to install the `fsck' wrapper program (that calls e2fsck)
545 dnl
546 AC_ARG_ENABLE([fsck],
547 [  --enable-fsck           build fsck wrapper program],
548 [if test "$enableval" = "no"
549 then
550         FSCK_PROG='' FSCK_MAN=''
551         AC_MSG_RESULT([Not building fsck wrapper])
552 else
553         FSCK_PROG=fsck FSCK_MAN=fsck.8
554         AC_MSG_RESULT([Building fsck wrapper])
555 fi]
556 ,
557 [case "$host_os" in
558   gnu*)
559     FSCK_PROG='' FSCK_MAN=''
560     AC_MSG_RESULT([Not building fsck wrapper by default])
561     ;;
562   *)
563     FSCK_PROG=fsck FSCK_MAN=fsck.8
564     AC_MSG_RESULT([Building fsck wrapper by default])
565 esac]
566 )
567 AC_SUBST(FSCK_PROG)
568 AC_SUBST(FSCK_MAN)
569 dnl
570 dnl See whether to install the `e2initrd-helper' program
571 dnl
572 AC_ARG_ENABLE([e2initrd-helper],
573 [  --enable-e2initrd-helper build e2initrd-helper program],
574 [if test "$enableval" = "no"
575 then
576         E2INITRD_PROG='' E2INITRD_MAN=''
577         AC_MSG_RESULT([Not building e2initrd helper])
578 else
579         E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8
580         AC_MSG_RESULT([Building e2initrd helper])
581 fi]
582 ,
583 E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8
584 AC_MSG_RESULT([Building e2initrd helper by default])
585 )
586 AC_SUBST(E2INITRD_PROG)
587 AC_SUBST(E2INITRD_MAN)
588 dnl
589 dnl
590 dnl
591 AC_ARG_ENABLE([tls],
592 [  --disable-tls           disable use of thread local support],
593 [if test "$enableval" = "no"
594 then
595         try_tls=""
596         AC_MSG_RESULT([Disabling thread local support])
597 else
598         try_tls="yes"
599         AC_MSG_RESULT([Enabling thread local support])
600 fi]
601 ,
602 if test -n "$WITH_DIET_LIBC"
603 then
604         try_tls=""
605         AC_MSG_RESULT([Diet libc does not support thread local support])
606 else
607         try_tls="yes"
608         AC_MSG_RESULT([Try using thread local support by default])
609 fi
610 )
611 if test "$try_tls" = "yes"
612 then
613 AX_TLS
614 fi
615 dnl
616 dnl
617 dnl
618 AC_ARG_ENABLE([uuidd],
619 [  --disable-uuidd         disable building the uuid daemon],
620 [if test "$enableval" = "no"
621 then
622         AC_MSG_RESULT([Not building uuidd])
623         UUIDD_CMT="#"
624 else
625         AC_DEFINE(USE_UUIDD)
626         UUIDD_CMT=""
627         AC_MSG_RESULT([Building uuidd])
628 fi]
629 ,
630 AC_DEFINE(USE_UUIDD)
631 UUIDD_CMT=""
632 AC_MSG_RESULT([Building uuidd by default])
633 )
634 AC_SUBST(UUIDD_CMT)
635 dnl
636 dnl
637 dnl
638 MAKEFILE_LIBRARY=$srcdir/lib/Makefile.library
639 AC_SUBST_FILE(MAKEFILE_LIBRARY)
640 dnl
641 dnl Add internationalization support, using gettext.
642 dnl
643 GETTEXT_PACKAGE=e2fsprogs
644 PACKAGE=e2fsprogs
645 VERSION="$E2FSPROGS_VERSION"
646 VERSION=0.14.1
647 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
648 AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
649 AC_SUBST(GETTEXT_PACKAGE)
650 AC_SUBST(PACKAGE)
651 AC_SUBST(VERSION)
652
653 AM_GNU_GETTEXT
654 dnl
655 dnl End of configuration options
656 dnl
657 AC_SUBST(BINARY_TYPE)
658 AC_PROG_MAKE_SET
659 CHECK_GNU_MAKE
660 AC_PATH_PROG(LN, ln, ln)
661 AC_PROG_LN_S
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, :)
666 AC_PROG_AWK
667 AC_PROG_EGREP
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"
677 else
678     case "$MAKEINFO" in
679       */missing.*)
680         AC_MSG_WARN([
681 *** Makeinfo is missing. Info documentation will not be built.])
682         ;;
683       *)
684         ;;
685     esac
686 fi
687 AC_SUBST(MAKEINFO)
688 AC_PROG_INSTALL
689 # See if we need a separate native compiler.
690 if test $cross_compiling = no; then
691   BUILD_CC="$CC"
692   AC_SUBST(BUILD_CC)
693 else
694   AC_CHECK_PROGS(BUILD_CC, gcc cc)
695 fi
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,,,
698 [[
699 #if HAVE_SYS_QUEUE_H
700 #include <sys/queue.h>
701 #endif
702 ]])
703 AC_CHECK_HEADERS(net/if.h,,,
704 [[
705 #if HAVE_SYS_TYPES_H
706 #include <sys/types.h>
707 #endif
708 #if HAVE_SYS_SOCKET
709 #include <sys/socket.h>
710 #endif
711 ]])
712 AC_FUNC_VPRINTF
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>])
720 dnl
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....
723 dnl
724 AC_CHECK_DECL(llseek,[AC_DEFINE(HAVE_LLSEEK_PROTOTYPE)],,
725               [#include <unistd.h>])
726 dnl
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.  
731 dnl
732 dnl Warning!  Use of --enable-gcc-wall may throw off this test.
733 dnl
734 dnl
735 AC_CHECK_DECL(lseek64,[AC_DEFINE(HAVE_LSEEK64_PROTOTYPE)],,
736                 [#define _LARGEFILE_SOURCE
737                  #define _LARGEFILE64_SOURCE
738                  #include <unistd.h>])
739 dnl
740 dnl Word sizes...
741 dnl
742 AC_CHECK_SIZEOF(short)
743 AC_CHECK_SIZEOF(int)
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)
751 AC_SUBST(SIZEOF_INT)
752 AC_SUBST(SIZEOF_LONG)
753 AC_SUBST(SIZEOF_LONG_LONG)
754 AC_C_BIGENDIAN
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)
758 dnl
759 dnl Save the configuration #defines needed for the public ext2fs.h
760 dnl header file
761 dnl
762 echo "/* These defines are needed for the public ext2fs.h header file */" \
763      > public_config.h
764 if grep HAVE_SYS_TYPES_H confdefs.h > tmp_config.$$; then
765   uniq tmp_config.$$ >> public_config.h
766 else
767   echo "#undef HAVE_SYS_TYPES_H" >> public_config.h
768 fi
769 if grep WORDS_BIGENDIAN confdefs.h > tmp_config.$$; then
770   uniq tmp_config.$$ >> public_config.h
771 else
772   echo "#undef WORDS_BIGENDIAN" >> public_config.h
773 fi
774 rm -f tmp_config.$$
775 PUBLIC_CONFIG_HEADER=./public_config.h
776 AC_SUBST_FILE(PUBLIC_CONFIG_HEADER)
777 dnl
778 dnl See if we have inttypes.h and if intptr_t is defined
779 dnl
780 AC_CHECK_HEADERS([inttypes.h])
781 AC_CHECK_TYPES(intptr_t)
782 dnl
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().
785 dnl
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)
803   fi
804 fi
805 dnl
806 dnl Check for the presence of SA_LEN
807 dnl
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>])
812 dnl
813 dnl This will add -lblkid to the AC_CHECK_FUNCS search if we are using
814 dnl the system-provided blkid library
815 dnl
816 if test -n "$BLKID_CMT"; then
817   AC_SEARCH_LIBS([blkid_probe_all], [blkid])
818 fi
819 dnl
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)
821 dnl
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
824 dnl
825 SOCKET_LIB=''
826 AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket])
827 AC_SUBST(SOCKET_LIB)
828 dnl
829 dnl See if optreset exists
830 dnl
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)
838 fi
839 dnl
840 dnl Test for sem_init, and which library it might require:
841 dnl
842 SEM_INIT_LIB=''
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)
849         SEM_INIT_LIB=-lrt,
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)
854 dnl
855 dnl Check for unified diff
856 dnl
857 AC_MSG_CHECKING(for unified diff option)
858 if diff -u $0 $0 > /dev/null 2>&1 ; then
859    UNI_DIFF_OPTS=-u
860 else
861    UNI_DIFF_OPTS=-c
862 fi
863 AC_MSG_RESULT($UNI_DIFF_OPTS)
864 AC_SUBST(UNI_DIFF_OPTS)
865 dnl
866 dnl We use the EXT2 ioctls only under Linux
867 dnl
868 case "$host_os" in
869 linux*)
870         AC_DEFINE(HAVE_EXT2_IOCTLS)
871         ;;
872 esac
873 dnl
874 dnl OS-specific uncomment control
875 dnl
876 LINUX_CMT="#"
877 CYGWIN_CMT="#"
878 UNIX_CMT=
879 case "$host_os" in
880 linux*)
881         LINUX_CMT=
882         ;;
883 cygwin)
884         CYGWIN_CMT=
885         UNIX_CMT="#"
886         ;;
887 esac
888 AC_SUBST(LINUX_CMT)
889 AC_SUBST(CYGWIN_CMT)
890 AC_SUBST(UNIX_CMT)
891 dnl
892 dnl Linux and Hurd places root files in the / by default
893 dnl
894 case "$host_os" in
895 linux* | gnu* | k*bsd*-gnu)
896         if test "$prefix" = NONE -a "$root_prefix" = NONE ; then
897                 root_prefix="";
898                 AC_MSG_RESULT([On $host_os systems, root_prefix defaults to ''])
899         fi
900         ;;
901 esac
902 dnl
903 dnl On Linux/hurd, force the prefix to be /usr
904 dnl
905 case "$host_os" in
906 linux* | gnu* | k*bsd*-gnu)
907         if test "$prefix" = NONE ; then
908                 prefix="/usr";
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
913                 fi
914         fi
915 ;;
916 esac
917 if test "$root_prefix" = NONE ; then
918         if test "$prefix" = NONE ; then
919                 root_prefix="$ac_default_prefix"
920         else
921                 root_prefix="$prefix"
922         fi
923         root_bindir=$bindir
924         root_sbindir=$sbindir
925         root_libdir=$libdir
926         root_sysconfdir=$sysconfdir
927 else
928         root_bindir='${root_prefix}/bin'
929         root_sbindir='${root_prefix}/sbin'
930         root_libdir='${root_prefix}/lib'
931         root_sysconfdir='${root_prefix}/etc'
932 fi
933 if test "$bindir" != '${exec_prefix}/bin'; then
934     root_bindir=$bindir
935     AC_MSG_RESULT([Setting root_bindir to $root_bindir])
936 fi
937 if test "$sbindir" != '${exec_prefix}/sbin'; then
938     root_sbindir=$sbindir
939     AC_MSG_RESULT([Setting root_sbindir to $root_sbindir])
940 fi
941 if test "$libdir" != '${exec_prefix}/lib'; then
942     root_libdir=$libdir
943     AC_MSG_RESULT([Setting root_libdir to $root_libdir])
944 fi
945 if test "$sysconfdir" != '${prefix}/etc'; then
946     root_sysconfdir=$sysconfdir
947     AC_MSG_RESULT([Setting root_sysconfdir to $root_sysconfdir])
948 fi
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)
954 dnl
955 dnl See if -static works.
956 dnl
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])
963 dnl
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.  
969 dnl
970 case "$host_os" in
971 solaris2.*)
972         ac_cv_e2fsprogs_use_static=no   
973 ;;
974 esac
975 AC_MSG_RESULT($ac_cv_e2fsprogs_use_static)
976 LDFLAG_STATIC=
977 if test $ac_cv_e2fsprogs_use_static = yes; then
978         LDFLAG_STATIC=-static
979 fi
980 AC_SUBST(LDFLAG_STATIC)
981 dnl
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?)
985 dnl
986 case "$host_os" in
987 darwin*)
988         AC_MSG_RESULT([Using Apple Darwin / GNU libintl workaround])
989         AC_DEFINE(_INTL_REDIRECT_MACROS)
990         ;;
991 esac
992 dnl
993 dnl Make the ss and et directories work correctly.
994 dnl
995 SS_DIR=`cd ${srcdir}/lib/ss; pwd`
996 ET_DIR=`cd ${srcdir}/lib/et; pwd`
997 AC_SUBST(SS_DIR)
998 AC_SUBST(ET_DIR)
999 dnl
1000 dnl Only try to run the test suite if we're not cross compiling.
1001 dnl
1002 if test "$cross_compiling" = yes ; then
1003   DO_TEST_SUITE=
1004 else
1005   DO_TEST_SUITE=check
1006 fi
1007 AC_SUBST(DO_TEST_SUITE)
1008 dnl
1009 dnl Only include the intl include files if we're building with them
1010 dnl 
1011 INTL_FLAGS=
1012 if test "$USE_INCLUDED_LIBINTL" = "yes" ; then
1013         INTL_FLAGS='-I$(top_builddir)/intl -I$(top_srcdir)/intl'
1014 fi
1015 AC_SUBST(INTL_FLAGS)
1016 dnl
1017 dnl Build CFLAGS
1018 dnl
1019 if test $cross_compiling = no; then
1020    BUILD_CFLAGS="$CFLAGS"
1021    BUILD_LDFLAGS="$LDFLAGS"
1022 else
1023    BUILD_CFLAGS=
1024    BUILD_LDFLAGS=
1025 fi
1026 AC_SUBST(BUILD_CFLAGS)
1027 AC_SUBST(BUILD_LDFLAGS)
1028 dnl
1029 dnl Make our output files, being sure that we create the some miscellaneous 
1030 dnl directories
1031 dnl
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"
1050         fi
1051 done
1052 AC_OUTPUT($outlist)
1053 if test -f util/gen-tarball; then chmod +x util/gen-tarball; fi