Whamcloud - gitweb
LU-16391 build: update version to 1.46.6-wc1
[tools/e2fsprogs.git] / configure.ac
1 AC_INIT
2 AC_CONFIG_SRCDIR([version.h])
3 AC_PREREQ(2.59)
4 AC_CONFIG_AUX_DIR(config)
5 AC_CONFIG_HEADERS([lib/config.h])
6 AH_BOTTOM([#include <dirpaths.h>])
7 AC_USE_SYSTEM_EXTENSIONS
8 MCONFIG=./MCONFIG
9 AC_SUBST_FILE(MCONFIG)
10 BINARY_TYPE=bin
11 dnl
12 dnl This is to figure out the version number and the date....
13 dnl
14 E2FSPROGS_VERSION=`awk -F\" '/E2FSPROGS_VER/ { print $2 }' ${srcdir}/version.h`
15 E2FSPROGS_DATE=`awk -F\" '/E2FSPROGS_DATE/ { print $2 }' ${srcdir}/version.h`
16 E2FSPROGS_DAY=$(echo $E2FSPROGS_DATE | awk -F- '{ printf "%02d", $1 }')
17 MONTH=`echo $E2FSPROGS_DATE | awk -F- '{print $2}'`
18 YEAR=`echo $E2FSPROGS_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 | sed -e 's/pre-//' -e 's/-.*//'`
45 base_rel=`echo $E2FSPROGS_VERSION | awk -F- '{ print $2 }'`
46
47 date_spec=${E2FSPROGS_YEAR}.${MONTH_NUM}.${E2FSPROGS_DAY}
48
49 case $E2FSPROGS_VERSION in
50 *-WIP|pre-*)
51         E2FSPROGS_PKGVER="$base_ver"
52         E2FSPROGS_PKGREL="WIP.$date_spec"
53         ;;
54 *)
55         E2FSPROGS_PKGVER="$base_ver"
56         E2FSPROGS_PKGREL="$base_rel"
57         ;;
58 esac
59
60 unset DATE MONTH YEAR base_ver pre_vers date_spec
61 AC_MSG_RESULT([Generating configuration file for e2fsprogs version $E2FSPROGS_VERSION])
62 AC_MSG_RESULT([Package version ${E2FSPROGS_PKGVER} release ${E2FSPROGS_PKGREL}])
63 AC_MSG_RESULT([Release date is ${E2FSPROGS_MONTH}, ${E2FSPROGS_YEAR}])
64 AC_SUBST(E2FSPROGS_YEAR)
65 AC_SUBST(E2FSPROGS_MONTH)
66 AC_SUBST(E2FSPROGS_DAY)
67 AC_SUBST(E2FSPROGS_VERSION)
68 AC_SUBST(E2FSPROGS_PKGVER)
69 AC_SUBST(E2FSPROGS_PKGREL)
70 AC_SUBST(E2FSPROGS_DATE)
71 dnl
72 dnl Use diet libc
73 dnl 
74 WITH_DIET_LIBC=
75 AC_ARG_WITH([diet-libc],
76 AS_HELP_STRING([--with-diet-libc],[use diet libc]),
77 CC="diet cc -nostdinc"
78 WITH_DIET_LIBC=yes
79 if test -z "$LIBS"
80 then
81         LIBS="-lcompat"
82 else
83         LIBS="$LIBS -lcompat"
84 fi
85 AC_MSG_RESULT(CC=$CC))dnl
86 dnl
87 AC_CANONICAL_HOST
88 dnl
89 dnl Check to see if libdl exists for the sake of dlopen
90 dnl
91 DLOPEN_LIB=''
92 AC_CHECK_LIB(dl, dlopen,DLOPEN_LIB=-ldl)
93 AC_SUBST(DLOPEN_LIB)
94 dnl
95 AC_ARG_WITH([cc],
96 AS_HELP_STRING([--with-cc],[no longer supported, use CC= instead]),
97 AC_MSG_ERROR([--with-cc no longer supported; use CC= instead]))
98 dnl
99 AC_ARG_WITH([ccopts],
100 AS_HELP_STRING([--with-ccopts],[no longer supported, use CFLAGS= instead]),
101 AC_MSG_ERROR([--with-ccopts no longer supported; use CFLAGS= instead]))
102 dnl
103 AC_ARG_WITH([ldopts],
104 AS_HELP_STRING([--with-ldopts],[no longer supported, use LDFLAGS= instead]),
105 AC_MSG_ERROR([--with-ldopts no longer supported; use LDFLAGS= instead]))
106 dnl
107 AC_PROG_CC
108 if test "$GCC" = yes; then
109    RDYNAMIC="-rdynamic"
110    AC_SUBST(RDYNAMIC)
111 fi
112 AC_PROG_CPP
113 dnl
114 dnl Alpha computers use fast and imprecise floating point code that may
115 dnl miss exceptions by default. Force sane options if we're using GCC.
116 AC_MSG_CHECKING(for additional special compiler flags)
117 if test "$GCC" = yes
118 then
119     case "$host_cpu" in
120         alpha)          addcflags="-mieee" ;;
121     esac
122 fi
123 if test "x$addcflags" != x
124 then
125     AC_MSG_RESULT($addcflags)
126     CFLAGS="$addcflags $CFLAGS"
127 else
128     AC_MSG_RESULT([[(none)]])
129 fi
130 dnl
131 dnl Set default values for library extensions.  Will be dealt with after
132 dnl parsing configuration options, which may modify these
133 dnl
134 LIB_EXT=.a
135 STATIC_LIB_EXT=.a
136 PROFILED_LIB_EXT=.a
137 dnl
138 dnl Allow separate `root_prefix' to be specified
139 dnl
140 AC_ARG_WITH([root-prefix],
141 AS_HELP_STRING([--with-root-prefix=PREFIX],[override prefix variable for files to be placed in the root]),
142 root_prefix=$withval,
143 root_prefix=NONE)dnl
144 dnl
145 dnl handle --enable-maintainer-mode
146 dnl
147 AC_ARG_ENABLE([maintainer-mode],
148 AS_HELP_STRING([--enable-maintainer-mode],[enable makefile rules useful for maintainers]),
149 if test "$enableval" = "no"
150 then
151         MAINTAINER_CMT=#
152         AC_MSG_RESULT([Disabling maintainer mode])
153 else
154         MAINTAINER_CMT=
155         AC_MSG_RESULT([Enabling maintainer mode])
156 fi
157 ,
158 MAINTAINER_CMT=#
159 AC_MSG_RESULT([Disabling maintainer mode by default])
160 )
161 AC_SUBST(MAINTAINER_CMT)
162 dnl
163 dnl handle --enable-symlink-install
164 dnl
165 AC_ARG_ENABLE([symlink-install],
166 AS_HELP_STRING([--enable-symlink-install],[use symlinks when installing instead of hard links]),
167 if test "$enableval" = "no"
168 then
169         LINK_INSTALL_FLAGS=-f
170         AC_MSG_RESULT([Disabling symlinks for install])
171 else
172         LINK_INSTALL_FLAGS=-sf
173         AC_MSG_RESULT([Enabling symlinks for install])
174 fi
175 ,
176 LINK_INSTALL_FLAGS=-f
177 AC_MSG_RESULT([Disabling symlinks for install by default])
178 )
179 AC_SUBST(LINK_INSTALL_FLAGS)
180 dnl
181 dnl handle --enable-relative-symlinks
182 dnl
183 relative_symlink_defined=
184 AC_ARG_ENABLE([relative-symlinks],
185 AS_HELP_STRING([--enable-relative-symlinks],[use relative symlinks when installing]),
186 if test "$enableval" = "no"
187 then
188         SYMLINK_RELATIVE=
189         relative_symlink_defined=yes
190         AC_MSG_RESULT([Disabling relative symlinks for install])
191 else
192         SYMLINK_RELATIVE=--relative
193         relative_symlink_defined=yes
194         AC_MSG_RESULT([Enabling relative symlinks for install])
195 fi)
196 AC_ARG_ENABLE([symlink-relative-symlinks],,
197 if test "$enableval" = "no"
198 then
199         SYMLINK_RELATIVE=yes
200         AC_MSG_RESULT([Disabling relative symlinks for install])
201 else
202         SYMLINK_RELATIVE=--relative
203         AC_MSG_RESULT([Enabling relative symlinks for install])
204 fi
205 ,
206 if test -z "$relative_symlink_defined"
207 then
208         SYMLINK_RELATIVE=
209 AC_MSG_RESULT([Disabling relative symlinks for install by default])
210 fi
211 )
212 AC_SUBST(SYMLINK_RELATIVE)
213 dnl
214 dnl handle --enable-symlink-build
215 dnl
216 AC_ARG_ENABLE([symlink-build],
217 AS_HELP_STRING([--enable-symlink-build],[use symlinks while building instead of hard links]),
218 if test "$enableval" = "no"
219 then
220         LINK_BUILD_FLAGS=
221         AC_MSG_RESULT([Disabling symlinks for build])
222 else
223         LINK_BUILD_FLAGS=-s
224         AC_MSG_RESULT([Enabling symlinks for build])
225 fi
226 ,
227 LINK_BUILD_FLAGS=
228 AC_MSG_RESULT([Disabling symlinks for build by default])
229 )
230 AC_SUBST(LINK_BUILD_FLAGS)
231 dnl
232 dnl handle --enable-verbose-makecmds
233 dnl
234 AC_ARG_ENABLE([verbose-makecmds],
235 AS_HELP_STRING([--enable-verbose-makecmds],[enable verbose make command output]),
236 if test "$enableval" = "no"
237 then
238         AC_MSG_RESULT([Disabling verbose make commands])
239         E=@echo
240         ES=echo
241         Q=@
242 else
243         AC_MSG_RESULT([Enabling verbose make commands])
244         E=@\\#
245         ES=\\#
246         Q= 
247 fi
248 ,
249 AC_MSG_RESULT([Disabling verbose make commands])
250 E=@echo
251 ES=echo
252 Q=@
253 )
254 AC_SUBST(E)
255 AC_SUBST(ES)
256 AC_SUBST(Q)
257 dnl
258 dnl This needs to be before all of the --enable-*-shlibs options
259 dnl
260 E2_PKG_CONFIG_STATIC=--static
261 LDFLAG_DYNAMIC=
262 PRIVATE_LIBS_CMT=
263 dnl
264 dnl handle --enable-elf-shlibs
265 dnl
266 AC_ARG_ENABLE([elf-shlibs],
267 AS_HELP_STRING([--enable-elf-shlibs],[select ELF shared libraries]),
268 if test "$enableval" = "no"
269 then
270         ELF_CMT=#
271         MAKEFILE_ELF=/dev/null
272         AC_MSG_RESULT([Disabling ELF shared libraries])
273 else
274         E2_PKG_CONFIG_STATIC=
275         ELF_CMT=
276         MAKEFILE_ELF=$srcdir/lib/Makefile.elf-lib
277         [case "$host_os" in
278         solaris2.*)
279                 MAKEFILE_ELF=$srcdir/lib/Makefile.solaris-lib
280         ;;
281         esac]
282         BINARY_TYPE=elfbin
283         LIB_EXT=.so
284         PRIVATE_LIBS_CMT=#
285         LDFLAG_DYNAMIC=['-Wl,-rpath-link,$(top_builddir)/lib']
286         AC_MSG_RESULT([Enabling ELF shared libraries])
287 fi
288 ,
289 MAKEFILE_ELF=/dev/null
290 ELF_CMT=#
291 AC_MSG_RESULT([Disabling ELF shared libraries by default])
292 )
293 AC_SUBST(ELF_CMT)
294 AC_SUBST_FILE(MAKEFILE_ELF)
295 dnl
296 dnl handle --enable-bsd-shlibs
297 dnl
298 AC_ARG_ENABLE([bsd-shlibs],
299 AS_HELP_STRING([--enable-bsd-shlibs],[select BSD shared libraries]),
300 if test "$enableval" = "no"
301 then
302         BSDLIB_CMT=#
303         MAKEFILE_BSDLIB=/dev/null
304         AC_MSG_RESULT([Disabling BSD shared libraries])
305 else
306         E2_PKG_CONFIG_STATIC=
307         BSDLIB_CMT=
308         MAKEFILE_BSDLIB=$srcdir/lib/Makefile.bsd-lib
309         LIB_EXT=.so
310         [case "$host_os" in
311         darwin*)
312                 MAKEFILE_BSDLIB=$srcdir/lib/Makefile.darwin-lib
313                 LIB_EXT=.dylib
314         ;;
315         esac]
316         AC_MSG_RESULT([Enabling BSD shared libraries])
317 fi
318 ,
319 MAKEFILE_BSDLIB=/dev/null
320 BSDLIB_CMT=#
321 AC_MSG_RESULT([Disabling BSD shared libraries by default])
322 )
323 AC_SUBST(BSDLIB_CMT)
324 AC_SUBST_FILE(MAKEFILE_BSDLIB)
325 dnl
326 dnl handle --enable-profile
327 dnl
328 AC_ARG_ENABLE([profile],
329 AS_HELP_STRING([--enable-profile],[build profiling libraries]),
330 if test "$enableval" = "no"
331 then
332         PROFILE_CMT=#
333         MAKEFILE_PROFILE=/dev/null
334         AC_MSG_RESULT([Disabling profiling libraries])
335 else
336         PROFILE_CMT=
337         MAKEFILE_PROFILE=$srcdir/lib/Makefile.profile
338         PROFILED_LIB_EXT=_p.a
339         AC_MSG_RESULT([Building profiling libraries])
340 fi
341 ,
342 PROFILE_CMT=#
343 MAKEFILE_PROFILE=/dev/null
344 AC_MSG_RESULT([Disabling profiling libraries by default])
345 )
346 AC_SUBST(PROFILE_CMT)
347 AC_SUBST_FILE(MAKEFILE_PROFILE)
348 dnl
349 dnl handle --enable-gcov
350 dnl
351 AC_ARG_ENABLE([gcov],
352 AS_HELP_STRING([--enable-gcov],[build for coverage testing using gcov]),
353 if test "$enableval" = "yes"
354 then
355         CFLAGS="-g -fprofile-arcs -ftest-coverage"
356         LDFLAGS="-fprofile-arcs -ftest-coverage"
357         AC_MSG_RESULT([Enabling gcov support])
358 fi
359 )
360 dnl
361 dnl handle --enable-hardening
362 dnl
363 CFLAGS_SHLIB="${CFLAGS_SHLIB:-$CFLAGS}"
364 CFLAGS_STLIB="${CFLAGS_STLIB:-$CFLAGS}"
365 LDFLAGS_SHLIB=${LDFLAGS_SHLIB:-$LDFLAGS}
366 LDFLAGS_STATIC=${LDFLAGS_STATIC:-$LDFLAGS}
367 AC_ARG_ENABLE([hardening],
368 AS_HELP_STRING([--enable-hardening],[build for coverage testing using gcov]),
369 if test "$enableval" = "yes"
370 then
371         HARDEN_CFLAGS="-D_FORTIFY_SOURCE=2 -fstack-protector-strong"
372         HARDEN_LDFLAGS=["-Wl,-z,relro -Wl,-z,now"]
373         CFLAGS="$CFLAGS $HARDEN_CFLAGS -fPIE"
374         CFLAGS_SHLIB="$CFLAGS_SHLIB $HARDEN_CFLAGS"
375         CFLAGS_STLIB="$CFLAGS_STLIB $HARDEN_CFLAGS -fPIE"
376         LDFLAGS="$LDFLAGS $HARDEN_LDFLAGS -fPIE -pie"
377         LDFLAGS_STATIC="$LDFLAGS_STATIC $HARDEN_LDFLAGS"
378         LDFLAGS_SHLIB="$LDFLAGS_SHLIB $HARDEN_LDFLAGS"
379         AC_MSG_RESULT([Enabling hardening support])
380 fi
381 )
382 dnl
383 dnl Substitute library extensions
384 dnl
385 AC_SUBST(LIB_EXT)
386 AC_SUBST(STATIC_LIB_EXT)
387 AC_SUBST(PROFILED_LIB_EXT)
388 AC_SUBST(LDFLAG_DYNAMIC)
389 AC_SUBST(PRIVATE_LIBS_CMT)
390 dnl
391 dnl handle --enable-jbd-debug
392 dnl
393 AC_ARG_ENABLE([jbd-debug],
394 AS_HELP_STRING([--enable-jbd-debug],[enable journal debugging]),
395 if test "$enableval" = "no"
396 then
397         AC_MSG_RESULT([Disabling journal debugging])
398 else
399         AC_DEFINE(CONFIG_JBD_DEBUG, 1,
400                 [Define to 1 if debugging ext3/4 journal code])
401         AC_MSG_RESULT([Enabling journal debugging])
402 fi
403 ,
404 AC_MSG_RESULT([Disabling journal debugging by default])
405 )
406 dnl
407 dnl handle --enable-blkid-debug
408 dnl
409 AC_ARG_ENABLE([blkid-debug],
410 AS_HELP_STRING([--enable-blkid-debug],[enable blkid debugging]),
411 if test "$enableval" = "no"
412 then
413         AC_MSG_RESULT([Disabling blkid debugging])
414 else
415         AC_DEFINE(CONFIG_BLKID_DEBUG, 1,
416                 [Define to 1 if debugging the blkid library])
417         AC_MSG_RESULT([Enabling blkid debugging])
418 fi
419 ,
420 AC_MSG_RESULT([Disabling blkid debugging by default])
421 )
422 dnl
423 dnl handle --enable-testio-debug
424 dnl
425 AC_ARG_ENABLE([testio-debug],
426 AS_HELP_STRING([--disable-testio-debug],[disable the use of the test I/O manager for debugging]),
427 AH_TEMPLATE([CONFIG_TESTIO_DEBUG],
428         [Define to 1 if the testio I/O manager should be enabled])
429 if test "$enableval" = "no"
430 then
431         AC_MSG_RESULT([Disabling testio debugging])
432         TEST_IO_CMT="#"
433 else
434         TEST_IO_CMT=
435         AC_DEFINE(CONFIG_TESTIO_DEBUG, 1)
436         AC_MSG_RESULT([Enabling testio debugging])
437 fi
438 ,
439 AC_MSG_RESULT([Enabling testio debugging by default])
440 AC_DEFINE(CONFIG_TESTIO_DEBUG, 1)
441 TEST_IO_CMT=
442 )
443 AC_SUBST(TEST_IO_CMT)
444 dnl
445 dnl handle --enable-developer-features
446 dnl
447 AC_ARG_ENABLE([developer-features],
448 AS_HELP_STRING([--enable-developer-features],[enable features for use by ext4 developers]),
449 AH_TEMPLATE([CONFIG_DEVELOPER_FEATURES],
450         [Define to 1 for features for use by ext4 developers])
451 if test "$enableval" = "yes"
452 then
453         DEV_FEATURES_CMT=
454         AC_DEFINE(CONFIG_DEVELOPER_FEATURES, 1)
455         AC_MSG_RESULT([Enabling ext4 developer features])
456 else
457         AC_MSG_RESULT([Disabling ext4 developer features])
458         DEV_FEATURES_CMT="#"
459 fi
460 ,
461 AC_MSG_RESULT([Disabling ext4 developer features by default])
462 DEV_FEATURES_CMT=
463 )
464 AC_SUBST(DEV_FEATURES_CMT)
465 dnl
466 dnl handle --disable-libuuid
467 dnl
468 PKG_PROG_PKG_CONFIG
469 LIBUUID=
470 DEPLIBUUID=
471 STATIC_LIBUUID=
472 DEPSTATIC_LIBUUID=
473 PROFILED_LIBUUID=
474 DEPPROFILED_LIBUUID=
475 UUID_CMT=
476 AC_ARG_ENABLE([libuuid],
477 AS_HELP_STRING([--enable-libuuid],[build and use private uuid library]),
478 if test "$enableval" = "no"
479 then
480         if test -z "$PKG_CONFIG"; then
481                 AC_MSG_ERROR([pkg-config not installed; please install it.])
482         fi
483
484         AC_CHECK_LIB(uuid, uuid_generate,
485                 [LIBUUID=`$PKG_CONFIG --libs uuid`;
486                  STATIC_LIBUUID=`$PKG_CONFIG --static --libs uuid`],
487                 [AC_MSG_ERROR([external uuid library not found])])
488         PROFILED_LIBUUID=$LIBUUID
489         UUID_CMT=#
490         AC_MSG_RESULT([Disabling private uuid library])
491 else
492         LIBUUID='$(LIB)/libuuid'$LIB_EXT
493         DEPLIBUUID=$LIBUUID
494         STATIC_LIBUUID='$(LIB)/libuuid'$STATIC_LIB_EXT
495         DEPSTATIC_LIBUUID=$STATIC_LIBUUID
496         PROFILED_LIBUUID='$(LIB)/libuuid'$PROFILED_LIB_EXT
497         DEPPROFILED_LIBUUID=$PROFILED_LIBUUID
498         AC_MSG_RESULT([Enabling private uuid library])
499 fi
500 ,
501 if test -n "$PKG_CONFIG"; then
502         AC_CHECK_LIB(uuid, uuid_generate,
503                 [LIBUUID=`$PKG_CONFIG --libs uuid`;
504                  STATIC_LIBUUID=`$PKG_CONFIG --static --libs uuid`])
505 fi
506 if test -n "$LIBUUID"; then
507         PROFILED_LIBUUID=$LIBUUID
508         UUID_CMT=#
509         AC_MSG_RESULT([Using system uuid by default])
510 else
511         LIBUUID='$(LIB)/libuuid'$LIB_EXT
512         DEPLIBUUID=$LIBUUID
513         STATIC_LIBUUID='$(LIB)/libuuid'$STATIC_LIB_EXT
514         DEPSTATIC_LIBUUID=$STATIC_LIBUUID
515         PROFILED_LIBUUID='$(LIB)/libuuid'$PROFILED_LIB_EXT
516         DEPPROFILED_LIBUUID=$PROFILED_LIBUUID
517         AC_MSG_RESULT([Enabling private uuid library by default])
518 fi
519 )
520 AC_SUBST(LIBUUID)
521 AC_SUBST(DEPLIBUUID)
522 AC_SUBST(STATIC_LIBUUID)
523 AC_SUBST(DEPSTATIC_LIBUUID)
524 AC_SUBST(PROFILED_LIBUUID)
525 AC_SUBST(DEPPROFILED_LIBUUID)
526 AC_SUBST(UUID_CMT)
527 dnl
528 dnl handle --disable-libblkid
529 dnl
530 PKG_PROG_PKG_CONFIG
531 LIBBLKID=
532 DEPLIBBLKID=
533 STATIC_LIBBLKID=
534 DEPSTATIC_LIBBLKID=
535 PROFILED_LIBBLKID=
536 DEPPROFILED_LIBBLKID=
537 BLKID_CMT=
538 AH_TEMPLATE([CONFIG_BUILD_FINDFS], [Define to 1 to compile findfs])
539 AC_ARG_ENABLE([libblkid],
540 AS_HELP_STRING([--enable-libblkid],[build and use private blkid library]),
541 if test "$enableval" = "no"
542 then
543         if test -z "$PKG_CONFIG"; then
544                 AC_MSG_ERROR([pkg-config not installed; please install it.])
545         fi
546
547         AC_CHECK_LIB(blkid, blkid_get_cache,
548                 [LIBBLKID=`$PKG_CONFIG --libs blkid`;
549                  STATIC_LIBBLKID=`$PKG_CONFIG --static --libs blkid`],
550                 [AC_MSG_ERROR([external blkid library not found])], -luuid)
551         BLKID_CMT=#
552         PROFILED_LIBBLKID=$LIBBLKID
553         AC_MSG_RESULT([Disabling private blkid library])
554 else
555         LIBBLKID='$(LIB)/libblkid'$LIB_EXT
556         DEPLIBBLKID=$LIBBLKID
557         STATIC_LIBBLKID='$(LIB)/libblkid'$STATIC_LIB_EXT
558         DEPSTATIC_LIBBLKID=$STATIC_LIBBLKID
559         PROFILED_LIBBLKID='$(LIB)/libblkid'$PROFILED_LIB_EXT
560         DEPPROFILED_LIBBLKID=$PROFILED_LIBBLKID
561         AC_DEFINE(CONFIG_BUILD_FINDFS, 1)
562         AC_MSG_RESULT([Enabling private blkid library])
563 fi
564 ,
565 if test -n "$PKG_CONFIG"; then
566         AC_CHECK_LIB(blkid, blkid_get_cache,
567                 [LIBBLKID=`$PKG_CONFIG --libs blkid`;
568                  STATIC_LIBBLKID=`$PKG_CONFIG --static --libs blkid`])
569 fi
570 if test -n "$LIBBLKID"; then
571         BLKID_CMT=#
572         PROFILED_LIBBLKID=$LIBBLKID
573         AC_MSG_RESULT([Using system blkid library by default])
574 else
575         LIBBLKID='$(LIB)/libblkid'$LIB_EXT
576         DEPLIBBLKID=$LIBBLKID
577         STATIC_LIBBLKID='$(LIB)/libblkid'$STATIC_LIB_EXT
578         DEPSTATIC_LIBBLKID=$STATIC_LIBBLKID
579         PROFILED_LIBBLKID='$(LIB)/libblkid'$PROFILED_LIB_EXT
580         DEPPROFILED_LIBBLKID=$PROFILED_LIBBLKID
581         AC_DEFINE(CONFIG_BUILD_FINDFS, 1)
582         AC_MSG_RESULT([Enabling private blkid library by default])
583 fi
584 )
585 AC_SUBST(LIBBLKID)
586 AC_SUBST(DEPLIBBLKID)
587 AC_SUBST(STATIC_LIBBLKID)
588 AC_SUBST(DEPSTATIC_LIBBLKID)
589 AC_SUBST(PROFILED_LIBBLKID)
590 AC_SUBST(DEPPROFILED_LIBBLKID)
591 AC_SUBST(BLKID_CMT)
592 dnl
593 dnl handle --enable-subset
594 dnl
595 ALL_CMT=
596 SUBSET_CMT=
597 AC_ARG_ENABLE([subset],
598 AS_HELP_STRING([--enable-subset],[enable subset-only build]),
599 if test "$enableval" = "no"
600 then
601         SUBSET_CMT=#
602         AC_MSG_RESULT([Disabling subset-only build])
603 else
604         ALL_CMT=#
605         AC_MSG_RESULT([Enabling subset-only-build])
606 fi
607 ,)
608 AC_SUBST(ALL_CMT)
609 AC_SUBST(SUBSET_CMT)
610 dnl
611 dnl handle --disable-backtrace
612 dnl
613 AH_TEMPLATE([DISABLE_BACKTRACE], [Define to 1 to disable use of backtrace])
614 AC_ARG_ENABLE([backtrace],
615 AS_HELP_STRING([--disable-backtrace],[disable use backtrace]),
616 if test "$enableval" = "no"
617 then
618         AC_MSG_RESULT([Disabling use of backtrace])
619         AC_DEFINE(DISABLE_BACKTRACE, 1)
620 else
621         AC_MSG_RESULT([Enabling use of backtrace])
622 fi
623 ,
624 AC_MSG_RESULT([Enabling use of backtrace by default])
625 )
626 dnl
627 dnl handle --enable-debugfs
628 dnl
629 AC_ARG_ENABLE([debugfs],
630 AS_HELP_STRING([--disable-debugfs],[disable support of debugfs program]),
631 if test "$enableval" = "no"
632 then
633         AC_MSG_RESULT([Disabling debugfs support])
634         DEBUGFS_CMT="#"
635 else
636         DEBUGFS_CMT=
637         AC_MSG_RESULT([Enabling debugfs support])
638 fi
639 ,
640 AC_MSG_RESULT([Enabling debugfs support by default])
641 DEBUGFS_CMT=
642 )
643 AC_SUBST(DEBUGFS_CMT)
644 dnl
645 dnl handle --enable-imager
646 dnl
647 AC_ARG_ENABLE([imager],
648 AS_HELP_STRING([--disable-imager],[disable support of e2image program]),
649 if test "$enableval" = "no"
650 then
651         AC_MSG_RESULT([Disabling e2image support])
652         IMAGER_CMT="#"
653 else
654         IMAGER_CMT=
655         AC_MSG_RESULT([Enabling e2image support])
656 fi
657 ,
658 AC_MSG_RESULT([Enabling e2image support by default])
659 IMAGER_CMT=
660 )
661 AC_SUBST(IMAGER_CMT)
662 dnl
663 dnl handle --enable-resizer
664 dnl
665 AC_ARG_ENABLE([resizer],
666 AS_HELP_STRING([--disable-resizer],[disable support of e2resize program]),
667 if test "$enableval" = "no"
668 then
669         AC_MSG_RESULT([Disabling e2resize support])
670         RESIZER_CMT="#"
671 else
672         RESIZER_CMT=
673         AC_MSG_RESULT([Enabling e2resize support])
674 fi
675 ,
676 AC_MSG_RESULT([Enabling e2resize support by default])
677 RESIZER_CMT=
678 )
679 AC_SUBST(RESIZER_CMT)
680 dnl
681 dnl handle --enable-defrag
682 dnl
683 AC_ARG_ENABLE([defrag],
684 AS_HELP_STRING([--disable-defrag],[disable support of e4defrag program]),
685 if test "$enableval" = "no"
686 then
687         AC_MSG_RESULT([Disabling e4defrag support])
688         DEFRAG_CMT="#"
689 else
690         DEFRAG_CMT=
691         AC_MSG_RESULT([Enabling e4defrag support])
692 fi
693 ,
694 if test -z "$WITH_DIET_LIBC"
695 then
696         AC_MSG_RESULT([Enabling e4defrag support by default])
697         DEFRAG_CMT=
698 else
699         AC_MSG_RESULT([Disabling e4defrag support by default])
700         DEFRAG_CMT="#"
701 fi
702 )
703 AC_SUBST(DEFRAG_CMT)
704 dnl
705 dnl See whether to install the `fsck' wrapper program (that calls e2fsck)
706 dnl
707 AC_ARG_ENABLE([fsck],
708 AS_HELP_STRING([--enable-fsck],[build fsck wrapper program]),
709 [if test "$enableval" = "no"
710 then
711         FSCK_PROG='' FSCK_MAN=''
712         AC_MSG_RESULT([Not building fsck wrapper])
713 else
714         FSCK_PROG=fsck FSCK_MAN=fsck.8
715         AC_MSG_RESULT([Building fsck wrapper])
716 fi]
717 ,
718 [case "$host_os" in
719   gnu*)
720     FSCK_PROG='' FSCK_MAN=''
721     AC_MSG_RESULT([Not building fsck wrapper by default])
722     ;;
723   *)
724     FSCK_PROG=fsck FSCK_MAN=fsck.8
725     AC_MSG_RESULT([Building fsck wrapper by default])
726 esac]
727 )
728 AC_SUBST(FSCK_PROG)
729 AC_SUBST(FSCK_MAN)
730 dnl
731 dnl See whether to install the `e2initrd-helper' program
732 dnl
733 AC_ARG_ENABLE([e2initrd-helper],
734 AS_HELP_STRING([--enable-e2initrd-helper],[build e2initrd-helper program]),
735 [if test "$enableval" = "no"
736 then
737         E2INITRD_PROG='' E2INITRD_MAN=''
738         AC_MSG_RESULT([Not building e2initrd helper])
739 else
740         E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8
741         AC_MSG_RESULT([Building e2initrd helper])
742 fi]
743 ,
744 E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8
745 AC_MSG_RESULT([Building e2initrd helper by default])
746 )
747 AC_SUBST(E2INITRD_PROG)
748 AC_SUBST(E2INITRD_MAN)
749 dnl
750 dnl
751 dnl
752 AC_ARG_ENABLE([tls],
753 AS_HELP_STRING([--disable-tls],[disable use of thread local support]),
754 [if test "$enableval" = "no"
755 then
756         try_tls=""
757         AC_MSG_RESULT([Disabling thread local support])
758 else
759         try_tls="yes"
760         AC_MSG_RESULT([Enabling thread local support])
761 fi]
762 ,
763 if test -n "$WITH_DIET_LIBC"
764 then
765         try_tls=""
766         AC_MSG_RESULT([Diet libc does not support thread local support])
767 else
768         try_tls="yes"
769         AC_MSG_RESULT([Try using thread local support by default])
770 fi
771 )
772 if test "$try_tls" = "yes"
773 then
774 AX_TLS
775 fi
776 dnl
777 dnl
778 dnl
779 AC_ARG_WITH([pthread],
780 AS_HELP_STRING([--without-pthread],[disable use of pthread support]),
781 [if test "$withval" = "no"
782 then
783         try_pthread=""
784         AC_MSG_RESULT([Disabling pthread support])
785 else
786         try_pthread="yes"
787         AC_MSG_RESULT([Testing for pthread support])
788 fi]
789 ,
790 try_pthread="yes"
791 AC_MSG_RESULT([Try testing for pthread support by default])
792 )
793 if test "$try_pthread" = "yes"
794 then
795 AX_PTHREAD
796 else
797 test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
798 AC_SUBST([PTHREAD_CC])
799 fi
800 dnl
801 dnl
802 dnl
803 AH_TEMPLATE([USE_UUIDD], [Define to 1 to build uuidd])
804 AC_ARG_ENABLE([uuidd],
805 AS_HELP_STRING([--disable-uuidd],[disable building the uuid daemon]),
806 [if test "$enableval" = "no"
807 then
808         AC_MSG_RESULT([Not building uuidd])
809         UUIDD_CMT="#"
810 else
811         AC_DEFINE(USE_UUIDD, 1)
812         UUIDD_CMT=""
813         AC_MSG_RESULT([Building uuidd])
814 fi]
815 ,
816 AC_DEFINE(USE_UUIDD, 1)
817 if test -z "$UUID_CMT"
818 then
819         UUIDD_CMT=""
820         AC_MSG_RESULT([Building uuidd by default])
821 else
822         UUIDD_CMT="#"
823         AC_MSG_RESULT([Disabling uuidd by default])
824 fi
825 )
826 AC_SUBST(UUIDD_CMT)
827 dnl
828 dnl handle --disable-mmp
829 dnl
830 AH_TEMPLATE([CONFIG_MMP], [Define to 1 to enable mmp support])
831 AC_ARG_ENABLE([mmp],
832 AS_HELP_STRING([--disable-mmp],[disable support mmp, Multi Mount Protection]),
833 if test "$enableval" = "no"
834 then
835         AC_MSG_RESULT([Disabling mmp support])
836 else
837         AC_MSG_RESULT([Enabling mmp support])
838         AC_DEFINE(CONFIG_MMP, 1)
839 fi
840 ,
841 AC_MSG_RESULT([Enabling mmp support by default])
842 AC_DEFINE(CONFIG_MMP, 1)
843 )
844 dnl
845 dnl handle --disable-tdb
846 dnl
847 AH_TEMPLATE([CONFIG_TDB], [Define to 1 to enable tdb support])
848 AC_ARG_ENABLE([tdb],
849 AS_HELP_STRING([--disable-tdb],[disable tdb support]),
850 if test "$enableval" = "no"
851 then
852         AC_MSG_RESULT([Disabling tdb support])
853         TDB_CMT="#"
854         TDB_MAN_COMMENT='.\"'
855 else
856         AC_MSG_RESULT([Enabling tdb support])
857         AC_DEFINE(CONFIG_TDB, 1)
858         TDB_CMT=""
859         TDB_MAN_COMMENT=""
860 fi
861 ,
862 AC_MSG_RESULT([Enabling mmp support by default])
863 AC_DEFINE(CONFIG_TDB, 1)
864 TDB_CMT=""
865 TDB_MAN_COMMENT=""
866 )
867 AC_SUBST(TDB_CMT)
868 AC_SUBST(TDB_MAN_COMMENT)
869 dnl
870 dnl handle --disable-bmap-stats
871 dnl
872 AH_TEMPLATE([ENABLE_BMAP_STATS], [Define to 1 to enable bitmap stats.])
873 AC_ARG_ENABLE([bmap-stats],
874 AS_HELP_STRING([--disable-bmap-stats],[disable collection of bitmap stats]),
875 if test "$enableval" = "no"
876 then
877         AC_MSG_RESULT([Disabling bitmap statistics support])
878 else
879         AC_MSG_RESULT([Enabling bitmap statistics support])
880         AC_DEFINE(ENABLE_BMAP_STATS, 1)
881 fi
882 ,
883 AC_MSG_RESULT([Enabling bitmap statistics support by default])
884 AC_DEFINE(ENABLE_BMAP_STATS, 1)
885 )
886 dnl
887 dnl handle --enable-bmap-stats-ops
888 dnl
889 AH_TEMPLATE([ENABLE_BMAP_STATS_OPS], [Define to 1 to enable bitmap stats.])
890 AC_ARG_ENABLE([bmap-stats-ops],
891 AS_HELP_STRING([--enable-bmap-stats-ops],[enable collection of additional bitmap stats]),
892 if test "$enableval" = "no"
893 then
894         AC_MSG_RESULT([Disabling additional bitmap statistics])
895 else
896         dnl There has to be a better way!
897         AS_IF([test "x${enable_bmap_stats}" = "xno"],
898          AC_MSG_FAILURE([Error --enable-bmap-stats-ops requires bmap-stats]))
899
900         AC_MSG_RESULT([Enabling additional bitmap statistics])
901         AC_DEFINE(ENABLE_BMAP_STATS_OPS, 1)
902 fi
903 ,
904 AC_MSG_RESULT([Disabling additional bitmap statistics by default])
905 )
906 dnl
907 dnl
908 dnl
909 MAKEFILE_LIBRARY=$srcdir/lib/Makefile.library
910 AC_SUBST_FILE(MAKEFILE_LIBRARY)
911 dnl
912 dnl Add internationalization support, using gettext.
913 dnl
914 GETTEXT_PACKAGE=e2fsprogs
915 PACKAGE=e2fsprogs
916 VERSION="$E2FSPROGS_VERSION"
917 VERSION=0.14.1
918 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [package name for gettext])
919 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [version for gettext])
920 AC_SUBST(GETTEXT_PACKAGE)
921 AC_SUBST(PACKAGE)
922 AC_SUBST(VERSION)
923
924 AM_GNU_GETTEXT([external])
925 dnl
926 dnl End of configuration options
927 dnl
928 AC_SUBST(BINARY_TYPE)
929 AC_PROG_MAKE_SET
930 CHECK_GNU_MAKE
931 AC_PATH_PROG(LN, ln, ln)
932 AC_PROG_MKDIR_P
933 dnl
934 dnl @mkdir_p@ is used by po's Makefile.in
935 dnl
936 mkdir_p=$MKDIR_P
937 AC_SUBST(mkdir_p)
938 AC_PROG_LN_S
939 AC_PATH_PROG(MV, mv, mv)
940 AC_PATH_PROG(CP, cp, cp)
941 AC_PATH_PROG(RM, rm, rm)
942 AC_PATH_PROG(CHMOD, chmod, :)
943 AC_PROG_AWK
944 AC_PROG_EGREP
945 AC_PATH_PROG(SED, sed, sed)
946 AC_PATH_PROG(PERL, perl, perl)
947 AC_PATH_PROG(LDCONFIG, ldconfig, :)
948 AC_CHECK_TOOL(AR, ar, ar)
949 AC_CHECK_TOOL(RANLIB, ranlib, :)
950 AC_CHECK_TOOL(STRIP, strip, :)
951 AC_CHECK_PROG(MAKEINFO, makeinfo, makeinfo, )
952 if test "_$MAKEINFO" = "_"; then
953     MAKEINFO="echo Makeinfo is missing. Info documentation will not be built."
954 else
955     case "$MAKEINFO" in
956       */missing.*)
957         AC_MSG_WARN([
958 *** Makeinfo is missing. Info documentation will not be built.])
959         ;;
960       *)
961         ;;
962     esac
963 fi
964 AC_SUBST(MAKEINFO)
965 AC_PROG_INSTALL
966 # See if we need a separate native compiler.
967 if test $cross_compiling = no; then
968   BUILD_CC="$CC"
969   AC_SUBST(BUILD_CC)
970 else
971   AC_CHECK_PROGS(BUILD_CC, gcc cc)
972 fi
973 AC_CHECK_HEADERS(m4_flatten([
974         attr/xattr.h
975         dirent.h
976         errno.h
977         execinfo.h
978         getopt.h
979         malloc.h
980         mntent.h
981         paths.h
982         pthread.h
983         semaphore.h
984         setjmp.h
985         signal.h
986         stdarg.h
987         stdint.h
988         stdlib.h
989         termios.h
990         termio.h
991         unistd.h
992         utime.h
993         attr/xattr.h
994         linux/falloc.h
995         linux/fd.h
996         linux/fsmap.h
997         linux/major.h
998         linux/loop.h
999         linux/types.h
1000         net/if_dl.h
1001         netinet/in.h
1002         sys/acl.h
1003         sys/disklabel.h
1004         sys/disk.h
1005         sys/file.h
1006         sys/ioctl.h
1007         sys/key.h
1008         sys/mkdev.h
1009         sys/mman.h
1010         sys/mount.h
1011         sys/prctl.h
1012         sys/random.h
1013         sys/resource.h
1014         sys/select.h
1015         sys/socket.h
1016         sys/sockio.h
1017         sys/stat.h
1018         sys/syscall.h
1019         sys/sysmacros.h
1020         sys/time.h
1021         sys/types.h
1022         sys/un.h
1023         sys/wait.h
1024         sys/xattr.h
1025 ]))
1026 dnl Check where to find a dd(1) that supports iflag=fullblock
1027 dnl and oflag=append
1028 AC_MSG_CHECKING([for a dd(1) program that supports iflag=fullblock])
1029 DD=
1030 for i in dd gdd ; do
1031         if "$i" if=/dev/null of=/dev/null count=1 bs=10k 2>/dev/null iflag=fullblock oflag=append ; then
1032                 DD=$i
1033                 break
1034         fi
1035 done
1036 if test -n "$DD" ; then
1037         AC_MSG_RESULT([$DD])
1038 else
1039         AC_MSG_RESULT([not found, using dd])
1040         DD=dd
1041         AC_MSG_WARN([No GNU-compatible dd(1) program found, expect some self-test failures.])
1042 fi
1043 AC_SUBST([DD])
1044
1045 AC_CHECK_HEADERS(net/if.h,,,
1046 [[
1047 #if HAVE_SYS_TYPES_H
1048 #include <sys/types.h>
1049 #endif
1050 #if HAVE_SYS_SOCKET
1051 #include <sys/socket.h>
1052 #endif
1053 ]])
1054 AC_FUNC_VPRINTF
1055 dnl Check to see if dirent has member d_reclen. On cygwin those d_reclen
1056 dnl is not declared.
1057 AC_CHECK_MEMBER(struct dirent.d_reclen,[AC_DEFINE(HAVE_RECLEN_DIRENT, 1,
1058                        [Define to 1 if dirent has d_reclen])],,
1059                 [#include <dirent.h>])
1060 AC_CHECK_MEMBERS([struct stat.st_atim])
1061 dnl Check to see if ssize_t was declared
1062 AC_CHECK_TYPE(ssize_t,[AC_DEFINE(HAVE_TYPE_SSIZE_T, 1,
1063                 [Define to 1 if ssize_t declared])],,
1064               [#include <sys/types.h>])
1065 dnl
1066 dnl Check to see if llseek() is declared in unistd.h.  On some libc's 
1067 dnl it is, and on others it isn't..... Thank you glibc developers....
1068 dnl
1069 AC_CHECK_DECL(llseek,[AC_DEFINE(HAVE_LLSEEK_PROTOTYPE, 1,
1070                         [Define to 1 if llseek declared in unistd.h])],,
1071               [#include <unistd.h>])
1072 dnl
1073 dnl Check to see if lseek64() is declared in unistd.h.  Glibc's header files
1074 dnl are so convoluted that I can't tell whether it will always be defined,
1075 dnl and if it isn't defined while lseek64 is defined in the library, 
1076 dnl disaster will strike.  
1077 dnl
1078 dnl Warning!  Use of --enable-gcc-wall may throw off this test.
1079 dnl
1080 dnl
1081 AC_CHECK_DECL(lseek64,[AC_DEFINE(HAVE_LSEEK64_PROTOTYPE, 1,
1082                         [Define to 1 if lseek64 declared in unistd.h])],,
1083                 [#define _LARGEFILE_SOURCE
1084                  #define _LARGEFILE64_SOURCE
1085                  #include <unistd.h>])
1086 dnl
1087 dnl Word sizes...
1088 dnl
1089 AC_CHECK_SIZEOF(short)
1090 AC_CHECK_SIZEOF(int)
1091 AC_CHECK_SIZEOF(long)
1092 AC_CHECK_SIZEOF(long long)
1093 AC_CHECK_SIZEOF(off_t)
1094 AC_CHECK_SIZEOF(time_t)
1095 SIZEOF_SHORT=$ac_cv_sizeof_short
1096 SIZEOF_INT=$ac_cv_sizeof_int
1097 SIZEOF_LONG=$ac_cv_sizeof_long
1098 SIZEOF_LONG_LONG=$ac_cv_sizeof_long_long
1099 SIZEOF_OFF_T=$ac_cv_sizeof_off_t
1100 SIZEOF_TIME_T=$ac_cv_sizeof_time_t
1101 AC_SUBST(SIZEOF_SHORT)
1102 AC_SUBST(SIZEOF_INT)
1103 AC_SUBST(SIZEOF_LONG)
1104 AC_SUBST(SIZEOF_LONG_LONG)
1105 AC_SUBST(SIZEOF_OFF_T)
1106 AC_SUBST(SIZEOF_TIME_T)
1107 AC_C_BIGENDIAN
1108 if test $cross_compiling = no; then
1109   BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh
1110 else
1111   CROSS_COMPILE="1" BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh
1112 fi
1113 ASM_TYPES_HEADER=./asm_types.h
1114 AC_SUBST_FILE(ASM_TYPES_HEADER)
1115 dnl
1116 dnl Save the configuration #defines needed for the public ext2fs.h
1117 dnl header file
1118 dnl
1119 echo "/* These defines are needed for the public ext2fs.h header file */" \
1120      > public_config.h
1121 if grep HAVE_SYS_TYPES_H confdefs.h > tmp_config.$$; then
1122   uniq tmp_config.$$ >> public_config.h
1123 else
1124   echo "#undef HAVE_SYS_TYPES_H" >> public_config.h
1125 fi
1126 if grep WORDS_BIGENDIAN confdefs.h > tmp_config.$$; then
1127   uniq tmp_config.$$ >> public_config.h
1128 else
1129   echo "#undef WORDS_BIGENDIAN" >> public_config.h
1130 fi
1131 rm -f tmp_config.$$
1132 PUBLIC_CONFIG_HEADER=./public_config.h
1133 AC_SUBST_FILE(PUBLIC_CONFIG_HEADER)
1134 dnl
1135 dnl See if we have inttypes.h and if intptr_t is defined
1136 dnl
1137 AC_CHECK_HEADERS([inttypes.h])
1138 AC_CHECK_TYPES(intptr_t)
1139 dnl
1140 dnl See if struct stat has a st_flags field, in which case we can get file
1141 dnl flags somewhat portably.  Also check for the analogous setter, chflags().
1142 dnl
1143 AC_MSG_CHECKING(whether struct stat has a st_flags field)
1144 AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags,
1145         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[struct stat stat; stat.st_flags = 0;]])],[e2fsprogs_cv_struct_st_flags=yes],[e2fsprogs_cv_struct_st_flags=no]))
1146 AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags)
1147 if test "$e2fsprogs_cv_struct_st_flags" = yes; then
1148   AC_MSG_CHECKING(whether st_flags field is useful)
1149   AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags_immut,
1150         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[struct stat stat; stat.st_flags |= UF_IMMUTABLE;]])],[e2fsprogs_cv_struct_st_flags_immut=yes],[e2fsprogs_cv_struct_st_flags_immut=no]))
1151   AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags_immut)
1152   if test "$e2fsprogs_cv_struct_st_flags_immut" = yes; then
1153           AC_DEFINE(HAVE_STAT_FLAGS, 1,
1154                 [Define to 1 if struct stat has st_flags])
1155   fi
1156 fi
1157 dnl
1158 dnl Check for the presence of SA_LEN
1159 dnl
1160 AC_CHECK_MEMBER(struct sockaddr.sa_len,
1161                 AC_DEFINE_UNQUOTED(HAVE_SA_LEN,1,
1162                         [Define to 1 if if struct sockaddr contains sa_len]),,
1163         [#include <sys/types.h>
1164          #include <sys/socket.h>])
1165 dnl
1166 dnl If we are using the system-provided blkid library, check for
1167 dnl the functions added after migrating that library to util-linux
1168 dnl
1169 if test -n "$BLKID_CMT"; then
1170   AC_CHECK_LIB(blkid, blkid_probe_get_topology,
1171                       AC_DEFINE(HAVE_BLKID_PROBE_GET_TOPOLOGY, 1,
1172                                 [Define to 1 if blkid has blkid_probe_get_topology]))
1173   AC_CHECK_LIB(blkid, blkid_topology_get_dax,
1174                       AC_DEFINE(HAVE_BLKID_TOPOLOGY_GET_DAX, 1,
1175                                 [Define to 1 if blkid has blkid_topology_get_dax]))
1176   AC_CHECK_LIB(blkid, blkid_probe_enable_partitions,
1177                       AC_DEFINE(HAVE_BLKID_PROBE_ENABLE_PARTITIONS, 1,
1178                                 [Define to 1 if blkid has blkid_probe_enable_partitions]))
1179 fi
1180 dnl
1181 if test -n "$DLOPEN_LIB" ; then
1182    ac_cv_func_dlopen=yes
1183 fi
1184 AC_CHECK_FUNCS(m4_flatten([
1185         __secure_getenv
1186         add_key
1187         backtrace
1188         chflags
1189         dlopen
1190         fadvise64
1191         fallocate
1192         fallocate64
1193         fchown
1194         fcntl
1195         fdatasync
1196         fstat64
1197         fsync
1198         ftruncate64
1199         futimes
1200         getcwd
1201         getdtablesize
1202         getentropy
1203         gethostname
1204         getmntinfo
1205         getpwuid_r
1206         getrandom
1207         getrlimit
1208         getrusage
1209         jrand48
1210         keyctl
1211         llistxattr
1212         llseek
1213         lseek64
1214         mallinfo
1215         mallinfo2
1216         mbstowcs
1217         memalign
1218         mempcpy
1219         mmap
1220         msync
1221         nanosleep
1222         open64
1223         pathconf
1224         posix_fadvise
1225         posix_fadvise64
1226         posix_memalign
1227         prctl
1228         pread
1229         pwrite
1230         pread64
1231         pwrite64
1232         secure_getenv
1233         setmntent
1234         setresgid
1235         setresuid
1236         snprintf
1237         srandom
1238         stpcpy
1239         strcasecmp
1240         strdup
1241         strnlen
1242         strptime
1243         strtoull
1244         sync_file_range
1245         sysconf
1246         usleep
1247         utime
1248         utimes
1249         valloc
1250 ]))
1251 dnl
1252 dnl Check to see if -lsocket is required (solaris) to make something
1253 dnl that uses socket() to compile; this is needed for the UUID library
1254 dnl
1255 SOCKET_LIB=''
1256 AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket])
1257 AC_SUBST(SOCKET_LIB)
1258 dnl
1259 dnl See if libmagic exists
1260 dnl
1261 AC_CHECK_LIB(magic, magic_file, [MAGIC_LIB=-lmagic
1262 AC_CHECK_HEADERS([magic.h])])
1263 if test "$ac_cv_func_dlopen" = yes ; then
1264    MAGIC_LIB=$DLOPEN_LIB
1265 fi
1266 AC_SUBST(MAGIC_LIB)
1267 dnl
1268 dnl Check to see if librt is required for clock_gettime() (glibc < 2.17)
1269 dnl
1270 AC_CHECK_LIB(rt, clock_gettime, [CLOCK_GETTIME_LIB=-lrt])
1271 AC_SUBST(CLOCK_GETTIME_LIB)
1272 dnl
1273 dnl Check to see if the FUSE library is -lfuse or -losxfuse
1274 dnl
1275 FUSE_CMT=
1276 FUSE_LIB=
1277 dnl osxfuse.dylib supersedes fuselib.dylib
1278 AC_ARG_ENABLE([fuse2fs],
1279 AS_HELP_STRING([--disable-fuse2fs],[do not build fuse2fs]),
1280 if test "$enableval" = "no"
1281 then
1282         FUSE_CMT="#"
1283         AC_MSG_RESULT([Disabling fuse2fs])
1284 else
1285         AC_CHECK_HEADERS([pthread.h fuse.h], [],
1286 [AC_MSG_FAILURE([Cannot find fuse2fs headers.])],
1287 [#define _FILE_OFFSET_BITS      64
1288 #define FUSE_USE_VERSION 29])
1289
1290         AC_PREPROC_IFELSE(
1291 [AC_LANG_PROGRAM([[#define FUSE_USE_VERSION 29
1292 #ifdef __linux__
1293 #include <linux/fs.h>
1294 #include <linux/falloc.h>
1295 #include <linux/xattr.h>
1296 #endif
1297 ]], [])], [], [AC_MSG_FAILURE([Cannot find fuse2fs Linux headers.])])
1298
1299         AC_CHECK_LIB(osxfuse, fuse_main, [FUSE_LIB=-losxfuse],
1300                 [AC_CHECK_LIB(fuse, fuse_main, [FUSE_LIB=-lfuse],
1301                               [AC_MSG_FAILURE([Cannot find fuse library.])])])
1302         AC_MSG_RESULT([Enabling fuse2fs])
1303 fi
1304 ,
1305 AC_CHECK_HEADERS([pthread.h fuse.h], [], [FUSE_CMT="#"],
1306 [#define _FILE_OFFSET_BITS      64
1307 #define FUSE_USE_VERSION 29
1308 #ifdef __linux__
1309 # include <linux/fs.h>
1310 # include <linux/falloc.h>
1311 # include <linux/xattr.h>
1312 #endif])
1313 if test -z "$FUSE_CMT"
1314 then
1315         AC_CHECK_LIB(osxfuse, fuse_main, [FUSE_LIB=-losxfuse],
1316 [AC_CHECK_LIB(fuse, fuse_main, [FUSE_LIB=-lfuse], [FUSE_CMT="#"])])
1317 fi
1318 if test -z "$FUSE_CMT"
1319 then
1320         AC_MSG_RESULT([Enabling fuse2fs by default.])
1321 fi
1322 )
1323 AC_SUBST(FUSE_LIB)
1324 AC_SUBST(FUSE_CMT)
1325 dnl
1326 dnl See if optreset exists
1327 dnl
1328 AC_MSG_CHECKING(for optreset)
1329 AC_CACHE_VAL(ac_cv_have_optreset,
1330 [AC_EGREP_HEADER(optreset, unistd.h,
1331   ac_cv_have_optreset=yes, ac_cv_have_optreset=no)])dnl
1332 AC_MSG_RESULT($ac_cv_have_optreset)
1333 if test $ac_cv_have_optreset = yes; then
1334   AC_DEFINE(HAVE_OPTRESET, 1, [Define to 1 if optreset for getopt is present])
1335 fi
1336 dnl
1337 dnl Test for sem_init, and which library it might require:
1338 dnl
1339 AH_TEMPLATE([HAVE_SEM_INIT], [Define to 1 if sem_init() exists])
1340 SEM_INIT_LIB=''
1341 echo GL_THREADS_API: ${gl_threads_api}
1342 if test "${gl_threads_api}" != none
1343 then
1344   AC_CHECK_FUNC(sem_init, ,
1345     AC_CHECK_LIB(pthread, sem_init,
1346         AC_DEFINE(HAVE_SEM_INIT, 1)
1347         SEM_INIT_LIB=-lpthread,
1348     AC_CHECK_LIB(rt, sem_init,
1349         AC_DEFINE(HAVE_SEM_INIT, 1)
1350         SEM_INIT_LIB=-lrt,
1351     AC_CHECK_LIB(posix4, sem_init,
1352         AC_DEFINE(HAVE_SEM_INIT, 1)
1353         SEM_INIT_LIB=-lposix4))))dnl
1354 fi
1355 AC_SUBST(SEM_INIT_LIB)
1356 dnl
1357 dnl Check for unified diff
1358 dnl
1359 AC_MSG_CHECKING(for unified diff option)
1360 if diff -u $0 $0 > /dev/null 2>&1 ; then
1361    UNI_DIFF_OPTS=-u
1362 else
1363    UNI_DIFF_OPTS=-c
1364 fi
1365 AC_MSG_RESULT($UNI_DIFF_OPTS)
1366 AC_SUBST(UNI_DIFF_OPTS)
1367 dnl
1368 dnl We use the EXT2 ioctls only under Linux
1369 dnl
1370 case "$host_os" in
1371 linux*)
1372         AC_DEFINE(HAVE_EXT2_IOCTLS, 1, [Define to 1 if Ext2 ioctls present])
1373         ;;
1374 esac
1375 dnl
1376 dnl Check the available mount options
1377 dnl
1378 AX_CHECK_MOUNT_OPT(nosuid)
1379 AX_CHECK_MOUNT_OPT(nodev)
1380 dnl Enable LTO for all packages
1381 dnl
1382 AC_ARG_ENABLE([lto],
1383 AS_HELP_STRING([--enable-lto],[enable link time optimization]),,
1384 enable_lto=no)
1385 if test "$enable_lto" = "yes" || test "$enable_lto" = "probe"; then
1386         AC_MSG_CHECKING([if C compiler supports LTO])
1387         OLD_CFLAGS="$CFLAGS"
1388         OLD_LDFLAGS="$LDFLAGS"
1389         LTO_FLAGS="-g -flto -ffat-lto-objects"
1390         CFLAGS="$CFLAGS $LTO_FLAGS"
1391         LDFLAGS="$LDFLAGS $LTO_FLAGS"
1392         AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1393                 [AC_MSG_RESULT([yes])]
1394                 [lto_cflags=$LTO_FLAGS]
1395                 [lto_ldflags=$LTO_FLAGS]
1396                 [AC_PATH_PROG(gcc_ar, gcc-ar,,)]
1397                 [AC_PATH_PROG(gcc_ranlib, gcc-ranlib,,)],
1398                 [AC_MSG_RESULT([no])])
1399         if test -x "$gcc_ar" && test -x "$gcc_ranlib"; then
1400                 have_lto=yes
1401                 AR="${gcc_ar}"
1402                 RANLIB="${gcc_ranlib}"
1403         fi
1404         CFLAGS="${OLD_CFLAGS}"
1405         LDFLAGS="${OLD_LDFLAGS}"
1406         AC_SUBST(have_lto)
1407         AC_SUBST(lto_cflags)
1408         AC_SUBST(lto_ldflags)
1409 fi
1410 if test "$enable_lto" = "yes" && test "$have_lto" != "yes"; then
1411         AC_MSG_ERROR([LTO not supported by compiler.])
1412 fi
1413 dnl
1414 dnl Enable UBSAN for all packages
1415 dnl
1416 AC_ARG_ENABLE([ubsan],
1417 AS_HELP_STRING([--enable-ubsan],[enable undefined behavior sanitizer]),,
1418 enable_ubsan=no)
1419 if test "$enable_ubsan" = "yes" || test "$enable_ubsan" = "probe"; then
1420         AC_MSG_CHECKING([if C compiler supports UBSAN])
1421         OLD_CFLAGS="$CFLAGS"
1422         OLD_LDFLAGS="$LDFLAGS"
1423         UBSAN_FLAGS="-fsanitize=undefined"
1424         CFLAGS="$CFLAGS $UBSAN_FLAGS"
1425         LDFLAGS="$LDFLAGS $UBSAN_FLAGS"
1426         AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1427                 [AC_MSG_RESULT([yes])]
1428                 [ubsan_cflags=$UBSAN_FLAGS]
1429                 [ubsan_ldflags=$UBSAN_FLAGS]
1430                 [have_ubsan=yes],
1431                 [AC_MSG_RESULT([no])])
1432         CFLAGS="${OLD_CFLAGS}"
1433         LDFLAGS="${OLD_LDFLAGS}"
1434         AC_SUBST(have_ubsan)
1435         AC_SUBST(ubsan_cflags)
1436         AC_SUBST(ubsan_ldflags)
1437 fi
1438 if test "$enable_ubsan" = "yes" && test "$have_ubsan" != "yes"; then
1439         AC_MSG_ERROR([UBSAN not supported by compiler.])
1440 fi
1441 dnl
1442 dnl Enable ADDRSAN for all packages
1443 dnl
1444 AC_ARG_ENABLE([addrsan],
1445 AS_HELP_STRING([--enable-addrsan],[enable address sanitizer]),,
1446 enable_addrsan=no)
1447 if test "$enable_addrsan" = "yes" || test "$enable_addrsan" = "probe"; then
1448         AC_MSG_CHECKING([if C compiler supports ADDRSAN])
1449         OLD_CFLAGS="$CFLAGS"
1450         OLD_LDFLAGS="$LDFLAGS"
1451         ADDRSAN_FLAGS="-fsanitize=address"
1452         CFLAGS="$CFLAGS $ADDRSAN_FLAGS"
1453         LDFLAGS="$LDFLAGS $ADDRSAN_FLAGS"
1454         AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1455                 [AC_MSG_RESULT([yes])]
1456                 [addrsan_cflags=$ADDRSAN_FLAGS]
1457                 [addrsan_ldflags=$ADDRSAN_FLAGS]
1458                 [have_addrsan=yes],
1459                 [AC_MSG_RESULT([no])])
1460         CFLAGS="${OLD_CFLAGS}"
1461         LDFLAGS="${OLD_LDFLAGS}"
1462         AC_SUBST(have_addrsan)
1463         AC_SUBST(addrsan_cflags)
1464         AC_SUBST(addrsan_ldflags)
1465 fi
1466 if test "$enable_addrsan" = "yes" && test "$have_addrsan" != "yes"; then
1467         AC_MSG_ERROR([ADDRSAN not supported by compiler.])
1468 fi
1469 dnl
1470 dnl Enable THREADSAN for all packages
1471 dnl
1472 AC_ARG_ENABLE([threadsan],
1473 AS_HELP_STRING([--enable-threadsan],[enable thread sanitizer]),,
1474 enable_threadsan=no)
1475 if test "$enable_threadsan" = "yes" || test "$enable_threadsan" = "probe"; then
1476         AC_MSG_CHECKING([if C compiler supports THREADSAN])
1477         OLD_CFLAGS="$CFLAGS"
1478         OLD_LDFLAGS="$LDFLAGS"
1479         THREADSAN_FLAGS="-fsanitize=thread"
1480         CFLAGS="$CFLAGS $THREADSAN_FLAGS"
1481         LDFLAGS="$LDFLAGS $THREADSAN_FLAGS"
1482         AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1483                 [AC_MSG_RESULT([yes])]
1484                 [threadsan_cflags=$THREADSAN_FLAGS]
1485                 [threadsan_ldflags=$THREADSAN_FLAGS]
1486                 [have_threadsan=yes],
1487                 [AC_MSG_RESULT([no])])
1488         CFLAGS="${OLD_CFLAGS}"
1489         LDFLAGS="${OLD_LDFLAGS}"
1490         AC_SUBST(have_threadsan)
1491         AC_SUBST(threadsan_cflags)
1492         AC_SUBST(threadsan_ldflags)
1493 fi
1494 if test "$enable_threadsan" = "yes" && test "$have_threadsan" != "yes"; then
1495         AC_MSG_ERROR([THREADSAN not supported by compiler.])
1496 fi
1497 if test "$have_threadsan" = "yes" && test "$have_addrsan" = "yes"; then
1498         AC_MSG_WARN([ADDRSAN and THREADSAN are not known to work together.])
1499 fi
1500 dnl
1501 dnl Enable the fuzzer sanitizer for all packages
1502 dnl
1503 FUZZING_CMT="#"
1504 AC_ARG_ENABLE([fuzzing],
1505 AS_HELP_STRING([--enable-fuzzing],[enable fuzzing sanitizer]),,
1506 enable_fuzzing=no)
1507 if test "$enable_fuzzing" = "yes" || test "$enable_fuzzing" = "probe"; then
1508         AC_PROG_CXX
1509         AC_MSG_CHECKING([if C compiler supports fuzzing sanitizer])
1510         AC_LANG_PUSH([C++])
1511         OLD_CXXFLAGS="$CXXFLAGS"
1512         OLD_LDFLAGS="$LDFLAGS"
1513         FUZZER_FLAGS="-fsanitize=fuzzer"
1514         CXXFLAGS="$CXXFLAGS $FUZZER_FLAGS"
1515         LDFLAGS="$LDFLAGS $FUZZER_FLAGS"
1516         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1517                 #include <stddef.h>
1518                 #include <stdint.h>
1519                 ]],
1520                 [ return 0; ])],
1521                 [AC_MSG_RESULT([yes])]
1522                 [fuzzer_cflags=$FUZZER_FLAGS]
1523                 [fuzzer_ldflags=$FUZZER_FLAGS]
1524                 [FUZZING_CMT=]
1525                 [have_fuzzer=yes],
1526                 [AC_MSG_RESULT([no])]
1527                 [AC_MSG_ERROR([fuzzing requested but not available])])
1528         CXXFLAGS="${OLD_CXXFLAGS}"
1529         LDFLAGS="${OLD_LDFLAGS}"
1530         AC_LANG_POP([C++])
1531         AC_SUBST(have_fuzzer)
1532         AC_SUBST(fuzzer_cflags)
1533         AC_SUBST(fuzzer_ldflags)
1534 fi
1535 if test "$enable_fuzzer" = "yes" && test "$have_fuzzer" != "yes"; then
1536         AC_MSG_ERROR([Fuzzing not supported by compiler.])
1537 fi
1538 AC_SUBST(FUZZING_CMT)
1539 dnl
1540 dnl OS-specific uncomment control
1541 dnl
1542 LINUX_CMT="#"
1543 CYGWIN_CMT="#"
1544 UNIX_CMT=
1545 case "$host_os" in
1546 linux*)
1547         LINUX_CMT=
1548         ;;
1549 cygwin)
1550         CYGWIN_CMT=
1551         UNIX_CMT="#"
1552         ;;
1553 esac
1554 AC_SUBST(LINUX_CMT)
1555 AC_SUBST(CYGWIN_CMT)
1556 AC_SUBST(UNIX_CMT)
1557 dnl
1558 dnl e2scrub only builds on linux
1559 dnl
1560 E2SCRUB_CMT="$LINUX_CMT"
1561 AC_SUBST(E2SCRUB_CMT)
1562 dnl
1563 dnl Linux and Hurd places root files in the / by default
1564 dnl
1565 case "$host_os" in
1566 linux* | gnu* | k*bsd*-gnu)
1567         if test "$prefix" = NONE -a "$root_prefix" = NONE ; then
1568                 root_prefix="";
1569                 AC_MSG_RESULT([On $host_os systems, root_prefix defaults to ''])
1570         fi
1571         ;;
1572 esac
1573 dnl
1574 dnl On Linux/hurd, force the prefix to be /usr
1575 dnl
1576 case "$host_os" in
1577 linux* | gnu* | k*bsd*-gnu)
1578         if test "$prefix" = NONE ; then
1579                 prefix="/usr";
1580                 AC_MSG_RESULT([On $host_os systems, prefix defaults to /usr])
1581                 if test "$mandir" = '${prefix}/man' ; then
1582                         AC_MSG_RESULT([...and mandir defaults to /usr/share/man])
1583                         mandir=/usr/share/man
1584                 fi
1585         fi
1586 ;;
1587 esac
1588 if test "$root_prefix" = NONE ; then
1589         if test "$prefix" = NONE ; then
1590                 root_prefix="$ac_default_prefix"
1591         else
1592                 root_prefix="$prefix"
1593         fi
1594         root_bindir=$bindir
1595         root_sbindir=$sbindir
1596         root_libdir=$libdir
1597         root_sysconfdir=$sysconfdir
1598 else
1599         root_bindir='${root_prefix}/bin'
1600         root_sbindir='${root_prefix}/sbin'
1601         root_libdir='${root_prefix}/lib'
1602         root_sysconfdir='${root_prefix}/etc'
1603 fi
1604 if test "$bindir" != '${exec_prefix}/bin'; then
1605     root_bindir=$bindir
1606     AC_MSG_RESULT([Setting root_bindir to $root_bindir])
1607 fi
1608 if test "$sbindir" != '${exec_prefix}/sbin'; then
1609     root_sbindir=$sbindir
1610     AC_MSG_RESULT([Setting root_sbindir to $root_sbindir])
1611 fi
1612 if test "$libdir" != '${exec_prefix}/lib'; then
1613     root_libdir=$libdir
1614     AC_MSG_RESULT([Setting root_libdir to $root_libdir])
1615 fi
1616 if test "$sysconfdir" != '${prefix}/etc'; then
1617     root_sysconfdir=$sysconfdir
1618     AC_MSG_RESULT([Setting root_sysconfdir to $root_sysconfdir])
1619 fi
1620 AC_SUBST(root_prefix)
1621 AC_SUBST(root_bindir)
1622 AC_SUBST(root_sbindir)
1623 AC_SUBST(root_libdir)
1624 AC_SUBST(root_sysconfdir)
1625 dnl
1626 dnl Allow specification of the multiarch arch
1627 dnl
1628 AC_ARG_WITH([multiarch],
1629 AS_HELP_STRING([--with-multiarch=ARCH],[specify the multiarch triplet]),
1630 if test "$withval" = "lib64"; then
1631     libdir=/usr/lib64
1632     root_libdir=/lib64
1633 else
1634     libdir=$libdir/$withval
1635     root_libdir=$root_libdir/$withval
1636 fi
1637 )
1638 dnl
1639 dnl
1640 dnl See if -static works.  This could fail if the linker does not
1641 dnl support -static, or if required external libraries are not available
1642 dnl in static form.
1643 dnl
1644 AC_MSG_CHECKING([whether we can link with -static])
1645 AC_CACHE_VAL(ac_cv_e2fsprogs_use_static,
1646 [SAVE_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS_STATIC -static"
1647 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[fflush(stdout);]])],[ac_cv_e2fsprogs_use_static=yes],[ac_cv_e2fsprogs_use_static=no])
1648 LDFLAGS=$SAVE_LDFLAGS])
1649 dnl
1650 dnl Regardless of how the test turns out, Solaris doesn't handle -static
1651 dnl This is caused by the socket library requiring the nsl library, which
1652 dnl requires the -dl library, which only works for dynamically linked 
1653 dnl programs.  It basically means you can't have statically linked programs
1654 dnl which use the network under Solaris.  
1655 dnl
1656 case "$host_os" in
1657 solaris2.*)
1658         ac_cv_e2fsprogs_use_static=no   
1659 ;;
1660 esac
1661 AC_MSG_RESULT($ac_cv_e2fsprogs_use_static)
1662 if test $ac_cv_e2fsprogs_use_static = yes; then
1663         LDFLAGS_STATIC="$LDFLAGS_STATIC -static"
1664 fi
1665 AC_SUBST(LDFLAGS_STATIC)
1666 dnl
1667 dnl Work around mysterious Darwin / GNU libintl problem
1668 dnl (__asm__ redirection doesn't work for some mysterious reason.  Looks like
1669 dnl Apple hacked gcc somehow?)
1670 dnl
1671 case "$host_os" in
1672 darwin*)
1673         AC_MSG_RESULT([Using Apple Darwin / GNU libintl workaround])
1674         AC_DEFINE(_INTL_REDIRECT_MACROS, 1,
1675                 [Define to 1 if Apple Darwin libintl workaround is needed])
1676         ;;
1677 esac
1678 dnl
1679 dnl Only try to run the test suite if we're not cross compiling.
1680 dnl
1681 if test "$cross_compiling" = yes ; then
1682   DO_TEST_SUITE=
1683 else
1684   DO_TEST_SUITE=check
1685 fi
1686 AC_SUBST(DO_TEST_SUITE)
1687 dnl
1688 dnl Only include the intl include files if we're building with them
1689 dnl
1690 INCLUDES='-I. -I$(top_builddir)/lib -I$(top_srcdir)/lib'
1691 if test -n "$CPPFLAGS" ; then
1692         INCLUDES="$INCLUDES $CPPFLAGS"
1693 fi
1694 if test "$USE_INCLUDED_LIBINTL" = "yes" ; then
1695         INCLUDES=$INCLUDES' -I$(top_builddir)/intl -I$(top_srcdir)/intl'
1696 fi
1697 if test -n "$WITH_DIET_LIBC" ; then
1698         INCLUDES="$INCLUDES -D_REENTRANT"
1699 fi
1700 AC_SUBST(INCLUDES)
1701 dnl
1702 dnl Build CFLAGS
1703 dnl
1704 if test $cross_compiling = no; then
1705    BUILD_CFLAGS="$CFLAGS $CPPFLAGS $INCLUDES -DHAVE_CONFIG_H"
1706    BUILD_LDFLAGS="$LDFLAGS"
1707 fi
1708 AC_SUBST(BUILD_CFLAGS)
1709 AC_SUBST(BUILD_LDFLAGS)
1710 dnl
1711 dnl Define CFLAGS and LDFLAGS for shared libraries
1712 dnl
1713 CFLAGS_SHLIB=${CFLAGS_SHLIB:-$CFLAGS}
1714 CFLAGS_STLIB=${CFLAGS_STLIB:-$CFLAGS}
1715 LDFLAGS_SHLIB=${LDFLAGS_SHLIB:-$LDFLAGS}
1716 AC_SUBST(CFLAGS_SHLIB)
1717 AC_SUBST(CFLAGS_STLIB)
1718 AC_SUBST(LDFLAGS_SHLIB)
1719
1720 dnl
1721 dnl Where do udev rules go?
1722 dnl
1723 AC_ARG_WITH([udev_rules_dir],
1724   [AS_HELP_STRING([--with-udev-rules-dir@<:@=DIR@:>@],
1725         [Install udev rules into DIR.])],
1726   [],
1727   [with_udev_rules_dir=yes])
1728 AS_IF([test "x${with_udev_rules_dir}" != "xno"],
1729   [
1730         AS_IF([test "x${with_udev_rules_dir}" = "xyes"],
1731           [
1732                 PKG_CHECK_MODULES([udev], [udev],
1733                   [
1734                         with_udev_rules_dir="$($PKG_CONFIG --variable=udevdir udev)/rules.d"
1735                   ], [
1736                         with_udev_rules_dir=""
1737                   ])
1738           ])
1739         AC_MSG_CHECKING([for udev rules dir])
1740         pkg_udev_rules_dir="${with_udev_rules_dir}"
1741         AS_IF([test -n "${pkg_udev_rules_dir}"],
1742           [
1743                 AC_MSG_RESULT(${pkg_udev_rules_dir})
1744                 have_udev="yes"
1745           ],
1746           [
1747                 AC_MSG_RESULT(no)
1748                 have_udev="no"
1749           ])
1750   ],
1751   [
1752         have_udev="disabled"
1753   ])
1754 AC_SUBST(have_udev)
1755 AC_SUBST(pkg_udev_rules_dir)
1756
1757 dnl
1758 dnl Where do cron jobs go?
1759 dnl
1760 AC_ARG_WITH([crond_dir],
1761   [AS_HELP_STRING([--with-crond-dir@<:@=DIR@:>@],
1762         [Install system crontabs into DIR.])],
1763   [],
1764   [with_crond_dir=yes])
1765 AS_IF([test "x${with_crond_dir}" != "xno"],
1766   [
1767         AS_IF([test "x${with_crond_dir}" = "xyes"],
1768           [
1769                 AS_IF([test -d "/etc/cron.d"],
1770                   [with_crond_dir="/etc/cron.d"],
1771                   [have_crond="no"; with_crond_dir=""])
1772           ])
1773         AC_MSG_CHECKING([for system crontab dir])
1774         crond_dir="${with_crond_dir}"
1775         AS_IF([test -n "${crond_dir}"],
1776           [
1777                 AC_MSG_RESULT(${crond_dir})
1778                 have_crond="yes"
1779           ],
1780           [
1781                 AC_MSG_RESULT(no)
1782                 have_crond="no"
1783           ])
1784   ],
1785   [
1786         have_crond="disabled"
1787   ])
1788 AC_SUBST(have_crond)
1789 AC_SUBST(crond_dir)
1790
1791 dnl
1792 dnl Where do systemd services go?
1793 dnl
1794 AC_ARG_WITH([systemd_unit_dir],
1795   [AS_HELP_STRING([--with-systemd-unit-dir@<:@=DIR@:>@],
1796         [Install systemd system units into DIR.])],
1797   [],
1798   [with_systemd_unit_dir=yes])
1799 AS_IF([test "x${with_systemd_unit_dir}" != "xno"],
1800   [
1801         AS_IF([test "x${with_systemd_unit_dir}" = "xyes"],
1802           [
1803                 PKG_CHECK_MODULES([systemd], [systemd],
1804                   [
1805                         with_systemd_unit_dir="$($PKG_CONFIG --variable=systemdsystemunitdir systemd)"
1806                   ], [
1807                         with_systemd_unit_dir=""
1808                   ])
1809                 m4_pattern_allow([^PKG_(MAJOR|MINOR|BUILD|REVISION)$])
1810           ])
1811         AC_MSG_CHECKING([for systemd system unit dir])
1812         systemd_system_unit_dir="${with_systemd_unit_dir}"
1813         AS_IF([test -n "${systemd_system_unit_dir}"],
1814           [
1815                 AC_MSG_RESULT(${systemd_system_unit_dir})
1816                 have_systemd="yes"
1817           ],
1818           [
1819                 AC_MSG_RESULT(no)
1820                 have_systemd="no"
1821           ])
1822   ],
1823   [
1824         have_systemd="disabled"
1825   ])
1826 AC_SUBST(have_systemd)
1827 AC_SUBST(systemd_system_unit_dir)
1828 dnl Adjust the compiled files if we are on windows vs everywhere else
1829 dnl
1830 OS_IO_FILE=""
1831 [case "$host_os" in
1832   cigwin*|mingw*|msys*)
1833     OS_IO_FILE=windows_io
1834   ;;
1835   *)
1836     OS_IO_FILE=unix_io
1837   ;;
1838 esac]
1839 AC_SUBST(OS_IO_FILE)
1840 dnl
1841 dnl Make our output files, being sure that we create the some miscellaneous 
1842 dnl directories
1843 dnl
1844 test -d lib || mkdir lib
1845 test -d include || mkdir include
1846 test -d include/linux || mkdir include/linux
1847 test -d include/asm || mkdir include/asm
1848 if test -z "$UUID_CMT" ; then
1849         uuid_out_list="lib/uuid/Makefile lib/uuid/uuid.pc \
1850                 lib/uuid/uuid_types.h"
1851 fi
1852 if test -z "$BLKID_CMT" ; then
1853         blkid_out_list="lib/blkid/Makefile lib/blkid/blkid.pc \
1854                 lib/blkid/blkid_types.h"
1855 fi
1856 for i in MCONFIG Makefile \
1857         e2fsprogs-RHEL-6.spec \
1858         e2fsprogs-SUSE_LINUX-11+.spec \
1859         e2fsprogs-RHEL-7+.spec \
1860         util/Makefile util/subst.conf util/gen-tarball util/install-symlink \
1861         lib/et/Makefile lib/ss/Makefile lib/e2p/Makefile \
1862         lib/ext2fs/Makefile lib/ext2fs/ext2_types.h \
1863         $uuid_out_list $blkid_out_list lib/support/Makefile \
1864         lib/ss/ss.pc lib/et/com_err.pc lib/e2p/e2p.pc lib/ext2fs/ext2fs.pc \
1865         misc/Makefile ext2ed/Makefile e2fsck/Makefile \
1866         debugfs/Makefile tests/Makefile tests/progs/Makefile \
1867         tests/fuzz/Makefile resize/Makefile doc/Makefile \
1868         po/Makefile.in scrub/Makefile; do
1869         if test -d `dirname ${srcdir}/$i` ; then
1870                 outlist="$outlist $i"
1871         fi
1872 done
1873 AC_CONFIG_FILES([$outlist])
1874 AC_OUTPUT
1875 if test -f util/gen-tarball; then chmod +x util/gen-tarball; fi