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