blob: 4c4b552359c9154ad884d0b434a894030d795e48 [file] [log] [blame]
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001AC_INIT(version.h)
Theodore Ts'o8c9e2922021-02-09 15:54:12 -05002AC_PREREQ(2.69)
Theodore Ts'ob0cacab2004-11-30 19:00:19 -05003AC_CONFIG_AUX_DIR(config)
Theodore Ts'od1154eb2011-09-18 17:34:37 -04004AC_CONFIG_HEADERS([lib/config.h])
Theodore Ts'oc714d022014-01-30 18:48:23 -05005AH_BOTTOM([#include <dirpaths.h>])
Theodore Ts'o50e1e101997-04-26 13:58:21 +00006MCONFIG=./MCONFIG
7AC_SUBST_FILE(MCONFIG)
Theodore Ts'o74becf31997-04-26 14:37:06 +00008BINARY_TYPE=bin
9dnl
10dnl This is to figure out the version number and the date....
11dnl
12E2FSPROGS_VERSION=`grep E2FSPROGS_VERSION ${srcdir}/version.h \
13 | awk '{print $3}' | tr \" " " | awk '{print $1}'`
Darrick J. Wong5ce368f2018-03-23 18:57:09 -070014E2FSPROGS_DATE=`grep E2FSPROGS_DATE ${srcdir}/version.h | awk '{print $3}' \
15 | tr \" " " | awk '{print $1}'`
16E2FSPROGS_DAY=$(echo $E2FSPROGS_DATE | awk -F- '{print $1}' | sed -e '/^[[1-9]]$/s/^/0/')
17MONTH=`echo $E2FSPROGS_DATE | awk -F- '{print $2}'`
18YEAR=`echo $E2FSPROGS_DATE | awk -F- '{print $3}'`
Theodore Ts'o74becf31997-04-26 14:37:06 +000019
Theodore Ts'o40fa8cc1999-01-09 05:06:02 +000020if expr $YEAR ">" 1900 > /dev/null ; then
21 E2FSPROGS_YEAR=$YEAR
22elif expr $YEAR ">" 90 >/dev/null ; then
Theodore Ts'o74becf31997-04-26 14:37:06 +000023 E2FSPROGS_YEAR=19$YEAR
24else
25 E2FSPROGS_YEAR=20$YEAR
26fi
27
28case $MONTH in
Andreas Dilger927566a2006-11-12 19:41:25 -050029Jan) 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" ;;
Theodore Ts'o02d04db2008-08-22 10:52:42 -040041*) AC_MSG_WARN([Unknown month $MONTH??]) ;;
Theodore Ts'o74becf31997-04-26 14:37:06 +000042esac
43
Andreas Dilger927566a2006-11-12 19:41:25 -050044base_ver=`echo $E2FSPROGS_VERSION | \
45 sed -e 's/-WIP//' -e 's/pre-//' -e 's/-PLUS//'`
Andreas Dilger927566a2006-11-12 19:41:25 -050046
47date_spec=${E2FSPROGS_YEAR}.${MONTH_NUM}.${E2FSPROGS_DAY}
48
49case $E2FSPROGS_VERSION in
50*-WIP|pre-*)
Theodore Ts'o2ab53822016-03-15 01:10:29 -040051 E2FSPROGS_PKGVER="$base_ver~WIP.$date_spec"
Andreas Dilger927566a2006-11-12 19:41:25 -050052 ;;
53*)
54 E2FSPROGS_PKGVER="$base_ver"
55 ;;
56esac
57
58unset DATE MONTH YEAR base_ver pre_vers date_spec
Theodore Ts'o02d04db2008-08-22 10:52:42 -040059AC_MSG_RESULT([Generating configuration file for e2fsprogs version $E2FSPROGS_VERSION])
60AC_MSG_RESULT([Release date is ${E2FSPROGS_MONTH}, ${E2FSPROGS_YEAR}])
Theodore Ts'o74becf31997-04-26 14:37:06 +000061AC_SUBST(E2FSPROGS_YEAR)
62AC_SUBST(E2FSPROGS_MONTH)
Theodore Ts'obff0cc92003-03-23 01:37:53 -050063AC_SUBST(E2FSPROGS_DAY)
Theodore Ts'o74becf31997-04-26 14:37:06 +000064AC_SUBST(E2FSPROGS_VERSION)
Andreas Dilger927566a2006-11-12 19:41:25 -050065AC_SUBST(E2FSPROGS_PKGVER)
Darrick J. Wong5ce368f2018-03-23 18:57:09 -070066AC_SUBST(E2FSPROGS_DATE)
Theodore Ts'o57aa50d2009-11-26 10:38:04 -050067dnl
Theodore Ts'od21ae6c2003-05-05 09:00:24 -040068dnl Use diet libc
69dnl
Theodore Ts'oeafba6c2008-07-10 10:21:42 -040070WITH_DIET_LIBC=
Theodore Ts'od21ae6c2003-05-05 09:00:24 -040071AC_ARG_WITH([diet-libc],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -050072AS_HELP_STRING([--with-diet-libc],[use diet libc]),
Theodore Ts'od21ae6c2003-05-05 09:00:24 -040073CC="diet cc -nostdinc"
Theodore Ts'oeafba6c2008-07-10 10:21:42 -040074WITH_DIET_LIBC=yes
Theodore Ts'o6c59a662014-01-04 20:44:29 -050075if test -z "$LIBS"
76then
77 LIBS="-lcompat"
78else
79 LIBS="$LIBS -lcompat"
80fi
Theodore Ts'od21ae6c2003-05-05 09:00:24 -040081AC_MSG_RESULT(CC=$CC))dnl
82dnl
Theodore Ts'o6c59a662014-01-04 20:44:29 -050083AC_CANONICAL_HOST
84dnl
85dnl Check to see if libdl exists for the sake of dlopen
86dnl
87DLOPEN_LIB=''
Theodore Ts'o32179ce2016-06-07 00:14:35 -040088AC_CHECK_LIB(dl, dlopen,DLOPEN_LIB=-ldl)
Theodore Ts'o6c59a662014-01-04 20:44:29 -050089AC_SUBST(DLOPEN_LIB)
90dnl
Theodore Ts'o74becf31997-04-26 14:37:06 +000091AC_ARG_WITH([cc],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -050092AS_HELP_STRING([--with-cc],[no longer supported, use CC= instead]),
Theodore Ts'o0b5b9f92009-09-06 21:28:47 -040093AC_MSG_ERROR([--with-cc no longer supported; use CC= instead]))
Theodore Ts'o74becf31997-04-26 14:37:06 +000094dnl
95AC_ARG_WITH([ccopts],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -050096AS_HELP_STRING([--with-ccopts],[no longer supported, use CFLAGS= instead]),
Theodore Ts'o0b5b9f92009-09-06 21:28:47 -040097AC_MSG_ERROR([--with-ccopts no longer supported; use CFLAGS= instead]))
98dnl
99AC_ARG_WITH([ldopts],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500100AS_HELP_STRING([--with-ldopts],[no longer supported, use LDFLAGS= instead]),
Theodore Ts'o0b5b9f92009-09-06 21:28:47 -0400101AC_MSG_ERROR([--with-ldopts no longer supported; use LDFLAGS= instead]))
102dnl
103AC_PROG_CC
Theodore Ts'o9b3018a2011-08-11 14:56:49 -0400104if test "$GCC" = yes; then
105 RDYNAMIC="-rdynamic"
106 AC_SUBST(RDYNAMIC)
107fi
Theodore Ts'o0b5b9f92009-09-06 21:28:47 -0400108AC_PROG_CPP
Theodore Ts'o74becf31997-04-26 14:37:06 +0000109dnl
Matthias Andreeb1c92f92004-02-23 21:30:11 +0100110dnl Alpha computers use fast and imprecise floating point code that may
111dnl miss exceptions by default. Force sane options if we're using GCC.
112AC_MSG_CHECKING(for additional special compiler flags)
113if test "$GCC" = yes
114then
115 case "$host_cpu" in
116 alpha) addcflags="-mieee" ;;
117 esac
118fi
119if test "x$addcflags" != x
120then
121 AC_MSG_RESULT($addcflags)
122 CFLAGS="$addcflags $CFLAGS"
123else
124 AC_MSG_RESULT([[(none)]])
125fi
Theodore Ts'o93613952014-07-03 23:44:13 -0400126AC_USE_SYSTEM_EXTENSIONS
Matthias Andreeb1c92f92004-02-23 21:30:11 +0100127dnl
Sebastian Rasmussen055866d2017-10-08 13:30:08 +0200128dnl Set default values for library extensions. Will be dealt with after
129dnl parsing configuration options, which may modify these
Theodore Ts'oa4d09611997-04-29 14:28:00 +0000130dnl
131LIB_EXT=.a
132STATIC_LIB_EXT=.a
Theodore Ts'o14b596d2009-04-22 09:18:30 -0400133PROFILED_LIB_EXT=.a
Theodore Ts'oa4d09611997-04-29 14:28:00 +0000134dnl
Theodore Ts'oa4b2d3c1998-04-03 16:12:25 +0000135dnl Allow separate `root_prefix' to be specified
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +0000136dnl
Theodore Ts'oa4b2d3c1998-04-03 16:12:25 +0000137AC_ARG_WITH([root-prefix],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500138AS_HELP_STRING([--with-root-prefix=PREFIX],[override prefix variable for files to be placed in the root]),
Theodore Ts'oa4b2d3c1998-04-03 16:12:25 +0000139root_prefix=$withval,
140root_prefix=NONE)dnl
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +0000141dnl
Theodore Ts'o98919bd2005-02-04 10:43:58 -0500142dnl handle --enable-maintainer-mode
143dnl
144AC_ARG_ENABLE([maintainer-mode],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500145AS_HELP_STRING([--enable-maintainer-mode],[enable makefile rules useful for maintainers]),
Theodore Ts'o98919bd2005-02-04 10:43:58 -0500146if test "$enableval" = "no"
147then
148 MAINTAINER_CMT=#
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400149 AC_MSG_RESULT([Disabling maintainer mode])
Theodore Ts'o98919bd2005-02-04 10:43:58 -0500150else
151 MAINTAINER_CMT=
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400152 AC_MSG_RESULT([Enabling maintainer mode])
Theodore Ts'o98919bd2005-02-04 10:43:58 -0500153fi
154,
155MAINTAINER_CMT=#
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400156AC_MSG_RESULT([Disabling maintainer mode by default])
Theodore Ts'o98919bd2005-02-04 10:43:58 -0500157)
158AC_SUBST(MAINTAINER_CMT)
159dnl
Theodore Ts'o5aa6c3f2010-05-17 19:21:42 -0400160dnl handle --enable-symlink-install
161dnl
162AC_ARG_ENABLE([symlink-install],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500163AS_HELP_STRING([--enable-symlink-install],[use symlinks when installing instead of hard links]),
Theodore Ts'o5aa6c3f2010-05-17 19:21:42 -0400164if test "$enableval" = "no"
165then
166 LINK_INSTALL_FLAGS=-f
167 AC_MSG_RESULT([Disabling symlinks for install])
168else
169 LINK_INSTALL_FLAGS=-sf
170 AC_MSG_RESULT([Enabling symlinks for install])
171fi
172,
173LINK_INSTALL_FLAGS=-f
Theodore Ts'o183c73b2012-05-12 23:13:24 -0400174AC_MSG_RESULT([Disabling symlinks for install by default])
Theodore Ts'o5aa6c3f2010-05-17 19:21:42 -0400175)
176AC_SUBST(LINK_INSTALL_FLAGS)
177dnl
Theodore Ts'o183c73b2012-05-12 23:13:24 -0400178dnl handle --enable-relative-symlinks
179dnl
Theodore Ts'o91d11da2012-09-06 23:01:14 -0400180relative_symlink_defined=
181AC_ARG_ENABLE([relative-symlinks],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500182AS_HELP_STRING([--enable-relative-symlinks],[use relative symlinks when installing]),
Theodore Ts'o183c73b2012-05-12 23:13:24 -0400183if test "$enableval" = "no"
184then
185 SYMLINK_RELATIVE=
Theodore Ts'o91d11da2012-09-06 23:01:14 -0400186 relative_symlink_defined=yes
Theodore Ts'o183c73b2012-05-12 23:13:24 -0400187 AC_MSG_RESULT([Disabling relative symlinks for install])
188else
189 SYMLINK_RELATIVE=--relative
Theodore Ts'o91d11da2012-09-06 23:01:14 -0400190 relative_symlink_defined=yes
191 AC_MSG_RESULT([Enabling relative symlinks for install])
192fi)
193AC_ARG_ENABLE([symlink-relative-symlinks],,
194if test "$enableval" = "no"
195then
196 SYMLINK_RELATIVE=yes
197 AC_MSG_RESULT([Disabling relative symlinks for install])
198else
199 SYMLINK_RELATIVE=--relative
200 AC_MSG_RESULT([Enabling relative symlinks for install])
Theodore Ts'o183c73b2012-05-12 23:13:24 -0400201fi
202,
Theodore Ts'o91d11da2012-09-06 23:01:14 -0400203if test -z "$relative_symlink_defined"
204then
Theodore Ts'o183c73b2012-05-12 23:13:24 -0400205 SYMLINK_RELATIVE=
206AC_MSG_RESULT([Disabling relative symlinks for install by default])
Theodore Ts'o91d11da2012-09-06 23:01:14 -0400207fi
Theodore Ts'o183c73b2012-05-12 23:13:24 -0400208)
209AC_SUBST(SYMLINK_RELATIVE)
210dnl
Theodore Ts'o5aa6c3f2010-05-17 19:21:42 -0400211dnl handle --enable-symlink-build
212dnl
213AC_ARG_ENABLE([symlink-build],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500214AS_HELP_STRING([--enable-symlink-build],[use symlinks while building instead of hard links]),
Theodore Ts'o5aa6c3f2010-05-17 19:21:42 -0400215if test "$enableval" = "no"
216then
217 LINK_BUILD_FLAGS=
218 AC_MSG_RESULT([Disabling symlinks for build])
219else
220 LINK_BUILD_FLAGS=-s
221 AC_MSG_RESULT([Enabling symlinks for build])
222fi
223,
224LINK_BUILD_FLAGS=
Theodore Ts'o183c73b2012-05-12 23:13:24 -0400225AC_MSG_RESULT([Disabling symlinks for build by default])
Theodore Ts'o5aa6c3f2010-05-17 19:21:42 -0400226)
227AC_SUBST(LINK_BUILD_FLAGS)
228dnl
Theodore Ts'oc13351f2009-07-02 00:11:17 -0400229dnl handle --enable-verbose-makecmds
230dnl
231AC_ARG_ENABLE([verbose-makecmds],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500232AS_HELP_STRING([--enable-verbose-makecmds],[enable verbose make command output]),
Theodore Ts'oc13351f2009-07-02 00:11:17 -0400233if test "$enableval" = "no"
234then
235 AC_MSG_RESULT([Disabling verbose make commands])
236 E=@echo
Theodore Ts'oc1986ec2012-06-13 15:29:13 -0400237 ES=echo
Theodore Ts'oc13351f2009-07-02 00:11:17 -0400238 Q=@
239else
240 AC_MSG_RESULT([Enabling verbose make commands])
241 E=@\\#
Theodore Ts'oc1986ec2012-06-13 15:29:13 -0400242 ES=\\#
Theodore Ts'oc13351f2009-07-02 00:11:17 -0400243 Q=
244fi
245,
246AC_MSG_RESULT([Disabling verbose make commands])
247E=@echo
Theodore Ts'oc1986ec2012-06-13 15:29:13 -0400248ES=echo
Theodore Ts'oc13351f2009-07-02 00:11:17 -0400249Q=@
250)
251AC_SUBST(E)
Theodore Ts'oc1986ec2012-06-13 15:29:13 -0400252AC_SUBST(ES)
Theodore Ts'oc13351f2009-07-02 00:11:17 -0400253AC_SUBST(Q)
254dnl
Theodore Ts'oa4ece352008-01-01 20:05:04 -0500255dnl This needs to be before all of the --enable-*-shlibs options
256dnl
257E2_PKG_CONFIG_STATIC=--static
Theodore Ts'o55da9872008-09-02 23:12:38 -0400258LDFLAG_DYNAMIC=
259PRIVATE_LIBS_CMT=
Theodore Ts'oa4ece352008-01-01 20:05:04 -0500260dnl
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000261dnl handle --enable-elf-shlibs
262dnl
263AC_ARG_ENABLE([elf-shlibs],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500264AS_HELP_STRING([--enable-elf-shlibs],[select ELF shared libraries]),
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000265if test "$enableval" = "no"
266then
267 ELF_CMT=#
268 MAKEFILE_ELF=/dev/null
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400269 AC_MSG_RESULT([Disabling ELF shared libraries])
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000270else
Theodore Ts'oa4ece352008-01-01 20:05:04 -0500271 E2_PKG_CONFIG_STATIC=
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000272 ELF_CMT=
273 MAKEFILE_ELF=$srcdir/lib/Makefile.elf-lib
Theodore Ts'of5955dd2000-10-25 02:38:39 +0000274 [case "$host_os" in
275 solaris2.*)
276 MAKEFILE_ELF=$srcdir/lib/Makefile.solaris-lib
277 ;;
278 esac]
Theodore Ts'o74becf31997-04-26 14:37:06 +0000279 BINARY_TYPE=elfbin
Theodore Ts'oa4d09611997-04-29 14:28:00 +0000280 LIB_EXT=.so
Theodore Ts'o55da9872008-09-02 23:12:38 -0400281 PRIVATE_LIBS_CMT=#
282 LDFLAG_DYNAMIC=['-Wl,-rpath-link,$(top_builddir)/lib']
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400283 AC_MSG_RESULT([Enabling ELF shared libraries])
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000284fi
285,
286MAKEFILE_ELF=/dev/null
287ELF_CMT=#
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400288AC_MSG_RESULT([Disabling ELF shared libraries by default])
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000289)
290AC_SUBST(ELF_CMT)
291AC_SUBST_FILE(MAKEFILE_ELF)
292dnl
293dnl handle --enable-bsd-shlibs
294dnl
295AC_ARG_ENABLE([bsd-shlibs],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500296AS_HELP_STRING([--enable-bsd-shlibs],[select BSD shared libraries]),
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000297if test "$enableval" = "no"
298then
299 BSDLIB_CMT=#
300 MAKEFILE_BSDLIB=/dev/null
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400301 AC_MSG_RESULT([Disabling BSD shared libraries])
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000302else
Theodore Ts'oa4ece352008-01-01 20:05:04 -0500303 E2_PKG_CONFIG_STATIC=
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000304 BSDLIB_CMT=
305 MAKEFILE_BSDLIB=$srcdir/lib/Makefile.bsd-lib
Theodore Ts'oa4d09611997-04-29 14:28:00 +0000306 LIB_EXT=.so
Theodore Ts'oe71d8732003-03-14 02:13:48 -0500307 [case "$host_os" in
Theodore Ts'oaa75ecc2003-03-17 10:01:22 -0500308 darwin*)
Theodore Ts'oe71d8732003-03-14 02:13:48 -0500309 MAKEFILE_BSDLIB=$srcdir/lib/Makefile.darwin-lib
310 LIB_EXT=.dylib
311 ;;
312 esac]
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400313 AC_MSG_RESULT([Enabling BSD shared libraries])
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000314fi
315,
316MAKEFILE_BSDLIB=/dev/null
317BSDLIB_CMT=#
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400318AC_MSG_RESULT([Disabling BSD shared libraries by default])
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000319)
320AC_SUBST(BSDLIB_CMT)
321AC_SUBST_FILE(MAKEFILE_BSDLIB)
322dnl
323dnl handle --enable-profile
324dnl
325AC_ARG_ENABLE([profile],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500326AS_HELP_STRING([--enable-profile],[build profiling libraries]),
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000327if test "$enableval" = "no"
328then
329 PROFILE_CMT=#
330 MAKEFILE_PROFILE=/dev/null
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400331 AC_MSG_RESULT([Disabling profiling libraries])
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000332else
333 PROFILE_CMT=
334 MAKEFILE_PROFILE=$srcdir/lib/Makefile.profile
Theodore Ts'oa4d09611997-04-29 14:28:00 +0000335 PROFILED_LIB_EXT=_p.a
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400336 AC_MSG_RESULT([Building profiling libraries])
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000337fi
338,
339PROFILE_CMT=#
340MAKEFILE_PROFILE=/dev/null
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400341AC_MSG_RESULT([Disabling profiling libraries by default])
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000342)
343AC_SUBST(PROFILE_CMT)
344AC_SUBST_FILE(MAKEFILE_PROFILE)
345dnl
Theodore Ts'ofedfb272014-02-23 00:17:09 -0500346dnl handle --enable-gcov
347dnl
348AC_ARG_ENABLE([gcov],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500349AS_HELP_STRING([--enable-gcov],[build for coverage testing using gcov]),
Theodore Ts'ofedfb272014-02-23 00:17:09 -0500350if test "$enableval" = "yes"
351then
352 CFLAGS="-g -fprofile-arcs -ftest-coverage"
353 LDFLAGS="-fprofile-arcs -ftest-coverage"
354 AC_MSG_RESULT([Enabling gcov support])
355fi
356)
Theodore Ts'ofd1677e2016-05-21 23:51:19 -0400357dnl
358dnl handle --enable-hardening
359dnl
360CFLAGS_SHLIB="${CFLAGS_SHLIB:-$CFLAGS}"
361CFLAGS_STLIB="${CFLAGS_STLIB:-$CFLAGS}"
362LDFLAGS_SHLIB=${LDFLAGS_SHLIB:-$LDFLAGS}
363LDFLAGS_STATIC=${LDFLAGS_STATIC:-$LDFLAGS}
364AC_ARG_ENABLE([hardening],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500365AS_HELP_STRING([--enable-hardening],[build for coverage testing using gcov]),
Theodore Ts'ofd1677e2016-05-21 23:51:19 -0400366if test "$enableval" = "yes"
367then
368 HARDEN_CFLAGS="-D_FORTIFY_SOURCE=2 -fstack-protector-strong"
369 HARDEN_LDFLAGS=["-Wl,-z,relro -Wl,-z,now"]
370 CFLAGS="$CFLAGS $HARDEN_CFLAGS -fPIE"
371 CFLAGS_SHLIB="$CFLAGS_SHLIB $HARDEN_CFLAGS"
372 CFLAGS_STLIB="$CFLAGS_STLIB $HARDEN_CFLAGS -fPIE"
373 LDFLAGS="$LDFLAGS $HARDEN_LDFLAGS -fPIE -pie"
374 LDFLAGS_STATIC="$LDFLAGS_STATIC $HARDEN_LDFLAGS"
375 LDFLAGS_SHLIB="$LDFLAGS_SHLIB $HARDEN_LDFLAGS"
376 AC_MSG_RESULT([Enabling hardening support])
377fi
378)
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000379dnl
Theodore Ts'oa4d09611997-04-29 14:28:00 +0000380dnl Substitute library extensions
381dnl
382AC_SUBST(LIB_EXT)
383AC_SUBST(STATIC_LIB_EXT)
384AC_SUBST(PROFILED_LIB_EXT)
Theodore Ts'o55da9872008-09-02 23:12:38 -0400385AC_SUBST(LDFLAG_DYNAMIC)
386AC_SUBST(PRIVATE_LIBS_CMT)
Theodore Ts'oa4d09611997-04-29 14:28:00 +0000387dnl
Theodore Ts'o782bebf2002-11-08 18:46:45 -0500388dnl handle --enable-jbd-debug
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000389dnl
Theodore Ts'o782bebf2002-11-08 18:46:45 -0500390AC_ARG_ENABLE([jbd-debug],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500391AS_HELP_STRING([--enable-jbd-debug],[enable journal debugging]),
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000392if test "$enableval" = "no"
393then
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400394 AC_MSG_RESULT([Disabling journal debugging])
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000395else
Theodore Ts'od1154eb2011-09-18 17:34:37 -0400396 AC_DEFINE(CONFIG_JBD_DEBUG, 1,
397 [Define to 1 if debugging ext3/4 journal code])
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400398 AC_MSG_RESULT([Enabling journal debugging])
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000399fi
400,
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400401AC_MSG_RESULT([Disabling journal debugging by default])
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000402)
403dnl
Theodore Ts'of0a22d02003-02-22 13:19:53 -0500404dnl handle --enable-blkid-debug
405dnl
406AC_ARG_ENABLE([blkid-debug],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500407AS_HELP_STRING([--enable-blkid-debug],[enable blkid debugging]),
Theodore Ts'of0a22d02003-02-22 13:19:53 -0500408if test "$enableval" = "no"
409then
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400410 AC_MSG_RESULT([Disabling blkid debugging])
Theodore Ts'of0a22d02003-02-22 13:19:53 -0500411else
Theodore Ts'od1154eb2011-09-18 17:34:37 -0400412 AC_DEFINE(CONFIG_BLKID_DEBUG, 1,
413 [Define to 1 if debugging the blkid library])
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400414 AC_MSG_RESULT([Enabling blkid debugging])
Theodore Ts'of0a22d02003-02-22 13:19:53 -0500415fi
416,
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400417AC_MSG_RESULT([Disabling blkid debugging by default])
Theodore Ts'of0a22d02003-02-22 13:19:53 -0500418)
419dnl
Theodore Ts'o2a29f132003-05-05 12:08:47 -0400420dnl handle --enable-testio-debug
421dnl
422AC_ARG_ENABLE([testio-debug],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500423AS_HELP_STRING([--disable-testio-debug],[disable the use of the test I/O manager for debugging]),
Theodore Ts'od1154eb2011-09-18 17:34:37 -0400424AH_TEMPLATE([CONFIG_TESTIO_DEBUG],
425 [Define to 1 if the testio I/O manager should be enabled])
Theodore Ts'o2a29f132003-05-05 12:08:47 -0400426if test "$enableval" = "no"
427then
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400428 AC_MSG_RESULT([Disabling testio debugging])
Theodore Ts'oaf773652008-09-01 11:27:27 -0400429 TEST_IO_CMT="#"
Theodore Ts'o2a29f132003-05-05 12:08:47 -0400430else
Theodore Ts'oaf773652008-09-01 11:27:27 -0400431 TEST_IO_CMT=
Theodore Ts'od1154eb2011-09-18 17:34:37 -0400432 AC_DEFINE(CONFIG_TESTIO_DEBUG, 1)
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400433 AC_MSG_RESULT([Enabling testio debugging])
Theodore Ts'o2a29f132003-05-05 12:08:47 -0400434fi
435,
Theodore Ts'oaf773652008-09-01 11:27:27 -0400436AC_MSG_RESULT([Enabling testio debugging by default])
Theodore Ts'od1154eb2011-09-18 17:34:37 -0400437AC_DEFINE(CONFIG_TESTIO_DEBUG, 1)
Theodore Ts'oaf773652008-09-01 11:27:27 -0400438TEST_IO_CMT=
Theodore Ts'o2a29f132003-05-05 12:08:47 -0400439)
Theodore Ts'oaf773652008-09-01 11:27:27 -0400440AC_SUBST(TEST_IO_CMT)
Theodore Ts'o2a29f132003-05-05 12:08:47 -0400441dnl
Theodore Ts'ob9e66a12019-08-05 12:47:18 -0400442dnl handle --enable-developer-features
443dnl
444AC_ARG_ENABLE([developer-features],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500445AS_HELP_STRING([--enable-developer-features],[enable features for use by ext4 developers]),
Theodore Ts'ob9e66a12019-08-05 12:47:18 -0400446AH_TEMPLATE([CONFIG_DEVELOPER_FEATURES],
447 [Define to 1 for features for use by ext4 developers])
448if test "$enableval" = "yes"
449then
450 DEV_FEATURES_CMT=
451 AC_DEFINE(CONFIG_DEVELOPER_FEATURES, 1)
452 AC_MSG_RESULT([Enabling ext4 developer features])
453else
454 AC_MSG_RESULT([Disabling ext4 developer features])
455 DEV_FEATURES_CMT="#"
456fi
457,
458AC_MSG_RESULT([Disabling ext4 developer features by default])
459DEV_FEATURES_CMT=
460)
461AC_SUBST(DEV_FEATURES_CMT)
462dnl
Scott James Remnant39fd3d42009-05-14 13:03:25 +0100463dnl handle --disable-libuuid
464dnl
465PKG_PROG_PKG_CONFIG
466LIBUUID=
467DEPLIBUUID=
468STATIC_LIBUUID=
469DEPSTATIC_LIBUUID=
470PROFILED_LIBUUID=
471DEPPROFILED_LIBUUID=
472UUID_CMT=
473AC_ARG_ENABLE([libuuid],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500474AS_HELP_STRING([--enable-libuuid],[build and use private uuid library]),
Scott James Remnant39fd3d42009-05-14 13:03:25 +0100475if test "$enableval" = "no"
476then
477 if test -z "$PKG_CONFIG"; then
478 AC_MSG_ERROR([pkg-config not installed; please install it.])
479 fi
480
481 AC_CHECK_LIB(uuid, uuid_generate,
482 [LIBUUID=`$PKG_CONFIG --libs uuid`;
483 STATIC_LIBUUID=`$PKG_CONFIG --static --libs uuid`],
Theodore Ts'o2d7583b2014-07-05 00:27:02 -0400484 [AC_MSG_ERROR([external uuid library not found])])
Theodore Ts'o5afdf372014-09-18 21:11:33 -0400485 PROFILED_LIBUUID=$LIBUUID
Scott James Remnant39fd3d42009-05-14 13:03:25 +0100486 UUID_CMT=#
487 AC_MSG_RESULT([Disabling private uuid library])
488else
489 LIBUUID='$(LIB)/libuuid'$LIB_EXT
490 DEPLIBUUID=$LIBUUID
491 STATIC_LIBUUID='$(LIB)/libuuid'$STATIC_LIB_EXT
492 DEPSTATIC_LIBUUID=$STATIC_LIBUUID
493 PROFILED_LIBUUID='$(LIB)/libuuid'$PROFILED_LIB_EXT
494 DEPPROFILED_LIBUUID=$PROFILED_LIBUUID
495 AC_MSG_RESULT([Enabling private uuid library])
496fi
497,
Theodore Ts'of5dffb82015-06-20 14:20:14 -0400498if test -n "$PKG_CONFIG"; then
499 AC_CHECK_LIB(uuid, uuid_generate,
500 [LIBUUID=`$PKG_CONFIG --libs uuid`;
501 STATIC_LIBUUID=`$PKG_CONFIG --static --libs uuid`])
502fi
503if test -n "$LIBUUID"; then
504 PROFILED_LIBUUID=$LIBUUID
505 UUID_CMT=#
506 AC_MSG_RESULT([Using system uuid by default])
507else
508 LIBUUID='$(LIB)/libuuid'$LIB_EXT
509 DEPLIBUUID=$LIBUUID
510 STATIC_LIBUUID='$(LIB)/libuuid'$STATIC_LIB_EXT
511 DEPSTATIC_LIBUUID=$STATIC_LIBUUID
512 PROFILED_LIBUUID='$(LIB)/libuuid'$PROFILED_LIB_EXT
513 DEPPROFILED_LIBUUID=$PROFILED_LIBUUID
514 AC_MSG_RESULT([Enabling private uuid library by default])
515fi
Scott James Remnant39fd3d42009-05-14 13:03:25 +0100516)
517AC_SUBST(LIBUUID)
518AC_SUBST(DEPLIBUUID)
519AC_SUBST(STATIC_LIBUUID)
520AC_SUBST(DEPSTATIC_LIBUUID)
521AC_SUBST(PROFILED_LIBUUID)
522AC_SUBST(DEPPROFILED_LIBUUID)
523AC_SUBST(UUID_CMT)
524dnl
Theodore Ts'o14b596d2009-04-22 09:18:30 -0400525dnl handle --disable-libblkid
526dnl
527PKG_PROG_PKG_CONFIG
528LIBBLKID=
529DEPLIBBLKID=
530STATIC_LIBBLKID=
531DEPSTATIC_LIBBLKID=
532PROFILED_LIBBLKID=
533DEPPROFILED_LIBBLKID=
534BLKID_CMT=
Theodore Ts'od1154eb2011-09-18 17:34:37 -0400535AH_TEMPLATE([CONFIG_BUILD_FINDFS], [Define to 1 to compile findfs])
Theodore Ts'o14b596d2009-04-22 09:18:30 -0400536AC_ARG_ENABLE([libblkid],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500537AS_HELP_STRING([--enable-libblkid],[build and use private blkid library]),
Theodore Ts'o14b596d2009-04-22 09:18:30 -0400538if test "$enableval" = "no"
539then
540 if test -z "$PKG_CONFIG"; then
541 AC_MSG_ERROR([pkg-config not installed; please install it.])
542 fi
543
544 AC_CHECK_LIB(blkid, blkid_get_cache,
545 [LIBBLKID=`$PKG_CONFIG --libs blkid`;
546 STATIC_LIBBLKID=`$PKG_CONFIG --static --libs blkid`],
Theodore Ts'o2d7583b2014-07-05 00:27:02 -0400547 [AC_MSG_ERROR([external blkid library not found])], -luuid)
Theodore Ts'o14b596d2009-04-22 09:18:30 -0400548 BLKID_CMT=#
Theodore Ts'o5afdf372014-09-18 21:11:33 -0400549 PROFILED_LIBBLKID=$LIBBLKID
Theodore Ts'o14b596d2009-04-22 09:18:30 -0400550 AC_MSG_RESULT([Disabling private blkid library])
551else
552 LIBBLKID='$(LIB)/libblkid'$LIB_EXT
553 DEPLIBBLKID=$LIBBLKID
554 STATIC_LIBBLKID='$(LIB)/libblkid'$STATIC_LIB_EXT
555 DEPSTATIC_LIBBLKID=$STATIC_LIBBLKID
556 PROFILED_LIBBLKID='$(LIB)/libblkid'$PROFILED_LIB_EXT
557 DEPPROFILED_LIBBLKID=$PROFILED_LIBBLKID
Theodore Ts'od1154eb2011-09-18 17:34:37 -0400558 AC_DEFINE(CONFIG_BUILD_FINDFS, 1)
Theodore Ts'o14b596d2009-04-22 09:18:30 -0400559 AC_MSG_RESULT([Enabling private blkid library])
560fi
561,
Theodore Ts'of5dffb82015-06-20 14:20:14 -0400562if test -n "$PKG_CONFIG"; then
563 AC_CHECK_LIB(blkid, blkid_get_cache,
564 [LIBBLKID=`$PKG_CONFIG --libs blkid`;
565 STATIC_LIBBLKID=`$PKG_CONFIG --static --libs blkid`])
566fi
567if test -n "$LIBBLKID"; then
568 BLKID_CMT=#
569 PROFILED_LIBBLKID=$LIBBLKID
570 AC_MSG_RESULT([Using system blkid library by default])
571else
572 LIBBLKID='$(LIB)/libblkid'$LIB_EXT
573 DEPLIBBLKID=$LIBBLKID
574 STATIC_LIBBLKID='$(LIB)/libblkid'$STATIC_LIB_EXT
575 DEPSTATIC_LIBBLKID=$STATIC_LIBBLKID
576 PROFILED_LIBBLKID='$(LIB)/libblkid'$PROFILED_LIB_EXT
577 DEPPROFILED_LIBBLKID=$PROFILED_LIBBLKID
578 AC_DEFINE(CONFIG_BUILD_FINDFS, 1)
579 AC_MSG_RESULT([Enabling private blkid library by default])
580fi
Theodore Ts'o14b596d2009-04-22 09:18:30 -0400581)
582AC_SUBST(LIBBLKID)
583AC_SUBST(DEPLIBBLKID)
584AC_SUBST(STATIC_LIBBLKID)
585AC_SUBST(DEPSTATIC_LIBBLKID)
586AC_SUBST(PROFILED_LIBBLKID)
587AC_SUBST(DEPPROFILED_LIBBLKID)
588AC_SUBST(BLKID_CMT)
589dnl
Theodore Ts'o0afb9be2018-08-18 11:19:25 -0400590dnl handle --enable-subset
591dnl
592ALL_CMT=
Theodore Ts'ofeb235e2018-08-24 17:12:20 -0400593SUBSET_CMT=
Theodore Ts'o0afb9be2018-08-18 11:19:25 -0400594AC_ARG_ENABLE([subset],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500595AS_HELP_STRING([--enable-subset],[enable subset-only build]),
Theodore Ts'o0afb9be2018-08-18 11:19:25 -0400596if test "$enableval" = "no"
597then
Theodore Ts'ofeb235e2018-08-24 17:12:20 -0400598 SUBSET_CMT=#
Theodore Ts'o0afb9be2018-08-18 11:19:25 -0400599 AC_MSG_RESULT([Disabling subset-only build])
600else
601 ALL_CMT=#
602 AC_MSG_RESULT([Enabling subset-only-build])
603fi
604,)
605AC_SUBST(ALL_CMT)
Theodore Ts'ofeb235e2018-08-24 17:12:20 -0400606AC_SUBST(SUBSET_CMT)
Theodore Ts'o0afb9be2018-08-18 11:19:25 -0400607dnl
Theodore Ts'o3df60142013-06-16 16:14:40 -0400608dnl handle --disable-backtrace
609dnl
610AH_TEMPLATE([DISABLE_BACKTRACE], [Define to 1 to disable use of backtrace])
611AC_ARG_ENABLE([backtrace],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500612AS_HELP_STRING([--disable-backtrace],[disable use backtrace]),
Theodore Ts'o3df60142013-06-16 16:14:40 -0400613if test "$enableval" = "no"
614then
615 AC_MSG_RESULT([Disabling use of backtrace])
616 AC_DEFINE(DISABLE_BACKTRACE, 1)
617else
618 AC_MSG_RESULT([Enabling use of backtrace])
619fi
620,
621AC_MSG_RESULT([Enabling use of backtrace by default])
622)
623dnl
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000624dnl handle --enable-debugfs
625dnl
626AC_ARG_ENABLE([debugfs],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500627AS_HELP_STRING([--disable-debugfs],[disable support of debugfs program]),
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000628if test "$enableval" = "no"
629then
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400630 AC_MSG_RESULT([Disabling debugfs support])
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000631 DEBUGFS_CMT="#"
632else
633 DEBUGFS_CMT=
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400634 AC_MSG_RESULT([Enabling debugfs support])
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000635fi
636,
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400637AC_MSG_RESULT([Enabling debugfs support by default])
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000638DEBUGFS_CMT=
639)
640AC_SUBST(DEBUGFS_CMT)
641dnl
642dnl handle --enable-imager
643dnl
644AC_ARG_ENABLE([imager],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500645AS_HELP_STRING([--disable-imager],[disable support of e2image program]),
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000646if test "$enableval" = "no"
647then
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400648 AC_MSG_RESULT([Disabling e2image support])
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000649 IMAGER_CMT="#"
650else
651 IMAGER_CMT=
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400652 AC_MSG_RESULT([Enabling e2image support])
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000653fi
654,
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400655AC_MSG_RESULT([Enabling e2image support by default])
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000656IMAGER_CMT=
657)
658AC_SUBST(IMAGER_CMT)
659dnl
660dnl handle --enable-resizer
661dnl
662AC_ARG_ENABLE([resizer],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500663AS_HELP_STRING([--disable-resizer],[disable support of e2resize program]),
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000664if test "$enableval" = "no"
665then
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400666 AC_MSG_RESULT([Disabling e2resize support])
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000667 RESIZER_CMT="#"
668else
669 RESIZER_CMT=
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400670 AC_MSG_RESULT([Enabling e2resize support])
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000671fi
672,
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400673AC_MSG_RESULT([Enabling e2resize support by default])
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000674RESIZER_CMT=
675)
676AC_SUBST(RESIZER_CMT)
677dnl
Theodore Ts'o8d9c50c2010-12-24 15:19:44 -0500678dnl handle --enable-defrag
679dnl
680AC_ARG_ENABLE([defrag],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500681AS_HELP_STRING([--disable-defrag],[disable support of e4defrag program]),
Theodore Ts'o8d9c50c2010-12-24 15:19:44 -0500682if test "$enableval" = "no"
683then
684 AC_MSG_RESULT([Disabling e4defrag support])
685 DEFRAG_CMT="#"
686else
687 DEFRAG_CMT=
688 AC_MSG_RESULT([Enabling e4defrag support])
689fi
690,
Theodore Ts'o6c59a662014-01-04 20:44:29 -0500691if test -z "$WITH_DIET_LIBC"
692then
693 AC_MSG_RESULT([Enabling e4defrag support by default])
694 DEFRAG_CMT=
695else
696 AC_MSG_RESULT([Disabling e4defrag support by default])
697 DEFRAG_CMT="#"
698fi
Theodore Ts'o8d9c50c2010-12-24 15:19:44 -0500699)
700AC_SUBST(DEFRAG_CMT)
701dnl
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +0000702dnl See whether to install the `fsck' wrapper program (that calls e2fsck)
703dnl
704AC_ARG_ENABLE([fsck],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500705AS_HELP_STRING([--enable-fsck],[build fsck wrapper program]),
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +0000706[if test "$enableval" = "no"
707then
708 FSCK_PROG='' FSCK_MAN=''
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400709 AC_MSG_RESULT([Not building fsck wrapper])
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +0000710else
711 FSCK_PROG=fsck FSCK_MAN=fsck.8
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400712 AC_MSG_RESULT([Building fsck wrapper])
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +0000713fi]
714,
715[case "$host_os" in
Theodore Ts'oe3632402004-05-04 19:39:54 -0400716 gnu*)
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +0000717 FSCK_PROG='' FSCK_MAN=''
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400718 AC_MSG_RESULT([Not building fsck wrapper by default])
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +0000719 ;;
720 *)
721 FSCK_PROG=fsck FSCK_MAN=fsck.8
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400722 AC_MSG_RESULT([Building fsck wrapper by default])
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +0000723esac]
724)
725AC_SUBST(FSCK_PROG)
726AC_SUBST(FSCK_MAN)
727dnl
Theodore Ts'o5d407732004-09-18 14:53:14 -0400728dnl See whether to install the `e2initrd-helper' program
729dnl
730AC_ARG_ENABLE([e2initrd-helper],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500731AS_HELP_STRING([--enable-e2initrd-helper],[build e2initrd-helper program]),
Theodore Ts'o5d407732004-09-18 14:53:14 -0400732[if test "$enableval" = "no"
733then
734 E2INITRD_PROG='' E2INITRD_MAN=''
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400735 AC_MSG_RESULT([Not building e2initrd helper])
Theodore Ts'o5d407732004-09-18 14:53:14 -0400736else
737 E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400738 AC_MSG_RESULT([Building e2initrd helper])
Theodore Ts'o5d407732004-09-18 14:53:14 -0400739fi]
740,
741E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400742AC_MSG_RESULT([Building e2initrd helper by default])
Theodore Ts'o5d407732004-09-18 14:53:14 -0400743)
744AC_SUBST(E2INITRD_PROG)
745AC_SUBST(E2INITRD_MAN)
Karel Zak4db2f592006-03-08 14:17:28 -0500746dnl
Theodore Ts'o5d407732004-09-18 14:53:14 -0400747dnl
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000748dnl
Theodore Ts'o32493942007-12-31 10:45:01 -0500749AC_ARG_ENABLE([tls],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500750AS_HELP_STRING([--disable-tls],[disable use of thread local support]),
Theodore Ts'o32493942007-12-31 10:45:01 -0500751[if test "$enableval" = "no"
752then
753 try_tls=""
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400754 AC_MSG_RESULT([Disabling thread local support])
Theodore Ts'o32493942007-12-31 10:45:01 -0500755else
756 try_tls="yes"
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400757 AC_MSG_RESULT([Enabling thread local support])
Theodore Ts'o32493942007-12-31 10:45:01 -0500758fi]
759,
Theodore Ts'oeafba6c2008-07-10 10:21:42 -0400760if test -n "$WITH_DIET_LIBC"
761then
762 try_tls=""
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400763 AC_MSG_RESULT([Diet libc does not support thread local support])
Theodore Ts'oeafba6c2008-07-10 10:21:42 -0400764else
765 try_tls="yes"
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400766 AC_MSG_RESULT([Try using thread local support by default])
Theodore Ts'oeafba6c2008-07-10 10:21:42 -0400767fi
Theodore Ts'o32493942007-12-31 10:45:01 -0500768)
769if test "$try_tls" = "yes"
770then
771AX_TLS
772fi
773dnl
774dnl
775dnl
Theodore Ts'obdcd5f22021-01-13 16:27:19 -0800776AC_ARG_WITH([pthread],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500777AS_HELP_STRING([--without-pthread],[disable use of pthread support]),
Theodore Ts'obdcd5f22021-01-13 16:27:19 -0800778[if test "$withval" = "no"
779then
780 try_pthread=""
781 AC_MSG_RESULT([Disabling pthread support])
782else
783 try_pthread="yes"
784 AC_MSG_RESULT([Testing for pthread support])
785fi]
786,
787try_pthread="yes"
788AC_MSG_RESULT([Try testing for pthread support by default])
789)
790if test "$try_pthread" = "yes"
791then
792AX_PTHREAD
793else
794test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
795AC_SUBST([PTHREAD_CC])
796fi
797dnl
798dnl
799dnl
Theodore Ts'od1154eb2011-09-18 17:34:37 -0400800AH_TEMPLATE([USE_UUIDD], [Define to 1 to build uuidd])
Theodore Ts'o5610f992007-12-31 11:16:56 -0500801AC_ARG_ENABLE([uuidd],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500802AS_HELP_STRING([--disable-uuidd],[disable building the uuid daemon]),
Theodore Ts'o5610f992007-12-31 11:16:56 -0500803[if test "$enableval" = "no"
804then
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400805 AC_MSG_RESULT([Not building uuidd])
Theodore Ts'o5610f992007-12-31 11:16:56 -0500806 UUIDD_CMT="#"
807else
Theodore Ts'od1154eb2011-09-18 17:34:37 -0400808 AC_DEFINE(USE_UUIDD, 1)
Theodore Ts'o5610f992007-12-31 11:16:56 -0500809 UUIDD_CMT=""
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400810 AC_MSG_RESULT([Building uuidd])
Theodore Ts'o5610f992007-12-31 11:16:56 -0500811fi]
812,
Theodore Ts'od1154eb2011-09-18 17:34:37 -0400813AC_DEFINE(USE_UUIDD, 1)
Theodore Ts'oe3d10152014-09-19 00:26:26 -0400814if test -z "$UUID_CMT"
815then
816 UUIDD_CMT=""
817 AC_MSG_RESULT([Building uuidd by default])
818else
819 UUIDD_CMT="#"
820 AC_MSG_RESULT([Disabling uuidd by default])
821fi
Theodore Ts'o5610f992007-12-31 11:16:56 -0500822)
823AC_SUBST(UUIDD_CMT)
824dnl
Tony Breedsd6a4bcb2012-06-26 11:42:15 +1000825dnl handle --disable-mmp
826dnl
827AH_TEMPLATE([CONFIG_MMP], [Define to 1 to enable mmp support])
828AC_ARG_ENABLE([mmp],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500829AS_HELP_STRING([--disable-mmp],[disable support mmp, Multi Mount Protection]),
Tony Breedsd6a4bcb2012-06-26 11:42:15 +1000830if test "$enableval" = "no"
831then
832 AC_MSG_RESULT([Disabling mmp support])
833else
834 AC_MSG_RESULT([Enabling mmp support])
835 AC_DEFINE(CONFIG_MMP, 1)
836fi
837,
838AC_MSG_RESULT([Enabling mmp support by default])
839AC_DEFINE(CONFIG_MMP, 1)
840)
841dnl
Theodore Ts'o749f0712016-05-29 20:48:54 -0400842dnl handle --disable-tdb
843dnl
844AH_TEMPLATE([CONFIG_TDB], [Define to 1 to enable tdb support])
845AC_ARG_ENABLE([tdb],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500846AS_HELP_STRING([--disable-tdb],[disable tdb support]),
Theodore Ts'o749f0712016-05-29 20:48:54 -0400847if test "$enableval" = "no"
848then
849 AC_MSG_RESULT([Disabling tdb support])
850 TDB_CMT="#"
851 TDB_MAN_COMMENT='.\"'
852else
853 AC_MSG_RESULT([Enabling tdb support])
854 AC_DEFINE(CONFIG_TDB, 1)
855 TDB_CMT=""
856 TDB_MAN_COMMENT=""
857fi
858,
859AC_MSG_RESULT([Enabling mmp support by default])
860AC_DEFINE(CONFIG_TDB, 1)
861TDB_CMT=""
862TDB_MAN_COMMENT=""
863)
864AC_SUBST(TDB_CMT)
865AC_SUBST(TDB_MAN_COMMENT)
866dnl
Tony Breeds1625bf42012-07-30 14:44:12 -0400867dnl handle --disable-bmap-stats
868dnl
869AH_TEMPLATE([ENABLE_BMAP_STATS], [Define to 1 to enable bitmap stats.])
870AC_ARG_ENABLE([bmap-stats],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500871AS_HELP_STRING([--disable-bmap-stats],[disable collection of bitmap stats]),
Tony Breeds1625bf42012-07-30 14:44:12 -0400872if test "$enableval" = "no"
873then
874 AC_MSG_RESULT([Disabling bitmap statistics support])
875else
876 AC_MSG_RESULT([Enabling bitmap statistics support])
877 AC_DEFINE(ENABLE_BMAP_STATS, 1)
878fi
879,
880AC_MSG_RESULT([Enabling bitmap statistics support by default])
881AC_DEFINE(ENABLE_BMAP_STATS, 1)
882)
883dnl
884dnl handle --enable-bmap-stats-ops
885dnl
886AH_TEMPLATE([ENABLE_BMAP_STATS_OPS], [Define to 1 to enable bitmap stats.])
887AC_ARG_ENABLE([bmap-stats-ops],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -0500888AS_HELP_STRING([--enable-bmap-stats-ops],[enable collection of additional bitmap stats]),
Tony Breeds1625bf42012-07-30 14:44:12 -0400889if test "$enableval" = "no"
890then
891 AC_MSG_RESULT([Disabling additional bitmap statistics])
892else
893 dnl There has to be a better way!
894 AS_IF([test "x${enable_bmap_stats}" = "xno"],
895 AC_MSG_FAILURE([Error --enable-bmap-stats-ops requires bmap-stats]))
896
897 AC_MSG_RESULT([Enabling additional bitmap statistics])
898 AC_DEFINE(ENABLE_BMAP_STATS_OPS, 1)
899fi
900,
901AC_MSG_RESULT([Disabling additional bitmap statistics by default])
902)
903dnl
Theodore Ts'o5610f992007-12-31 11:16:56 -0500904dnl
905dnl
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000906MAKEFILE_LIBRARY=$srcdir/lib/Makefile.library
907AC_SUBST_FILE(MAKEFILE_LIBRARY)
908dnl
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000909dnl Add internationalization support, using gettext.
910dnl
Theodore Ts'ob0cacab2004-11-30 19:00:19 -0500911GETTEXT_PACKAGE=e2fsprogs
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000912PACKAGE=e2fsprogs
913VERSION="$E2FSPROGS_VERSION"
Theodore Ts'ob0cacab2004-11-30 19:00:19 -0500914VERSION=0.14.1
Theodore Ts'od1154eb2011-09-18 17:34:37 -0400915AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [package name for gettext])
916AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [version for gettext])
Theodore Ts'ob0cacab2004-11-30 19:00:19 -0500917AC_SUBST(GETTEXT_PACKAGE)
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000918AC_SUBST(PACKAGE)
919AC_SUBST(VERSION)
920
Theodore Ts'oe598c292020-11-24 23:00:57 -0500921AM_GNU_GETTEXT([external])
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000922dnl
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000923dnl End of configuration options
924dnl
Theodore Ts'o74becf31997-04-26 14:37:06 +0000925AC_SUBST(BINARY_TYPE)
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000926AC_PROG_MAKE_SET
Theodore Ts'obcb915b2009-07-02 18:19:10 -0400927CHECK_GNU_MAKE
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000928AC_PATH_PROG(LN, ln, ln)
Ross Burton5abc0412014-07-10 15:39:05 +0100929AC_PROG_MKDIR_P
Theodore Ts'o3fb16e72021-01-28 23:16:46 -0500930dnl
931dnl @mkdir_p@ is used by po's Makefile.in
932dnl
933mkdir_p=$MKDIR_P
934AC_SUBST(mkdir_p)
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +0000935AC_PROG_LN_S
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000936AC_PATH_PROG(MV, mv, mv)
937AC_PATH_PROG(CP, cp, cp)
938AC_PATH_PROG(RM, rm, rm)
939AC_PATH_PROG(CHMOD, chmod, :)
Theodore Ts'o32237012005-01-17 19:13:39 -0500940AC_PROG_AWK
941AC_PROG_EGREP
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000942AC_PATH_PROG(SED, sed, sed)
Theodore Ts'o9d564f71999-07-03 20:25:58 +0000943AC_PATH_PROG(PERL, perl, perl)
Theodore Ts'o250f79f2001-05-19 22:02:22 +0000944AC_PATH_PROG(LDCONFIG, ldconfig, :)
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000945AC_CHECK_TOOL(AR, ar, ar)
946AC_CHECK_TOOL(RANLIB, ranlib, :)
947AC_CHECK_TOOL(STRIP, strip, :)
Manish Katiyar7321d942008-04-14 17:20:03 +0530948AC_CHECK_PROG(MAKEINFO, makeinfo, makeinfo, )
949if test "_$MAKEINFO" = "_"; then
Theodore Ts'oca1de982016-09-11 23:30:25 -0400950 MAKEINFO="echo Makeinfo is missing. Info documentation will not be built."
Manish Katiyar7321d942008-04-14 17:20:03 +0530951else
952 case "$MAKEINFO" in
953 */missing.*)
954 AC_MSG_WARN([
955*** Makeinfo is missing. Info documentation will not be built.])
956 ;;
957 *)
958 ;;
959 esac
960fi
961AC_SUBST(MAKEINFO)
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000962AC_PROG_INSTALL
Theodore Ts'o6c133521999-07-03 20:37:03 +0000963# See if we need a separate native compiler.
964if test $cross_compiling = no; then
965 BUILD_CC="$CC"
966 AC_SUBST(BUILD_CC)
967else
968 AC_CHECK_PROGS(BUILD_CC, gcc cc)
969fi
Mike Frysinger677fc912012-03-06 20:13:54 -0500970AC_CHECK_HEADERS(m4_flatten([
971 dirent.h
972 errno.h
973 execinfo.h
974 getopt.h
975 malloc.h
976 mntent.h
977 paths.h
Theodore Ts'o24487a72021-01-29 22:28:31 -0500978 pthread.h
Mike Frysinger677fc912012-03-06 20:13:54 -0500979 semaphore.h
980 setjmp.h
981 signal.h
982 stdarg.h
983 stdint.h
984 stdlib.h
985 termios.h
986 termio.h
987 unistd.h
988 utime.h
Ross Burtonc84da2e2014-07-10 17:44:38 +0100989 attr/xattr.h
Mike Frysinger677fc912012-03-06 20:13:54 -0500990 linux/falloc.h
991 linux/fd.h
Darrick J. Wong82424fc2017-05-15 11:37:11 -0700992 linux/fsmap.h
Mike Frysinger677fc912012-03-06 20:13:54 -0500993 linux/major.h
Kazuya Miofbabd5c2013-12-16 00:48:12 -0500994 linux/loop.h
Adrien Schildknechtf47f3192016-11-23 10:21:42 -0800995 linux/types.h
Mike Frysinger677fc912012-03-06 20:13:54 -0500996 net/if_dl.h
997 netinet/in.h
Darrick J. Wong81cbf1e2015-05-13 17:22:40 -0700998 sys/acl.h
Mike Frysinger677fc912012-03-06 20:13:54 -0500999 sys/disklabel.h
Andreas Dilger51050542014-06-11 12:59:05 -06001000 sys/disk.h
Mike Frysinger677fc912012-03-06 20:13:54 -05001001 sys/file.h
1002 sys/ioctl.h
Theodore Ts'o74f2c4a2015-06-19 19:28:25 -04001003 sys/key.h
Mike Frysinger677fc912012-03-06 20:13:54 -05001004 sys/mkdev.h
1005 sys/mman.h
Andreas Dilger51050542014-06-11 12:59:05 -06001006 sys/mount.h
Mike Frysinger677fc912012-03-06 20:13:54 -05001007 sys/prctl.h
Mike Frysinger677fc912012-03-06 20:13:54 -05001008 sys/resource.h
1009 sys/select.h
1010 sys/socket.h
1011 sys/sockio.h
1012 sys/stat.h
1013 sys/syscall.h
1014 sys/sysmacros.h
1015 sys/time.h
1016 sys/types.h
1017 sys/un.h
1018 sys/wait.h
Dmitry V. Levind7de3f32017-05-18 17:46:49 +00001019 sys/xattr.h
Mike Frysinger677fc912012-03-06 20:13:54 -05001020]))
Matthias Andreeec3a69b2017-08-29 01:02:36 -04001021dnl Check where to find a dd(1) that supports iflag=fullblock
1022dnl and oflag=append
1023AC_MSG_CHECKING([for a dd(1) program that supports iflag=fullblock])
1024DD=
1025for i in dd gdd ; do
1026 if "$i" if=/dev/null of=/dev/null count=1 bs=10k 2>/dev/null iflag=fullblock oflag=append ; then
1027 DD=$i
1028 break
1029 fi
1030done
1031if test -n "$DD" ; then
1032 AC_MSG_RESULT([$DD])
1033else
1034 AC_MSG_RESULT([not found, using dd])
1035 DD=dd
1036 AC_MSG_WARN([No GNU-compatible dd(1) program found, expect some self-test failures.])
1037fi
1038AC_SUBST([DD])
1039
Theodore Ts'oda76d6b2005-01-18 23:29:01 -05001040AC_CHECK_HEADERS(net/if.h,,,
1041[[
1042#if HAVE_SYS_TYPES_H
1043#include <sys/types.h>
1044#endif
1045#if HAVE_SYS_SOCKET
1046#include <sys/socket.h>
1047#endif
1048]])
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001049AC_FUNC_VPRINTF
Theodore Ts'offf45482003-04-13 00:44:19 -04001050dnl Check to see if dirent has member d_reclen. On cygwin those d_reclen
Sebastian Rasmussen055866d2017-10-08 13:30:08 +02001051dnl is not declared.
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001052AC_CHECK_MEMBER(struct dirent.d_reclen,[AC_DEFINE(HAVE_RECLEN_DIRENT, 1,
1053 [Define to 1 if dirent has d_reclen])],,
Theodore Ts'o6c65d252005-01-19 12:59:48 -05001054 [#include <dirent.h>])
Theodore Ts'o28739272014-01-03 00:26:43 -05001055AC_CHECK_MEMBERS([struct stat.st_atim])
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001056dnl Check to see if ssize_t was declared
1057AC_CHECK_TYPE(ssize_t,[AC_DEFINE(HAVE_TYPE_SSIZE_T, 1,
1058 [Define to 1 if ssize_t declared])],,
Theodore Ts'o6c65d252005-01-19 12:59:48 -05001059 [#include <sys/types.h>])
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001060dnl
Theodore Ts'ob0b9c4d1997-10-20 23:36:30 +00001061dnl Check to see if llseek() is declared in unistd.h. On some libc's
1062dnl it is, and on others it isn't..... Thank you glibc developers....
1063dnl
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001064AC_CHECK_DECL(llseek,[AC_DEFINE(HAVE_LLSEEK_PROTOTYPE, 1,
1065 [Define to 1 if llseek declared in unistd.h])],,
Theodore Ts'o6c65d252005-01-19 12:59:48 -05001066 [#include <unistd.h>])
Theodore Ts'ob0b9c4d1997-10-20 23:36:30 +00001067dnl
Theodore Ts'o6928adc2000-05-25 23:28:50 +00001068dnl Check to see if lseek64() is declared in unistd.h. Glibc's header files
1069dnl are so convoluted that I can't tell whether it will always be defined,
1070dnl and if it isn't defined while lseek64 is defined in the library,
1071dnl disaster will strike.
1072dnl
1073dnl Warning! Use of --enable-gcc-wall may throw off this test.
1074dnl
1075dnl
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001076AC_CHECK_DECL(lseek64,[AC_DEFINE(HAVE_LSEEK64_PROTOTYPE, 1,
1077 [Define to 1 if lseek64 declared in unistd.h])],,
Theodore Ts'o6c65d252005-01-19 12:59:48 -05001078 [#define _LARGEFILE_SOURCE
1079 #define _LARGEFILE64_SOURCE
1080 #include <unistd.h>])
Theodore Ts'o6928adc2000-05-25 23:28:50 +00001081dnl
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001082dnl Word sizes...
1083dnl
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001084AC_CHECK_SIZEOF(short)
1085AC_CHECK_SIZEOF(int)
1086AC_CHECK_SIZEOF(long)
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +00001087AC_CHECK_SIZEOF(long long)
Phillip Susi274d46e2013-01-24 11:21:56 -05001088AC_CHECK_SIZEOF(off_t)
Theodore Ts'o2dd680f2016-05-29 01:07:40 -04001089AC_CHECK_SIZEOF(time_t)
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001090SIZEOF_SHORT=$ac_cv_sizeof_short
1091SIZEOF_INT=$ac_cv_sizeof_int
1092SIZEOF_LONG=$ac_cv_sizeof_long
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +00001093SIZEOF_LONG_LONG=$ac_cv_sizeof_long_long
Phillip Susi274d46e2013-01-24 11:21:56 -05001094SIZEOF_OFF_T=$ac_cv_sizeof_off_t
Theodore Ts'o2dd680f2016-05-29 01:07:40 -04001095SIZEOF_TIME_T=$ac_cv_sizeof_time_t
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001096AC_SUBST(SIZEOF_SHORT)
1097AC_SUBST(SIZEOF_INT)
1098AC_SUBST(SIZEOF_LONG)
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +00001099AC_SUBST(SIZEOF_LONG_LONG)
Phillip Susi274d46e2013-01-24 11:21:56 -05001100AC_SUBST(SIZEOF_OFF_T)
Theodore Ts'o2dd680f2016-05-29 01:07:40 -04001101AC_SUBST(SIZEOF_TIME_T)
Theodore Ts'o877eb6d2001-06-11 06:54:13 +00001102AC_C_BIGENDIAN
Chen Qi91f04682014-05-05 21:08:42 -04001103if test $cross_compiling = no; then
1104 BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh
1105else
1106 CROSS_COMPILE="1" BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh
1107fi
Theodore Ts'o4ea7ea02006-04-09 08:41:55 -04001108ASM_TYPES_HEADER=./asm_types.h
1109AC_SUBST_FILE(ASM_TYPES_HEADER)
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001110dnl
Theodore Ts'o488c75a2008-06-07 08:55:21 -04001111dnl Save the configuration #defines needed for the public ext2fs.h
1112dnl header file
1113dnl
1114echo "/* These defines are needed for the public ext2fs.h header file */" \
1115 > public_config.h
1116if grep HAVE_SYS_TYPES_H confdefs.h > tmp_config.$$; then
1117 uniq tmp_config.$$ >> public_config.h
1118else
1119 echo "#undef HAVE_SYS_TYPES_H" >> public_config.h
1120fi
1121if grep WORDS_BIGENDIAN confdefs.h > tmp_config.$$; then
1122 uniq tmp_config.$$ >> public_config.h
1123else
1124 echo "#undef WORDS_BIGENDIAN" >> public_config.h
1125fi
1126rm -f tmp_config.$$
1127PUBLIC_CONFIG_HEADER=./public_config.h
1128AC_SUBST_FILE(PUBLIC_CONFIG_HEADER)
1129dnl
Theodore Ts'o0c193f82003-08-01 14:26:23 -04001130dnl See if we have inttypes.h and if intptr_t is defined
1131dnl
1132AC_CHECK_HEADERS([inttypes.h])
Theodore Ts'od2ee56d2005-01-09 00:57:45 -05001133AC_CHECK_TYPES(intptr_t)
Theodore Ts'o0c193f82003-08-01 14:26:23 -04001134dnl
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001135dnl See if struct stat has a st_flags field, in which case we can get file
1136dnl flags somewhat portably. Also check for the analogous setter, chflags().
1137dnl
1138AC_MSG_CHECKING(whether struct stat has a st_flags field)
1139AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags,
1140 AC_TRY_COMPILE([#include <sys/stat.h>],
1141 [struct stat stat; stat.st_flags = 0;],
1142 [e2fsprogs_cv_struct_st_flags=yes],
1143 [e2fsprogs_cv_struct_st_flags=no]))
1144AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags)
1145if test "$e2fsprogs_cv_struct_st_flags" = yes; then
Theodore Ts'oc03bc4e1999-10-20 18:20:36 +00001146 AC_MSG_CHECKING(whether st_flags field is useful)
1147 AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags_immut,
1148 AC_TRY_COMPILE([#include <sys/stat.h>],
1149 [struct stat stat; stat.st_flags |= UF_IMMUTABLE;],
1150 [e2fsprogs_cv_struct_st_flags_immut=yes],
1151 [e2fsprogs_cv_struct_st_flags_immut=no]))
1152 AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags_immut)
1153 if test "$e2fsprogs_cv_struct_st_flags_immut" = yes; then
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001154 AC_DEFINE(HAVE_STAT_FLAGS, 1,
1155 [Define to 1 if struct stat has st_flags])
Theodore Ts'oc03bc4e1999-10-20 18:20:36 +00001156 fi
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001157fi
Theodore Ts'o84ea6e72004-03-19 19:29:17 -05001158dnl
1159dnl Check for the presence of SA_LEN
1160dnl
Theodore Ts'o6c65d252005-01-19 12:59:48 -05001161AC_CHECK_MEMBER(struct sockaddr.sa_len,
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001162 AC_DEFINE_UNQUOTED(HAVE_SA_LEN,1,
1163 [Define to 1 if if struct sockaddr contains sa_len]),,
Theodore Ts'o6c65d252005-01-19 12:59:48 -05001164 [#include <sys/types.h>
1165 #include <sys/socket.h>])
Theodore Ts'o84ea6e72004-03-19 19:29:17 -05001166dnl
Theodore Ts'o7154d972019-02-10 21:44:05 -05001167dnl If we are using the system-provided blkid library, check for
1168dnl the functions added after migrating that library to util-linux
Eric Sandeen9ed8e5f2009-10-02 11:32:42 -05001169dnl
1170if test -n "$BLKID_CMT"; then
Theodore Ts'o7154d972019-02-10 21:44:05 -05001171 AC_CHECK_LIB(blkid, blkid_probe_get_topology,
Dongyang Lif72ea2d2019-03-06 22:59:55 +00001172 AC_DEFINE(HAVE_BLKID_PROBE_GET_TOPOLOGY, 1,
1173 [Define to 1 if blkid has blkid_probe_get_topology]))
Jan Karaf4979dd2020-07-09 16:40:57 +02001174 AC_CHECK_LIB(blkid, blkid_topology_get_dax,
1175 AC_DEFINE(HAVE_BLKID_TOPOLOGY_GET_DAX, 1,
1176 [Define to 1 if blkid has blkid_topology_get_dax]))
Theodore Ts'o7154d972019-02-10 21:44:05 -05001177 AC_CHECK_LIB(blkid, blkid_probe_enable_partitions,
Dongyang Lif72ea2d2019-03-06 22:59:55 +00001178 AC_DEFINE(HAVE_BLKID_PROBE_ENABLE_PARTITIONS, 1,
1179 [Define to 1 if blkid has blkid_probe_enable_partitions]))
Eric Sandeen9ed8e5f2009-10-02 11:32:42 -05001180fi
1181dnl
Theodore Ts'o32179ce2016-06-07 00:14:35 -04001182if test -n "$DLOPEN_LIB" ; then
1183 ac_cv_func_dlopen=yes
1184fi
Mike Frysinger677fc912012-03-06 20:13:54 -05001185AC_CHECK_FUNCS(m4_flatten([
1186 __secure_getenv
Theodore Ts'o74f2c4a2015-06-19 19:28:25 -04001187 add_key
Mike Frysinger677fc912012-03-06 20:13:54 -05001188 backtrace
Mike Frysinger677fc912012-03-06 20:13:54 -05001189 chflags
Theodore Ts'o32179ce2016-06-07 00:14:35 -04001190 dlopen
Baruch Siach9a393892014-01-02 13:05:37 -05001191 fadvise64
Mike Frysinger677fc912012-03-06 20:13:54 -05001192 fallocate
1193 fallocate64
1194 fchown
Adrien Schildknechtf47f3192016-11-23 10:21:42 -08001195 fcntl
Mike Frysinger677fc912012-03-06 20:13:54 -05001196 fdatasync
1197 fstat64
Adrien Schildknechtf47f3192016-11-23 10:21:42 -08001198 fsync
Mike Frysinger677fc912012-03-06 20:13:54 -05001199 ftruncate64
Theodore Ts'o28739272014-01-03 00:26:43 -05001200 futimes
Theodore Ts'o6c59a662014-01-04 20:44:29 -05001201 getcwd
Mike Frysinger677fc912012-03-06 20:13:54 -05001202 getdtablesize
Shuichi Ihara32b88022018-05-01 22:26:06 -06001203 gethostname
Mike Frysinger677fc912012-03-06 20:13:54 -05001204 getmntinfo
Theodore Ts'o25ff7722012-04-05 15:16:50 -07001205 getpwuid_r
Mike Frysinger677fc912012-03-06 20:13:54 -05001206 getrlimit
1207 getrusage
1208 jrand48
Theodore Ts'o74f2c4a2015-06-19 19:28:25 -04001209 keyctl
Ross Burtonc84da2e2014-07-10 17:44:38 +01001210 llistxattr
Mike Frysinger677fc912012-03-06 20:13:54 -05001211 llseek
1212 lseek64
1213 mallinfo
1214 mbstowcs
1215 memalign
Theodore Ts'o6c59a662014-01-04 20:44:29 -05001216 mempcpy
Mike Frysinger677fc912012-03-06 20:13:54 -05001217 mmap
1218 msync
1219 nanosleep
1220 open64
1221 pathconf
1222 posix_fadvise
Baruch Siach9a393892014-01-02 13:05:37 -05001223 posix_fadvise64
Mike Frysinger677fc912012-03-06 20:13:54 -05001224 posix_memalign
1225 prctl
Darrick J. Wongbaa35442014-08-02 19:18:03 -04001226 pread
1227 pwrite
Theodore Ts'of00948a2014-08-08 16:42:05 -04001228 pread64
1229 pwrite64
Theodore Ts'o1ad31742013-06-16 14:34:59 -04001230 secure_getenv
Theodore Ts'ob24efa22012-04-05 15:31:09 -07001231 setmntent
Mike Frysinger677fc912012-03-06 20:13:54 -05001232 setresgid
1233 setresuid
Theodore Ts'oc42de752014-07-08 20:02:48 -04001234 snprintf
Mike Frysinger677fc912012-03-06 20:13:54 -05001235 srandom
Theodore Ts'o6c59a662014-01-04 20:44:29 -05001236 stpcpy
Mike Frysinger677fc912012-03-06 20:13:54 -05001237 strcasecmp
1238 strdup
1239 strnlen
1240 strptime
1241 strtoull
1242 sync_file_range
1243 sysconf
1244 usleep
1245 utime
Theodore Ts'o441eb332014-10-19 22:02:48 -04001246 utimes
Mike Frysinger677fc912012-03-06 20:13:54 -05001247 valloc
1248]))
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +00001249dnl
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +00001250dnl Check to see if -lsocket is required (solaris) to make something
1251dnl that uses socket() to compile; this is needed for the UUID library
1252dnl
1253SOCKET_LIB=''
1254AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket])
1255AC_SUBST(SOCKET_LIB)
1256dnl
Darrick J. Wongb291c112014-09-13 15:12:46 -07001257dnl See if libmagic exists
1258dnl
1259AC_CHECK_LIB(magic, magic_file, [MAGIC_LIB=-lmagic
1260AC_CHECK_HEADERS([magic.h])])
Theodore Ts'o32179ce2016-06-07 00:14:35 -04001261if test "$ac_cv_func_dlopen" = yes ; then
Theodore Ts'od2e3c0d2014-09-21 01:25:58 -04001262 MAGIC_LIB=$DLOPEN_LIB
1263fi
Darrick J. Wongb291c112014-09-13 15:12:46 -07001264AC_SUBST(MAGIC_LIB)
1265dnl
Gustavo Zacarias62bc2432016-06-09 16:56:15 -04001266dnl Check to see if librt is required for clock_gettime() (glibc < 2.17)
1267dnl
1268AC_CHECK_LIB(rt, clock_gettime, [CLOCK_GETTIME_LIB=-lrt])
1269AC_SUBST(CLOCK_GETTIME_LIB)
1270dnl
Darrick J. Wong81cbf1e2015-05-13 17:22:40 -07001271dnl Check to see if the FUSE library is -lfuse or -losxfuse
1272dnl
1273FUSE_CMT=
1274FUSE_LIB=
1275dnl osxfuse.dylib supersedes fuselib.dylib
1276AC_ARG_ENABLE([fuse2fs],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -05001277AS_HELP_STRING([--disable-fuse2fs],[do not build fuse2fs]),
Darrick J. Wong81cbf1e2015-05-13 17:22:40 -07001278if test "$enableval" = "no"
1279then
1280 FUSE_CMT="#"
1281 AC_MSG_RESULT([Disabling fuse2fs])
1282else
1283 AC_CHECK_HEADERS([pthread.h fuse.h], [],
1284[AC_MSG_FAILURE([Cannot find fuse2fs headers.])],
1285[#define _FILE_OFFSET_BITS 64
1286#define FUSE_USE_VERSION 29])
1287
1288 AC_PREPROC_IFELSE(
1289[AC_LANG_PROGRAM([[#define FUSE_USE_VERSION 29
1290#ifdef __linux__
1291#include <linux/fs.h>
1292#include <linux/falloc.h>
1293#include <linux/xattr.h>
1294#endif
1295]], [])], [], [AC_MSG_FAILURE([Cannot find fuse2fs Linux headers.])])
1296
1297 AC_CHECK_LIB(osxfuse, fuse_main, [FUSE_LIB=-losxfuse],
1298 [AC_CHECK_LIB(fuse, fuse_main, [FUSE_LIB=-lfuse],
1299 [AC_MSG_FAILURE([Cannot find fuse library.])])])
1300 AC_MSG_RESULT([Enabling fuse2fs])
1301fi
1302,
1303AC_CHECK_HEADERS([pthread.h fuse.h], [], [FUSE_CMT="#"],
1304[#define _FILE_OFFSET_BITS 64
1305#define FUSE_USE_VERSION 29
1306#ifdef __linux__
1307# include <linux/fs.h>
1308# include <linux/falloc.h>
1309# include <linux/xattr.h>
1310#endif])
1311if test -z "$FUSE_CMT"
1312then
1313 AC_CHECK_LIB(osxfuse, fuse_main, [FUSE_LIB=-losxfuse],
1314[AC_CHECK_LIB(fuse, fuse_main, [FUSE_LIB=-lfuse], [FUSE_CMT="#"])])
1315fi
1316if test -z "$FUSE_CMT"
1317then
1318 AC_MSG_RESULT([Enabling fuse2fs by default.])
1319fi
1320)
1321AC_SUBST(FUSE_LIB)
1322AC_SUBST(FUSE_CMT)
1323dnl
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001324dnl See if optreset exists
1325dnl
1326AC_MSG_CHECKING(for optreset)
1327AC_CACHE_VAL(ac_cv_have_optreset,
1328[AC_EGREP_HEADER(optreset, unistd.h,
1329 ac_cv_have_optreset=yes, ac_cv_have_optreset=no)])dnl
1330AC_MSG_RESULT($ac_cv_have_optreset)
1331if test $ac_cv_have_optreset = yes; then
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001332 AC_DEFINE(HAVE_OPTRESET, 1, [Define to 1 if optreset for getopt is present])
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001333fi
1334dnl
Theodore Ts'od7f45af2008-09-12 10:15:26 -04001335dnl Test for sem_init, and which library it might require:
1336dnl
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001337AH_TEMPLATE([HAVE_SEM_INIT], [Define to 1 if sem_init() exists])
Theodore Ts'od7f45af2008-09-12 10:15:26 -04001338SEM_INIT_LIB=''
Theodore Ts'ocfb8e0b2017-07-27 19:43:00 -04001339echo GL_THREADS_API: ${gl_threads_api}
1340if test "${gl_threads_api}" != none
1341then
1342 AC_CHECK_FUNC(sem_init, ,
1343 AC_CHECK_LIB(pthread, sem_init,
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001344 AC_DEFINE(HAVE_SEM_INIT, 1)
Theodore Ts'od7f45af2008-09-12 10:15:26 -04001345 SEM_INIT_LIB=-lpthread,
Theodore Ts'ocfb8e0b2017-07-27 19:43:00 -04001346 AC_CHECK_LIB(rt, sem_init,
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001347 AC_DEFINE(HAVE_SEM_INIT, 1)
Theodore Ts'od7f45af2008-09-12 10:15:26 -04001348 SEM_INIT_LIB=-lrt,
Theodore Ts'ocfb8e0b2017-07-27 19:43:00 -04001349 AC_CHECK_LIB(posix4, sem_init,
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001350 AC_DEFINE(HAVE_SEM_INIT, 1)
Theodore Ts'od7f45af2008-09-12 10:15:26 -04001351 SEM_INIT_LIB=-lposix4))))dnl
Theodore Ts'ocfb8e0b2017-07-27 19:43:00 -04001352fi
Theodore Ts'od7f45af2008-09-12 10:15:26 -04001353AC_SUBST(SEM_INIT_LIB)
1354dnl
Theodore Ts'oe54635d2006-08-06 14:33:13 -04001355dnl Check for unified diff
1356dnl
1357AC_MSG_CHECKING(for unified diff option)
Theodore Ts'o27f991b2008-04-01 20:32:55 -04001358if diff -u $0 $0 > /dev/null 2>&1 ; then
Theodore Ts'oe54635d2006-08-06 14:33:13 -04001359 UNI_DIFF_OPTS=-u
1360else
1361 UNI_DIFF_OPTS=-c
1362fi
1363AC_MSG_RESULT($UNI_DIFF_OPTS)
1364AC_SUBST(UNI_DIFF_OPTS)
1365dnl
Theodore Ts'o8f3f29d2000-02-11 05:04:44 +00001366dnl We use the EXT2 ioctls only under Linux
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001367dnl
Theodore Ts'o8f3f29d2000-02-11 05:04:44 +00001368case "$host_os" in
1369linux*)
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001370 AC_DEFINE(HAVE_EXT2_IOCTLS, 1, [Define to 1 if Ext2 ioctls present])
Theodore Ts'o8f3f29d2000-02-11 05:04:44 +00001371 ;;
1372esac
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001373dnl
Nicholas Clarkea1a3fa2018-10-16 15:37:45 -04001374dnl Check the available mount options
1375dnl
1376AX_CHECK_MOUNT_OPT(nosuid)
1377AX_CHECK_MOUNT_OPT(nodev)
Darrick J. Wong4aece322018-03-08 12:15:23 -08001378dnl Enable LTO for all packages
1379dnl
1380AC_ARG_ENABLE([lto],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -05001381AS_HELP_STRING([--enable-lto],[enable link time optimization]),,
Theodore Ts'o139a3092018-08-17 22:26:24 -04001382enable_lto=no)
Darrick J. Wong4aece322018-03-08 12:15:23 -08001383if test "$enable_lto" = "yes" || test "$enable_lto" = "probe"; then
1384 AC_MSG_CHECKING([if C compiler supports LTO])
1385 OLD_CFLAGS="$CFLAGS"
1386 OLD_LDFLAGS="$LDFLAGS"
Theodore Ts'o49715702018-08-08 22:16:07 -04001387 LTO_FLAGS="-g -flto -ffat-lto-objects"
Darrick J. Wong4aece322018-03-08 12:15:23 -08001388 CFLAGS="$CFLAGS $LTO_FLAGS"
1389 LDFLAGS="$LDFLAGS $LTO_FLAGS"
1390 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1391 [AC_MSG_RESULT([yes])]
1392 [lto_cflags=$LTO_FLAGS]
1393 [lto_ldflags=$LTO_FLAGS]
1394 [AC_PATH_PROG(gcc_ar, gcc-ar,,)]
1395 [AC_PATH_PROG(gcc_ranlib, gcc-ranlib,,)],
1396 [AC_MSG_RESULT([no])])
1397 if test -x "$gcc_ar" && test -x "$gcc_ranlib"; then
1398 have_lto=yes
1399 AR="${gcc_ar}"
1400 RANLIB="${gcc_ranlib}"
1401 fi
1402 CFLAGS="${OLD_CFLAGS}"
1403 LDFLAGS="${OLD_LDFLAGS}"
1404 AC_SUBST(have_lto)
1405 AC_SUBST(lto_cflags)
1406 AC_SUBST(lto_ldflags)
1407fi
1408if test "$enable_lto" = "yes" && test "$have_lto" != "yes"; then
1409 AC_MSG_ERROR([LTO not supported by compiler.])
1410fi
1411dnl
Darrick J. Wong1c2a76a2018-03-08 12:15:29 -08001412dnl Enable UBSAN for all packages
1413dnl
1414AC_ARG_ENABLE([ubsan],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -05001415AS_HELP_STRING([--enable-ubsan],[enable undefined behavior sanitizer]),,
Darrick J. Wong1c2a76a2018-03-08 12:15:29 -08001416enable_ubsan=no)
1417if test "$enable_ubsan" = "yes" || test "$enable_ubsan" = "probe"; then
1418 AC_MSG_CHECKING([if C compiler supports UBSAN])
1419 OLD_CFLAGS="$CFLAGS"
1420 OLD_LDFLAGS="$LDFLAGS"
1421 UBSAN_FLAGS="-fsanitize=undefined"
1422 CFLAGS="$CFLAGS $UBSAN_FLAGS"
1423 LDFLAGS="$LDFLAGS $UBSAN_FLAGS"
1424 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1425 [AC_MSG_RESULT([yes])]
1426 [ubsan_cflags=$UBSAN_FLAGS]
1427 [ubsan_ldflags=$UBSAN_FLAGS]
1428 [have_ubsan=yes],
1429 [AC_MSG_RESULT([no])])
1430 CFLAGS="${OLD_CFLAGS}"
1431 LDFLAGS="${OLD_LDFLAGS}"
1432 AC_SUBST(have_ubsan)
1433 AC_SUBST(ubsan_cflags)
1434 AC_SUBST(ubsan_ldflags)
1435fi
1436if test "$enable_ubsan" = "yes" && test "$have_ubsan" != "yes"; then
1437 AC_MSG_ERROR([UBSAN not supported by compiler.])
1438fi
1439dnl
Darrick J. Wong5e666e32018-03-08 12:15:35 -08001440dnl Enable ADDRSAN for all packages
1441dnl
1442AC_ARG_ENABLE([addrsan],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -05001443AS_HELP_STRING([--enable-addrsan],[enable address sanitizer]),,
Darrick J. Wong5e666e32018-03-08 12:15:35 -08001444enable_addrsan=no)
1445if test "$enable_addrsan" = "yes" || test "$enable_addrsan" = "probe"; then
1446 AC_MSG_CHECKING([if C compiler supports ADDRSAN])
1447 OLD_CFLAGS="$CFLAGS"
1448 OLD_LDFLAGS="$LDFLAGS"
1449 ADDRSAN_FLAGS="-fsanitize=address"
1450 CFLAGS="$CFLAGS $ADDRSAN_FLAGS"
1451 LDFLAGS="$LDFLAGS $ADDRSAN_FLAGS"
1452 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1453 [AC_MSG_RESULT([yes])]
1454 [addrsan_cflags=$ADDRSAN_FLAGS]
1455 [addrsan_ldflags=$ADDRSAN_FLAGS]
1456 [have_addrsan=yes],
1457 [AC_MSG_RESULT([no])])
1458 CFLAGS="${OLD_CFLAGS}"
1459 LDFLAGS="${OLD_LDFLAGS}"
1460 AC_SUBST(have_addrsan)
1461 AC_SUBST(addrsan_cflags)
1462 AC_SUBST(addrsan_ldflags)
1463fi
1464if test "$enable_addrsan" = "yes" && test "$have_addrsan" != "yes"; then
1465 AC_MSG_ERROR([ADDRSAN not supported by compiler.])
1466fi
1467dnl
Darrick J. Wongbcca7862018-03-08 12:15:43 -08001468dnl Enable THREADSAN for all packages
1469dnl
1470AC_ARG_ENABLE([threadsan],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -05001471AS_HELP_STRING([--enable-threadsan],[enable thread sanitizer]),,
Darrick J. Wongbcca7862018-03-08 12:15:43 -08001472enable_threadsan=no)
1473if test "$enable_threadsan" = "yes" || test "$enable_threadsan" = "probe"; then
1474 AC_MSG_CHECKING([if C compiler supports THREADSAN])
1475 OLD_CFLAGS="$CFLAGS"
1476 OLD_LDFLAGS="$LDFLAGS"
1477 THREADSAN_FLAGS="-fsanitize=thread"
1478 CFLAGS="$CFLAGS $THREADSAN_FLAGS"
1479 LDFLAGS="$LDFLAGS $THREADSAN_FLAGS"
1480 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1481 [AC_MSG_RESULT([yes])]
1482 [threadsan_cflags=$THREADSAN_FLAGS]
1483 [threadsan_ldflags=$THREADSAN_FLAGS]
1484 [have_threadsan=yes],
1485 [AC_MSG_RESULT([no])])
1486 CFLAGS="${OLD_CFLAGS}"
1487 LDFLAGS="${OLD_LDFLAGS}"
1488 AC_SUBST(have_threadsan)
1489 AC_SUBST(threadsan_cflags)
1490 AC_SUBST(threadsan_ldflags)
1491fi
1492if test "$enable_threadsan" = "yes" && test "$have_threadsan" != "yes"; then
1493 AC_MSG_ERROR([THREADSAN not supported by compiler.])
1494fi
1495if test "$have_threadsan" = "yes" && test "$have_addrsan" = "yes"; then
1496 AC_MSG_WARN([ADDRSAN and THREADSAN are not known to work together.])
1497fi
1498dnl
Theodore Ts'offf45482003-04-13 00:44:19 -04001499dnl OS-specific uncomment control
Theodore Ts'oe6f2bda2002-08-18 03:37:10 -04001500dnl
1501LINUX_CMT="#"
Theodore Ts'offf45482003-04-13 00:44:19 -04001502CYGWIN_CMT="#"
1503UNIX_CMT=
Theodore Ts'oe6f2bda2002-08-18 03:37:10 -04001504case "$host_os" in
1505linux*)
1506 LINUX_CMT=
1507 ;;
Theodore Ts'offf45482003-04-13 00:44:19 -04001508cygwin)
1509 CYGWIN_CMT=
1510 UNIX_CMT="#"
Theodore Ts'offf45482003-04-13 00:44:19 -04001511 ;;
Theodore Ts'oe6f2bda2002-08-18 03:37:10 -04001512esac
1513AC_SUBST(LINUX_CMT)
Theodore Ts'offf45482003-04-13 00:44:19 -04001514AC_SUBST(CYGWIN_CMT)
1515AC_SUBST(UNIX_CMT)
Theodore Ts'oe6f2bda2002-08-18 03:37:10 -04001516dnl
Darrick J. Wong5ce368f2018-03-23 18:57:09 -07001517dnl e2scrub only builds on linux
1518dnl
1519E2SCRUB_CMT="$LINUX_CMT"
1520AC_SUBST(E2SCRUB_CMT)
1521dnl
Theodore Ts'o6c133521999-07-03 20:37:03 +00001522dnl Linux and Hurd places root files in the / by default
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001523dnl
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001524case "$host_os" in
Theodore Ts'o93636bd2003-07-12 02:45:05 -04001525linux* | gnu* | k*bsd*-gnu)
Theodore Ts'oa4b2d3c1998-04-03 16:12:25 +00001526 if test "$prefix" = NONE -a "$root_prefix" = NONE ; then
1527 root_prefix="";
Theodore Ts'o02d04db2008-08-22 10:52:42 -04001528 AC_MSG_RESULT([On $host_os systems, root_prefix defaults to ''])
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +00001529 fi
1530 ;;
1531esac
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +00001532dnl
Theodore Ts'oa4b2d3c1998-04-03 16:12:25 +00001533dnl On Linux/hurd, force the prefix to be /usr
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +00001534dnl
1535case "$host_os" in
Theodore Ts'o93636bd2003-07-12 02:45:05 -04001536linux* | gnu* | k*bsd*-gnu)
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +00001537 if test "$prefix" = NONE ; then
Theodore Ts'oa4b2d3c1998-04-03 16:12:25 +00001538 prefix="/usr";
Theodore Ts'o02d04db2008-08-22 10:52:42 -04001539 AC_MSG_RESULT([On $host_os systems, prefix defaults to /usr])
Theodore Ts'obff61a72002-05-21 22:21:38 -04001540 if test "$mandir" = '${prefix}/man' ; then
Theodore Ts'o02d04db2008-08-22 10:52:42 -04001541 AC_MSG_RESULT([...and mandir defaults to /usr/share/man])
Theodore Ts'obff61a72002-05-21 22:21:38 -04001542 mandir=/usr/share/man
1543 fi
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001544 fi
1545;;
1546esac
Theodore Ts'oa4b2d3c1998-04-03 16:12:25 +00001547if test "$root_prefix" = NONE ; then
Theodore Ts'offe19911998-04-08 06:05:49 +00001548 if test "$prefix" = NONE ; then
Theodore Ts'oa4b2d3c1998-04-03 16:12:25 +00001549 root_prefix="$ac_default_prefix"
1550 else
1551 root_prefix="$prefix"
1552 fi
Theodore Ts'ob5ffead2002-05-11 19:17:00 -04001553 root_bindir=$bindir
1554 root_sbindir=$sbindir
1555 root_libdir=$libdir
1556 root_sysconfdir=$sysconfdir
1557else
1558 root_bindir='${root_prefix}/bin'
1559 root_sbindir='${root_prefix}/sbin'
1560 root_libdir='${root_prefix}/lib'
1561 root_sysconfdir='${root_prefix}/etc'
Theodore Ts'oa4b2d3c1998-04-03 16:12:25 +00001562fi
Theodore Ts'oc4ef11c2008-01-04 16:55:37 -05001563if test "$bindir" != '${exec_prefix}/bin'; then
1564 root_bindir=$bindir
Theodore Ts'o02d04db2008-08-22 10:52:42 -04001565 AC_MSG_RESULT([Setting root_bindir to $root_bindir])
Theodore Ts'oc4ef11c2008-01-04 16:55:37 -05001566fi
1567if test "$sbindir" != '${exec_prefix}/sbin'; then
1568 root_sbindir=$sbindir
Theodore Ts'o02d04db2008-08-22 10:52:42 -04001569 AC_MSG_RESULT([Setting root_sbindir to $root_sbindir])
Theodore Ts'oc4ef11c2008-01-04 16:55:37 -05001570fi
1571if test "$libdir" != '${exec_prefix}/lib'; then
1572 root_libdir=$libdir
Theodore Ts'o02d04db2008-08-22 10:52:42 -04001573 AC_MSG_RESULT([Setting root_libdir to $root_libdir])
Theodore Ts'oc4ef11c2008-01-04 16:55:37 -05001574fi
1575if test "$sysconfdir" != '${prefix}/etc'; then
1576 root_sysconfdir=$sysconfdir
Theodore Ts'o02d04db2008-08-22 10:52:42 -04001577 AC_MSG_RESULT([Setting root_sysconfdir to $root_sysconfdir])
Theodore Ts'oc4ef11c2008-01-04 16:55:37 -05001578fi
Theodore Ts'oa4b2d3c1998-04-03 16:12:25 +00001579AC_SUBST(root_prefix)
Theodore Ts'ob5ffead2002-05-11 19:17:00 -04001580AC_SUBST(root_bindir)
1581AC_SUBST(root_sbindir)
1582AC_SUBST(root_libdir)
1583AC_SUBST(root_sysconfdir)
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001584dnl
Theodore Ts'o55e00a22011-09-18 23:53:23 -04001585dnl Allow specification of the multiarch arch
1586dnl
1587AC_ARG_WITH([multiarch],
Theodore Ts'o8c9e2922021-02-09 15:54:12 -05001588AS_HELP_STRING([--with-multiarch=ARCH],[specify the multiarch triplet]),
Theodore Ts'od7fa4102014-02-05 15:45:36 -05001589if test "$withval" = "lib64"; then
1590 libdir=/usr/lib64
1591 root_libdir=/lib64
1592else
1593 libdir=$libdir/$withval
1594 root_libdir=$root_libdir/$withval
1595fi
Darrick J. Wonga2df5892018-03-23 18:57:22 -07001596)
1597dnl
Theodore Ts'o55e00a22011-09-18 23:53:23 -04001598dnl
Theodore Ts'od3de1a72012-12-15 22:10:27 -05001599dnl See if -static works. This could fail if the linker does not
1600dnl support -static, or if required external libraries are not available
1601dnl in static form.
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001602dnl
Theodore Ts'od3de1a72012-12-15 22:10:27 -05001603AC_MSG_CHECKING([whether we can link with -static])
Theodore Ts'oae851481997-04-29 18:13:24 +00001604AC_CACHE_VAL(ac_cv_e2fsprogs_use_static,
Theodore Ts'ofd1677e2016-05-21 23:51:19 -04001605[SAVE_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS_STATIC -static"
Theodore Ts'oae851481997-04-29 18:13:24 +00001606AC_TRY_LINK([#include <stdio.h>],[fflush(stdout);],
1607 ac_cv_e2fsprogs_use_static=yes, ac_cv_e2fsprogs_use_static=no)
1608LDFLAGS=$SAVE_LDFLAGS])
Theodore Ts'odefde781999-01-04 07:39:19 +00001609dnl
1610dnl Regardless of how the test turns out, Solaris doesn't handle -static
1611dnl This is caused by the socket library requiring the nsl library, which
1612dnl requires the -dl library, which only works for dynamically linked
1613dnl programs. It basically means you can't have statically linked programs
1614dnl which use the network under Solaris.
1615dnl
1616case "$host_os" in
1617solaris2.*)
1618 ac_cv_e2fsprogs_use_static=no
1619;;
1620esac
Theodore Ts'oae851481997-04-29 18:13:24 +00001621AC_MSG_RESULT($ac_cv_e2fsprogs_use_static)
Theodore Ts'oae851481997-04-29 18:13:24 +00001622if test $ac_cv_e2fsprogs_use_static = yes; then
Theodore Ts'ofd1677e2016-05-21 23:51:19 -04001623 LDFLAGS_STATIC="$LDFLAGS_STATIC -static"
Theodore Ts'oae851481997-04-29 18:13:24 +00001624fi
Theodore Ts'ofd1677e2016-05-21 23:51:19 -04001625AC_SUBST(LDFLAGS_STATIC)
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001626dnl
Theodore Ts'o07a0db12003-07-05 14:50:24 -04001627dnl Work around mysterious Darwin / GNU libintl problem
1628dnl (__asm__ redirection doesn't work for some mysterious reason. Looks like
1629dnl Apple hacked gcc somehow?)
1630dnl
1631case "$host_os" in
1632darwin*)
Theodore Ts'o02d04db2008-08-22 10:52:42 -04001633 AC_MSG_RESULT([Using Apple Darwin / GNU libintl workaround])
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001634 AC_DEFINE(_INTL_REDIRECT_MACROS, 1,
1635 [Define to 1 if Apple Darwin libintl workaround is needed])
Theodore Ts'o07a0db12003-07-05 14:50:24 -04001636 ;;
1637esac
1638dnl
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001639dnl Only try to run the test suite if we're not cross compiling.
1640dnl
1641if test "$cross_compiling" = yes ; then
1642 DO_TEST_SUITE=
1643else
1644 DO_TEST_SUITE=check
1645fi
1646AC_SUBST(DO_TEST_SUITE)
1647dnl
Theodore Ts'oc6f35b82003-05-17 16:29:27 -04001648dnl Only include the intl include files if we're building with them
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001649dnl
1650INCLUDES='-I. -I$(top_builddir)/lib -I$(top_srcdir)/lib'
1651if test -n "$CPPFLAGS" ; then
1652 INCLUDES="$INCLUDES $CPPFLAGS"
Theodore Ts'oc6f35b82003-05-17 16:29:27 -04001653fi
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001654if test "$USE_INCLUDED_LIBINTL" = "yes" ; then
1655 INCLUDES=$INCLUDES' -I$(top_builddir)/intl -I$(top_srcdir)/intl'
1656fi
Theodore Ts'o6c59a662014-01-04 20:44:29 -05001657if test -n "$WITH_DIET_LIBC" ; then
1658 INCLUDES="$INCLUDES -D_REENTRANT"
1659fi
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001660AC_SUBST(INCLUDES)
Theodore Ts'oc6f35b82003-05-17 16:29:27 -04001661dnl
Theodore Ts'odd947da2005-11-09 18:37:07 -04001662dnl Build CFLAGS
1663dnl
1664if test $cross_compiling = no; then
Theodore Ts'o28739272014-01-03 00:26:43 -05001665 BUILD_CFLAGS="$CFLAGS $CPPFLAGS $INCLUDES -DHAVE_CONFIG_H"
Theodore Ts'odd947da2005-11-09 18:37:07 -04001666 BUILD_LDFLAGS="$LDFLAGS"
Theodore Ts'odd947da2005-11-09 18:37:07 -04001667fi
1668AC_SUBST(BUILD_CFLAGS)
1669AC_SUBST(BUILD_LDFLAGS)
1670dnl
Theodore Ts'ofd1677e2016-05-21 23:51:19 -04001671dnl Define CFLAGS and LDFLAGS for shared libraries
1672dnl
1673CFLAGS_SHLIB=${CFLAGS_SHLIB:-$CFLAGS}
1674CFLAGS_STLIB=${CFLAGS_STLIB:-$CFLAGS}
1675LDFLAGS_SHLIB=${LDFLAGS_SHLIB:-$LDFLAGS}
1676AC_SUBST(CFLAGS_SHLIB)
1677AC_SUBST(CFLAGS_STLIB)
1678AC_SUBST(LDFLAGS_SHLIB)
Darrick J. Wong5ce368f2018-03-23 18:57:09 -07001679
1680dnl
1681dnl Where do udev rules go?
1682dnl
1683AC_ARG_WITH([udev_rules_dir],
1684 [AS_HELP_STRING([--with-udev-rules-dir@<:@=DIR@:>@],
1685 [Install udev rules into DIR.])],
1686 [],
1687 [with_udev_rules_dir=yes])
1688AS_IF([test "x${with_udev_rules_dir}" != "xno"],
1689 [
1690 AS_IF([test "x${with_udev_rules_dir}" = "xyes"],
1691 [
1692 PKG_CHECK_MODULES([udev], [udev],
1693 [
1694 with_udev_rules_dir="$($PKG_CONFIG --variable=udevdir udev)/rules.d"
1695 ], [
1696 with_udev_rules_dir=""
1697 ])
1698 ])
1699 AC_MSG_CHECKING([for udev rules dir])
1700 pkg_udev_rules_dir="${with_udev_rules_dir}"
1701 AS_IF([test -n "${pkg_udev_rules_dir}"],
1702 [
1703 AC_MSG_RESULT(${pkg_udev_rules_dir})
1704 have_udev="yes"
1705 ],
1706 [
1707 AC_MSG_RESULT(no)
1708 have_udev="no"
1709 ])
1710 ],
1711 [
1712 have_udev="disabled"
1713 ])
1714AC_SUBST(have_udev)
1715AC_SUBST(pkg_udev_rules_dir)
1716
Theodore Ts'ofd1677e2016-05-21 23:51:19 -04001717dnl
Darrick J. Wonga2df5892018-03-23 18:57:22 -07001718dnl Where do cron jobs go?
1719dnl
1720AC_ARG_WITH([crond_dir],
1721 [AS_HELP_STRING([--with-crond-dir@<:@=DIR@:>@],
1722 [Install system crontabs into DIR.])],
1723 [],
1724 [with_crond_dir=yes])
1725AS_IF([test "x${with_crond_dir}" != "xno"],
1726 [
1727 AS_IF([test "x${with_crond_dir}" = "xyes"],
1728 [
1729 AS_IF([test -d "/etc/cron.d"],
Theodore Ts'o188bf392019-05-22 13:03:38 -04001730 [with_crond_dir="/etc/cron.d"],
1731 [have_crond="no"; with_crond_dir=""])
Darrick J. Wonga2df5892018-03-23 18:57:22 -07001732 ])
1733 AC_MSG_CHECKING([for system crontab dir])
1734 crond_dir="${with_crond_dir}"
1735 AS_IF([test -n "${crond_dir}"],
1736 [
1737 AC_MSG_RESULT(${crond_dir})
1738 have_crond="yes"
1739 ],
1740 [
1741 AC_MSG_RESULT(no)
1742 have_crond="no"
1743 ])
1744 ],
1745 [
1746 have_crond="disabled"
1747 ])
1748AC_SUBST(have_crond)
1749AC_SUBST(crond_dir)
1750
1751dnl
1752dnl Where do systemd services go?
1753dnl
1754AC_ARG_WITH([systemd_unit_dir],
1755 [AS_HELP_STRING([--with-systemd-unit-dir@<:@=DIR@:>@],
1756 [Install systemd system units into DIR.])],
1757 [],
1758 [with_systemd_unit_dir=yes])
1759AS_IF([test "x${with_systemd_unit_dir}" != "xno"],
1760 [
1761 AS_IF([test "x${with_systemd_unit_dir}" = "xyes"],
1762 [
1763 PKG_CHECK_MODULES([systemd], [systemd],
1764 [
1765 with_systemd_unit_dir="$($PKG_CONFIG --variable=systemdsystemunitdir systemd)"
1766 ], [
1767 with_systemd_unit_dir=""
1768 ])
1769 m4_pattern_allow([^PKG_(MAJOR|MINOR|BUILD|REVISION)$])
1770 ])
1771 AC_MSG_CHECKING([for systemd system unit dir])
1772 systemd_system_unit_dir="${with_systemd_unit_dir}"
1773 AS_IF([test -n "${systemd_system_unit_dir}"],
1774 [
1775 AC_MSG_RESULT(${systemd_system_unit_dir})
1776 have_systemd="yes"
1777 ],
1778 [
1779 AC_MSG_RESULT(no)
1780 have_systemd="no"
1781 ])
1782 ],
1783 [
1784 have_systemd="disabled"
1785 ])
1786AC_SUBST(have_systemd)
1787AC_SUBST(systemd_system_unit_dir)
1788
1789dnl
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001790dnl Make our output files, being sure that we create the some miscellaneous
1791dnl directories
1792dnl
1793test -d lib || mkdir lib
1794test -d include || mkdir include
1795test -d include/linux || mkdir include/linux
Theodore Ts'odefde781999-01-04 07:39:19 +00001796test -d include/asm || mkdir include/asm
Theodore Ts'o44dfb372015-07-01 19:42:05 -04001797if test -z "$UUID_CMT" ; then
1798 uuid_out_list="lib/uuid/Makefile lib/uuid/uuid.pc \
1799 lib/uuid/uuid_types.h"
1800fi
1801if test -z "$BLKID_CMT" ; then
1802 blkid_out_list="lib/blkid/Makefile lib/blkid/blkid.pc \
1803 lib/blkid/blkid_types.h"
1804fi
Theodore Ts'oe5f0f3e2018-08-18 10:42:44 -04001805for i in MCONFIG Makefile \
Theodore Ts'o183c73b2012-05-12 23:13:24 -04001806 util/Makefile util/subst.conf util/gen-tarball util/install-symlink \
Theodore Ts'o4ea7ea02006-04-09 08:41:55 -04001807 lib/et/Makefile lib/ss/Makefile lib/e2p/Makefile \
1808 lib/ext2fs/Makefile lib/ext2fs/ext2_types.h \
Theodore Ts'of34af412015-07-11 23:05:57 -04001809 $uuid_out_list $blkid_out_list lib/support/Makefile \
Theodore Ts'o44dfb372015-07-01 19:42:05 -04001810 lib/ss/ss.pc lib/et/com_err.pc lib/e2p/e2p.pc lib/ext2fs/ext2fs.pc \
Theodore Ts'o921f4ad2004-11-19 17:25:27 -05001811 misc/Makefile ext2ed/Makefile e2fsck/Makefile \
Theodore Ts'o94ba8c72003-03-02 02:07:14 -05001812 debugfs/Makefile tests/Makefile tests/progs/Makefile \
Theodore Ts'oe598c292020-11-24 23:00:57 -05001813 resize/Makefile doc/Makefile po/Makefile.in scrub/Makefile; do
Theodore Ts'o94ba8c72003-03-02 02:07:14 -05001814 if test -d `dirname ${srcdir}/$i` ; then
1815 outlist="$outlist $i"
1816 fi
1817done
1818AC_OUTPUT($outlist)
Theodore Ts'oee683a12005-02-05 15:53:56 -05001819if test -f util/gen-tarball; then chmod +x util/gen-tarball; fi