]> git.ipfire.org Git - thirdparty/e2fsprogs.git/blame - configure.ac
e2freefrag: don't use linux/fsmap.h when fsmap_sizeof() is missing
[thirdparty/e2fsprogs.git] / configure.ac
CommitLineData
54445dc2
TT
1AC_INIT
2AC_CONFIG_SRCDIR([version.h])
3AC_PREREQ([2.71])
b0cacab0 4AC_CONFIG_AUX_DIR(config)
d1154eb4 5AC_CONFIG_HEADERS([lib/config.h])
c714d024 6AH_BOTTOM([#include <dirpaths.h>])
54445dc2 7AC_USE_SYSTEM_EXTENSIONS
50e1e10f
TT
8MCONFIG=./MCONFIG
9AC_SUBST_FILE(MCONFIG)
74becf3c
TT
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}'`
5ce368f0
DW
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}'`
74becf3c 21
40fa8cc9
TT
22if expr $YEAR ">" 1900 > /dev/null ; then
23 E2FSPROGS_YEAR=$YEAR
24elif expr $YEAR ">" 90 >/dev/null ; then
74becf3c
TT
25 E2FSPROGS_YEAR=19$YEAR
26else
27 E2FSPROGS_YEAR=20$YEAR
28fi
29
30case $MONTH in
927566a3
AD
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" ;;
02d04db4 43*) AC_MSG_WARN([Unknown month $MONTH??]) ;;
74becf3c
TT
44esac
45
927566a3
AD
46base_ver=`echo $E2FSPROGS_VERSION | \
47 sed -e 's/-WIP//' -e 's/pre-//' -e 's/-PLUS//'`
927566a3
AD
48
49date_spec=${E2FSPROGS_YEAR}.${MONTH_NUM}.${E2FSPROGS_DAY}
50
51case $E2FSPROGS_VERSION in
52*-WIP|pre-*)
2ab53829 53 E2FSPROGS_PKGVER="$base_ver~WIP.$date_spec"
927566a3
AD
54 ;;
55*)
56 E2FSPROGS_PKGVER="$base_ver"
57 ;;
58esac
59
60unset DATE MONTH YEAR base_ver pre_vers date_spec
02d04db4
TT
61AC_MSG_RESULT([Generating configuration file for e2fsprogs version $E2FSPROGS_VERSION])
62AC_MSG_RESULT([Release date is ${E2FSPROGS_MONTH}, ${E2FSPROGS_YEAR}])
74becf3c
TT
63AC_SUBST(E2FSPROGS_YEAR)
64AC_SUBST(E2FSPROGS_MONTH)
bff0cc95 65AC_SUBST(E2FSPROGS_DAY)
74becf3c 66AC_SUBST(E2FSPROGS_VERSION)
927566a3 67AC_SUBST(E2FSPROGS_PKGVER)
5ce368f0 68AC_SUBST(E2FSPROGS_DATE)
57aa50d4 69dnl
d21ae6c5
TT
70dnl Use diet libc
71dnl
eafba6c3 72WITH_DIET_LIBC=
d21ae6c5 73AC_ARG_WITH([diet-libc],
8c9e2921 74AS_HELP_STRING([--with-diet-libc],[use diet libc]),
d21ae6c5 75CC="diet cc -nostdinc"
eafba6c3 76WITH_DIET_LIBC=yes
6c59a665
TT
77if test -z "$LIBS"
78then
79 LIBS="-lcompat"
80else
81 LIBS="$LIBS -lcompat"
82fi
d21ae6c5
TT
83AC_MSG_RESULT(CC=$CC))dnl
84dnl
6c59a665
TT
85AC_CANONICAL_HOST
86dnl
87dnl Check to see if libdl exists for the sake of dlopen
88dnl
89DLOPEN_LIB=''
32179ce2 90AC_CHECK_LIB(dl, dlopen,DLOPEN_LIB=-ldl)
6c59a665
TT
91AC_SUBST(DLOPEN_LIB)
92dnl
74becf3c 93AC_ARG_WITH([cc],
8c9e2921 94AS_HELP_STRING([--with-cc],[no longer supported, use CC= instead]),
0b5b9f90 95AC_MSG_ERROR([--with-cc no longer supported; use CC= instead]))
74becf3c 96dnl
0b5b9f90 97AC_ARG_WITH([ccopts],
8c9e2921 98AS_HELP_STRING([--with-ccopts],[no longer supported, use CFLAGS= instead]),
0b5b9f90 99AC_MSG_ERROR([--with-ccopts no longer supported; use CFLAGS= instead]))
74becf3c 100dnl
0b5b9f90 101AC_ARG_WITH([ldopts],
8c9e2921 102AS_HELP_STRING([--with-ldopts],[no longer supported, use LDFLAGS= instead]),
0b5b9f90 103AC_MSG_ERROR([--with-ldopts no longer supported; use LDFLAGS= instead]))
74becf3c 104dnl
0b5b9f90 105AC_PROG_CC
9b3018a8
TT
106if test "$GCC" = yes; then
107 RDYNAMIC="-rdynamic"
108 AC_SUBST(RDYNAMIC)
109fi
0b5b9f90 110AC_PROG_CPP
74becf3c 111dnl
b1c92f91
MA
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
055866d8
SR
129dnl Set default values for library extensions. Will be dealt with after
130dnl parsing configuration options, which may modify these
a4d09610
TT
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 138AC_ARG_WITH([root-prefix],
8c9e2921 139AS_HELP_STRING([--with-root-prefix=PREFIX],[override prefix variable for files to be placed in the root]),
a4b2d3ce
TT
140root_prefix=$withval,
141root_prefix=NONE)dnl
fc6d9d51 142dnl
98919bdb
TT
143dnl handle --enable-maintainer-mode
144dnl
145AC_ARG_ENABLE([maintainer-mode],
8c9e2921 146AS_HELP_STRING([--enable-maintainer-mode],[enable makefile rules useful for maintainers]),
98919bdb
TT
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],
8c9e2921 164AS_HELP_STRING([--enable-symlink-install],[use symlinks when installing instead of hard links]),
5aa6c3f6
TT
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],
8c9e2921 183AS_HELP_STRING([--enable-relative-symlinks],[use relative symlinks when installing]),
183c73b0
TT
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],
8c9e2921 215AS_HELP_STRING([--enable-symlink-build],[use symlinks while building instead of hard links]),
5aa6c3f6
TT
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],
8c9e2921 233AS_HELP_STRING([--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
a4ece359
TT
256dnl This needs to be before all of the --enable-*-shlibs options
257dnl
258E2_PKG_CONFIG_STATIC=--static
55da9876
TT
259LDFLAG_DYNAMIC=
260PRIVATE_LIBS_CMT=
a4ece359 261dnl
50e1e10f
TT
262dnl handle --enable-elf-shlibs
263dnl
264AC_ARG_ENABLE([elf-shlibs],
8c9e2921 265AS_HELP_STRING([--enable-elf-shlibs],[select ELF shared libraries]),
50e1e10f
TT
266if test "$enableval" = "no"
267then
268 ELF_CMT=#
269 MAKEFILE_ELF=/dev/null
02d04db4 270 AC_MSG_RESULT([Disabling ELF shared libraries])
50e1e10f 271else
a4ece359 272 E2_PKG_CONFIG_STATIC=
50e1e10f
TT
273 ELF_CMT=
274 MAKEFILE_ELF=$srcdir/lib/Makefile.elf-lib
f5955dda
TT
275 [case "$host_os" in
276 solaris2.*)
277 MAKEFILE_ELF=$srcdir/lib/Makefile.solaris-lib
278 ;;
279 esac]
74becf3c 280 BINARY_TYPE=elfbin
a4d09610 281 LIB_EXT=.so
55da9876
TT
282 PRIVATE_LIBS_CMT=#
283 LDFLAG_DYNAMIC=['-Wl,-rpath-link,$(top_builddir)/lib']
02d04db4 284 AC_MSG_RESULT([Enabling ELF shared libraries])
50e1e10f
TT
285fi
286,
287MAKEFILE_ELF=/dev/null
288ELF_CMT=#
02d04db4 289AC_MSG_RESULT([Disabling ELF shared libraries by default])
50e1e10f
TT
290)
291AC_SUBST(ELF_CMT)
292AC_SUBST_FILE(MAKEFILE_ELF)
293dnl
294dnl handle --enable-bsd-shlibs
295dnl
296AC_ARG_ENABLE([bsd-shlibs],
8c9e2921 297AS_HELP_STRING([--enable-bsd-shlibs],[select BSD shared libraries]),
50e1e10f
TT
298if test "$enableval" = "no"
299then
300 BSDLIB_CMT=#
301 MAKEFILE_BSDLIB=/dev/null
02d04db4 302 AC_MSG_RESULT([Disabling BSD shared libraries])
50e1e10f 303else
a4ece359 304 E2_PKG_CONFIG_STATIC=
50e1e10f
TT
305 BSDLIB_CMT=
306 MAKEFILE_BSDLIB=$srcdir/lib/Makefile.bsd-lib
a4d09610 307 LIB_EXT=.so
e71d8731 308 [case "$host_os" in
aa75eccc 309 darwin*)
e71d8731
TT
310 MAKEFILE_BSDLIB=$srcdir/lib/Makefile.darwin-lib
311 LIB_EXT=.dylib
312 ;;
313 esac]
02d04db4 314 AC_MSG_RESULT([Enabling BSD shared libraries])
50e1e10f
TT
315fi
316,
317MAKEFILE_BSDLIB=/dev/null
318BSDLIB_CMT=#
02d04db4 319AC_MSG_RESULT([Disabling BSD shared libraries by default])
50e1e10f
TT
320)
321AC_SUBST(BSDLIB_CMT)
322AC_SUBST_FILE(MAKEFILE_BSDLIB)
323dnl
324dnl handle --enable-profile
325dnl
326AC_ARG_ENABLE([profile],
8c9e2921 327AS_HELP_STRING([--enable-profile],[build profiling libraries]),
50e1e10f
TT
328if test "$enableval" = "no"
329then
330 PROFILE_CMT=#
331 MAKEFILE_PROFILE=/dev/null
02d04db4 332 AC_MSG_RESULT([Disabling profiling libraries])
50e1e10f
TT
333else
334 PROFILE_CMT=
335 MAKEFILE_PROFILE=$srcdir/lib/Makefile.profile
a4d09610 336 PROFILED_LIB_EXT=_p.a
02d04db4 337 AC_MSG_RESULT([Building profiling libraries])
50e1e10f
TT
338fi
339,
340PROFILE_CMT=#
341MAKEFILE_PROFILE=/dev/null
02d04db4 342AC_MSG_RESULT([Disabling profiling libraries by default])
50e1e10f
TT
343)
344AC_SUBST(PROFILE_CMT)
345AC_SUBST_FILE(MAKEFILE_PROFILE)
346dnl
fedfb27f
TT
347dnl handle --enable-gcov
348dnl
349AC_ARG_ENABLE([gcov],
8c9e2921 350AS_HELP_STRING([--enable-gcov],[build for coverage testing using gcov]),
fedfb27f
TT
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)
fd1677e8
TT
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],
8c9e2921 366AS_HELP_STRING([--enable-hardening],[build for coverage testing using gcov]),
fd1677e8
TT
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)
50e1e10f 380dnl
a4d09610
TT
381dnl Substitute library extensions
382dnl
383AC_SUBST(LIB_EXT)
384AC_SUBST(STATIC_LIB_EXT)
385AC_SUBST(PROFILED_LIB_EXT)
55da9876
TT
386AC_SUBST(LDFLAG_DYNAMIC)
387AC_SUBST(PRIVATE_LIBS_CMT)
a4d09610 388dnl
782bebfd 389dnl handle --enable-jbd-debug
cdf186e4 390dnl
782bebfd 391AC_ARG_ENABLE([jbd-debug],
8c9e2921 392AS_HELP_STRING([--enable-jbd-debug],[enable journal debugging]),
cdf186e4
TT
393if test "$enableval" = "no"
394then
02d04db4 395 AC_MSG_RESULT([Disabling journal debugging])
cdf186e4 396else
d1154eb4
TT
397 AC_DEFINE(CONFIG_JBD_DEBUG, 1,
398 [Define to 1 if debugging ext3/4 journal code])
02d04db4 399 AC_MSG_RESULT([Enabling journal debugging])
cdf186e4
TT
400fi
401,
02d04db4 402AC_MSG_RESULT([Disabling journal debugging by default])
cdf186e4
TT
403)
404dnl
f0a22d0f
TT
405dnl handle --enable-blkid-debug
406dnl
407AC_ARG_ENABLE([blkid-debug],
8c9e2921 408AS_HELP_STRING([--enable-blkid-debug],[enable blkid debugging]),
f0a22d0f
TT
409if test "$enableval" = "no"
410then
02d04db4 411 AC_MSG_RESULT([Disabling blkid debugging])
f0a22d0f 412else
d1154eb4
TT
413 AC_DEFINE(CONFIG_BLKID_DEBUG, 1,
414 [Define to 1 if debugging the blkid library])
02d04db4 415 AC_MSG_RESULT([Enabling blkid debugging])
f0a22d0f
TT
416fi
417,
02d04db4 418AC_MSG_RESULT([Disabling blkid debugging by default])
2a29f135
TT
419)
420dnl
421dnl handle --enable-testio-debug
422dnl
423AC_ARG_ENABLE([testio-debug],
8c9e2921 424AS_HELP_STRING([--disable-testio-debug],[disable the use of the test I/O manager for debugging]),
d1154eb4
TT
425AH_TEMPLATE([CONFIG_TESTIO_DEBUG],
426 [Define to 1 if the testio I/O manager should be enabled])
2a29f135
TT
427if test "$enableval" = "no"
428then
02d04db4 429 AC_MSG_RESULT([Disabling testio debugging])
af773654 430 TEST_IO_CMT="#"
2a29f135 431else
af773654 432 TEST_IO_CMT=
d1154eb4 433 AC_DEFINE(CONFIG_TESTIO_DEBUG, 1)
02d04db4 434 AC_MSG_RESULT([Enabling testio debugging])
2a29f135
TT
435fi
436,
af773654 437AC_MSG_RESULT([Enabling testio debugging by default])
d1154eb4 438AC_DEFINE(CONFIG_TESTIO_DEBUG, 1)
af773654 439TEST_IO_CMT=
f0a22d0f 440)
af773654 441AC_SUBST(TEST_IO_CMT)
f0a22d0f 442dnl
b9e66a18
TT
443dnl handle --enable-developer-features
444dnl
445AC_ARG_ENABLE([developer-features],
8c9e2921 446AS_HELP_STRING([--enable-developer-features],[enable features for use by ext4 developers]),
b9e66a18
TT
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
39fd3d4f
SJR
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],
8c9e2921 475AS_HELP_STRING([--enable-libuuid],[build and use private uuid library]),
39fd3d4f
SJR
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`],
2d7583bd 485 [AC_MSG_ERROR([external uuid library not found])])
5afdf37b 486 PROFILED_LIBUUID=$LIBUUID
39fd3d4f
SJR
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,
f5dffb81
TT
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
39fd3d4f
SJR
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
14b596d4
TT
526dnl handle --disable-libblkid
527dnl
528PKG_PROG_PKG_CONFIG
529LIBBLKID=
530DEPLIBBLKID=
531STATIC_LIBBLKID=
532DEPSTATIC_LIBBLKID=
533PROFILED_LIBBLKID=
534DEPPROFILED_LIBBLKID=
535BLKID_CMT=
d1154eb4 536AH_TEMPLATE([CONFIG_BUILD_FINDFS], [Define to 1 to compile findfs])
14b596d4 537AC_ARG_ENABLE([libblkid],
8c9e2921 538AS_HELP_STRING([--enable-libblkid],[build and use private blkid library]),
14b596d4
TT
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`],
2d7583bd 548 [AC_MSG_ERROR([external blkid library not found])], -luuid)
14b596d4 549 BLKID_CMT=#
5afdf37b 550 PROFILED_LIBBLKID=$LIBBLKID
14b596d4
TT
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
d1154eb4 559 AC_DEFINE(CONFIG_BUILD_FINDFS, 1)
14b596d4
TT
560 AC_MSG_RESULT([Enabling private blkid library])
561fi
562,
f5dffb81
TT
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
14b596d4
TT
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
0afb9be6
TT
591dnl handle --enable-subset
592dnl
593ALL_CMT=
feb235e0 594SUBSET_CMT=
0afb9be6 595AC_ARG_ENABLE([subset],
8c9e2921 596AS_HELP_STRING([--enable-subset],[enable subset-only build]),
0afb9be6
TT
597if test "$enableval" = "no"
598then
feb235e0 599 SUBSET_CMT=#
0afb9be6
TT
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)
feb235e0 607AC_SUBST(SUBSET_CMT)
0afb9be6 608dnl
3df6014a
TT
609dnl handle --disable-backtrace
610dnl
611AH_TEMPLATE([DISABLE_BACKTRACE], [Define to 1 to disable use of backtrace])
612AC_ARG_ENABLE([backtrace],
8c9e2921 613AS_HELP_STRING([--disable-backtrace],[disable use backtrace]),
3df6014a
TT
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
cdf186e4
TT
625dnl handle --enable-debugfs
626dnl
627AC_ARG_ENABLE([debugfs],
8c9e2921 628AS_HELP_STRING([--disable-debugfs],[disable support of debugfs program]),
cdf186e4
TT
629if test "$enableval" = "no"
630then
02d04db4 631 AC_MSG_RESULT([Disabling debugfs support])
cdf186e4
TT
632 DEBUGFS_CMT="#"
633else
634 DEBUGFS_CMT=
02d04db4 635 AC_MSG_RESULT([Enabling debugfs support])
cdf186e4
TT
636fi
637,
02d04db4 638AC_MSG_RESULT([Enabling debugfs support by default])
cdf186e4
TT
639DEBUGFS_CMT=
640)
641AC_SUBST(DEBUGFS_CMT)
642dnl
643dnl handle --enable-imager
644dnl
645AC_ARG_ENABLE([imager],
8c9e2921 646AS_HELP_STRING([--disable-imager],[disable support of e2image program]),
cdf186e4
TT
647if test "$enableval" = "no"
648then
02d04db4 649 AC_MSG_RESULT([Disabling e2image support])
cdf186e4
TT
650 IMAGER_CMT="#"
651else
652 IMAGER_CMT=
02d04db4 653 AC_MSG_RESULT([Enabling e2image support])
cdf186e4
TT
654fi
655,
02d04db4 656AC_MSG_RESULT([Enabling e2image support by default])
cdf186e4
TT
657IMAGER_CMT=
658)
659AC_SUBST(IMAGER_CMT)
660dnl
661dnl handle --enable-resizer
662dnl
663AC_ARG_ENABLE([resizer],
8c9e2921 664AS_HELP_STRING([--disable-resizer],[disable support of e2resize program]),
cdf186e4
TT
665if test "$enableval" = "no"
666then
02d04db4 667 AC_MSG_RESULT([Disabling e2resize support])
cdf186e4
TT
668 RESIZER_CMT="#"
669else
670 RESIZER_CMT=
02d04db4 671 AC_MSG_RESULT([Enabling e2resize support])
cdf186e4
TT
672fi
673,
02d04db4 674AC_MSG_RESULT([Enabling e2resize support by default])
cdf186e4
TT
675RESIZER_CMT=
676)
677AC_SUBST(RESIZER_CMT)
678dnl
8d9c50c5
TT
679dnl handle --enable-defrag
680dnl
681AC_ARG_ENABLE([defrag],
8c9e2921 682AS_HELP_STRING([--disable-defrag],[disable support of e4defrag program]),
8d9c50c5
TT
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,
6c59a665
TT
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
8d9c50c5
TT
700)
701AC_SUBST(DEFRAG_CMT)
702dnl
fc6d9d51
TT
703dnl See whether to install the `fsck' wrapper program (that calls e2fsck)
704dnl
705AC_ARG_ENABLE([fsck],
8c9e2921 706AS_HELP_STRING([--enable-fsck],[build fsck wrapper program]),
fc6d9d51
TT
707[if test "$enableval" = "no"
708then
709 FSCK_PROG='' FSCK_MAN=''
02d04db4 710 AC_MSG_RESULT([Not building fsck wrapper])
fc6d9d51
TT
711else
712 FSCK_PROG=fsck FSCK_MAN=fsck.8
02d04db4 713 AC_MSG_RESULT([Building fsck wrapper])
fc6d9d51
TT
714fi]
715,
716[case "$host_os" in
e363240d 717 gnu*)
fc6d9d51 718 FSCK_PROG='' FSCK_MAN=''
02d04db4 719 AC_MSG_RESULT([Not building fsck wrapper by default])
fc6d9d51
TT
720 ;;
721 *)
722 FSCK_PROG=fsck FSCK_MAN=fsck.8
02d04db4 723 AC_MSG_RESULT([Building fsck wrapper by default])
fc6d9d51
TT
724esac]
725)
726AC_SUBST(FSCK_PROG)
727AC_SUBST(FSCK_MAN)
728dnl
5d40773b
TT
729dnl See whether to install the `e2initrd-helper' program
730dnl
731AC_ARG_ENABLE([e2initrd-helper],
8c9e2921 732AS_HELP_STRING([--enable-e2initrd-helper],[build e2initrd-helper program]),
5d40773b
TT
733[if test "$enableval" = "no"
734then
735 E2INITRD_PROG='' E2INITRD_MAN=''
02d04db4 736 AC_MSG_RESULT([Not building e2initrd helper])
5d40773b
TT
737else
738 E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8
02d04db4 739 AC_MSG_RESULT([Building e2initrd helper])
5d40773b
TT
740fi]
741,
742E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8
02d04db4 743AC_MSG_RESULT([Building e2initrd helper by default])
5d40773b
TT
744)
745AC_SUBST(E2INITRD_PROG)
746AC_SUBST(E2INITRD_MAN)
4db2f59a 747dnl
5d40773b 748dnl
50e1e10f 749dnl
3249394d 750AC_ARG_ENABLE([tls],
8c9e2921 751AS_HELP_STRING([--disable-tls],[disable use of thread local support]),
3249394d
TT
752[if test "$enableval" = "no"
753then
754 try_tls=""
02d04db4 755 AC_MSG_RESULT([Disabling thread local support])
3249394d
TT
756else
757 try_tls="yes"
02d04db4 758 AC_MSG_RESULT([Enabling thread local support])
3249394d
TT
759fi]
760,
eafba6c3
TT
761if test -n "$WITH_DIET_LIBC"
762then
763 try_tls=""
02d04db4 764 AC_MSG_RESULT([Diet libc does not support thread local support])
eafba6c3
TT
765else
766 try_tls="yes"
02d04db4 767 AC_MSG_RESULT([Try using thread local support by default])
eafba6c3 768fi
3249394d
TT
769)
770if test "$try_tls" = "yes"
771then
772AX_TLS
773fi
774dnl
775dnl
776dnl
bdcd5f22 777AC_ARG_WITH([pthread],
8c9e2921 778AS_HELP_STRING([--without-pthread],[disable use of pthread support]),
bdcd5f22
TT
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
d1154eb4 801AH_TEMPLATE([USE_UUIDD], [Define to 1 to build uuidd])
5610f992 802AC_ARG_ENABLE([uuidd],
8c9e2921 803AS_HELP_STRING([--disable-uuidd],[disable building the uuid daemon]),
5610f992
TT
804[if test "$enableval" = "no"
805then
02d04db4 806 AC_MSG_RESULT([Not building uuidd])
5610f992
TT
807 UUIDD_CMT="#"
808else
d1154eb4 809 AC_DEFINE(USE_UUIDD, 1)
5610f992 810 UUIDD_CMT=""
02d04db4 811 AC_MSG_RESULT([Building uuidd])
5610f992
TT
812fi]
813,
d1154eb4 814AC_DEFINE(USE_UUIDD, 1)
e3d10158
TT
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
5610f992
TT
823)
824AC_SUBST(UUIDD_CMT)
825dnl
d6a4bcb5
TB
826dnl handle --disable-mmp
827dnl
828AH_TEMPLATE([CONFIG_MMP], [Define to 1 to enable mmp support])
829AC_ARG_ENABLE([mmp],
8c9e2921 830AS_HELP_STRING([--disable-mmp],[disable support mmp, Multi Mount Protection]),
d6a4bcb5
TB
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
749f0712
TT
843dnl handle --disable-tdb
844dnl
845AH_TEMPLATE([CONFIG_TDB], [Define to 1 to enable tdb support])
846AC_ARG_ENABLE([tdb],
8c9e2921 847AS_HELP_STRING([--disable-tdb],[disable tdb support]),
f7581137 848[
749f0712
TT
849if test "$enableval" = "no"
850then
851 AC_MSG_RESULT([Disabling tdb support])
f7581137 852 CONFIG_TDB=0
749f0712
TT
853else
854 AC_MSG_RESULT([Enabling tdb support])
f7581137
EB
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
749f0712
TT
874 AC_DEFINE(CONFIG_TDB, 1)
875 TDB_CMT=""
876 TDB_MAN_COMMENT=""
f7581137
EB
877else
878 TDB_CMT="#"
879 TDB_MAN_COMMENT='.\"'
749f0712 880fi
749f0712
TT
881AC_SUBST(TDB_CMT)
882AC_SUBST(TDB_MAN_COMMENT)
883dnl
1625bf42
TB
884dnl handle --disable-bmap-stats
885dnl
886AH_TEMPLATE([ENABLE_BMAP_STATS], [Define to 1 to enable bitmap stats.])
887AC_ARG_ENABLE([bmap-stats],
8c9e2921 888AS_HELP_STRING([--disable-bmap-stats],[disable collection of bitmap stats]),
1625bf42
TB
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],
8c9e2921 905AS_HELP_STRING([--enable-bmap-stats-ops],[enable collection of additional bitmap stats]),
1625bf42
TB
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
5610f992
TT
921dnl
922dnl
50e1e10f
TT
923MAKEFILE_LIBRARY=$srcdir/lib/Makefile.library
924AC_SUBST_FILE(MAKEFILE_LIBRARY)
925dnl
cdf186e4
TT
926dnl Add internationalization support, using gettext.
927dnl
b0cacab0 928GETTEXT_PACKAGE=e2fsprogs
cdf186e4
TT
929PACKAGE=e2fsprogs
930VERSION="$E2FSPROGS_VERSION"
b0cacab0 931VERSION=0.14.1
d1154eb4
TT
932AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [package name for gettext])
933AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [version for gettext])
b0cacab0 934AC_SUBST(GETTEXT_PACKAGE)
cdf186e4
TT
935AC_SUBST(PACKAGE)
936AC_SUBST(VERSION)
937
e598c29b 938AM_GNU_GETTEXT([external])
cdf186e4 939dnl
50e1e10f
TT
940dnl End of configuration options
941dnl
74becf3c 942AC_SUBST(BINARY_TYPE)
50e1e10f 943AC_PROG_MAKE_SET
bcb915b0 944CHECK_GNU_MAKE
50e1e10f 945AC_PATH_PROG(LN, ln, ln)
5abc0414 946AC_PROG_MKDIR_P
3fb16e74
TT
947dnl
948dnl @mkdir_p@ is used by po's Makefile.in
949dnl
950mkdir_p=$MKDIR_P
951AC_SUBST(mkdir_p)
fc6d9d51 952AC_PROG_LN_S
50e1e10f
TT
953AC_PATH_PROG(MV, mv, mv)
954AC_PATH_PROG(CP, cp, cp)
955AC_PATH_PROG(RM, rm, rm)
956AC_PATH_PROG(CHMOD, chmod, :)
32237014
TT
957AC_PROG_AWK
958AC_PROG_EGREP
50e1e10f 959AC_PATH_PROG(SED, sed, sed)
9d564f73 960AC_PATH_PROG(PERL, perl, perl)
250f79f0 961AC_PATH_PROG(LDCONFIG, ldconfig, :)
50e1e10f
TT
962AC_CHECK_TOOL(AR, ar, ar)
963AC_CHECK_TOOL(RANLIB, ranlib, :)
964AC_CHECK_TOOL(STRIP, strip, :)
7321d94e
MK
965AC_CHECK_PROG(MAKEINFO, makeinfo, makeinfo, )
966if test "_$MAKEINFO" = "_"; then
ca1de98a 967 MAKEINFO="echo Makeinfo is missing. Info documentation will not be built."
7321d94e
MK
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)
50e1e10f 979AC_PROG_INSTALL
6c133523
TT
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
677fc916
MF
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
24487a7f 995 pthread.h
677fc916
MF
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
c84da2ee 1006 attr/xattr.h
677fc916
MF
1007 linux/falloc.h
1008 linux/fd.h
82424fc6 1009 linux/fsmap.h
677fc916 1010 linux/major.h
fbabd5c4 1011 linux/loop.h
f47f3195 1012 linux/types.h
677fc916
MF
1013 net/if_dl.h
1014 netinet/in.h
81cbf1ef 1015 sys/acl.h
677fc916 1016 sys/disklabel.h
51050544 1017 sys/disk.h
677fc916
MF
1018 sys/file.h
1019 sys/ioctl.h
74f2c4aa 1020 sys/key.h
677fc916
MF
1021 sys/mkdev.h
1022 sys/mman.h
51050544 1023 sys/mount.h
677fc916 1024 sys/prctl.h
39ace91b 1025 sys/random.h
677fc916
MF
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
d7de3f3d 1037 sys/xattr.h
677fc916 1038]))
b3d180e2
EB
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
ec3a69bb
MA
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
da76d6b7
TT
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]])
50e1e10f 1078AC_FUNC_VPRINTF
fff45483 1079dnl Check to see if dirent has member d_reclen. On cygwin those d_reclen
055866d8 1080dnl is not declared.
d1154eb4
TT
1081AC_CHECK_MEMBER(struct dirent.d_reclen,[AC_DEFINE(HAVE_RECLEN_DIRENT, 1,
1082 [Define to 1 if dirent has d_reclen])],,
6c65d251 1083 [#include <dirent.h>])
2873927d 1084AC_CHECK_MEMBERS([struct stat.st_atim])
d1154eb4
TT
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])],,
6c65d251 1088 [#include <sys/types.h>])
50e1e10f 1089dnl
b0b9c4de
TT
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
d1154eb4
TT
1093AC_CHECK_DECL(llseek,[AC_DEFINE(HAVE_LLSEEK_PROTOTYPE, 1,
1094 [Define to 1 if llseek declared in unistd.h])],,
6c65d251 1095 [#include <unistd.h>])
b0b9c4de 1096dnl
6928adc9
TT
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
d1154eb4
TT
1105AC_CHECK_DECL(lseek64,[AC_DEFINE(HAVE_LSEEK64_PROTOTYPE, 1,
1106 [Define to 1 if lseek64 declared in unistd.h])],,
6c65d251
TT
1107 [#define _LARGEFILE_SOURCE
1108 #define _LARGEFILE64_SOURCE
1109 #include <unistd.h>])
5598a968
EB
1110
1111dnl The Android NDK has <linux/fsmap.h>, but it is missing the inline functions
1112dnl fsmap_sizeof() and fsmap_advance(). Check whether this is the case.
1113AC_CHECK_DECL(fsmap_sizeof,[AC_DEFINE(HAVE_FSMAP_SIZEOF, 1,
1114 [Define to 1 if fsmap_sizeof() is declared in linux/fsmap.h])],,
1115 [#include <linux/fsmap.h>])
6928adc9 1116dnl
50e1e10f
TT
1117dnl Word sizes...
1118dnl
50e1e10f
TT
1119AC_CHECK_SIZEOF(short)
1120AC_CHECK_SIZEOF(int)
1121AC_CHECK_SIZEOF(long)
fc6d9d51 1122AC_CHECK_SIZEOF(long long)
274d46e1 1123AC_CHECK_SIZEOF(off_t)
2dd680f3 1124AC_CHECK_SIZEOF(time_t)
50e1e10f
TT
1125SIZEOF_SHORT=$ac_cv_sizeof_short
1126SIZEOF_INT=$ac_cv_sizeof_int
1127SIZEOF_LONG=$ac_cv_sizeof_long
fc6d9d51 1128SIZEOF_LONG_LONG=$ac_cv_sizeof_long_long
274d46e1 1129SIZEOF_OFF_T=$ac_cv_sizeof_off_t
2dd680f3 1130SIZEOF_TIME_T=$ac_cv_sizeof_time_t
50e1e10f
TT
1131AC_SUBST(SIZEOF_SHORT)
1132AC_SUBST(SIZEOF_INT)
1133AC_SUBST(SIZEOF_LONG)
fc6d9d51 1134AC_SUBST(SIZEOF_LONG_LONG)
274d46e1 1135AC_SUBST(SIZEOF_OFF_T)
2dd680f3 1136AC_SUBST(SIZEOF_TIME_T)
877eb6d9 1137AC_C_BIGENDIAN
91f04685
CQ
1138if test $cross_compiling = no; then
1139 BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh
1140else
1141 CROSS_COMPILE="1" BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh
1142fi
4ea7ea00
TT
1143ASM_TYPES_HEADER=./asm_types.h
1144AC_SUBST_FILE(ASM_TYPES_HEADER)
50e1e10f 1145dnl
488c75a6
TT
1146dnl Save the configuration #defines needed for the public ext2fs.h
1147dnl header file
1148dnl
1149echo "/* These defines are needed for the public ext2fs.h header file */" \
1150 > public_config.h
1151if grep HAVE_SYS_TYPES_H confdefs.h > tmp_config.$$; then
1152 uniq tmp_config.$$ >> public_config.h
1153else
1154 echo "#undef HAVE_SYS_TYPES_H" >> public_config.h
1155fi
1156if grep WORDS_BIGENDIAN confdefs.h > tmp_config.$$; then
1157 uniq tmp_config.$$ >> public_config.h
1158else
1159 echo "#undef WORDS_BIGENDIAN" >> public_config.h
1160fi
1161rm -f tmp_config.$$
1162PUBLIC_CONFIG_HEADER=./public_config.h
1163AC_SUBST_FILE(PUBLIC_CONFIG_HEADER)
1164dnl
0c193f82
TT
1165dnl See if we have inttypes.h and if intptr_t is defined
1166dnl
1167AC_CHECK_HEADERS([inttypes.h])
d2ee56d8 1168AC_CHECK_TYPES(intptr_t)
0c193f82 1169dnl
50e1e10f
TT
1170dnl See if struct stat has a st_flags field, in which case we can get file
1171dnl flags somewhat portably. Also check for the analogous setter, chflags().
1172dnl
1173AC_MSG_CHECKING(whether struct stat has a st_flags field)
1174AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags,
54445dc2 1175 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]))
50e1e10f
TT
1176AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags)
1177if test "$e2fsprogs_cv_struct_st_flags" = yes; then
c03bc4e8
TT
1178 AC_MSG_CHECKING(whether st_flags field is useful)
1179 AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags_immut,
54445dc2 1180 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]))
c03bc4e8
TT
1181 AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags_immut)
1182 if test "$e2fsprogs_cv_struct_st_flags_immut" = yes; then
d1154eb4
TT
1183 AC_DEFINE(HAVE_STAT_FLAGS, 1,
1184 [Define to 1 if struct stat has st_flags])
c03bc4e8 1185 fi
50e1e10f 1186fi
84ea6e70
TT
1187dnl
1188dnl Check for the presence of SA_LEN
1189dnl
6c65d251 1190AC_CHECK_MEMBER(struct sockaddr.sa_len,
d1154eb4
TT
1191 AC_DEFINE_UNQUOTED(HAVE_SA_LEN,1,
1192 [Define to 1 if if struct sockaddr contains sa_len]),,
6c65d251
TT
1193 [#include <sys/types.h>
1194 #include <sys/socket.h>])
84ea6e70 1195dnl
7154d974
TT
1196dnl If we are using the system-provided blkid library, check for
1197dnl the functions added after migrating that library to util-linux
9ed8e5fe
ES
1198dnl
1199if test -n "$BLKID_CMT"; then
7154d974 1200 AC_CHECK_LIB(blkid, blkid_probe_get_topology,
f72ea2de
DL
1201 AC_DEFINE(HAVE_BLKID_PROBE_GET_TOPOLOGY, 1,
1202 [Define to 1 if blkid has blkid_probe_get_topology]))
f4979dd5
JK
1203 AC_CHECK_LIB(blkid, blkid_topology_get_dax,
1204 AC_DEFINE(HAVE_BLKID_TOPOLOGY_GET_DAX, 1,
1205 [Define to 1 if blkid has blkid_topology_get_dax]))
7154d974 1206 AC_CHECK_LIB(blkid, blkid_probe_enable_partitions,
f72ea2de
DL
1207 AC_DEFINE(HAVE_BLKID_PROBE_ENABLE_PARTITIONS, 1,
1208 [Define to 1 if blkid has blkid_probe_enable_partitions]))
9ed8e5fe
ES
1209fi
1210dnl
32179ce2
TT
1211if test -n "$DLOPEN_LIB" ; then
1212 ac_cv_func_dlopen=yes
1213fi
677fc916
MF
1214AC_CHECK_FUNCS(m4_flatten([
1215 __secure_getenv
74f2c4aa 1216 add_key
677fc916 1217 backtrace
677fc916 1218 chflags
32179ce2 1219 dlopen
9a393891 1220 fadvise64
677fc916
MF
1221 fallocate
1222 fallocate64
1223 fchown
f47f3195 1224 fcntl
677fc916
MF
1225 fdatasync
1226 fstat64
f47f3195 1227 fsync
677fc916 1228 ftruncate64
2873927d 1229 futimes
6c59a665 1230 getcwd
677fc916 1231 getdtablesize
39ace91b 1232 getentropy
32b8802a 1233 gethostname
677fc916 1234 getmntinfo
25ff7725 1235 getpwuid_r
39ace91b 1236 getrandom
677fc916
MF
1237 getrlimit
1238 getrusage
1239 jrand48
74f2c4aa 1240 keyctl
c84da2ee 1241 llistxattr
677fc916
MF
1242 llseek
1243 lseek64
1244 mallinfo
97079a79 1245 mallinfo2
677fc916
MF
1246 mbstowcs
1247 memalign
6c59a665 1248 mempcpy
677fc916
MF
1249 mmap
1250 msync
1251 nanosleep
1252 open64
1253 pathconf
1254 posix_fadvise
9a393891 1255 posix_fadvise64
677fc916
MF
1256 posix_memalign
1257 prctl
baa35446
DW
1258 pread
1259 pwrite
f00948ad
TT
1260 pread64
1261 pwrite64
4e5f24ae 1262 qsort_r
1ad3174a 1263 secure_getenv
b24efa21 1264 setmntent
677fc916
MF
1265 setresgid
1266 setresuid
c42de75b 1267 snprintf
677fc916 1268 srandom
6c59a665 1269 stpcpy
677fc916
MF
1270 strcasecmp
1271 strdup
1272 strnlen
1273 strptime
1274 strtoull
1275 sync_file_range
1276 sysconf
1277 usleep
1278 utime
441eb337 1279 utimes
677fc916
MF
1280 valloc
1281]))
fc6d9d51 1282dnl
fc6d9d51
TT
1283dnl Check to see if -lsocket is required (solaris) to make something
1284dnl that uses socket() to compile; this is needed for the UUID library
1285dnl
1286SOCKET_LIB=''
1287AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket])
1288AC_SUBST(SOCKET_LIB)
1289dnl
b291c11f
DW
1290dnl See if libmagic exists
1291dnl
1292AC_CHECK_LIB(magic, magic_file, [MAGIC_LIB=-lmagic
1293AC_CHECK_HEADERS([magic.h])])
32179ce2 1294if test "$ac_cv_func_dlopen" = yes ; then
d2e3c0dc
TT
1295 MAGIC_LIB=$DLOPEN_LIB
1296fi
b291c11f
DW
1297AC_SUBST(MAGIC_LIB)
1298dnl
62bc243f
GZ
1299dnl Check to see if librt is required for clock_gettime() (glibc < 2.17)
1300dnl
1301AC_CHECK_LIB(rt, clock_gettime, [CLOCK_GETTIME_LIB=-lrt])
1302AC_SUBST(CLOCK_GETTIME_LIB)
1303dnl
81cbf1ef
DW
1304dnl Check to see if the FUSE library is -lfuse or -losxfuse
1305dnl
1306FUSE_CMT=
1307FUSE_LIB=
1308dnl osxfuse.dylib supersedes fuselib.dylib
1309AC_ARG_ENABLE([fuse2fs],
8c9e2921 1310AS_HELP_STRING([--disable-fuse2fs],[do not build fuse2fs]),
81cbf1ef
DW
1311if test "$enableval" = "no"
1312then
1313 FUSE_CMT="#"
1314 AC_MSG_RESULT([Disabling fuse2fs])
1315else
1316 AC_CHECK_HEADERS([pthread.h fuse.h], [],
1317[AC_MSG_FAILURE([Cannot find fuse2fs headers.])],
1318[#define _FILE_OFFSET_BITS 64
1319#define FUSE_USE_VERSION 29])
1320
1321 AC_PREPROC_IFELSE(
1322[AC_LANG_PROGRAM([[#define FUSE_USE_VERSION 29
1323#ifdef __linux__
1324#include <linux/fs.h>
1325#include <linux/falloc.h>
1326#include <linux/xattr.h>
1327#endif
1328]], [])], [], [AC_MSG_FAILURE([Cannot find fuse2fs Linux headers.])])
1329
1330 AC_CHECK_LIB(osxfuse, fuse_main, [FUSE_LIB=-losxfuse],
1331 [AC_CHECK_LIB(fuse, fuse_main, [FUSE_LIB=-lfuse],
1332 [AC_MSG_FAILURE([Cannot find fuse library.])])])
1333 AC_MSG_RESULT([Enabling fuse2fs])
1334fi
1335,
1336AC_CHECK_HEADERS([pthread.h fuse.h], [], [FUSE_CMT="#"],
1337[#define _FILE_OFFSET_BITS 64
1338#define FUSE_USE_VERSION 29
1339#ifdef __linux__
1340# include <linux/fs.h>
1341# include <linux/falloc.h>
1342# include <linux/xattr.h>
1343#endif])
1344if test -z "$FUSE_CMT"
1345then
1346 AC_CHECK_LIB(osxfuse, fuse_main, [FUSE_LIB=-losxfuse],
1347[AC_CHECK_LIB(fuse, fuse_main, [FUSE_LIB=-lfuse], [FUSE_CMT="#"])])
1348fi
1349if test -z "$FUSE_CMT"
1350then
1351 AC_MSG_RESULT([Enabling fuse2fs by default.])
1352fi
1353)
1354AC_SUBST(FUSE_LIB)
1355AC_SUBST(FUSE_CMT)
1356dnl
50e1e10f
TT
1357dnl See if optreset exists
1358dnl
1359AC_MSG_CHECKING(for optreset)
1360AC_CACHE_VAL(ac_cv_have_optreset,
1361[AC_EGREP_HEADER(optreset, unistd.h,
1362 ac_cv_have_optreset=yes, ac_cv_have_optreset=no)])dnl
1363AC_MSG_RESULT($ac_cv_have_optreset)
1364if test $ac_cv_have_optreset = yes; then
d1154eb4 1365 AC_DEFINE(HAVE_OPTRESET, 1, [Define to 1 if optreset for getopt is present])
50e1e10f
TT
1366fi
1367dnl
d7f45af8
TT
1368dnl Test for sem_init, and which library it might require:
1369dnl
d1154eb4 1370AH_TEMPLATE([HAVE_SEM_INIT], [Define to 1 if sem_init() exists])
d7f45af8 1371SEM_INIT_LIB=''
cfb8e0bd
TT
1372echo GL_THREADS_API: ${gl_threads_api}
1373if test "${gl_threads_api}" != none
1374then
1375 AC_CHECK_FUNC(sem_init, ,
1376 AC_CHECK_LIB(pthread, sem_init,
d1154eb4 1377 AC_DEFINE(HAVE_SEM_INIT, 1)
d7f45af8 1378 SEM_INIT_LIB=-lpthread,
cfb8e0bd 1379 AC_CHECK_LIB(rt, sem_init,
d1154eb4 1380 AC_DEFINE(HAVE_SEM_INIT, 1)
d7f45af8 1381 SEM_INIT_LIB=-lrt,
cfb8e0bd 1382 AC_CHECK_LIB(posix4, sem_init,
d1154eb4 1383 AC_DEFINE(HAVE_SEM_INIT, 1)
d7f45af8 1384 SEM_INIT_LIB=-lposix4))))dnl
cfb8e0bd 1385fi
d7f45af8
TT
1386AC_SUBST(SEM_INIT_LIB)
1387dnl
4e5f24ae
TT
1388dnl qsort_r detection
1389dnl
1390AS_IF([test "$ac_cv_func_qsort_r" != no], [
1391 AC_CACHE_CHECK(whether qsort_r is GNU version, e2_cv_gnu_qsort_r,
1392 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1393@%:@include <stdlib.h>
1394void (qsort_r)(void *base, size_t nmemb, size_t size,
1395 int (*compar)(const void *, const void *, void *),
1396 void *arg);
1397]], [[ ]])],[e2_cv_gnu_qsort_r=yes],[e2_cv_gnu_qsort_r=no])
1398 ])
1399 AC_CACHE_CHECK(whether qsort_r is BSD version, e2_cv_bsd_qsort_r,
1400 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1401@%:@include <stdlib.h>
1402void (qsort_r)(void *base, size_t nmemb, size_t size,
1403 void *arg, int (*compar)(void *, const void *, const void *));
1404]], [[ ]])],[e2_cv_bsd_qsort_r=yes],[e2_cv_bsd_qsort_r=no])
1405 ])
1406 AS_CASE("$e2_cv_gnu_qsort_r:$e2_cv_bsd_qsort_r",
1407 [yes:no], [
1408 AC_DEFINE(HAVE_GNU_QSORT_R, 1, [ Define to 1 if you have the GNU-style 'qsort_r' function.])
1409 ],
1410 [no:yes], [
1411 AC_DEFINE(HAVE_BSD_QSORT_R, 1, [ Define to 1 if you have the BSD-style 'qsort_r' function.])
1412 ])
1413])
1414dnl
e54635de
TT
1415dnl Check for unified diff
1416dnl
1417AC_MSG_CHECKING(for unified diff option)
27f991b0 1418if diff -u $0 $0 > /dev/null 2>&1 ; then
e54635de
TT
1419 UNI_DIFF_OPTS=-u
1420else
1421 UNI_DIFF_OPTS=-c
1422fi
1423AC_MSG_RESULT($UNI_DIFF_OPTS)
1424AC_SUBST(UNI_DIFF_OPTS)
1425dnl
8f3f29d3
TT
1426dnl We use the EXT2 ioctls only under Linux
1427dnl
1428case "$host_os" in
1429linux*)
d1154eb4 1430 AC_DEFINE(HAVE_EXT2_IOCTLS, 1, [Define to 1 if Ext2 ioctls present])
8f3f29d3
TT
1431 ;;
1432esac
50e1e10f 1433dnl
ea1a3fa2
NC
1434dnl Check the available mount options
1435dnl
1436AX_CHECK_MOUNT_OPT(nosuid)
1437AX_CHECK_MOUNT_OPT(nodev)
4aece328
DW
1438dnl Enable LTO for all packages
1439dnl
1440AC_ARG_ENABLE([lto],
8c9e2921 1441AS_HELP_STRING([--enable-lto],[enable link time optimization]),,
139a3092 1442enable_lto=no)
4aece328
DW
1443if test "$enable_lto" = "yes" || test "$enable_lto" = "probe"; then
1444 AC_MSG_CHECKING([if C compiler supports LTO])
1445 OLD_CFLAGS="$CFLAGS"
1446 OLD_LDFLAGS="$LDFLAGS"
49715704 1447 LTO_FLAGS="-g -flto -ffat-lto-objects"
4aece328
DW
1448 CFLAGS="$CFLAGS $LTO_FLAGS"
1449 LDFLAGS="$LDFLAGS $LTO_FLAGS"
1450 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1451 [AC_MSG_RESULT([yes])]
1452 [lto_cflags=$LTO_FLAGS]
1453 [lto_ldflags=$LTO_FLAGS]
1454 [AC_PATH_PROG(gcc_ar, gcc-ar,,)]
1455 [AC_PATH_PROG(gcc_ranlib, gcc-ranlib,,)],
1456 [AC_MSG_RESULT([no])])
1457 if test -x "$gcc_ar" && test -x "$gcc_ranlib"; then
1458 have_lto=yes
1459 AR="${gcc_ar}"
1460 RANLIB="${gcc_ranlib}"
1461 fi
1462 CFLAGS="${OLD_CFLAGS}"
1463 LDFLAGS="${OLD_LDFLAGS}"
1464 AC_SUBST(have_lto)
1465 AC_SUBST(lto_cflags)
1466 AC_SUBST(lto_ldflags)
1467fi
1468if test "$enable_lto" = "yes" && test "$have_lto" != "yes"; then
1469 AC_MSG_ERROR([LTO not supported by compiler.])
1470fi
1471dnl
1c2a76ae
DW
1472dnl Enable UBSAN for all packages
1473dnl
1474AC_ARG_ENABLE([ubsan],
8c9e2921 1475AS_HELP_STRING([--enable-ubsan],[enable undefined behavior sanitizer]),,
1c2a76ae
DW
1476enable_ubsan=no)
1477if test "$enable_ubsan" = "yes" || test "$enable_ubsan" = "probe"; then
1478 AC_MSG_CHECKING([if C compiler supports UBSAN])
1479 OLD_CFLAGS="$CFLAGS"
1480 OLD_LDFLAGS="$LDFLAGS"
1481 UBSAN_FLAGS="-fsanitize=undefined"
1482 CFLAGS="$CFLAGS $UBSAN_FLAGS"
1483 LDFLAGS="$LDFLAGS $UBSAN_FLAGS"
1484 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1485 [AC_MSG_RESULT([yes])]
1486 [ubsan_cflags=$UBSAN_FLAGS]
1487 [ubsan_ldflags=$UBSAN_FLAGS]
1488 [have_ubsan=yes],
1489 [AC_MSG_RESULT([no])])
1490 CFLAGS="${OLD_CFLAGS}"
1491 LDFLAGS="${OLD_LDFLAGS}"
1492 AC_SUBST(have_ubsan)
1493 AC_SUBST(ubsan_cflags)
1494 AC_SUBST(ubsan_ldflags)
1495fi
1496if test "$enable_ubsan" = "yes" && test "$have_ubsan" != "yes"; then
1497 AC_MSG_ERROR([UBSAN not supported by compiler.])
1498fi
1499dnl
5e666e3d
DW
1500dnl Enable ADDRSAN for all packages
1501dnl
1502AC_ARG_ENABLE([addrsan],
8c9e2921 1503AS_HELP_STRING([--enable-addrsan],[enable address sanitizer]),,
5e666e3d
DW
1504enable_addrsan=no)
1505if test "$enable_addrsan" = "yes" || test "$enable_addrsan" = "probe"; then
1506 AC_MSG_CHECKING([if C compiler supports ADDRSAN])
1507 OLD_CFLAGS="$CFLAGS"
1508 OLD_LDFLAGS="$LDFLAGS"
1509 ADDRSAN_FLAGS="-fsanitize=address"
1510 CFLAGS="$CFLAGS $ADDRSAN_FLAGS"
1511 LDFLAGS="$LDFLAGS $ADDRSAN_FLAGS"
1512 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1513 [AC_MSG_RESULT([yes])]
1514 [addrsan_cflags=$ADDRSAN_FLAGS]
1515 [addrsan_ldflags=$ADDRSAN_FLAGS]
1516 [have_addrsan=yes],
1517 [AC_MSG_RESULT([no])])
1518 CFLAGS="${OLD_CFLAGS}"
1519 LDFLAGS="${OLD_LDFLAGS}"
1520 AC_SUBST(have_addrsan)
1521 AC_SUBST(addrsan_cflags)
1522 AC_SUBST(addrsan_ldflags)
1523fi
1524if test "$enable_addrsan" = "yes" && test "$have_addrsan" != "yes"; then
1525 AC_MSG_ERROR([ADDRSAN not supported by compiler.])
1526fi
1527dnl
bcca786b
DW
1528dnl Enable THREADSAN for all packages
1529dnl
1530AC_ARG_ENABLE([threadsan],
8c9e2921 1531AS_HELP_STRING([--enable-threadsan],[enable thread sanitizer]),,
bcca786b
DW
1532enable_threadsan=no)
1533if test "$enable_threadsan" = "yes" || test "$enable_threadsan" = "probe"; then
1534 AC_MSG_CHECKING([if C compiler supports THREADSAN])
1535 OLD_CFLAGS="$CFLAGS"
1536 OLD_LDFLAGS="$LDFLAGS"
1537 THREADSAN_FLAGS="-fsanitize=thread"
1538 CFLAGS="$CFLAGS $THREADSAN_FLAGS"
1539 LDFLAGS="$LDFLAGS $THREADSAN_FLAGS"
1540 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1541 [AC_MSG_RESULT([yes])]
1542 [threadsan_cflags=$THREADSAN_FLAGS]
1543 [threadsan_ldflags=$THREADSAN_FLAGS]
1544 [have_threadsan=yes],
1545 [AC_MSG_RESULT([no])])
1546 CFLAGS="${OLD_CFLAGS}"
1547 LDFLAGS="${OLD_LDFLAGS}"
1548 AC_SUBST(have_threadsan)
1549 AC_SUBST(threadsan_cflags)
1550 AC_SUBST(threadsan_ldflags)
1551fi
1552if test "$enable_threadsan" = "yes" && test "$have_threadsan" != "yes"; then
1553 AC_MSG_ERROR([THREADSAN not supported by compiler.])
1554fi
1555if test "$have_threadsan" = "yes" && test "$have_addrsan" = "yes"; then
1556 AC_MSG_WARN([ADDRSAN and THREADSAN are not known to work together.])
1557fi
1558dnl
2869485b
TT
1559dnl Enable the fuzzer sanitizer for all packages
1560dnl
1561FUZZING_CMT="#"
1562AC_ARG_ENABLE([fuzzing],
1563AS_HELP_STRING([--enable-fuzzing],[enable fuzzing sanitizer]),,
1564enable_fuzzing=no)
1565if test "$enable_fuzzing" = "yes" || test "$enable_fuzzing" = "probe"; then
1566 AC_PROG_CXX
1567 AC_MSG_CHECKING([if C compiler supports fuzzing sanitizer])
1568 AC_LANG_PUSH([C++])
1569 OLD_CXXFLAGS="$CXXFLAGS"
1570 OLD_LDFLAGS="$LDFLAGS"
1571 FUZZER_FLAGS="-fsanitize=fuzzer"
1572 CXXFLAGS="$CXXFLAGS $FUZZER_FLAGS"
1573 LDFLAGS="$LDFLAGS $FUZZER_FLAGS"
1574 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1575 #include <stddef.h>
1576 #include <stdint.h>
1577 ]],
1578 [ return 0; ])],
1579 [AC_MSG_RESULT([yes])]
1580 [fuzzer_cflags=$FUZZER_FLAGS]
1581 [fuzzer_ldflags=$FUZZER_FLAGS]
1582 [FUZZING_CMT=]
1583 [have_fuzzer=yes],
1584 [AC_MSG_RESULT([no])]
1585 [AC_MSG_ERROR([fuzzing requested but not available])])
1586 CXXFLAGS="${OLD_CXXFLAGS}"
1587 LDFLAGS="${OLD_LDFLAGS}"
1588 AC_LANG_POP([C++])
1589 AC_SUBST(have_fuzzer)
1590 AC_SUBST(fuzzer_cflags)
1591 AC_SUBST(fuzzer_ldflags)
1592fi
1593if test "$enable_fuzzer" = "yes" && test "$have_fuzzer" != "yes"; then
1594 AC_MSG_ERROR([Fuzzing not supported by compiler.])
1595fi
1596AC_SUBST(FUZZING_CMT)
1597dnl
fff45483 1598dnl OS-specific uncomment control
e6f2bda3
TT
1599dnl
1600LINUX_CMT="#"
fff45483
TT
1601CYGWIN_CMT="#"
1602UNIX_CMT=
e6f2bda3
TT
1603case "$host_os" in
1604linux*)
1605 LINUX_CMT=
1606 ;;
fff45483
TT
1607cygwin)
1608 CYGWIN_CMT=
1609 UNIX_CMT="#"
fff45483 1610 ;;
e6f2bda3
TT
1611esac
1612AC_SUBST(LINUX_CMT)
fff45483
TT
1613AC_SUBST(CYGWIN_CMT)
1614AC_SUBST(UNIX_CMT)
e6f2bda3 1615dnl
5ce368f0
DW
1616dnl e2scrub only builds on linux
1617dnl
1618E2SCRUB_CMT="$LINUX_CMT"
1619AC_SUBST(E2SCRUB_CMT)
1620dnl
6c133523 1621dnl Linux and Hurd places root files in the / by default
50e1e10f 1622dnl
50e1e10f 1623case "$host_os" in
93636bde 1624linux* | gnu* | k*bsd*-gnu)
a4b2d3ce
TT
1625 if test "$prefix" = NONE -a "$root_prefix" = NONE ; then
1626 root_prefix="";
02d04db4 1627 AC_MSG_RESULT([On $host_os systems, root_prefix defaults to ''])
fc6d9d51
TT
1628 fi
1629 ;;
1630esac
fc6d9d51 1631dnl
a4b2d3ce 1632dnl On Linux/hurd, force the prefix to be /usr
fc6d9d51
TT
1633dnl
1634case "$host_os" in
93636bde 1635linux* | gnu* | k*bsd*-gnu)
fc6d9d51 1636 if test "$prefix" = NONE ; then
a4b2d3ce 1637 prefix="/usr";
02d04db4 1638 AC_MSG_RESULT([On $host_os systems, prefix defaults to /usr])
bff61a7a 1639 if test "$mandir" = '${prefix}/man' ; then
02d04db4 1640 AC_MSG_RESULT([...and mandir defaults to /usr/share/man])
bff61a7a
TT
1641 mandir=/usr/share/man
1642 fi
50e1e10f
TT
1643 fi
1644;;
1645esac
a4b2d3ce 1646if test "$root_prefix" = NONE ; then
ffe1991f 1647 if test "$prefix" = NONE ; then
a4b2d3ce
TT
1648 root_prefix="$ac_default_prefix"
1649 else
1650 root_prefix="$prefix"
1651 fi
b5ffeade
TT
1652 root_bindir=$bindir
1653 root_sbindir=$sbindir
1654 root_libdir=$libdir
1655 root_sysconfdir=$sysconfdir
1656else
1657 root_bindir='${root_prefix}/bin'
1658 root_sbindir='${root_prefix}/sbin'
1659 root_libdir='${root_prefix}/lib'
1660 root_sysconfdir='${root_prefix}/etc'
a4b2d3ce 1661fi
c4ef11c5
TT
1662if test "$bindir" != '${exec_prefix}/bin'; then
1663 root_bindir=$bindir
02d04db4 1664 AC_MSG_RESULT([Setting root_bindir to $root_bindir])
c4ef11c5
TT
1665fi
1666if test "$sbindir" != '${exec_prefix}/sbin'; then
1667 root_sbindir=$sbindir
02d04db4 1668 AC_MSG_RESULT([Setting root_sbindir to $root_sbindir])
c4ef11c5
TT
1669fi
1670if test "$libdir" != '${exec_prefix}/lib'; then
1671 root_libdir=$libdir
02d04db4 1672 AC_MSG_RESULT([Setting root_libdir to $root_libdir])
c4ef11c5
TT
1673fi
1674if test "$sysconfdir" != '${prefix}/etc'; then
1675 root_sysconfdir=$sysconfdir
02d04db4 1676 AC_MSG_RESULT([Setting root_sysconfdir to $root_sysconfdir])
c4ef11c5 1677fi
a4b2d3ce 1678AC_SUBST(root_prefix)
b5ffeade
TT
1679AC_SUBST(root_bindir)
1680AC_SUBST(root_sbindir)
1681AC_SUBST(root_libdir)
1682AC_SUBST(root_sysconfdir)
50e1e10f 1683dnl
55e00a25
TT
1684dnl Allow specification of the multiarch arch
1685dnl
1686AC_ARG_WITH([multiarch],
8c9e2921 1687AS_HELP_STRING([--with-multiarch=ARCH],[specify the multiarch triplet]),
d7fa4103
TT
1688if test "$withval" = "lib64"; then
1689 libdir=/usr/lib64
1690 root_libdir=/lib64
1691else
1692 libdir=$libdir/$withval
1693 root_libdir=$root_libdir/$withval
1694fi
a2df5894
DW
1695)
1696dnl
55e00a25 1697dnl
d3de1a71
TT
1698dnl See if -static works. This could fail if the linker does not
1699dnl support -static, or if required external libraries are not available
1700dnl in static form.
50e1e10f 1701dnl
d3de1a71 1702AC_MSG_CHECKING([whether we can link with -static])
ae851482 1703AC_CACHE_VAL(ac_cv_e2fsprogs_use_static,
fd1677e8 1704[SAVE_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS_STATIC -static"
54445dc2 1705AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[fflush(stdout);]])],[ac_cv_e2fsprogs_use_static=yes],[ac_cv_e2fsprogs_use_static=no])
ae851482 1706LDFLAGS=$SAVE_LDFLAGS])
defde784
TT
1707dnl
1708dnl Regardless of how the test turns out, Solaris doesn't handle -static
1709dnl This is caused by the socket library requiring the nsl library, which
1710dnl requires the -dl library, which only works for dynamically linked
1711dnl programs. It basically means you can't have statically linked programs
1712dnl which use the network under Solaris.
1713dnl
1714case "$host_os" in
1715solaris2.*)
1716 ac_cv_e2fsprogs_use_static=no
1717;;
1718esac
ae851482 1719AC_MSG_RESULT($ac_cv_e2fsprogs_use_static)
ae851482 1720if test $ac_cv_e2fsprogs_use_static = yes; then
fd1677e8 1721 LDFLAGS_STATIC="$LDFLAGS_STATIC -static"
ae851482 1722fi
fd1677e8 1723AC_SUBST(LDFLAGS_STATIC)
50e1e10f 1724dnl
07a0db15
TT
1725dnl Work around mysterious Darwin / GNU libintl problem
1726dnl (__asm__ redirection doesn't work for some mysterious reason. Looks like
1727dnl Apple hacked gcc somehow?)
1728dnl
1729case "$host_os" in
1730darwin*)
02d04db4 1731 AC_MSG_RESULT([Using Apple Darwin / GNU libintl workaround])
d1154eb4
TT
1732 AC_DEFINE(_INTL_REDIRECT_MACROS, 1,
1733 [Define to 1 if Apple Darwin libintl workaround is needed])
07a0db15
TT
1734 ;;
1735esac
1736dnl
50e1e10f
TT
1737dnl Only try to run the test suite if we're not cross compiling.
1738dnl
1739if test "$cross_compiling" = yes ; then
1740 DO_TEST_SUITE=
1741else
1742 DO_TEST_SUITE=check
1743fi
1744AC_SUBST(DO_TEST_SUITE)
1745dnl
c6f35b8a 1746dnl Only include the intl include files if we're building with them
d1154eb4
TT
1747dnl
1748INCLUDES='-I. -I$(top_builddir)/lib -I$(top_srcdir)/lib'
1749if test -n "$CPPFLAGS" ; then
1750 INCLUDES="$INCLUDES $CPPFLAGS"
1751fi
c6f35b8a 1752if test "$USE_INCLUDED_LIBINTL" = "yes" ; then
d1154eb4 1753 INCLUDES=$INCLUDES' -I$(top_builddir)/intl -I$(top_srcdir)/intl'
c6f35b8a 1754fi
6c59a665
TT
1755if test -n "$WITH_DIET_LIBC" ; then
1756 INCLUDES="$INCLUDES -D_REENTRANT"
1757fi
b3d180e2
EB
1758case "$host_os" in
1759mingw*)
1760 INCLUDES=$INCLUDES' -I$(top_srcdir)/include/mingw'
1761 ;;
1762esac
d1154eb4 1763AC_SUBST(INCLUDES)
c6f35b8a 1764dnl
dd947da2
TT
1765dnl Build CFLAGS
1766dnl
1767if test $cross_compiling = no; then
2873927d 1768 BUILD_CFLAGS="$CFLAGS $CPPFLAGS $INCLUDES -DHAVE_CONFIG_H"
dd947da2 1769 BUILD_LDFLAGS="$LDFLAGS"
dd947da2
TT
1770fi
1771AC_SUBST(BUILD_CFLAGS)
1772AC_SUBST(BUILD_LDFLAGS)
1773dnl
fd1677e8
TT
1774dnl Define CFLAGS and LDFLAGS for shared libraries
1775dnl
1776CFLAGS_SHLIB=${CFLAGS_SHLIB:-$CFLAGS}
1777CFLAGS_STLIB=${CFLAGS_STLIB:-$CFLAGS}
1778LDFLAGS_SHLIB=${LDFLAGS_SHLIB:-$LDFLAGS}
1779AC_SUBST(CFLAGS_SHLIB)
1780AC_SUBST(CFLAGS_STLIB)
1781AC_SUBST(LDFLAGS_SHLIB)
5ce368f0
DW
1782
1783dnl
1784dnl Where do udev rules go?
1785dnl
1786AC_ARG_WITH([udev_rules_dir],
1787 [AS_HELP_STRING([--with-udev-rules-dir@<:@=DIR@:>@],
1788 [Install udev rules into DIR.])],
1789 [],
1790 [with_udev_rules_dir=yes])
1791AS_IF([test "x${with_udev_rules_dir}" != "xno"],
1792 [
1793 AS_IF([test "x${with_udev_rules_dir}" = "xyes"],
1794 [
1795 PKG_CHECK_MODULES([udev], [udev],
1796 [
1797 with_udev_rules_dir="$($PKG_CONFIG --variable=udevdir udev)/rules.d"
1798 ], [
1799 with_udev_rules_dir=""
1800 ])
1801 ])
1802 AC_MSG_CHECKING([for udev rules dir])
1803 pkg_udev_rules_dir="${with_udev_rules_dir}"
1804 AS_IF([test -n "${pkg_udev_rules_dir}"],
1805 [
1806 AC_MSG_RESULT(${pkg_udev_rules_dir})
1807 have_udev="yes"
1808 ],
1809 [
1810 AC_MSG_RESULT(no)
1811 have_udev="no"
1812 ])
1813 ],
1814 [
1815 have_udev="disabled"
1816 ])
1817AC_SUBST(have_udev)
1818AC_SUBST(pkg_udev_rules_dir)
1819
a2df5894
DW
1820dnl
1821dnl Where do cron jobs go?
1822dnl
1823AC_ARG_WITH([crond_dir],
1824 [AS_HELP_STRING([--with-crond-dir@<:@=DIR@:>@],
1825 [Install system crontabs into DIR.])],
1826 [],
1827 [with_crond_dir=yes])
1828AS_IF([test "x${with_crond_dir}" != "xno"],
1829 [
1830 AS_IF([test "x${with_crond_dir}" = "xyes"],
1831 [
1832 AS_IF([test -d "/etc/cron.d"],
188bf39a
TT
1833 [with_crond_dir="/etc/cron.d"],
1834 [have_crond="no"; with_crond_dir=""])
a2df5894
DW
1835 ])
1836 AC_MSG_CHECKING([for system crontab dir])
1837 crond_dir="${with_crond_dir}"
1838 AS_IF([test -n "${crond_dir}"],
1839 [
1840 AC_MSG_RESULT(${crond_dir})
1841 have_crond="yes"
1842 ],
1843 [
1844 AC_MSG_RESULT(no)
1845 have_crond="no"
1846 ])
1847 ],
1848 [
1849 have_crond="disabled"
1850 ])
1851AC_SUBST(have_crond)
1852AC_SUBST(crond_dir)
1853
1854dnl
1855dnl Where do systemd services go?
1856dnl
1857AC_ARG_WITH([systemd_unit_dir],
1858 [AS_HELP_STRING([--with-systemd-unit-dir@<:@=DIR@:>@],
1859 [Install systemd system units into DIR.])],
1860 [],
1861 [with_systemd_unit_dir=yes])
1862AS_IF([test "x${with_systemd_unit_dir}" != "xno"],
1863 [
1864 AS_IF([test "x${with_systemd_unit_dir}" = "xyes"],
1865 [
1866 PKG_CHECK_MODULES([systemd], [systemd],
1867 [
1868 with_systemd_unit_dir="$($PKG_CONFIG --variable=systemdsystemunitdir systemd)"
1869 ], [
1870 with_systemd_unit_dir=""
1871 ])
1872 m4_pattern_allow([^PKG_(MAJOR|MINOR|BUILD|REVISION)$])
1873 ])
1874 AC_MSG_CHECKING([for systemd system unit dir])
1875 systemd_system_unit_dir="${with_systemd_unit_dir}"
1876 AS_IF([test -n "${systemd_system_unit_dir}"],
1877 [
1878 AC_MSG_RESULT(${systemd_system_unit_dir})
1879 have_systemd="yes"
1880 ],
1881 [
1882 AC_MSG_RESULT(no)
1883 have_systemd="no"
1884 ])
1885 ],
1886 [
1887 have_systemd="disabled"
1888 ])
1889AC_SUBST(have_systemd)
1890AC_SUBST(systemd_system_unit_dir)
d1d44c14
PAA
1891dnl Adjust the compiled files if we are on windows vs everywhere else
1892dnl
1893OS_IO_FILE=""
1894[case "$host_os" in
52fc14ff 1895 mingw*)
d1d44c14
PAA
1896 OS_IO_FILE=windows_io
1897 ;;
1898 *)
1899 OS_IO_FILE=unix_io
1900 ;;
1901esac]
1902AC_SUBST(OS_IO_FILE)
a22e7f16
KR
1903
1904AC_SYS_LARGEFILE
1905
fd1677e8 1906dnl
50e1e10f
TT
1907dnl Make our output files, being sure that we create the some miscellaneous
1908dnl directories
1909dnl
1910test -d lib || mkdir lib
1911test -d include || mkdir include
1912test -d include/linux || mkdir include/linux
defde784 1913test -d include/asm || mkdir include/asm
44dfb378
TT
1914if test -z "$UUID_CMT" ; then
1915 uuid_out_list="lib/uuid/Makefile lib/uuid/uuid.pc \
1916 lib/uuid/uuid_types.h"
1917fi
1918if test -z "$BLKID_CMT" ; then
1919 blkid_out_list="lib/blkid/Makefile lib/blkid/blkid.pc \
1920 lib/blkid/blkid_types.h"
1921fi
e5f0f3ee 1922for i in MCONFIG Makefile \
183c73b0 1923 util/Makefile util/subst.conf util/gen-tarball util/install-symlink \
4ea7ea00
TT
1924 lib/et/Makefile lib/ss/Makefile lib/e2p/Makefile \
1925 lib/ext2fs/Makefile lib/ext2fs/ext2_types.h \
f34af41b 1926 $uuid_out_list $blkid_out_list lib/support/Makefile \
44dfb378 1927 lib/ss/ss.pc lib/et/com_err.pc lib/e2p/e2p.pc lib/ext2fs/ext2fs.pc \
921f4ad5 1928 misc/Makefile ext2ed/Makefile e2fsck/Makefile \
94ba8c75 1929 debugfs/Makefile tests/Makefile tests/progs/Makefile \
2869485b
TT
1930 tests/fuzz/Makefile resize/Makefile doc/Makefile \
1931 po/Makefile.in scrub/Makefile; do
94ba8c75
TT
1932 if test -d `dirname ${srcdir}/$i` ; then
1933 outlist="$outlist $i"
1934 fi
1935done
54445dc2
TT
1936AC_CONFIG_FILES([$outlist])
1937AC_OUTPUT
ee683a13 1938if test -f util/gen-tarball; then chmod +x util/gen-tarball; fi