OSDN Git Service

configure: only include libuuid and libblkid in AC_OUTPUT if needed
[android-x86/external-e2fsprogs.git] / configure.ac
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 [  --disable-htree                disable 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 [  --enable-libuuid       build and use 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 if test -n "$PKG_CONFIG"; then
479         AC_CHECK_LIB(uuid, uuid_generate,
480                 [LIBUUID=`$PKG_CONFIG --libs uuid`;
481                  STATIC_LIBUUID=`$PKG_CONFIG --static --libs uuid`])
482 fi
483 if test -n "$LIBUUID"; then
484         PROFILED_LIBUUID=$LIBUUID
485         UUID_CMT=#
486         AC_MSG_RESULT([Using system uuid by default])
487 else
488         LIBUUID='$(LIB)/libuuid'$LIB_EXT
489         DEPLIBUUID=$LIBUUID
490         STATIC_LIBUUID='$(LIB)/libuuid'$STATIC_LIB_EXT
491         DEPSTATIC_LIBUUID=$STATIC_LIBUUID
492         PROFILED_LIBUUID='$(LIB)/libuuid'$PROFILED_LIB_EXT
493         DEPPROFILED_LIBUUID=$PROFILED_LIBUUID
494         AC_MSG_RESULT([Enabling private uuid library by default])
495 fi
496 )
497 AC_SUBST(LIBUUID)
498 AC_SUBST(DEPLIBUUID)
499 AC_SUBST(STATIC_LIBUUID)
500 AC_SUBST(DEPSTATIC_LIBUUID)
501 AC_SUBST(PROFILED_LIBUUID)
502 AC_SUBST(DEPPROFILED_LIBUUID)
503 AC_SUBST(UUID_CMT)
504 dnl
505 dnl handle --disable-libblkid
506 dnl
507 PKG_PROG_PKG_CONFIG
508 LIBBLKID=
509 DEPLIBBLKID=
510 STATIC_LIBBLKID=
511 DEPSTATIC_LIBBLKID=
512 PROFILED_LIBBLKID=
513 DEPPROFILED_LIBBLKID=
514 BLKID_CMT=
515 AH_TEMPLATE([CONFIG_BUILD_FINDFS], [Define to 1 to compile findfs])
516 AC_ARG_ENABLE([libblkid],
517 [  --enable-libblkid      build and use private blkid library],
518 if test "$enableval" = "no"
519 then
520         if test -z "$PKG_CONFIG"; then
521                 AC_MSG_ERROR([pkg-config not installed; please install it.])
522         fi
523
524         AC_CHECK_LIB(blkid, blkid_get_cache,
525                 [LIBBLKID=`$PKG_CONFIG --libs blkid`;
526                  STATIC_LIBBLKID=`$PKG_CONFIG --static --libs blkid`],
527                 [AC_MSG_ERROR([external blkid library not found])], -luuid)
528         BLKID_CMT=#
529         PROFILED_LIBBLKID=$LIBBLKID
530         AC_MSG_RESULT([Disabling private blkid library])
531 else
532         LIBBLKID='$(LIB)/libblkid'$LIB_EXT
533         DEPLIBBLKID=$LIBBLKID
534         STATIC_LIBBLKID='$(LIB)/libblkid'$STATIC_LIB_EXT
535         DEPSTATIC_LIBBLKID=$STATIC_LIBBLKID
536         PROFILED_LIBBLKID='$(LIB)/libblkid'$PROFILED_LIB_EXT
537         DEPPROFILED_LIBBLKID=$PROFILED_LIBBLKID
538         AC_DEFINE(CONFIG_BUILD_FINDFS, 1)
539         AC_MSG_RESULT([Enabling private blkid library])
540 fi
541 ,
542 if test -n "$PKG_CONFIG"; then
543         AC_CHECK_LIB(blkid, blkid_get_cache,
544                 [LIBBLKID=`$PKG_CONFIG --libs blkid`;
545                  STATIC_LIBBLKID=`$PKG_CONFIG --static --libs blkid`])
546 fi
547 if test -n "$LIBBLKID"; then
548         BLKID_CMT=#
549         PROFILED_LIBBLKID=$LIBBLKID
550         AC_MSG_RESULT([Using system blkid library by default])
551 else
552         LIBBLKID='$(LIB)/libblkid'$LIB_EXT
553         DEPLIBBLKID=$LIBBLKID
554         STATIC_LIBBLKID='$(LIB)/libblkid'$STATIC_LIB_EXT
555         DEPSTATIC_LIBBLKID=$STATIC_LIBBLKID
556         PROFILED_LIBBLKID='$(LIB)/libblkid'$PROFILED_LIB_EXT
557         DEPPROFILED_LIBBLKID=$PROFILED_LIBBLKID
558         AC_DEFINE(CONFIG_BUILD_FINDFS, 1)
559         AC_MSG_RESULT([Enabling private blkid library by default])
560 fi
561 )
562 AC_SUBST(LIBBLKID)
563 AC_SUBST(DEPLIBBLKID)
564 AC_SUBST(STATIC_LIBBLKID)
565 AC_SUBST(DEPSTATIC_LIBBLKID)
566 AC_SUBST(PROFILED_LIBBLKID)
567 AC_SUBST(DEPPROFILED_LIBBLKID)
568 AC_SUBST(BLKID_CMT)
569 dnl
570 dnl handle --enable-quota
571 dnl
572 QUOTA_MAN_COMMENT='.\"'
573 QUOTA_CMT=
574 AC_SUBST(QUOTA_MAN_COMMENT)
575 PKG_PROG_PKG_CONFIG
576 AH_TEMPLATE([CONFIG_QUOTA], [Define to 1 to enable quota support])
577 AC_ARG_ENABLE([quota],
578 [  --disable-quota        disable quota support],
579 if test "$enableval" = "no"
580 then
581         QUOTA_CMT=#
582         AC_MSG_RESULT([Disabling quota support])
583 else
584         QUOTA_CMT=
585         AC_DEFINE(CONFIG_QUOTA, 1)
586         AC_MSG_RESULT([Enabling quota support])
587         QUOTA_MAN_COMMENT=""
588 fi
589 ,
590 QUOTA_CMT=
591 QUOTA_MAN_COMMENT=""
592 AC_DEFINE(CONFIG_QUOTA, 1)
593 AC_MSG_RESULT([Enabling quota support by default])
594 )
595 dnl
596 dnl Define stuff expected for quota library
597 dnl
598 LIBQUOTA='$(LIB)/libquota'$LIB_EXT
599 DEPLIBQUOTA=$LIBQUOTA
600 STATIC_LIBQUOTA='$(LIB)/libquota'$STATIC_LIB_EXT
601 DEPSTATIC_LIBQUOTA=$STATIC_LIBQUOTA
602 PROFILED_LIBQUOTA='$(LIB)/libquota'$PROFILED_LIB_EXT
603 DEPPROFILED_LIBQUOTA=$PROFILED_LIBQUOTA
604 AC_SUBST(LIBQUOTA)
605 AC_SUBST(DEPLIBQUOTA)
606 AC_SUBST(STATIC_LIBQUOTA)
607 AC_SUBST(DEPSTATIC_LIBQUOTA)
608 AC_SUBST(PROFILED_LIBQUOTA)
609 AC_SUBST(DEPPROFILED_LIBQUOTA)
610 AC_SUBST(QUOTA_CMT)
611 dnl
612 dnl handle --disable-backtrace
613 dnl
614 AH_TEMPLATE([DISABLE_BACKTRACE], [Define to 1 to disable use of backtrace])
615 AC_ARG_ENABLE([backtrace],
616 [  --disable-backtrace    disable use backtrace],
617 if test "$enableval" = "no"
618 then
619         AC_MSG_RESULT([Disabling use of backtrace])
620         AC_DEFINE(DISABLE_BACKTRACE, 1)
621 else
622         AC_MSG_RESULT([Enabling use of backtrace])
623 fi
624 ,
625 AC_MSG_RESULT([Enabling use of backtrace by default])
626 )
627 dnl
628 dnl handle --enable-debugfs
629 dnl
630 AC_ARG_ENABLE([debugfs],
631 [  --disable-debugfs      disable support of debugfs program],
632 if test "$enableval" = "no"
633 then
634         AC_MSG_RESULT([Disabling debugfs support])
635         DEBUGFS_CMT="#"
636 else
637         DEBUGFS_CMT=
638         AC_MSG_RESULT([Enabling debugfs support])
639 fi
640 ,
641 AC_MSG_RESULT([Enabling debugfs support by default])
642 DEBUGFS_CMT=
643 )
644 AC_SUBST(DEBUGFS_CMT)
645 dnl
646 dnl handle --enable-imager
647 dnl
648 AC_ARG_ENABLE([imager],
649 [  --disable-imager       disable support of e2image program],
650 if test "$enableval" = "no"
651 then
652         AC_MSG_RESULT([Disabling e2image support])
653         IMAGER_CMT="#"
654 else
655         IMAGER_CMT=
656         AC_MSG_RESULT([Enabling e2image support])
657 fi
658 ,
659 AC_MSG_RESULT([Enabling e2image support by default])
660 IMAGER_CMT=
661 )
662 AC_SUBST(IMAGER_CMT)
663 dnl
664 dnl handle --enable-resizer
665 dnl
666 AC_ARG_ENABLE([resizer],
667 [  --disable-resizer      disable support of e2resize program],
668 if test "$enableval" = "no"
669 then
670         AC_MSG_RESULT([Disabling e2resize support])
671         RESIZER_CMT="#"
672 else
673         RESIZER_CMT=
674         AC_MSG_RESULT([Enabling e2resize support])
675 fi
676 ,
677 AC_MSG_RESULT([Enabling e2resize support by default])
678 RESIZER_CMT=
679 )
680 AC_SUBST(RESIZER_CMT)
681 dnl
682 dnl handle --enable-defrag
683 dnl
684 AC_ARG_ENABLE([defrag],
685 [  --disable-defrag       disable support of e4defrag program],
686 if test "$enableval" = "no"
687 then
688         AC_MSG_RESULT([Disabling e4defrag support])
689         DEFRAG_CMT="#"
690 else
691         DEFRAG_CMT=
692         AC_MSG_RESULT([Enabling e4defrag support])
693 fi
694 ,
695 if test -z "$WITH_DIET_LIBC"
696 then
697         AC_MSG_RESULT([Enabling e4defrag support by default])
698         DEFRAG_CMT=
699 else
700         AC_MSG_RESULT([Disabling e4defrag support by default])
701         DEFRAG_CMT="#"
702 fi
703 )
704 AC_SUBST(DEFRAG_CMT)
705 dnl
706 dnl See whether to install the `fsck' wrapper program (that calls e2fsck)
707 dnl
708 AC_ARG_ENABLE([fsck],
709 [  --enable-fsck           build fsck wrapper program],
710 [if test "$enableval" = "no"
711 then
712         FSCK_PROG='' FSCK_MAN=''
713         AC_MSG_RESULT([Not building fsck wrapper])
714 else
715         FSCK_PROG=fsck FSCK_MAN=fsck.8
716         AC_MSG_RESULT([Building fsck wrapper])
717 fi]
718 ,
719 [case "$host_os" in
720   gnu*)
721     FSCK_PROG='' FSCK_MAN=''
722     AC_MSG_RESULT([Not building fsck wrapper by default])
723     ;;
724   *)
725     FSCK_PROG=fsck FSCK_MAN=fsck.8
726     AC_MSG_RESULT([Building fsck wrapper by default])
727 esac]
728 )
729 AC_SUBST(FSCK_PROG)
730 AC_SUBST(FSCK_MAN)
731 dnl
732 dnl See whether to install the `e2initrd-helper' program
733 dnl
734 AC_ARG_ENABLE([e2initrd-helper],
735 [  --enable-e2initrd-helper build e2initrd-helper program],
736 [if test "$enableval" = "no"
737 then
738         E2INITRD_PROG='' E2INITRD_MAN=''
739         AC_MSG_RESULT([Not building e2initrd helper])
740 else
741         E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8
742         AC_MSG_RESULT([Building e2initrd helper])
743 fi]
744 ,
745 E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8
746 AC_MSG_RESULT([Building e2initrd helper by default])
747 )
748 AC_SUBST(E2INITRD_PROG)
749 AC_SUBST(E2INITRD_MAN)
750 dnl
751 dnl
752 dnl
753 AC_ARG_ENABLE([tls],
754 [  --disable-tls           disable use of thread local support],
755 [if test "$enableval" = "no"
756 then
757         try_tls=""
758         AC_MSG_RESULT([Disabling thread local support])
759 else
760         try_tls="yes"
761         AC_MSG_RESULT([Enabling thread local support])
762 fi]
763 ,
764 if test -n "$WITH_DIET_LIBC"
765 then
766         try_tls=""
767         AC_MSG_RESULT([Diet libc does not support thread local support])
768 else
769         try_tls="yes"
770         AC_MSG_RESULT([Try using thread local support by default])
771 fi
772 )
773 if test "$try_tls" = "yes"
774 then
775 AX_TLS
776 fi
777 dnl
778 dnl
779 dnl
780 AH_TEMPLATE([USE_UUIDD], [Define to 1 to build uuidd])
781 AC_ARG_ENABLE([uuidd],
782 [  --disable-uuidd         disable building the uuid daemon],
783 [if test "$enableval" = "no"
784 then
785         AC_MSG_RESULT([Not building uuidd])
786         UUIDD_CMT="#"
787 else
788         AC_DEFINE(USE_UUIDD, 1)
789         UUIDD_CMT=""
790         AC_MSG_RESULT([Building uuidd])
791 fi]
792 ,
793 AC_DEFINE(USE_UUIDD, 1)
794 if test -z "$UUID_CMT"
795 then
796         UUIDD_CMT=""
797         AC_MSG_RESULT([Building uuidd by default])
798 else
799         UUIDD_CMT="#"
800         AC_MSG_RESULT([Disabling uuidd by default])
801 fi
802 )
803 AC_SUBST(UUIDD_CMT)
804 dnl
805 dnl handle --disable-mmp
806 dnl
807 AH_TEMPLATE([CONFIG_MMP], [Define to 1 to enable mmp support])
808 AC_ARG_ENABLE([mmp],
809 [  --disable-mmp           disable support mmp, Multi Mount Protection],
810 if test "$enableval" = "no"
811 then
812         AC_MSG_RESULT([Disabling mmp support])
813 else
814         AC_MSG_RESULT([Enabling mmp support])
815         AC_DEFINE(CONFIG_MMP, 1)
816 fi
817 ,
818 AC_MSG_RESULT([Enabling mmp support by default])
819 AC_DEFINE(CONFIG_MMP, 1)
820 )
821 dnl
822 dnl handle --disable-bmap-stats
823 dnl
824 AH_TEMPLATE([ENABLE_BMAP_STATS], [Define to 1 to enable bitmap stats.])
825 AC_ARG_ENABLE([bmap-stats],
826 [  --disable-bmap-stats    disable collection of bitmap stats.],
827 if test "$enableval" = "no"
828 then
829         AC_MSG_RESULT([Disabling bitmap statistics support])
830 else
831         AC_MSG_RESULT([Enabling bitmap statistics support])
832         AC_DEFINE(ENABLE_BMAP_STATS, 1)
833 fi
834 ,
835 AC_MSG_RESULT([Enabling bitmap statistics support by default])
836 AC_DEFINE(ENABLE_BMAP_STATS, 1)
837 )
838 dnl
839 dnl handle --enable-bmap-stats-ops
840 dnl
841 AH_TEMPLATE([ENABLE_BMAP_STATS_OPS], [Define to 1 to enable bitmap stats.])
842 AC_ARG_ENABLE([bmap-stats-ops],
843 [  --enable-bmap-stats-ops enable collection of additional bitmap stats],
844 if test "$enableval" = "no"
845 then
846         AC_MSG_RESULT([Disabling additional bitmap statistics])
847 else
848         dnl There has to be a better way!
849         AS_IF([test "x${enable_bmap_stats}" = "xno"],
850          AC_MSG_FAILURE([Error --enable-bmap-stats-ops requires bmap-stats]))
851
852         AC_MSG_RESULT([Enabling additional bitmap statistics])
853         AC_DEFINE(ENABLE_BMAP_STATS_OPS, 1)
854 fi
855 ,
856 AC_MSG_RESULT([Disabling additional bitmap statistics by default])
857 )
858 dnl
859 dnl
860 dnl
861 MAKEFILE_LIBRARY=$srcdir/lib/Makefile.library
862 AC_SUBST_FILE(MAKEFILE_LIBRARY)
863 dnl
864 dnl Add internationalization support, using gettext.
865 dnl
866 GETTEXT_PACKAGE=e2fsprogs
867 PACKAGE=e2fsprogs
868 VERSION="$E2FSPROGS_VERSION"
869 VERSION=0.14.1
870 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [package name for gettext])
871 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [version for gettext])
872 AC_SUBST(GETTEXT_PACKAGE)
873 AC_SUBST(PACKAGE)
874 AC_SUBST(VERSION)
875
876 AM_GNU_GETTEXT
877 dnl
878 dnl End of configuration options
879 dnl
880 AC_SUBST(BINARY_TYPE)
881 AC_PROG_MAKE_SET
882 CHECK_GNU_MAKE
883 AC_PATH_PROG(LN, ln, ln)
884 AC_PROG_LN_S
885 AC_PATH_PROG(MV, mv, mv)
886 AC_PATH_PROG(CP, cp, cp)
887 AC_PATH_PROG(RM, rm, rm)
888 AC_PATH_PROG(CHMOD, chmod, :)
889 AC_PROG_AWK
890 AC_PROG_EGREP
891 AC_PATH_PROG(SED, sed, sed)
892 AC_PATH_PROG(PERL, perl, perl)
893 AC_PATH_PROG(LDCONFIG, ldconfig, :)
894 AC_CHECK_TOOL(AR, ar, ar)
895 AC_CHECK_TOOL(RANLIB, ranlib, :)
896 AC_CHECK_TOOL(STRIP, strip, :)
897 AC_CHECK_PROG(MAKEINFO, makeinfo, makeinfo, )
898 if test "_$MAKEINFO" = "_"; then
899     MAKEINFO="@echo Makeinfo is missing. Info documentation will not be built.;true"
900 else
901     case "$MAKEINFO" in
902       */missing.*)
903         AC_MSG_WARN([
904 *** Makeinfo is missing. Info documentation will not be built.])
905         ;;
906       *)
907         ;;
908     esac
909 fi
910 AC_SUBST(MAKEINFO)
911 AC_PROG_INSTALL
912 # See if we need a separate native compiler.
913 if test $cross_compiling = no; then
914   BUILD_CC="$CC"
915   AC_SUBST(BUILD_CC)
916 else
917   AC_CHECK_PROGS(BUILD_CC, gcc cc)
918 fi
919 AC_CHECK_HEADERS(m4_flatten([
920         dirent.h
921         errno.h
922         execinfo.h
923         getopt.h
924         malloc.h
925         mntent.h
926         paths.h
927         semaphore.h
928         setjmp.h
929         signal.h
930         stdarg.h
931         stdint.h
932         stdlib.h
933         termios.h
934         termio.h
935         unistd.h
936         utime.h
937         attr/xattr.h
938         linux/falloc.h
939         linux/fd.h
940         linux/major.h
941         linux/loop.h
942         net/if_dl.h
943         netinet/in.h
944         sys/acl.h
945         sys/disklabel.h
946         sys/disk.h
947         sys/file.h
948         sys/ioctl.h
949         sys/key.h
950         sys/mkdev.h
951         sys/mman.h
952         sys/mount.h
953         sys/prctl.h
954         sys/resource.h
955         sys/select.h
956         sys/socket.h
957         sys/sockio.h
958         sys/stat.h
959         sys/syscall.h
960         sys/sysctl.h
961         sys/sysmacros.h
962         sys/time.h
963         sys/types.h
964         sys/un.h
965         sys/wait.h
966 ]))
967 AC_CHECK_HEADERS(net/if.h,,,
968 [[
969 #if HAVE_SYS_TYPES_H
970 #include <sys/types.h>
971 #endif
972 #if HAVE_SYS_SOCKET
973 #include <sys/socket.h>
974 #endif
975 ]])
976 AC_FUNC_VPRINTF
977 dnl Check to see if dirent has member d_reclen. On cygwin those d_reclen
978 dnl is not decleared.
979 AC_CHECK_MEMBER(struct dirent.d_reclen,[AC_DEFINE(HAVE_RECLEN_DIRENT, 1,
980                        [Define to 1 if dirent has d_reclen])],,
981                 [#include <dirent.h>])
982 AC_CHECK_MEMBERS([struct stat.st_atim])
983 dnl Check to see if ssize_t was declared
984 AC_CHECK_TYPE(ssize_t,[AC_DEFINE(HAVE_TYPE_SSIZE_T, 1,
985                 [Define to 1 if ssize_t declared])],,
986               [#include <sys/types.h>])
987 dnl
988 dnl Check to see if llseek() is declared in unistd.h.  On some libc's 
989 dnl it is, and on others it isn't..... Thank you glibc developers....
990 dnl
991 AC_CHECK_DECL(llseek,[AC_DEFINE(HAVE_LLSEEK_PROTOTYPE, 1,
992                         [Define to 1 if llseek declared in unistd.h])],,
993               [#include <unistd.h>])
994 dnl
995 dnl Check to see if lseek64() is declared in unistd.h.  Glibc's header files
996 dnl are so convoluted that I can't tell whether it will always be defined,
997 dnl and if it isn't defined while lseek64 is defined in the library, 
998 dnl disaster will strike.  
999 dnl
1000 dnl Warning!  Use of --enable-gcc-wall may throw off this test.
1001 dnl
1002 dnl
1003 AC_CHECK_DECL(lseek64,[AC_DEFINE(HAVE_LSEEK64_PROTOTYPE, 1,
1004                         [Define to 1 if lseek64 declared in unistd.h])],,
1005                 [#define _LARGEFILE_SOURCE
1006                  #define _LARGEFILE64_SOURCE
1007                  #include <unistd.h>])
1008 dnl
1009 dnl Word sizes...
1010 dnl
1011 AC_CHECK_SIZEOF(short)
1012 AC_CHECK_SIZEOF(int)
1013 AC_CHECK_SIZEOF(long)
1014 AC_CHECK_SIZEOF(long long)
1015 AC_CHECK_SIZEOF(off_t)
1016 SIZEOF_SHORT=$ac_cv_sizeof_short
1017 SIZEOF_INT=$ac_cv_sizeof_int
1018 SIZEOF_LONG=$ac_cv_sizeof_long
1019 SIZEOF_LONG_LONG=$ac_cv_sizeof_long_long
1020 SIZEOF_OFF_T=$ac_cv_sizeof_off_t
1021 AC_SUBST(SIZEOF_SHORT)
1022 AC_SUBST(SIZEOF_INT)
1023 AC_SUBST(SIZEOF_LONG)
1024 AC_SUBST(SIZEOF_LONG_LONG)
1025 AC_SUBST(SIZEOF_OFF_T)
1026 AC_C_BIGENDIAN
1027 if test $cross_compiling = no; then
1028   BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh
1029 else
1030   CROSS_COMPILE="1" BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh
1031 fi
1032 ASM_TYPES_HEADER=./asm_types.h
1033 AC_SUBST_FILE(ASM_TYPES_HEADER)
1034 dnl
1035 dnl Save the configuration #defines needed for the public ext2fs.h
1036 dnl header file
1037 dnl
1038 echo "/* These defines are needed for the public ext2fs.h header file */" \
1039      > public_config.h
1040 if grep HAVE_SYS_TYPES_H confdefs.h > tmp_config.$$; then
1041   uniq tmp_config.$$ >> public_config.h
1042 else
1043   echo "#undef HAVE_SYS_TYPES_H" >> public_config.h
1044 fi
1045 if grep WORDS_BIGENDIAN confdefs.h > tmp_config.$$; then
1046   uniq tmp_config.$$ >> public_config.h
1047 else
1048   echo "#undef WORDS_BIGENDIAN" >> public_config.h
1049 fi
1050 rm -f tmp_config.$$
1051 PUBLIC_CONFIG_HEADER=./public_config.h
1052 AC_SUBST_FILE(PUBLIC_CONFIG_HEADER)
1053 dnl
1054 dnl See if we have inttypes.h and if intptr_t is defined
1055 dnl
1056 AC_CHECK_HEADERS([inttypes.h])
1057 AC_CHECK_TYPES(intptr_t)
1058 dnl
1059 dnl See if struct stat has a st_flags field, in which case we can get file
1060 dnl flags somewhat portably.  Also check for the analogous setter, chflags().
1061 dnl
1062 AC_MSG_CHECKING(whether struct stat has a st_flags field)
1063 AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags,
1064         AC_TRY_COMPILE([#include <sys/stat.h>],
1065                 [struct stat stat; stat.st_flags = 0;],
1066                 [e2fsprogs_cv_struct_st_flags=yes],
1067                 [e2fsprogs_cv_struct_st_flags=no]))
1068 AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags)
1069 if test "$e2fsprogs_cv_struct_st_flags" = yes; then
1070   AC_MSG_CHECKING(whether st_flags field is useful)
1071   AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags_immut,
1072         AC_TRY_COMPILE([#include <sys/stat.h>],
1073                 [struct stat stat; stat.st_flags |= UF_IMMUTABLE;],
1074                 [e2fsprogs_cv_struct_st_flags_immut=yes],
1075                 [e2fsprogs_cv_struct_st_flags_immut=no]))
1076   AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags_immut)
1077   if test "$e2fsprogs_cv_struct_st_flags_immut" = yes; then
1078           AC_DEFINE(HAVE_STAT_FLAGS, 1,
1079                 [Define to 1 if struct stat has st_flags])
1080   fi
1081 fi
1082 dnl
1083 dnl Check for the presence of SA_LEN
1084 dnl
1085 AC_CHECK_MEMBER(struct sockaddr.sa_len,
1086                 AC_DEFINE_UNQUOTED(HAVE_SA_LEN,1,
1087                         [Define to 1 if if struct sockaddr contains sa_len]),,
1088         [#include <sys/types.h>
1089          #include <sys/socket.h>])
1090 dnl
1091 dnl This will add -lblkid to the AC_CHECK_FUNCS search if we are using
1092 dnl the system-provided blkid library
1093 dnl
1094 if test -n "$BLKID_CMT"; then
1095   AC_SEARCH_LIBS([blkid_probe_all], [blkid])
1096 fi
1097 dnl
1098 AC_CHECK_FUNCS(m4_flatten([
1099         __secure_getenv
1100         add_key
1101         backtrace
1102         blkid_probe_get_topology
1103         blkid_probe_enable_partitions
1104         chflags
1105         fadvise64
1106         fallocate
1107         fallocate64
1108         fchown
1109         fdatasync
1110         fstat64
1111         ftruncate64
1112         futimes
1113         getcwd
1114         getdtablesize
1115         getmntinfo
1116         getpwuid_r
1117         getrlimit
1118         getrusage
1119         jrand48
1120         keyctl
1121         llistxattr
1122         llseek
1123         lseek64
1124         mallinfo
1125         mbstowcs
1126         memalign
1127         mempcpy
1128         mmap
1129         msync
1130         nanosleep
1131         open64
1132         pathconf
1133         posix_fadvise
1134         posix_fadvise64
1135         posix_memalign
1136         prctl
1137         pread
1138         pwrite
1139         pread64
1140         pwrite64
1141         secure_getenv
1142         setmntent
1143         setresgid
1144         setresuid
1145         snprintf
1146         srandom
1147         stpcpy
1148         strcasecmp
1149         strdup
1150         strnlen
1151         strptime
1152         strtoull
1153         sync_file_range
1154         sysconf
1155         usleep
1156         utime
1157         utimes
1158         valloc
1159 ]))
1160 dnl
1161 dnl Check to see if -lsocket is required (solaris) to make something
1162 dnl that uses socket() to compile; this is needed for the UUID library
1163 dnl
1164 SOCKET_LIB=''
1165 AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket])
1166 AC_SUBST(SOCKET_LIB)
1167 dnl
1168 dnl See if libmagic exists
1169 dnl
1170 AC_CHECK_LIB(magic, magic_file, [MAGIC_LIB=-lmagic
1171 AC_CHECK_HEADERS([magic.h])])
1172 if test "$ac_cv_lib_dl_dlopen" = yes ; then
1173    MAGIC_LIB=$DLOPEN_LIB
1174 fi
1175 AC_SUBST(MAGIC_LIB)
1176 dnl
1177 dnl Check to see if the FUSE library is -lfuse or -losxfuse
1178 dnl
1179 FUSE_CMT=
1180 FUSE_LIB=
1181 dnl osxfuse.dylib supersedes fuselib.dylib
1182 AC_ARG_ENABLE([fuse2fs],
1183 [  --disable-fuse2fs      do not build fuse2fs],
1184 if test "$enableval" = "no"
1185 then
1186         FUSE_CMT="#"
1187         AC_MSG_RESULT([Disabling fuse2fs])
1188 else
1189         AC_CHECK_HEADERS([pthread.h fuse.h], [],
1190 [AC_MSG_FAILURE([Cannot find fuse2fs headers.])],
1191 [#define _FILE_OFFSET_BITS      64
1192 #define FUSE_USE_VERSION 29])
1193
1194         AC_PREPROC_IFELSE(
1195 [AC_LANG_PROGRAM([[#define FUSE_USE_VERSION 29
1196 #ifdef __linux__
1197 #include <linux/fs.h>
1198 #include <linux/falloc.h>
1199 #include <linux/xattr.h>
1200 #endif
1201 ]], [])], [], [AC_MSG_FAILURE([Cannot find fuse2fs Linux headers.])])
1202
1203         AC_CHECK_LIB(osxfuse, fuse_main, [FUSE_LIB=-losxfuse],
1204                 [AC_CHECK_LIB(fuse, fuse_main, [FUSE_LIB=-lfuse],
1205                               [AC_MSG_FAILURE([Cannot find fuse library.])])])
1206         AC_MSG_RESULT([Enabling fuse2fs])
1207 fi
1208 ,
1209 AC_CHECK_HEADERS([pthread.h fuse.h], [], [FUSE_CMT="#"],
1210 [#define _FILE_OFFSET_BITS      64
1211 #define FUSE_USE_VERSION 29
1212 #ifdef __linux__
1213 # include <linux/fs.h>
1214 # include <linux/falloc.h>
1215 # include <linux/xattr.h>
1216 #endif])
1217 if test -z "$FUSE_CMT"
1218 then
1219         AC_CHECK_LIB(osxfuse, fuse_main, [FUSE_LIB=-losxfuse],
1220 [AC_CHECK_LIB(fuse, fuse_main, [FUSE_LIB=-lfuse], [FUSE_CMT="#"])])
1221 fi
1222 if test -z "$FUSE_CMT"
1223 then
1224         AC_MSG_RESULT([Enabling fuse2fs by default.])
1225 fi
1226 )
1227 AC_SUBST(FUSE_LIB)
1228 AC_SUBST(FUSE_CMT)
1229 dnl
1230 dnl See if optreset exists
1231 dnl
1232 AC_MSG_CHECKING(for optreset)
1233 AC_CACHE_VAL(ac_cv_have_optreset,
1234 [AC_EGREP_HEADER(optreset, unistd.h,
1235   ac_cv_have_optreset=yes, ac_cv_have_optreset=no)])dnl
1236 AC_MSG_RESULT($ac_cv_have_optreset)
1237 if test $ac_cv_have_optreset = yes; then
1238   AC_DEFINE(HAVE_OPTRESET, 1, [Define to 1 if optreset for getopt is present])
1239 fi
1240 dnl
1241 dnl Test for sem_init, and which library it might require:
1242 dnl
1243 AH_TEMPLATE([HAVE_SEM_INIT], [Define to 1 if sem_init() exists])
1244 SEM_INIT_LIB=''
1245 AC_CHECK_FUNC(sem_init, ,
1246   AC_CHECK_LIB(pthread, sem_init,
1247         AC_DEFINE(HAVE_SEM_INIT, 1)
1248         SEM_INIT_LIB=-lpthread,
1249   AC_CHECK_LIB(rt, sem_init,
1250         AC_DEFINE(HAVE_SEM_INIT, 1)
1251         SEM_INIT_LIB=-lrt,
1252   AC_CHECK_LIB(posix4, sem_init,
1253         AC_DEFINE(HAVE_SEM_INIT, 1)
1254         SEM_INIT_LIB=-lposix4))))dnl
1255 AC_SUBST(SEM_INIT_LIB)
1256 dnl
1257 dnl Check for unified diff
1258 dnl
1259 AC_MSG_CHECKING(for unified diff option)
1260 if diff -u $0 $0 > /dev/null 2>&1 ; then
1261    UNI_DIFF_OPTS=-u
1262 else
1263    UNI_DIFF_OPTS=-c
1264 fi
1265 AC_MSG_RESULT($UNI_DIFF_OPTS)
1266 AC_SUBST(UNI_DIFF_OPTS)
1267 dnl
1268 dnl We use the EXT2 ioctls only under Linux
1269 dnl
1270 case "$host_os" in
1271 linux*)
1272         AC_DEFINE(HAVE_EXT2_IOCTLS, 1, [Define to 1 if Ext2 ioctls present])
1273         ;;
1274 esac
1275 dnl
1276 dnl OS-specific uncomment control
1277 dnl
1278 LINUX_CMT="#"
1279 CYGWIN_CMT="#"
1280 UNIX_CMT=
1281 case "$host_os" in
1282 linux*)
1283         LINUX_CMT=
1284         ;;
1285 cygwin)
1286         CYGWIN_CMT=
1287         UNIX_CMT="#"
1288         ;;
1289 esac
1290 AC_SUBST(LINUX_CMT)
1291 AC_SUBST(CYGWIN_CMT)
1292 AC_SUBST(UNIX_CMT)
1293 dnl
1294 dnl Linux and Hurd places root files in the / by default
1295 dnl
1296 case "$host_os" in
1297 linux* | gnu* | k*bsd*-gnu)
1298         if test "$prefix" = NONE -a "$root_prefix" = NONE ; then
1299                 root_prefix="";
1300                 AC_MSG_RESULT([On $host_os systems, root_prefix defaults to ''])
1301         fi
1302         ;;
1303 esac
1304 dnl
1305 dnl On Linux/hurd, force the prefix to be /usr
1306 dnl
1307 case "$host_os" in
1308 linux* | gnu* | k*bsd*-gnu)
1309         if test "$prefix" = NONE ; then
1310                 prefix="/usr";
1311                 AC_MSG_RESULT([On $host_os systems, prefix defaults to /usr])
1312                 if test "$mandir" = '${prefix}/man' ; then
1313                         AC_MSG_RESULT([...and mandir defaults to /usr/share/man])
1314                         mandir=/usr/share/man
1315                 fi
1316         fi
1317 ;;
1318 esac
1319 if test "$root_prefix" = NONE ; then
1320         if test "$prefix" = NONE ; then
1321                 root_prefix="$ac_default_prefix"
1322         else
1323                 root_prefix="$prefix"
1324         fi
1325         root_bindir=$bindir
1326         root_sbindir=$sbindir
1327         root_libdir=$libdir
1328         root_sysconfdir=$sysconfdir
1329 else
1330         root_bindir='${root_prefix}/bin'
1331         root_sbindir='${root_prefix}/sbin'
1332         root_libdir='${root_prefix}/lib'
1333         root_sysconfdir='${root_prefix}/etc'
1334 fi
1335 if test "$bindir" != '${exec_prefix}/bin'; then
1336     root_bindir=$bindir
1337     AC_MSG_RESULT([Setting root_bindir to $root_bindir])
1338 fi
1339 if test "$sbindir" != '${exec_prefix}/sbin'; then
1340     root_sbindir=$sbindir
1341     AC_MSG_RESULT([Setting root_sbindir to $root_sbindir])
1342 fi
1343 if test "$libdir" != '${exec_prefix}/lib'; then
1344     root_libdir=$libdir
1345     AC_MSG_RESULT([Setting root_libdir to $root_libdir])
1346 fi
1347 if test "$sysconfdir" != '${prefix}/etc'; then
1348     root_sysconfdir=$sysconfdir
1349     AC_MSG_RESULT([Setting root_sysconfdir to $root_sysconfdir])
1350 fi
1351 AC_SUBST(root_prefix)
1352 AC_SUBST(root_bindir)
1353 AC_SUBST(root_sbindir)
1354 AC_SUBST(root_libdir)
1355 AC_SUBST(root_sysconfdir)
1356 dnl
1357 dnl Allow specification of the multiarch arch
1358 dnl
1359 AC_ARG_WITH([multiarch],
1360 [  --with-multiarch=ARCH specify the multiarch triplet],
1361 if test "$withval" = "lib64"; then
1362     libdir=/usr/lib64
1363     root_libdir=/lib64
1364 else
1365     libdir=$libdir/$withval
1366     root_libdir=$root_libdir/$withval
1367 fi
1368 )dnl
1369 dnl
1370 dnl See if -static works.  This could fail if the linker does not
1371 dnl support -static, or if required external libraries are not available
1372 dnl in static form.
1373 dnl
1374 AC_MSG_CHECKING([whether we can link with -static])
1375 AC_CACHE_VAL(ac_cv_e2fsprogs_use_static,
1376 [SAVE_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS -static"
1377 AC_TRY_LINK([#include <stdio.h>],[fflush(stdout);],
1378  ac_cv_e2fsprogs_use_static=yes, ac_cv_e2fsprogs_use_static=no)
1379 LDFLAGS=$SAVE_LDFLAGS])
1380 dnl
1381 dnl Regardless of how the test turns out, Solaris doesn't handle -static
1382 dnl This is caused by the socket library requiring the nsl library, which
1383 dnl requires the -dl library, which only works for dynamically linked 
1384 dnl programs.  It basically means you can't have statically linked programs
1385 dnl which use the network under Solaris.  
1386 dnl
1387 case "$host_os" in
1388 solaris2.*)
1389         ac_cv_e2fsprogs_use_static=no   
1390 ;;
1391 esac
1392 AC_MSG_RESULT($ac_cv_e2fsprogs_use_static)
1393 LDFLAG_STATIC=
1394 if test $ac_cv_e2fsprogs_use_static = yes; then
1395         LDFLAG_STATIC=-static
1396 fi
1397 AC_SUBST(LDFLAG_STATIC)
1398 dnl
1399 dnl Work around mysterious Darwin / GNU libintl problem
1400 dnl (__asm__ redirection doesn't work for some mysterious reason.  Looks like
1401 dnl Apple hacked gcc somehow?)
1402 dnl
1403 case "$host_os" in
1404 darwin*)
1405         AC_MSG_RESULT([Using Apple Darwin / GNU libintl workaround])
1406         AC_DEFINE(_INTL_REDIRECT_MACROS, 1,
1407                 [Define to 1 if Apple Darwin libintl workaround is needed])
1408         ;;
1409 esac
1410 dnl
1411 dnl Make the ss and et directories work correctly.
1412 dnl
1413 SS_DIR=`cd ${srcdir}/lib/ss; pwd`
1414 ET_DIR=`cd ${srcdir}/lib/et; pwd`
1415 AC_SUBST(SS_DIR)
1416 AC_SUBST(ET_DIR)
1417 dnl
1418 dnl Only try to run the test suite if we're not cross compiling.
1419 dnl
1420 if test "$cross_compiling" = yes ; then
1421   DO_TEST_SUITE=
1422 else
1423   DO_TEST_SUITE=check
1424 fi
1425 AC_SUBST(DO_TEST_SUITE)
1426 dnl
1427 dnl Only include the intl include files if we're building with them
1428 dnl
1429 INCLUDES='-I. -I$(top_builddir)/lib -I$(top_srcdir)/lib'
1430 if test -n "$CPPFLAGS" ; then
1431         INCLUDES="$INCLUDES $CPPFLAGS"
1432 fi
1433 if test "$USE_INCLUDED_LIBINTL" = "yes" ; then
1434         INCLUDES=$INCLUDES' -I$(top_builddir)/intl -I$(top_srcdir)/intl'
1435 fi
1436 if test -n "$WITH_DIET_LIBC" ; then
1437         INCLUDES="$INCLUDES -D_REENTRANT"
1438 fi
1439 AC_SUBST(INCLUDES)
1440 AM_MKINSTALLDIRS
1441 dnl
1442 dnl Build CFLAGS
1443 dnl
1444 if test $cross_compiling = no; then
1445    BUILD_CFLAGS="$CFLAGS $CPPFLAGS $INCLUDES -DHAVE_CONFIG_H"
1446    BUILD_LDFLAGS="$LDFLAGS"
1447 fi
1448 AC_SUBST(BUILD_CFLAGS)
1449 AC_SUBST(BUILD_LDFLAGS)
1450 dnl
1451 dnl Make our output files, being sure that we create the some miscellaneous 
1452 dnl directories
1453 dnl
1454 test -d lib || mkdir lib
1455 test -d include || mkdir include
1456 test -d include/linux || mkdir include/linux
1457 test -d include/asm || mkdir include/asm
1458 if test -z "$UUID_CMT" ; then
1459         uuid_out_list="lib/uuid/Makefile lib/uuid/uuid.pc \
1460                 lib/uuid/uuid_types.h"
1461 fi
1462 if test -z "$BLKID_CMT" ; then
1463         blkid_out_list="lib/blkid/Makefile lib/blkid/blkid.pc \
1464                 lib/blkid/blkid_types.h"
1465 fi
1466 for i in MCONFIG Makefile e2fsprogs.spec \
1467         util/Makefile util/subst.conf util/gen-tarball util/install-symlink \
1468         lib/et/Makefile lib/ss/Makefile lib/e2p/Makefile \
1469         lib/ext2fs/Makefile lib/ext2fs/ext2_types.h \
1470         $uuid_out_list $blkid_out_list lib/quota/Makefile \
1471         lib/ss/ss.pc lib/et/com_err.pc lib/e2p/e2p.pc lib/ext2fs/ext2fs.pc \
1472         misc/Makefile ext2ed/Makefile e2fsck/Makefile \
1473         debugfs/Makefile tests/Makefile tests/progs/Makefile \
1474         resize/Makefile doc/Makefile intl/Makefile \
1475         intl/libgnuintl.h po/Makefile.in ; do
1476         if test -d `dirname ${srcdir}/$i` ; then
1477                 outlist="$outlist $i"
1478         fi
1479 done
1480 AC_OUTPUT($outlist)
1481 if test -f util/gen-tarball; then chmod +x util/gen-tarball; fi