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