]> git.ipfire.org Git - thirdparty/e2fsprogs.git/blame - configure.ac
debugfs: print the extended attribute's e_hash field
[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>])
6928adc9 1110dnl
50e1e10f
TT
1111dnl Word sizes...
1112dnl
50e1e10f
TT
1113AC_CHECK_SIZEOF(short)
1114AC_CHECK_SIZEOF(int)
1115AC_CHECK_SIZEOF(long)
fc6d9d51 1116AC_CHECK_SIZEOF(long long)
274d46e1 1117AC_CHECK_SIZEOF(off_t)
2dd680f3 1118AC_CHECK_SIZEOF(time_t)
50e1e10f
TT
1119SIZEOF_SHORT=$ac_cv_sizeof_short
1120SIZEOF_INT=$ac_cv_sizeof_int
1121SIZEOF_LONG=$ac_cv_sizeof_long
fc6d9d51 1122SIZEOF_LONG_LONG=$ac_cv_sizeof_long_long
274d46e1 1123SIZEOF_OFF_T=$ac_cv_sizeof_off_t
2dd680f3 1124SIZEOF_TIME_T=$ac_cv_sizeof_time_t
50e1e10f
TT
1125AC_SUBST(SIZEOF_SHORT)
1126AC_SUBST(SIZEOF_INT)
1127AC_SUBST(SIZEOF_LONG)
fc6d9d51 1128AC_SUBST(SIZEOF_LONG_LONG)
274d46e1 1129AC_SUBST(SIZEOF_OFF_T)
2dd680f3 1130AC_SUBST(SIZEOF_TIME_T)
877eb6d9 1131AC_C_BIGENDIAN
91f04685
CQ
1132if test $cross_compiling = no; then
1133 BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh
1134else
1135 CROSS_COMPILE="1" BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh
1136fi
4ea7ea00
TT
1137ASM_TYPES_HEADER=./asm_types.h
1138AC_SUBST_FILE(ASM_TYPES_HEADER)
50e1e10f 1139dnl
488c75a6
TT
1140dnl Save the configuration #defines needed for the public ext2fs.h
1141dnl header file
1142dnl
1143echo "/* These defines are needed for the public ext2fs.h header file */" \
1144 > public_config.h
1145if grep HAVE_SYS_TYPES_H confdefs.h > tmp_config.$$; then
1146 uniq tmp_config.$$ >> public_config.h
1147else
1148 echo "#undef HAVE_SYS_TYPES_H" >> public_config.h
1149fi
1150if grep WORDS_BIGENDIAN confdefs.h > tmp_config.$$; then
1151 uniq tmp_config.$$ >> public_config.h
1152else
1153 echo "#undef WORDS_BIGENDIAN" >> public_config.h
1154fi
1155rm -f tmp_config.$$
1156PUBLIC_CONFIG_HEADER=./public_config.h
1157AC_SUBST_FILE(PUBLIC_CONFIG_HEADER)
1158dnl
0c193f82
TT
1159dnl See if we have inttypes.h and if intptr_t is defined
1160dnl
1161AC_CHECK_HEADERS([inttypes.h])
d2ee56d8 1162AC_CHECK_TYPES(intptr_t)
0c193f82 1163dnl
50e1e10f
TT
1164dnl See if struct stat has a st_flags field, in which case we can get file
1165dnl flags somewhat portably. Also check for the analogous setter, chflags().
1166dnl
1167AC_MSG_CHECKING(whether struct stat has a st_flags field)
1168AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags,
54445dc2 1169 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[struct stat stat; stat.st_flags = 0;]])],[e2fsprogs_cv_struct_st_flags=yes],[e2fsprogs_cv_struct_st_flags=no]))
50e1e10f
TT
1170AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags)
1171if test "$e2fsprogs_cv_struct_st_flags" = yes; then
c03bc4e8
TT
1172 AC_MSG_CHECKING(whether st_flags field is useful)
1173 AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags_immut,
54445dc2 1174 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[struct stat stat; stat.st_flags |= UF_IMMUTABLE;]])],[e2fsprogs_cv_struct_st_flags_immut=yes],[e2fsprogs_cv_struct_st_flags_immut=no]))
c03bc4e8
TT
1175 AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags_immut)
1176 if test "$e2fsprogs_cv_struct_st_flags_immut" = yes; then
d1154eb4
TT
1177 AC_DEFINE(HAVE_STAT_FLAGS, 1,
1178 [Define to 1 if struct stat has st_flags])
c03bc4e8 1179 fi
50e1e10f 1180fi
84ea6e70
TT
1181dnl
1182dnl Check for the presence of SA_LEN
1183dnl
6c65d251 1184AC_CHECK_MEMBER(struct sockaddr.sa_len,
d1154eb4
TT
1185 AC_DEFINE_UNQUOTED(HAVE_SA_LEN,1,
1186 [Define to 1 if if struct sockaddr contains sa_len]),,
6c65d251
TT
1187 [#include <sys/types.h>
1188 #include <sys/socket.h>])
84ea6e70 1189dnl
7154d974
TT
1190dnl If we are using the system-provided blkid library, check for
1191dnl the functions added after migrating that library to util-linux
9ed8e5fe
ES
1192dnl
1193if test -n "$BLKID_CMT"; then
7154d974 1194 AC_CHECK_LIB(blkid, blkid_probe_get_topology,
f72ea2de
DL
1195 AC_DEFINE(HAVE_BLKID_PROBE_GET_TOPOLOGY, 1,
1196 [Define to 1 if blkid has blkid_probe_get_topology]))
f4979dd5
JK
1197 AC_CHECK_LIB(blkid, blkid_topology_get_dax,
1198 AC_DEFINE(HAVE_BLKID_TOPOLOGY_GET_DAX, 1,
1199 [Define to 1 if blkid has blkid_topology_get_dax]))
7154d974 1200 AC_CHECK_LIB(blkid, blkid_probe_enable_partitions,
f72ea2de
DL
1201 AC_DEFINE(HAVE_BLKID_PROBE_ENABLE_PARTITIONS, 1,
1202 [Define to 1 if blkid has blkid_probe_enable_partitions]))
9ed8e5fe
ES
1203fi
1204dnl
32179ce2
TT
1205if test -n "$DLOPEN_LIB" ; then
1206 ac_cv_func_dlopen=yes
1207fi
677fc916
MF
1208AC_CHECK_FUNCS(m4_flatten([
1209 __secure_getenv
74f2c4aa 1210 add_key
677fc916 1211 backtrace
677fc916 1212 chflags
32179ce2 1213 dlopen
9a393891 1214 fadvise64
677fc916
MF
1215 fallocate
1216 fallocate64
1217 fchown
f47f3195 1218 fcntl
677fc916
MF
1219 fdatasync
1220 fstat64
f47f3195 1221 fsync
677fc916 1222 ftruncate64
2873927d 1223 futimes
6c59a665 1224 getcwd
677fc916 1225 getdtablesize
39ace91b 1226 getentropy
32b8802a 1227 gethostname
677fc916 1228 getmntinfo
25ff7725 1229 getpwuid_r
39ace91b 1230 getrandom
677fc916
MF
1231 getrlimit
1232 getrusage
1233 jrand48
74f2c4aa 1234 keyctl
c84da2ee 1235 llistxattr
677fc916
MF
1236 llseek
1237 lseek64
1238 mallinfo
97079a79 1239 mallinfo2
677fc916
MF
1240 mbstowcs
1241 memalign
6c59a665 1242 mempcpy
677fc916
MF
1243 mmap
1244 msync
1245 nanosleep
1246 open64
1247 pathconf
1248 posix_fadvise
9a393891 1249 posix_fadvise64
677fc916
MF
1250 posix_memalign
1251 prctl
baa35446
DW
1252 pread
1253 pwrite
f00948ad
TT
1254 pread64
1255 pwrite64
4e5f24ae 1256 qsort_r
1ad3174a 1257 secure_getenv
b24efa21 1258 setmntent
677fc916
MF
1259 setresgid
1260 setresuid
c42de75b 1261 snprintf
677fc916 1262 srandom
6c59a665 1263 stpcpy
677fc916
MF
1264 strcasecmp
1265 strdup
1266 strnlen
1267 strptime
1268 strtoull
1269 sync_file_range
1270 sysconf
1271 usleep
1272 utime
441eb337 1273 utimes
677fc916
MF
1274 valloc
1275]))
fc6d9d51 1276dnl
fc6d9d51
TT
1277dnl Check to see if -lsocket is required (solaris) to make something
1278dnl that uses socket() to compile; this is needed for the UUID library
1279dnl
1280SOCKET_LIB=''
1281AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket])
1282AC_SUBST(SOCKET_LIB)
1283dnl
b291c11f
DW
1284dnl See if libmagic exists
1285dnl
1286AC_CHECK_LIB(magic, magic_file, [MAGIC_LIB=-lmagic
1287AC_CHECK_HEADERS([magic.h])])
32179ce2 1288if test "$ac_cv_func_dlopen" = yes ; then
d2e3c0dc
TT
1289 MAGIC_LIB=$DLOPEN_LIB
1290fi
b291c11f
DW
1291AC_SUBST(MAGIC_LIB)
1292dnl
62bc243f
GZ
1293dnl Check to see if librt is required for clock_gettime() (glibc < 2.17)
1294dnl
1295AC_CHECK_LIB(rt, clock_gettime, [CLOCK_GETTIME_LIB=-lrt])
1296AC_SUBST(CLOCK_GETTIME_LIB)
1297dnl
81cbf1ef
DW
1298dnl Check to see if the FUSE library is -lfuse or -losxfuse
1299dnl
1300FUSE_CMT=
1301FUSE_LIB=
1302dnl osxfuse.dylib supersedes fuselib.dylib
1303AC_ARG_ENABLE([fuse2fs],
8c9e2921 1304AS_HELP_STRING([--disable-fuse2fs],[do not build fuse2fs]),
81cbf1ef
DW
1305if test "$enableval" = "no"
1306then
1307 FUSE_CMT="#"
1308 AC_MSG_RESULT([Disabling fuse2fs])
1309else
1310 AC_CHECK_HEADERS([pthread.h fuse.h], [],
1311[AC_MSG_FAILURE([Cannot find fuse2fs headers.])],
1312[#define _FILE_OFFSET_BITS 64
1313#define FUSE_USE_VERSION 29])
1314
1315 AC_PREPROC_IFELSE(
1316[AC_LANG_PROGRAM([[#define FUSE_USE_VERSION 29
1317#ifdef __linux__
1318#include <linux/fs.h>
1319#include <linux/falloc.h>
1320#include <linux/xattr.h>
1321#endif
1322]], [])], [], [AC_MSG_FAILURE([Cannot find fuse2fs Linux headers.])])
1323
1324 AC_CHECK_LIB(osxfuse, fuse_main, [FUSE_LIB=-losxfuse],
1325 [AC_CHECK_LIB(fuse, fuse_main, [FUSE_LIB=-lfuse],
1326 [AC_MSG_FAILURE([Cannot find fuse library.])])])
1327 AC_MSG_RESULT([Enabling fuse2fs])
1328fi
1329,
1330AC_CHECK_HEADERS([pthread.h fuse.h], [], [FUSE_CMT="#"],
1331[#define _FILE_OFFSET_BITS 64
1332#define FUSE_USE_VERSION 29
1333#ifdef __linux__
1334# include <linux/fs.h>
1335# include <linux/falloc.h>
1336# include <linux/xattr.h>
1337#endif])
1338if test -z "$FUSE_CMT"
1339then
1340 AC_CHECK_LIB(osxfuse, fuse_main, [FUSE_LIB=-losxfuse],
1341[AC_CHECK_LIB(fuse, fuse_main, [FUSE_LIB=-lfuse], [FUSE_CMT="#"])])
1342fi
1343if test -z "$FUSE_CMT"
1344then
1345 AC_MSG_RESULT([Enabling fuse2fs by default.])
1346fi
1347)
1348AC_SUBST(FUSE_LIB)
1349AC_SUBST(FUSE_CMT)
1350dnl
50e1e10f
TT
1351dnl See if optreset exists
1352dnl
1353AC_MSG_CHECKING(for optreset)
1354AC_CACHE_VAL(ac_cv_have_optreset,
1355[AC_EGREP_HEADER(optreset, unistd.h,
1356 ac_cv_have_optreset=yes, ac_cv_have_optreset=no)])dnl
1357AC_MSG_RESULT($ac_cv_have_optreset)
1358if test $ac_cv_have_optreset = yes; then
d1154eb4 1359 AC_DEFINE(HAVE_OPTRESET, 1, [Define to 1 if optreset for getopt is present])
50e1e10f
TT
1360fi
1361dnl
d7f45af8
TT
1362dnl Test for sem_init, and which library it might require:
1363dnl
d1154eb4 1364AH_TEMPLATE([HAVE_SEM_INIT], [Define to 1 if sem_init() exists])
d7f45af8 1365SEM_INIT_LIB=''
cfb8e0bd
TT
1366echo GL_THREADS_API: ${gl_threads_api}
1367if test "${gl_threads_api}" != none
1368then
1369 AC_CHECK_FUNC(sem_init, ,
1370 AC_CHECK_LIB(pthread, sem_init,
d1154eb4 1371 AC_DEFINE(HAVE_SEM_INIT, 1)
d7f45af8 1372 SEM_INIT_LIB=-lpthread,
cfb8e0bd 1373 AC_CHECK_LIB(rt, sem_init,
d1154eb4 1374 AC_DEFINE(HAVE_SEM_INIT, 1)
d7f45af8 1375 SEM_INIT_LIB=-lrt,
cfb8e0bd 1376 AC_CHECK_LIB(posix4, sem_init,
d1154eb4 1377 AC_DEFINE(HAVE_SEM_INIT, 1)
d7f45af8 1378 SEM_INIT_LIB=-lposix4))))dnl
cfb8e0bd 1379fi
d7f45af8
TT
1380AC_SUBST(SEM_INIT_LIB)
1381dnl
4e5f24ae
TT
1382dnl qsort_r detection
1383dnl
1384AS_IF([test "$ac_cv_func_qsort_r" != no], [
1385 AC_CACHE_CHECK(whether qsort_r is GNU version, e2_cv_gnu_qsort_r,
1386 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1387@%:@include <stdlib.h>
1388void (qsort_r)(void *base, size_t nmemb, size_t size,
1389 int (*compar)(const void *, const void *, void *),
1390 void *arg);
1391]], [[ ]])],[e2_cv_gnu_qsort_r=yes],[e2_cv_gnu_qsort_r=no])
1392 ])
1393 AC_CACHE_CHECK(whether qsort_r is BSD version, e2_cv_bsd_qsort_r,
1394 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1395@%:@include <stdlib.h>
1396void (qsort_r)(void *base, size_t nmemb, size_t size,
1397 void *arg, int (*compar)(void *, const void *, const void *));
1398]], [[ ]])],[e2_cv_bsd_qsort_r=yes],[e2_cv_bsd_qsort_r=no])
1399 ])
1400 AS_CASE("$e2_cv_gnu_qsort_r:$e2_cv_bsd_qsort_r",
1401 [yes:no], [
1402 AC_DEFINE(HAVE_GNU_QSORT_R, 1, [ Define to 1 if you have the GNU-style 'qsort_r' function.])
1403 ],
1404 [no:yes], [
1405 AC_DEFINE(HAVE_BSD_QSORT_R, 1, [ Define to 1 if you have the BSD-style 'qsort_r' function.])
1406 ])
1407])
1408dnl
e54635de
TT
1409dnl Check for unified diff
1410dnl
1411AC_MSG_CHECKING(for unified diff option)
27f991b0 1412if diff -u $0 $0 > /dev/null 2>&1 ; then
e54635de
TT
1413 UNI_DIFF_OPTS=-u
1414else
1415 UNI_DIFF_OPTS=-c
1416fi
1417AC_MSG_RESULT($UNI_DIFF_OPTS)
1418AC_SUBST(UNI_DIFF_OPTS)
1419dnl
8f3f29d3
TT
1420dnl We use the EXT2 ioctls only under Linux
1421dnl
1422case "$host_os" in
1423linux*)
d1154eb4 1424 AC_DEFINE(HAVE_EXT2_IOCTLS, 1, [Define to 1 if Ext2 ioctls present])
8f3f29d3
TT
1425 ;;
1426esac
50e1e10f 1427dnl
ea1a3fa2
NC
1428dnl Check the available mount options
1429dnl
1430AX_CHECK_MOUNT_OPT(nosuid)
1431AX_CHECK_MOUNT_OPT(nodev)
4aece328
DW
1432dnl Enable LTO for all packages
1433dnl
1434AC_ARG_ENABLE([lto],
8c9e2921 1435AS_HELP_STRING([--enable-lto],[enable link time optimization]),,
139a3092 1436enable_lto=no)
4aece328
DW
1437if test "$enable_lto" = "yes" || test "$enable_lto" = "probe"; then
1438 AC_MSG_CHECKING([if C compiler supports LTO])
1439 OLD_CFLAGS="$CFLAGS"
1440 OLD_LDFLAGS="$LDFLAGS"
49715704 1441 LTO_FLAGS="-g -flto -ffat-lto-objects"
4aece328
DW
1442 CFLAGS="$CFLAGS $LTO_FLAGS"
1443 LDFLAGS="$LDFLAGS $LTO_FLAGS"
1444 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1445 [AC_MSG_RESULT([yes])]
1446 [lto_cflags=$LTO_FLAGS]
1447 [lto_ldflags=$LTO_FLAGS]
1448 [AC_PATH_PROG(gcc_ar, gcc-ar,,)]
1449 [AC_PATH_PROG(gcc_ranlib, gcc-ranlib,,)],
1450 [AC_MSG_RESULT([no])])
1451 if test -x "$gcc_ar" && test -x "$gcc_ranlib"; then
1452 have_lto=yes
1453 AR="${gcc_ar}"
1454 RANLIB="${gcc_ranlib}"
1455 fi
1456 CFLAGS="${OLD_CFLAGS}"
1457 LDFLAGS="${OLD_LDFLAGS}"
1458 AC_SUBST(have_lto)
1459 AC_SUBST(lto_cflags)
1460 AC_SUBST(lto_ldflags)
1461fi
1462if test "$enable_lto" = "yes" && test "$have_lto" != "yes"; then
1463 AC_MSG_ERROR([LTO not supported by compiler.])
1464fi
1465dnl
1c2a76ae
DW
1466dnl Enable UBSAN for all packages
1467dnl
1468AC_ARG_ENABLE([ubsan],
8c9e2921 1469AS_HELP_STRING([--enable-ubsan],[enable undefined behavior sanitizer]),,
1c2a76ae
DW
1470enable_ubsan=no)
1471if test "$enable_ubsan" = "yes" || test "$enable_ubsan" = "probe"; then
1472 AC_MSG_CHECKING([if C compiler supports UBSAN])
1473 OLD_CFLAGS="$CFLAGS"
1474 OLD_LDFLAGS="$LDFLAGS"
1475 UBSAN_FLAGS="-fsanitize=undefined"
1476 CFLAGS="$CFLAGS $UBSAN_FLAGS"
1477 LDFLAGS="$LDFLAGS $UBSAN_FLAGS"
1478 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1479 [AC_MSG_RESULT([yes])]
1480 [ubsan_cflags=$UBSAN_FLAGS]
1481 [ubsan_ldflags=$UBSAN_FLAGS]
1482 [have_ubsan=yes],
1483 [AC_MSG_RESULT([no])])
1484 CFLAGS="${OLD_CFLAGS}"
1485 LDFLAGS="${OLD_LDFLAGS}"
1486 AC_SUBST(have_ubsan)
1487 AC_SUBST(ubsan_cflags)
1488 AC_SUBST(ubsan_ldflags)
1489fi
1490if test "$enable_ubsan" = "yes" && test "$have_ubsan" != "yes"; then
1491 AC_MSG_ERROR([UBSAN not supported by compiler.])
1492fi
1493dnl
5e666e3d
DW
1494dnl Enable ADDRSAN for all packages
1495dnl
1496AC_ARG_ENABLE([addrsan],
8c9e2921 1497AS_HELP_STRING([--enable-addrsan],[enable address sanitizer]),,
5e666e3d
DW
1498enable_addrsan=no)
1499if test "$enable_addrsan" = "yes" || test "$enable_addrsan" = "probe"; then
1500 AC_MSG_CHECKING([if C compiler supports ADDRSAN])
1501 OLD_CFLAGS="$CFLAGS"
1502 OLD_LDFLAGS="$LDFLAGS"
1503 ADDRSAN_FLAGS="-fsanitize=address"
1504 CFLAGS="$CFLAGS $ADDRSAN_FLAGS"
1505 LDFLAGS="$LDFLAGS $ADDRSAN_FLAGS"
1506 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1507 [AC_MSG_RESULT([yes])]
1508 [addrsan_cflags=$ADDRSAN_FLAGS]
1509 [addrsan_ldflags=$ADDRSAN_FLAGS]
1510 [have_addrsan=yes],
1511 [AC_MSG_RESULT([no])])
1512 CFLAGS="${OLD_CFLAGS}"
1513 LDFLAGS="${OLD_LDFLAGS}"
1514 AC_SUBST(have_addrsan)
1515 AC_SUBST(addrsan_cflags)
1516 AC_SUBST(addrsan_ldflags)
1517fi
1518if test "$enable_addrsan" = "yes" && test "$have_addrsan" != "yes"; then
1519 AC_MSG_ERROR([ADDRSAN not supported by compiler.])
1520fi
1521dnl
bcca786b
DW
1522dnl Enable THREADSAN for all packages
1523dnl
1524AC_ARG_ENABLE([threadsan],
8c9e2921 1525AS_HELP_STRING([--enable-threadsan],[enable thread sanitizer]),,
bcca786b
DW
1526enable_threadsan=no)
1527if test "$enable_threadsan" = "yes" || test "$enable_threadsan" = "probe"; then
1528 AC_MSG_CHECKING([if C compiler supports THREADSAN])
1529 OLD_CFLAGS="$CFLAGS"
1530 OLD_LDFLAGS="$LDFLAGS"
1531 THREADSAN_FLAGS="-fsanitize=thread"
1532 CFLAGS="$CFLAGS $THREADSAN_FLAGS"
1533 LDFLAGS="$LDFLAGS $THREADSAN_FLAGS"
1534 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1535 [AC_MSG_RESULT([yes])]
1536 [threadsan_cflags=$THREADSAN_FLAGS]
1537 [threadsan_ldflags=$THREADSAN_FLAGS]
1538 [have_threadsan=yes],
1539 [AC_MSG_RESULT([no])])
1540 CFLAGS="${OLD_CFLAGS}"
1541 LDFLAGS="${OLD_LDFLAGS}"
1542 AC_SUBST(have_threadsan)
1543 AC_SUBST(threadsan_cflags)
1544 AC_SUBST(threadsan_ldflags)
1545fi
1546if test "$enable_threadsan" = "yes" && test "$have_threadsan" != "yes"; then
1547 AC_MSG_ERROR([THREADSAN not supported by compiler.])
1548fi
1549if test "$have_threadsan" = "yes" && test "$have_addrsan" = "yes"; then
1550 AC_MSG_WARN([ADDRSAN and THREADSAN are not known to work together.])
1551fi
1552dnl
2869485b
TT
1553dnl Enable the fuzzer sanitizer for all packages
1554dnl
1555FUZZING_CMT="#"
1556AC_ARG_ENABLE([fuzzing],
1557AS_HELP_STRING([--enable-fuzzing],[enable fuzzing sanitizer]),,
1558enable_fuzzing=no)
1559if test "$enable_fuzzing" = "yes" || test "$enable_fuzzing" = "probe"; then
1560 AC_PROG_CXX
1561 AC_MSG_CHECKING([if C compiler supports fuzzing sanitizer])
1562 AC_LANG_PUSH([C++])
1563 OLD_CXXFLAGS="$CXXFLAGS"
1564 OLD_LDFLAGS="$LDFLAGS"
1565 FUZZER_FLAGS="-fsanitize=fuzzer"
1566 CXXFLAGS="$CXXFLAGS $FUZZER_FLAGS"
1567 LDFLAGS="$LDFLAGS $FUZZER_FLAGS"
1568 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1569 #include <stddef.h>
1570 #include <stdint.h>
1571 ]],
1572 [ return 0; ])],
1573 [AC_MSG_RESULT([yes])]
1574 [fuzzer_cflags=$FUZZER_FLAGS]
1575 [fuzzer_ldflags=$FUZZER_FLAGS]
1576 [FUZZING_CMT=]
1577 [have_fuzzer=yes],
1578 [AC_MSG_RESULT([no])]
1579 [AC_MSG_ERROR([fuzzing requested but not available])])
1580 CXXFLAGS="${OLD_CXXFLAGS}"
1581 LDFLAGS="${OLD_LDFLAGS}"
1582 AC_LANG_POP([C++])
1583 AC_SUBST(have_fuzzer)
1584 AC_SUBST(fuzzer_cflags)
1585 AC_SUBST(fuzzer_ldflags)
1586fi
1587if test "$enable_fuzzer" = "yes" && test "$have_fuzzer" != "yes"; then
1588 AC_MSG_ERROR([Fuzzing not supported by compiler.])
1589fi
1590AC_SUBST(FUZZING_CMT)
1591dnl
fff45483 1592dnl OS-specific uncomment control
e6f2bda3
TT
1593dnl
1594LINUX_CMT="#"
fff45483
TT
1595CYGWIN_CMT="#"
1596UNIX_CMT=
e6f2bda3
TT
1597case "$host_os" in
1598linux*)
1599 LINUX_CMT=
1600 ;;
fff45483
TT
1601cygwin)
1602 CYGWIN_CMT=
1603 UNIX_CMT="#"
fff45483 1604 ;;
e6f2bda3
TT
1605esac
1606AC_SUBST(LINUX_CMT)
fff45483
TT
1607AC_SUBST(CYGWIN_CMT)
1608AC_SUBST(UNIX_CMT)
e6f2bda3 1609dnl
5ce368f0
DW
1610dnl e2scrub only builds on linux
1611dnl
1612E2SCRUB_CMT="$LINUX_CMT"
1613AC_SUBST(E2SCRUB_CMT)
1614dnl
6c133523 1615dnl Linux and Hurd places root files in the / by default
50e1e10f 1616dnl
50e1e10f 1617case "$host_os" in
93636bde 1618linux* | gnu* | k*bsd*-gnu)
a4b2d3ce
TT
1619 if test "$prefix" = NONE -a "$root_prefix" = NONE ; then
1620 root_prefix="";
02d04db4 1621 AC_MSG_RESULT([On $host_os systems, root_prefix defaults to ''])
fc6d9d51
TT
1622 fi
1623 ;;
1624esac
fc6d9d51 1625dnl
a4b2d3ce 1626dnl On Linux/hurd, force the prefix to be /usr
fc6d9d51
TT
1627dnl
1628case "$host_os" in
93636bde 1629linux* | gnu* | k*bsd*-gnu)
fc6d9d51 1630 if test "$prefix" = NONE ; then
a4b2d3ce 1631 prefix="/usr";
02d04db4 1632 AC_MSG_RESULT([On $host_os systems, prefix defaults to /usr])
bff61a7a 1633 if test "$mandir" = '${prefix}/man' ; then
02d04db4 1634 AC_MSG_RESULT([...and mandir defaults to /usr/share/man])
bff61a7a
TT
1635 mandir=/usr/share/man
1636 fi
50e1e10f
TT
1637 fi
1638;;
1639esac
a4b2d3ce 1640if test "$root_prefix" = NONE ; then
ffe1991f 1641 if test "$prefix" = NONE ; then
a4b2d3ce
TT
1642 root_prefix="$ac_default_prefix"
1643 else
1644 root_prefix="$prefix"
1645 fi
b5ffeade
TT
1646 root_bindir=$bindir
1647 root_sbindir=$sbindir
1648 root_libdir=$libdir
1649 root_sysconfdir=$sysconfdir
1650else
1651 root_bindir='${root_prefix}/bin'
1652 root_sbindir='${root_prefix}/sbin'
1653 root_libdir='${root_prefix}/lib'
1654 root_sysconfdir='${root_prefix}/etc'
a4b2d3ce 1655fi
c4ef11c5
TT
1656if test "$bindir" != '${exec_prefix}/bin'; then
1657 root_bindir=$bindir
02d04db4 1658 AC_MSG_RESULT([Setting root_bindir to $root_bindir])
c4ef11c5
TT
1659fi
1660if test "$sbindir" != '${exec_prefix}/sbin'; then
1661 root_sbindir=$sbindir
02d04db4 1662 AC_MSG_RESULT([Setting root_sbindir to $root_sbindir])
c4ef11c5
TT
1663fi
1664if test "$libdir" != '${exec_prefix}/lib'; then
1665 root_libdir=$libdir
02d04db4 1666 AC_MSG_RESULT([Setting root_libdir to $root_libdir])
c4ef11c5
TT
1667fi
1668if test "$sysconfdir" != '${prefix}/etc'; then
1669 root_sysconfdir=$sysconfdir
02d04db4 1670 AC_MSG_RESULT([Setting root_sysconfdir to $root_sysconfdir])
c4ef11c5 1671fi
a4b2d3ce 1672AC_SUBST(root_prefix)
b5ffeade
TT
1673AC_SUBST(root_bindir)
1674AC_SUBST(root_sbindir)
1675AC_SUBST(root_libdir)
1676AC_SUBST(root_sysconfdir)
50e1e10f 1677dnl
55e00a25
TT
1678dnl Allow specification of the multiarch arch
1679dnl
1680AC_ARG_WITH([multiarch],
8c9e2921 1681AS_HELP_STRING([--with-multiarch=ARCH],[specify the multiarch triplet]),
d7fa4103
TT
1682if test "$withval" = "lib64"; then
1683 libdir=/usr/lib64
1684 root_libdir=/lib64
1685else
1686 libdir=$libdir/$withval
1687 root_libdir=$root_libdir/$withval
1688fi
a2df5894
DW
1689)
1690dnl
55e00a25 1691dnl
d3de1a71
TT
1692dnl See if -static works. This could fail if the linker does not
1693dnl support -static, or if required external libraries are not available
1694dnl in static form.
50e1e10f 1695dnl
d3de1a71 1696AC_MSG_CHECKING([whether we can link with -static])
ae851482 1697AC_CACHE_VAL(ac_cv_e2fsprogs_use_static,
fd1677e8 1698[SAVE_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS_STATIC -static"
54445dc2 1699AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[fflush(stdout);]])],[ac_cv_e2fsprogs_use_static=yes],[ac_cv_e2fsprogs_use_static=no])
ae851482 1700LDFLAGS=$SAVE_LDFLAGS])
defde784
TT
1701dnl
1702dnl Regardless of how the test turns out, Solaris doesn't handle -static
1703dnl This is caused by the socket library requiring the nsl library, which
1704dnl requires the -dl library, which only works for dynamically linked
1705dnl programs. It basically means you can't have statically linked programs
1706dnl which use the network under Solaris.
1707dnl
1708case "$host_os" in
1709solaris2.*)
1710 ac_cv_e2fsprogs_use_static=no
1711;;
1712esac
ae851482 1713AC_MSG_RESULT($ac_cv_e2fsprogs_use_static)
ae851482 1714if test $ac_cv_e2fsprogs_use_static = yes; then
fd1677e8 1715 LDFLAGS_STATIC="$LDFLAGS_STATIC -static"
ae851482 1716fi
fd1677e8 1717AC_SUBST(LDFLAGS_STATIC)
50e1e10f 1718dnl
07a0db15
TT
1719dnl Work around mysterious Darwin / GNU libintl problem
1720dnl (__asm__ redirection doesn't work for some mysterious reason. Looks like
1721dnl Apple hacked gcc somehow?)
1722dnl
1723case "$host_os" in
1724darwin*)
02d04db4 1725 AC_MSG_RESULT([Using Apple Darwin / GNU libintl workaround])
d1154eb4
TT
1726 AC_DEFINE(_INTL_REDIRECT_MACROS, 1,
1727 [Define to 1 if Apple Darwin libintl workaround is needed])
07a0db15
TT
1728 ;;
1729esac
1730dnl
50e1e10f
TT
1731dnl Only try to run the test suite if we're not cross compiling.
1732dnl
1733if test "$cross_compiling" = yes ; then
1734 DO_TEST_SUITE=
1735else
1736 DO_TEST_SUITE=check
1737fi
1738AC_SUBST(DO_TEST_SUITE)
1739dnl
c6f35b8a 1740dnl Only include the intl include files if we're building with them
d1154eb4
TT
1741dnl
1742INCLUDES='-I. -I$(top_builddir)/lib -I$(top_srcdir)/lib'
1743if test -n "$CPPFLAGS" ; then
1744 INCLUDES="$INCLUDES $CPPFLAGS"
1745fi
c6f35b8a 1746if test "$USE_INCLUDED_LIBINTL" = "yes" ; then
d1154eb4 1747 INCLUDES=$INCLUDES' -I$(top_builddir)/intl -I$(top_srcdir)/intl'
c6f35b8a 1748fi
6c59a665
TT
1749if test -n "$WITH_DIET_LIBC" ; then
1750 INCLUDES="$INCLUDES -D_REENTRANT"
1751fi
b3d180e2
EB
1752case "$host_os" in
1753mingw*)
1754 INCLUDES=$INCLUDES' -I$(top_srcdir)/include/mingw'
1755 ;;
1756esac
d1154eb4 1757AC_SUBST(INCLUDES)
c6f35b8a 1758dnl
dd947da2
TT
1759dnl Build CFLAGS
1760dnl
1761if test $cross_compiling = no; then
2873927d 1762 BUILD_CFLAGS="$CFLAGS $CPPFLAGS $INCLUDES -DHAVE_CONFIG_H"
dd947da2 1763 BUILD_LDFLAGS="$LDFLAGS"
dd947da2
TT
1764fi
1765AC_SUBST(BUILD_CFLAGS)
1766AC_SUBST(BUILD_LDFLAGS)
1767dnl
fd1677e8
TT
1768dnl Define CFLAGS and LDFLAGS for shared libraries
1769dnl
1770CFLAGS_SHLIB=${CFLAGS_SHLIB:-$CFLAGS}
1771CFLAGS_STLIB=${CFLAGS_STLIB:-$CFLAGS}
1772LDFLAGS_SHLIB=${LDFLAGS_SHLIB:-$LDFLAGS}
1773AC_SUBST(CFLAGS_SHLIB)
1774AC_SUBST(CFLAGS_STLIB)
1775AC_SUBST(LDFLAGS_SHLIB)
5ce368f0
DW
1776
1777dnl
1778dnl Where do udev rules go?
1779dnl
1780AC_ARG_WITH([udev_rules_dir],
1781 [AS_HELP_STRING([--with-udev-rules-dir@<:@=DIR@:>@],
1782 [Install udev rules into DIR.])],
1783 [],
1784 [with_udev_rules_dir=yes])
1785AS_IF([test "x${with_udev_rules_dir}" != "xno"],
1786 [
1787 AS_IF([test "x${with_udev_rules_dir}" = "xyes"],
1788 [
1789 PKG_CHECK_MODULES([udev], [udev],
1790 [
1791 with_udev_rules_dir="$($PKG_CONFIG --variable=udevdir udev)/rules.d"
1792 ], [
1793 with_udev_rules_dir=""
1794 ])
1795 ])
1796 AC_MSG_CHECKING([for udev rules dir])
1797 pkg_udev_rules_dir="${with_udev_rules_dir}"
1798 AS_IF([test -n "${pkg_udev_rules_dir}"],
1799 [
1800 AC_MSG_RESULT(${pkg_udev_rules_dir})
1801 have_udev="yes"
1802 ],
1803 [
1804 AC_MSG_RESULT(no)
1805 have_udev="no"
1806 ])
1807 ],
1808 [
1809 have_udev="disabled"
1810 ])
1811AC_SUBST(have_udev)
1812AC_SUBST(pkg_udev_rules_dir)
1813
a2df5894
DW
1814dnl
1815dnl Where do cron jobs go?
1816dnl
1817AC_ARG_WITH([crond_dir],
1818 [AS_HELP_STRING([--with-crond-dir@<:@=DIR@:>@],
1819 [Install system crontabs into DIR.])],
1820 [],
1821 [with_crond_dir=yes])
1822AS_IF([test "x${with_crond_dir}" != "xno"],
1823 [
1824 AS_IF([test "x${with_crond_dir}" = "xyes"],
1825 [
1826 AS_IF([test -d "/etc/cron.d"],
188bf39a
TT
1827 [with_crond_dir="/etc/cron.d"],
1828 [have_crond="no"; with_crond_dir=""])
a2df5894
DW
1829 ])
1830 AC_MSG_CHECKING([for system crontab dir])
1831 crond_dir="${with_crond_dir}"
1832 AS_IF([test -n "${crond_dir}"],
1833 [
1834 AC_MSG_RESULT(${crond_dir})
1835 have_crond="yes"
1836 ],
1837 [
1838 AC_MSG_RESULT(no)
1839 have_crond="no"
1840 ])
1841 ],
1842 [
1843 have_crond="disabled"
1844 ])
1845AC_SUBST(have_crond)
1846AC_SUBST(crond_dir)
1847
1848dnl
1849dnl Where do systemd services go?
1850dnl
1851AC_ARG_WITH([systemd_unit_dir],
1852 [AS_HELP_STRING([--with-systemd-unit-dir@<:@=DIR@:>@],
1853 [Install systemd system units into DIR.])],
1854 [],
1855 [with_systemd_unit_dir=yes])
1856AS_IF([test "x${with_systemd_unit_dir}" != "xno"],
1857 [
1858 AS_IF([test "x${with_systemd_unit_dir}" = "xyes"],
1859 [
1860 PKG_CHECK_MODULES([systemd], [systemd],
1861 [
1862 with_systemd_unit_dir="$($PKG_CONFIG --variable=systemdsystemunitdir systemd)"
1863 ], [
1864 with_systemd_unit_dir=""
1865 ])
1866 m4_pattern_allow([^PKG_(MAJOR|MINOR|BUILD|REVISION)$])
1867 ])
1868 AC_MSG_CHECKING([for systemd system unit dir])
1869 systemd_system_unit_dir="${with_systemd_unit_dir}"
1870 AS_IF([test -n "${systemd_system_unit_dir}"],
1871 [
1872 AC_MSG_RESULT(${systemd_system_unit_dir})
1873 have_systemd="yes"
1874 ],
1875 [
1876 AC_MSG_RESULT(no)
1877 have_systemd="no"
1878 ])
1879 ],
1880 [
1881 have_systemd="disabled"
1882 ])
1883AC_SUBST(have_systemd)
1884AC_SUBST(systemd_system_unit_dir)
d1d44c14
PAA
1885dnl Adjust the compiled files if we are on windows vs everywhere else
1886dnl
1887OS_IO_FILE=""
1888[case "$host_os" in
52fc14ff 1889 mingw*)
d1d44c14
PAA
1890 OS_IO_FILE=windows_io
1891 ;;
1892 *)
1893 OS_IO_FILE=unix_io
1894 ;;
1895esac]
1896AC_SUBST(OS_IO_FILE)
fd1677e8 1897dnl
50e1e10f
TT
1898dnl Make our output files, being sure that we create the some miscellaneous
1899dnl directories
1900dnl
1901test -d lib || mkdir lib
1902test -d include || mkdir include
1903test -d include/linux || mkdir include/linux
defde784 1904test -d include/asm || mkdir include/asm
44dfb378
TT
1905if test -z "$UUID_CMT" ; then
1906 uuid_out_list="lib/uuid/Makefile lib/uuid/uuid.pc \
1907 lib/uuid/uuid_types.h"
1908fi
1909if test -z "$BLKID_CMT" ; then
1910 blkid_out_list="lib/blkid/Makefile lib/blkid/blkid.pc \
1911 lib/blkid/blkid_types.h"
1912fi
e5f0f3ee 1913for i in MCONFIG Makefile \
183c73b0 1914 util/Makefile util/subst.conf util/gen-tarball util/install-symlink \
4ea7ea00
TT
1915 lib/et/Makefile lib/ss/Makefile lib/e2p/Makefile \
1916 lib/ext2fs/Makefile lib/ext2fs/ext2_types.h \
f34af41b 1917 $uuid_out_list $blkid_out_list lib/support/Makefile \
44dfb378 1918 lib/ss/ss.pc lib/et/com_err.pc lib/e2p/e2p.pc lib/ext2fs/ext2fs.pc \
921f4ad5 1919 misc/Makefile ext2ed/Makefile e2fsck/Makefile \
94ba8c75 1920 debugfs/Makefile tests/Makefile tests/progs/Makefile \
2869485b
TT
1921 tests/fuzz/Makefile resize/Makefile doc/Makefile \
1922 po/Makefile.in scrub/Makefile; do
94ba8c75
TT
1923 if test -d `dirname ${srcdir}/$i` ; then
1924 outlist="$outlist $i"
1925 fi
1926done
54445dc2
TT
1927AC_CONFIG_FILES([$outlist])
1928AC_OUTPUT
ee683a13 1929if test -f util/gen-tarball; then chmod +x util/gen-tarball; fi