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