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