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