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