blob: cf03444d8f178fd28b08ed4aef69ce4e0cf5bbdb [file] [log] [blame]
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001AC_INIT(version.h)
Theodore Ts'o37cdbee2012-12-22 22:24:45 -05002AC_PREREQ(2.54)
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'o32493942007-12-31 10:45:01 -050072[ --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'o0b5b9f92009-09-06 21:28:47 -040092AC_HELP_STRING([--with-cc],[no longer supported, use CC= instead]),
93AC_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'o0b5b9f92009-09-06 21:28:47 -040096AC_HELP_STRING([--with-ccopts],[no longer supported, use CFLAGS= instead]),
97AC_MSG_ERROR([--with-ccopts no longer supported; use CFLAGS= instead]))
98dnl
99AC_ARG_WITH([ldopts],
100AC_HELP_STRING([--with-ldopts],[no longer supported, use LDFLAGS= instead]),
101AC_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],
138[ --with-root-prefix=PREFIX override prefix variable for files to be placed in the root],
139root_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],
145[ --enable-maintainer-mode enable makefile rules useful for maintainers],
146if 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],
163[ --enable-symlink-install use symlinks when installing instead of hard links],
164if 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'o183c73b2012-05-12 23:13:24 -0400182[ --enable-relative-symlinks use relative symlinks when installing],
183if 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],
214[ --enable-symlink-build use symlinks while building instead of hard links],
215if 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'o5aa6c3f2010-05-17 19:21:42 -0400232[ --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'oa4d09611997-04-29 14:28:00 +0000264[ --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'oa4d09611997-04-29 14:28:00 +0000296[ --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'oa4d09611997-04-29 14:28:00 +0000326[ --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],
349[ --enable-gcov build for coverage testing using gcov],
350if 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],
365[ --enable-hardening build for coverage testing using gcov],
366if 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],
391[ --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'od21ae6c2003-05-05 09:00:24 -0400407[ --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'oaf773652008-09-01 11:27:27 -0400423[ --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
Scott James Remnant39fd3d42009-05-14 13:03:25 +0100442dnl handle --disable-libuuid
443dnl
444PKG_PROG_PKG_CONFIG
445LIBUUID=
446DEPLIBUUID=
447STATIC_LIBUUID=
448DEPSTATIC_LIBUUID=
449PROFILED_LIBUUID=
450DEPPROFILED_LIBUUID=
451UUID_CMT=
452AC_ARG_ENABLE([libuuid],
Theodore Ts'of5dffb82015-06-20 14:20:14 -0400453[ --enable-libuuid build and use private uuid library],
Scott James Remnant39fd3d42009-05-14 13:03:25 +0100454if test "$enableval" = "no"
455then
456 if test -z "$PKG_CONFIG"; then
457 AC_MSG_ERROR([pkg-config not installed; please install it.])
458 fi
459
460 AC_CHECK_LIB(uuid, uuid_generate,
461 [LIBUUID=`$PKG_CONFIG --libs uuid`;
462 STATIC_LIBUUID=`$PKG_CONFIG --static --libs uuid`],
Theodore Ts'o2d7583b2014-07-05 00:27:02 -0400463 [AC_MSG_ERROR([external uuid library not found])])
Theodore Ts'o5afdf372014-09-18 21:11:33 -0400464 PROFILED_LIBUUID=$LIBUUID
Scott James Remnant39fd3d42009-05-14 13:03:25 +0100465 UUID_CMT=#
466 AC_MSG_RESULT([Disabling private uuid library])
467else
468 LIBUUID='$(LIB)/libuuid'$LIB_EXT
469 DEPLIBUUID=$LIBUUID
470 STATIC_LIBUUID='$(LIB)/libuuid'$STATIC_LIB_EXT
471 DEPSTATIC_LIBUUID=$STATIC_LIBUUID
472 PROFILED_LIBUUID='$(LIB)/libuuid'$PROFILED_LIB_EXT
473 DEPPROFILED_LIBUUID=$PROFILED_LIBUUID
474 AC_MSG_RESULT([Enabling private uuid library])
475fi
476,
Theodore Ts'of5dffb82015-06-20 14:20:14 -0400477if test -n "$PKG_CONFIG"; then
478 AC_CHECK_LIB(uuid, uuid_generate,
479 [LIBUUID=`$PKG_CONFIG --libs uuid`;
480 STATIC_LIBUUID=`$PKG_CONFIG --static --libs uuid`])
481fi
482if test -n "$LIBUUID"; then
483 PROFILED_LIBUUID=$LIBUUID
484 UUID_CMT=#
485 AC_MSG_RESULT([Using system uuid by default])
486else
487 LIBUUID='$(LIB)/libuuid'$LIB_EXT
488 DEPLIBUUID=$LIBUUID
489 STATIC_LIBUUID='$(LIB)/libuuid'$STATIC_LIB_EXT
490 DEPSTATIC_LIBUUID=$STATIC_LIBUUID
491 PROFILED_LIBUUID='$(LIB)/libuuid'$PROFILED_LIB_EXT
492 DEPPROFILED_LIBUUID=$PROFILED_LIBUUID
493 AC_MSG_RESULT([Enabling private uuid library by default])
494fi
Scott James Remnant39fd3d42009-05-14 13:03:25 +0100495)
496AC_SUBST(LIBUUID)
497AC_SUBST(DEPLIBUUID)
498AC_SUBST(STATIC_LIBUUID)
499AC_SUBST(DEPSTATIC_LIBUUID)
500AC_SUBST(PROFILED_LIBUUID)
501AC_SUBST(DEPPROFILED_LIBUUID)
502AC_SUBST(UUID_CMT)
503dnl
Theodore Ts'o14b596d2009-04-22 09:18:30 -0400504dnl handle --disable-libblkid
505dnl
506PKG_PROG_PKG_CONFIG
507LIBBLKID=
508DEPLIBBLKID=
509STATIC_LIBBLKID=
510DEPSTATIC_LIBBLKID=
511PROFILED_LIBBLKID=
512DEPPROFILED_LIBBLKID=
513BLKID_CMT=
Theodore Ts'od1154eb2011-09-18 17:34:37 -0400514AH_TEMPLATE([CONFIG_BUILD_FINDFS], [Define to 1 to compile findfs])
Theodore Ts'o14b596d2009-04-22 09:18:30 -0400515AC_ARG_ENABLE([libblkid],
Theodore Ts'of5dffb82015-06-20 14:20:14 -0400516[ --enable-libblkid build and use private blkid library],
Theodore Ts'o14b596d2009-04-22 09:18:30 -0400517if test "$enableval" = "no"
518then
519 if test -z "$PKG_CONFIG"; then
520 AC_MSG_ERROR([pkg-config not installed; please install it.])
521 fi
522
523 AC_CHECK_LIB(blkid, blkid_get_cache,
524 [LIBBLKID=`$PKG_CONFIG --libs blkid`;
525 STATIC_LIBBLKID=`$PKG_CONFIG --static --libs blkid`],
Theodore Ts'o2d7583b2014-07-05 00:27:02 -0400526 [AC_MSG_ERROR([external blkid library not found])], -luuid)
Theodore Ts'o14b596d2009-04-22 09:18:30 -0400527 BLKID_CMT=#
Theodore Ts'o5afdf372014-09-18 21:11:33 -0400528 PROFILED_LIBBLKID=$LIBBLKID
Theodore Ts'o14b596d2009-04-22 09:18:30 -0400529 AC_MSG_RESULT([Disabling private blkid library])
530else
531 LIBBLKID='$(LIB)/libblkid'$LIB_EXT
532 DEPLIBBLKID=$LIBBLKID
533 STATIC_LIBBLKID='$(LIB)/libblkid'$STATIC_LIB_EXT
534 DEPSTATIC_LIBBLKID=$STATIC_LIBBLKID
535 PROFILED_LIBBLKID='$(LIB)/libblkid'$PROFILED_LIB_EXT
536 DEPPROFILED_LIBBLKID=$PROFILED_LIBBLKID
Theodore Ts'od1154eb2011-09-18 17:34:37 -0400537 AC_DEFINE(CONFIG_BUILD_FINDFS, 1)
Theodore Ts'o14b596d2009-04-22 09:18:30 -0400538 AC_MSG_RESULT([Enabling private blkid library])
539fi
540,
Theodore Ts'of5dffb82015-06-20 14:20:14 -0400541if test -n "$PKG_CONFIG"; then
542 AC_CHECK_LIB(blkid, blkid_get_cache,
543 [LIBBLKID=`$PKG_CONFIG --libs blkid`;
544 STATIC_LIBBLKID=`$PKG_CONFIG --static --libs blkid`])
545fi
546if test -n "$LIBBLKID"; then
547 BLKID_CMT=#
548 PROFILED_LIBBLKID=$LIBBLKID
549 AC_MSG_RESULT([Using system blkid library by default])
550else
551 LIBBLKID='$(LIB)/libblkid'$LIB_EXT
552 DEPLIBBLKID=$LIBBLKID
553 STATIC_LIBBLKID='$(LIB)/libblkid'$STATIC_LIB_EXT
554 DEPSTATIC_LIBBLKID=$STATIC_LIBBLKID
555 PROFILED_LIBBLKID='$(LIB)/libblkid'$PROFILED_LIB_EXT
556 DEPPROFILED_LIBBLKID=$PROFILED_LIBBLKID
557 AC_DEFINE(CONFIG_BUILD_FINDFS, 1)
558 AC_MSG_RESULT([Enabling private blkid library by default])
559fi
Theodore Ts'o14b596d2009-04-22 09:18:30 -0400560)
561AC_SUBST(LIBBLKID)
562AC_SUBST(DEPLIBBLKID)
563AC_SUBST(STATIC_LIBBLKID)
564AC_SUBST(DEPSTATIC_LIBBLKID)
565AC_SUBST(PROFILED_LIBBLKID)
566AC_SUBST(DEPPROFILED_LIBBLKID)
567AC_SUBST(BLKID_CMT)
568dnl
Theodore Ts'o0afb9be2018-08-18 11:19:25 -0400569dnl handle --enable-subset
570dnl
571ALL_CMT=
Theodore Ts'ofeb235e2018-08-24 17:12:20 -0400572SUBSET_CMT=
Theodore Ts'o0afb9be2018-08-18 11:19:25 -0400573AC_ARG_ENABLE([subset],
574[ --enable-subset enable subset-only build],
575if test "$enableval" = "no"
576then
Theodore Ts'ofeb235e2018-08-24 17:12:20 -0400577 SUBSET_CMT=#
Theodore Ts'o0afb9be2018-08-18 11:19:25 -0400578 AC_MSG_RESULT([Disabling subset-only build])
579else
580 ALL_CMT=#
581 AC_MSG_RESULT([Enabling subset-only-build])
582fi
583,)
584AC_SUBST(ALL_CMT)
Theodore Ts'ofeb235e2018-08-24 17:12:20 -0400585AC_SUBST(SUBSET_CMT)
Theodore Ts'o0afb9be2018-08-18 11:19:25 -0400586dnl
Theodore Ts'o3df60142013-06-16 16:14:40 -0400587dnl handle --disable-backtrace
588dnl
589AH_TEMPLATE([DISABLE_BACKTRACE], [Define to 1 to disable use of backtrace])
590AC_ARG_ENABLE([backtrace],
591[ --disable-backtrace disable use backtrace],
592if test "$enableval" = "no"
593then
594 AC_MSG_RESULT([Disabling use of backtrace])
595 AC_DEFINE(DISABLE_BACKTRACE, 1)
596else
597 AC_MSG_RESULT([Enabling use of backtrace])
598fi
599,
600AC_MSG_RESULT([Enabling use of backtrace by default])
601)
602dnl
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000603dnl handle --enable-debugfs
604dnl
605AC_ARG_ENABLE([debugfs],
606[ --disable-debugfs disable support of debugfs program],
607if test "$enableval" = "no"
608then
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400609 AC_MSG_RESULT([Disabling debugfs support])
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000610 DEBUGFS_CMT="#"
611else
612 DEBUGFS_CMT=
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400613 AC_MSG_RESULT([Enabling debugfs support])
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000614fi
615,
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400616AC_MSG_RESULT([Enabling debugfs support by default])
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000617DEBUGFS_CMT=
618)
619AC_SUBST(DEBUGFS_CMT)
620dnl
621dnl handle --enable-imager
622dnl
623AC_ARG_ENABLE([imager],
624[ --disable-imager disable support of e2image program],
625if test "$enableval" = "no"
626then
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400627 AC_MSG_RESULT([Disabling e2image support])
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000628 IMAGER_CMT="#"
629else
630 IMAGER_CMT=
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400631 AC_MSG_RESULT([Enabling e2image support])
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000632fi
633,
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400634AC_MSG_RESULT([Enabling e2image support by default])
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000635IMAGER_CMT=
636)
637AC_SUBST(IMAGER_CMT)
638dnl
639dnl handle --enable-resizer
640dnl
641AC_ARG_ENABLE([resizer],
642[ --disable-resizer disable support of e2resize program],
643if test "$enableval" = "no"
644then
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400645 AC_MSG_RESULT([Disabling e2resize support])
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000646 RESIZER_CMT="#"
647else
648 RESIZER_CMT=
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400649 AC_MSG_RESULT([Enabling e2resize support])
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000650fi
651,
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400652AC_MSG_RESULT([Enabling e2resize support by default])
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000653RESIZER_CMT=
654)
655AC_SUBST(RESIZER_CMT)
656dnl
Theodore Ts'o8d9c50c2010-12-24 15:19:44 -0500657dnl handle --enable-defrag
658dnl
659AC_ARG_ENABLE([defrag],
660[ --disable-defrag disable support of e4defrag program],
661if test "$enableval" = "no"
662then
663 AC_MSG_RESULT([Disabling e4defrag support])
664 DEFRAG_CMT="#"
665else
666 DEFRAG_CMT=
667 AC_MSG_RESULT([Enabling e4defrag support])
668fi
669,
Theodore Ts'o6c59a662014-01-04 20:44:29 -0500670if test -z "$WITH_DIET_LIBC"
671then
672 AC_MSG_RESULT([Enabling e4defrag support by default])
673 DEFRAG_CMT=
674else
675 AC_MSG_RESULT([Disabling e4defrag support by default])
676 DEFRAG_CMT="#"
677fi
Theodore Ts'o8d9c50c2010-12-24 15:19:44 -0500678)
679AC_SUBST(DEFRAG_CMT)
680dnl
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +0000681dnl See whether to install the `fsck' wrapper program (that calls e2fsck)
682dnl
683AC_ARG_ENABLE([fsck],
684[ --enable-fsck build fsck wrapper program],
685[if test "$enableval" = "no"
686then
687 FSCK_PROG='' FSCK_MAN=''
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400688 AC_MSG_RESULT([Not building fsck wrapper])
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +0000689else
690 FSCK_PROG=fsck FSCK_MAN=fsck.8
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400691 AC_MSG_RESULT([Building fsck wrapper])
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +0000692fi]
693,
694[case "$host_os" in
Theodore Ts'oe3632402004-05-04 19:39:54 -0400695 gnu*)
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +0000696 FSCK_PROG='' FSCK_MAN=''
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400697 AC_MSG_RESULT([Not building fsck wrapper by default])
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +0000698 ;;
699 *)
700 FSCK_PROG=fsck FSCK_MAN=fsck.8
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400701 AC_MSG_RESULT([Building fsck wrapper by default])
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +0000702esac]
703)
704AC_SUBST(FSCK_PROG)
705AC_SUBST(FSCK_MAN)
706dnl
Theodore Ts'o5d407732004-09-18 14:53:14 -0400707dnl See whether to install the `e2initrd-helper' program
708dnl
709AC_ARG_ENABLE([e2initrd-helper],
710[ --enable-e2initrd-helper build e2initrd-helper program],
711[if test "$enableval" = "no"
712then
713 E2INITRD_PROG='' E2INITRD_MAN=''
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400714 AC_MSG_RESULT([Not building e2initrd helper])
Theodore Ts'o5d407732004-09-18 14:53:14 -0400715else
716 E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400717 AC_MSG_RESULT([Building e2initrd helper])
Theodore Ts'o5d407732004-09-18 14:53:14 -0400718fi]
719,
720E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400721AC_MSG_RESULT([Building e2initrd helper by default])
Theodore Ts'o5d407732004-09-18 14:53:14 -0400722)
723AC_SUBST(E2INITRD_PROG)
724AC_SUBST(E2INITRD_MAN)
Karel Zak4db2f592006-03-08 14:17:28 -0500725dnl
Theodore Ts'o5d407732004-09-18 14:53:14 -0400726dnl
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000727dnl
Theodore Ts'o32493942007-12-31 10:45:01 -0500728AC_ARG_ENABLE([tls],
729[ --disable-tls disable use of thread local support],
730[if test "$enableval" = "no"
731then
732 try_tls=""
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400733 AC_MSG_RESULT([Disabling thread local support])
Theodore Ts'o32493942007-12-31 10:45:01 -0500734else
735 try_tls="yes"
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400736 AC_MSG_RESULT([Enabling thread local support])
Theodore Ts'o32493942007-12-31 10:45:01 -0500737fi]
738,
Theodore Ts'oeafba6c2008-07-10 10:21:42 -0400739if test -n "$WITH_DIET_LIBC"
740then
741 try_tls=""
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400742 AC_MSG_RESULT([Diet libc does not support thread local support])
Theodore Ts'oeafba6c2008-07-10 10:21:42 -0400743else
744 try_tls="yes"
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400745 AC_MSG_RESULT([Try using thread local support by default])
Theodore Ts'oeafba6c2008-07-10 10:21:42 -0400746fi
Theodore Ts'o32493942007-12-31 10:45:01 -0500747)
748if test "$try_tls" = "yes"
749then
750AX_TLS
751fi
752dnl
753dnl
754dnl
Theodore Ts'od1154eb2011-09-18 17:34:37 -0400755AH_TEMPLATE([USE_UUIDD], [Define to 1 to build uuidd])
Theodore Ts'o5610f992007-12-31 11:16:56 -0500756AC_ARG_ENABLE([uuidd],
757[ --disable-uuidd disable building the uuid daemon],
758[if test "$enableval" = "no"
759then
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400760 AC_MSG_RESULT([Not building uuidd])
Theodore Ts'o5610f992007-12-31 11:16:56 -0500761 UUIDD_CMT="#"
762else
Theodore Ts'od1154eb2011-09-18 17:34:37 -0400763 AC_DEFINE(USE_UUIDD, 1)
Theodore Ts'o5610f992007-12-31 11:16:56 -0500764 UUIDD_CMT=""
Theodore Ts'o02d04db2008-08-22 10:52:42 -0400765 AC_MSG_RESULT([Building uuidd])
Theodore Ts'o5610f992007-12-31 11:16:56 -0500766fi]
767,
Theodore Ts'od1154eb2011-09-18 17:34:37 -0400768AC_DEFINE(USE_UUIDD, 1)
Theodore Ts'oe3d10152014-09-19 00:26:26 -0400769if test -z "$UUID_CMT"
770then
771 UUIDD_CMT=""
772 AC_MSG_RESULT([Building uuidd by default])
773else
774 UUIDD_CMT="#"
775 AC_MSG_RESULT([Disabling uuidd by default])
776fi
Theodore Ts'o5610f992007-12-31 11:16:56 -0500777)
778AC_SUBST(UUIDD_CMT)
779dnl
Tony Breedsd6a4bcb2012-06-26 11:42:15 +1000780dnl handle --disable-mmp
781dnl
782AH_TEMPLATE([CONFIG_MMP], [Define to 1 to enable mmp support])
783AC_ARG_ENABLE([mmp],
784[ --disable-mmp disable support mmp, Multi Mount Protection],
785if test "$enableval" = "no"
786then
787 AC_MSG_RESULT([Disabling mmp support])
788else
789 AC_MSG_RESULT([Enabling mmp support])
790 AC_DEFINE(CONFIG_MMP, 1)
791fi
792,
793AC_MSG_RESULT([Enabling mmp support by default])
794AC_DEFINE(CONFIG_MMP, 1)
795)
796dnl
Theodore Ts'o749f0712016-05-29 20:48:54 -0400797dnl handle --disable-tdb
798dnl
799AH_TEMPLATE([CONFIG_TDB], [Define to 1 to enable tdb support])
800AC_ARG_ENABLE([tdb],
801[ --disable-tdb disable tdb support],
802if test "$enableval" = "no"
803then
804 AC_MSG_RESULT([Disabling tdb support])
805 TDB_CMT="#"
806 TDB_MAN_COMMENT='.\"'
807else
808 AC_MSG_RESULT([Enabling tdb support])
809 AC_DEFINE(CONFIG_TDB, 1)
810 TDB_CMT=""
811 TDB_MAN_COMMENT=""
812fi
813,
814AC_MSG_RESULT([Enabling mmp support by default])
815AC_DEFINE(CONFIG_TDB, 1)
816TDB_CMT=""
817TDB_MAN_COMMENT=""
818)
819AC_SUBST(TDB_CMT)
820AC_SUBST(TDB_MAN_COMMENT)
821dnl
Tony Breeds1625bf42012-07-30 14:44:12 -0400822dnl handle --disable-bmap-stats
823dnl
824AH_TEMPLATE([ENABLE_BMAP_STATS], [Define to 1 to enable bitmap stats.])
825AC_ARG_ENABLE([bmap-stats],
826[ --disable-bmap-stats disable collection of bitmap stats.],
827if test "$enableval" = "no"
828then
829 AC_MSG_RESULT([Disabling bitmap statistics support])
830else
831 AC_MSG_RESULT([Enabling bitmap statistics support])
832 AC_DEFINE(ENABLE_BMAP_STATS, 1)
833fi
834,
835AC_MSG_RESULT([Enabling bitmap statistics support by default])
836AC_DEFINE(ENABLE_BMAP_STATS, 1)
837)
838dnl
839dnl handle --enable-bmap-stats-ops
840dnl
841AH_TEMPLATE([ENABLE_BMAP_STATS_OPS], [Define to 1 to enable bitmap stats.])
842AC_ARG_ENABLE([bmap-stats-ops],
843[ --enable-bmap-stats-ops enable collection of additional bitmap stats],
844if test "$enableval" = "no"
845then
846 AC_MSG_RESULT([Disabling additional bitmap statistics])
847else
848 dnl There has to be a better way!
849 AS_IF([test "x${enable_bmap_stats}" = "xno"],
850 AC_MSG_FAILURE([Error --enable-bmap-stats-ops requires bmap-stats]))
851
852 AC_MSG_RESULT([Enabling additional bitmap statistics])
853 AC_DEFINE(ENABLE_BMAP_STATS_OPS, 1)
854fi
855,
856AC_MSG_RESULT([Disabling additional bitmap statistics by default])
857)
858dnl
Theodore Ts'o5610f992007-12-31 11:16:56 -0500859dnl
860dnl
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000861MAKEFILE_LIBRARY=$srcdir/lib/Makefile.library
862AC_SUBST_FILE(MAKEFILE_LIBRARY)
863dnl
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000864dnl Add internationalization support, using gettext.
865dnl
Theodore Ts'ob0cacab2004-11-30 19:00:19 -0500866GETTEXT_PACKAGE=e2fsprogs
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000867PACKAGE=e2fsprogs
868VERSION="$E2FSPROGS_VERSION"
Theodore Ts'ob0cacab2004-11-30 19:00:19 -0500869VERSION=0.14.1
Theodore Ts'od1154eb2011-09-18 17:34:37 -0400870AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [package name for gettext])
871AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [version for gettext])
Theodore Ts'ob0cacab2004-11-30 19:00:19 -0500872AC_SUBST(GETTEXT_PACKAGE)
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000873AC_SUBST(PACKAGE)
874AC_SUBST(VERSION)
875
Theodore Ts'ocdf186e2001-06-13 22:16:47 +0000876AM_GNU_GETTEXT
877dnl
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000878dnl End of configuration options
879dnl
Theodore Ts'o74becf31997-04-26 14:37:06 +0000880AC_SUBST(BINARY_TYPE)
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000881AC_PROG_MAKE_SET
Theodore Ts'obcb915b2009-07-02 18:19:10 -0400882CHECK_GNU_MAKE
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000883AC_PATH_PROG(LN, ln, ln)
Ross Burton5abc0412014-07-10 15:39:05 +0100884AC_PROG_MKDIR_P
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +0000885AC_PROG_LN_S
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000886AC_PATH_PROG(MV, mv, mv)
887AC_PATH_PROG(CP, cp, cp)
888AC_PATH_PROG(RM, rm, rm)
889AC_PATH_PROG(CHMOD, chmod, :)
Theodore Ts'o32237012005-01-17 19:13:39 -0500890AC_PROG_AWK
891AC_PROG_EGREP
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000892AC_PATH_PROG(SED, sed, sed)
Theodore Ts'o9d564f71999-07-03 20:25:58 +0000893AC_PATH_PROG(PERL, perl, perl)
Theodore Ts'o250f79f2001-05-19 22:02:22 +0000894AC_PATH_PROG(LDCONFIG, ldconfig, :)
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000895AC_CHECK_TOOL(AR, ar, ar)
896AC_CHECK_TOOL(RANLIB, ranlib, :)
897AC_CHECK_TOOL(STRIP, strip, :)
Manish Katiyar7321d942008-04-14 17:20:03 +0530898AC_CHECK_PROG(MAKEINFO, makeinfo, makeinfo, )
899if test "_$MAKEINFO" = "_"; then
Theodore Ts'oca1de982016-09-11 23:30:25 -0400900 MAKEINFO="echo Makeinfo is missing. Info documentation will not be built."
Manish Katiyar7321d942008-04-14 17:20:03 +0530901else
902 case "$MAKEINFO" in
903 */missing.*)
904 AC_MSG_WARN([
905*** Makeinfo is missing. Info documentation will not be built.])
906 ;;
907 *)
908 ;;
909 esac
910fi
911AC_SUBST(MAKEINFO)
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000912AC_PROG_INSTALL
Theodore Ts'o6c133521999-07-03 20:37:03 +0000913# See if we need a separate native compiler.
914if test $cross_compiling = no; then
915 BUILD_CC="$CC"
916 AC_SUBST(BUILD_CC)
917else
918 AC_CHECK_PROGS(BUILD_CC, gcc cc)
919fi
Mike Frysinger677fc912012-03-06 20:13:54 -0500920AC_CHECK_HEADERS(m4_flatten([
921 dirent.h
922 errno.h
923 execinfo.h
924 getopt.h
925 malloc.h
926 mntent.h
927 paths.h
928 semaphore.h
929 setjmp.h
930 signal.h
931 stdarg.h
932 stdint.h
933 stdlib.h
934 termios.h
935 termio.h
936 unistd.h
937 utime.h
Ross Burtonc84da2e2014-07-10 17:44:38 +0100938 attr/xattr.h
Mike Frysinger677fc912012-03-06 20:13:54 -0500939 linux/falloc.h
940 linux/fd.h
Darrick J. Wong82424fc2017-05-15 11:37:11 -0700941 linux/fsmap.h
Mike Frysinger677fc912012-03-06 20:13:54 -0500942 linux/major.h
Kazuya Miofbabd5c2013-12-16 00:48:12 -0500943 linux/loop.h
Adrien Schildknechtf47f3192016-11-23 10:21:42 -0800944 linux/types.h
Mike Frysinger677fc912012-03-06 20:13:54 -0500945 net/if_dl.h
946 netinet/in.h
Darrick J. Wong81cbf1e2015-05-13 17:22:40 -0700947 sys/acl.h
Mike Frysinger677fc912012-03-06 20:13:54 -0500948 sys/disklabel.h
Andreas Dilger51050542014-06-11 12:59:05 -0600949 sys/disk.h
Mike Frysinger677fc912012-03-06 20:13:54 -0500950 sys/file.h
951 sys/ioctl.h
Theodore Ts'o74f2c4a2015-06-19 19:28:25 -0400952 sys/key.h
Mike Frysinger677fc912012-03-06 20:13:54 -0500953 sys/mkdev.h
954 sys/mman.h
Andreas Dilger51050542014-06-11 12:59:05 -0600955 sys/mount.h
Mike Frysinger677fc912012-03-06 20:13:54 -0500956 sys/prctl.h
Mike Frysinger677fc912012-03-06 20:13:54 -0500957 sys/resource.h
958 sys/select.h
959 sys/socket.h
960 sys/sockio.h
961 sys/stat.h
962 sys/syscall.h
Darrick J. Wong79614b22015-04-20 22:27:19 -0400963 sys/sysctl.h
Mike Frysinger677fc912012-03-06 20:13:54 -0500964 sys/sysmacros.h
965 sys/time.h
966 sys/types.h
967 sys/un.h
968 sys/wait.h
Dmitry V. Levind7de3f32017-05-18 17:46:49 +0000969 sys/xattr.h
Mike Frysinger677fc912012-03-06 20:13:54 -0500970]))
Matthias Andreeec3a69b2017-08-29 01:02:36 -0400971dnl Check where to find a dd(1) that supports iflag=fullblock
972dnl and oflag=append
973AC_MSG_CHECKING([for a dd(1) program that supports iflag=fullblock])
974DD=
975for i in dd gdd ; do
976 if "$i" if=/dev/null of=/dev/null count=1 bs=10k 2>/dev/null iflag=fullblock oflag=append ; then
977 DD=$i
978 break
979 fi
980done
981if test -n "$DD" ; then
982 AC_MSG_RESULT([$DD])
983else
984 AC_MSG_RESULT([not found, using dd])
985 DD=dd
986 AC_MSG_WARN([No GNU-compatible dd(1) program found, expect some self-test failures.])
987fi
988AC_SUBST([DD])
989
Theodore Ts'oda76d6b2005-01-18 23:29:01 -0500990AC_CHECK_HEADERS(net/if.h,,,
991[[
992#if HAVE_SYS_TYPES_H
993#include <sys/types.h>
994#endif
995#if HAVE_SYS_SOCKET
996#include <sys/socket.h>
997#endif
998]])
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000999AC_FUNC_VPRINTF
Theodore Ts'offf45482003-04-13 00:44:19 -04001000dnl Check to see if dirent has member d_reclen. On cygwin those d_reclen
Sebastian Rasmussen055866d2017-10-08 13:30:08 +02001001dnl is not declared.
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001002AC_CHECK_MEMBER(struct dirent.d_reclen,[AC_DEFINE(HAVE_RECLEN_DIRENT, 1,
1003 [Define to 1 if dirent has d_reclen])],,
Theodore Ts'o6c65d252005-01-19 12:59:48 -05001004 [#include <dirent.h>])
Theodore Ts'o28739272014-01-03 00:26:43 -05001005AC_CHECK_MEMBERS([struct stat.st_atim])
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001006dnl Check to see if ssize_t was declared
1007AC_CHECK_TYPE(ssize_t,[AC_DEFINE(HAVE_TYPE_SSIZE_T, 1,
1008 [Define to 1 if ssize_t declared])],,
Theodore Ts'o6c65d252005-01-19 12:59:48 -05001009 [#include <sys/types.h>])
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001010dnl
Theodore Ts'ob0b9c4d1997-10-20 23:36:30 +00001011dnl Check to see if llseek() is declared in unistd.h. On some libc's
1012dnl it is, and on others it isn't..... Thank you glibc developers....
1013dnl
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001014AC_CHECK_DECL(llseek,[AC_DEFINE(HAVE_LLSEEK_PROTOTYPE, 1,
1015 [Define to 1 if llseek declared in unistd.h])],,
Theodore Ts'o6c65d252005-01-19 12:59:48 -05001016 [#include <unistd.h>])
Theodore Ts'ob0b9c4d1997-10-20 23:36:30 +00001017dnl
Theodore Ts'o6928adc2000-05-25 23:28:50 +00001018dnl Check to see if lseek64() is declared in unistd.h. Glibc's header files
1019dnl are so convoluted that I can't tell whether it will always be defined,
1020dnl and if it isn't defined while lseek64 is defined in the library,
1021dnl disaster will strike.
1022dnl
1023dnl Warning! Use of --enable-gcc-wall may throw off this test.
1024dnl
1025dnl
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001026AC_CHECK_DECL(lseek64,[AC_DEFINE(HAVE_LSEEK64_PROTOTYPE, 1,
1027 [Define to 1 if lseek64 declared in unistd.h])],,
Theodore Ts'o6c65d252005-01-19 12:59:48 -05001028 [#define _LARGEFILE_SOURCE
1029 #define _LARGEFILE64_SOURCE
1030 #include <unistd.h>])
Theodore Ts'o6928adc2000-05-25 23:28:50 +00001031dnl
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001032dnl Word sizes...
1033dnl
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001034AC_CHECK_SIZEOF(short)
1035AC_CHECK_SIZEOF(int)
1036AC_CHECK_SIZEOF(long)
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +00001037AC_CHECK_SIZEOF(long long)
Phillip Susi274d46e2013-01-24 11:21:56 -05001038AC_CHECK_SIZEOF(off_t)
Theodore Ts'o2dd680f2016-05-29 01:07:40 -04001039AC_CHECK_SIZEOF(time_t)
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001040SIZEOF_SHORT=$ac_cv_sizeof_short
1041SIZEOF_INT=$ac_cv_sizeof_int
1042SIZEOF_LONG=$ac_cv_sizeof_long
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +00001043SIZEOF_LONG_LONG=$ac_cv_sizeof_long_long
Phillip Susi274d46e2013-01-24 11:21:56 -05001044SIZEOF_OFF_T=$ac_cv_sizeof_off_t
Theodore Ts'o2dd680f2016-05-29 01:07:40 -04001045SIZEOF_TIME_T=$ac_cv_sizeof_time_t
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001046AC_SUBST(SIZEOF_SHORT)
1047AC_SUBST(SIZEOF_INT)
1048AC_SUBST(SIZEOF_LONG)
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +00001049AC_SUBST(SIZEOF_LONG_LONG)
Phillip Susi274d46e2013-01-24 11:21:56 -05001050AC_SUBST(SIZEOF_OFF_T)
Theodore Ts'o2dd680f2016-05-29 01:07:40 -04001051AC_SUBST(SIZEOF_TIME_T)
Theodore Ts'o877eb6d2001-06-11 06:54:13 +00001052AC_C_BIGENDIAN
Chen Qi91f04682014-05-05 21:08:42 -04001053if test $cross_compiling = no; then
1054 BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh
1055else
1056 CROSS_COMPILE="1" BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh
1057fi
Theodore Ts'o4ea7ea02006-04-09 08:41:55 -04001058ASM_TYPES_HEADER=./asm_types.h
1059AC_SUBST_FILE(ASM_TYPES_HEADER)
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001060dnl
Theodore Ts'o488c75a2008-06-07 08:55:21 -04001061dnl Save the configuration #defines needed for the public ext2fs.h
1062dnl header file
1063dnl
1064echo "/* These defines are needed for the public ext2fs.h header file */" \
1065 > public_config.h
1066if grep HAVE_SYS_TYPES_H confdefs.h > tmp_config.$$; then
1067 uniq tmp_config.$$ >> public_config.h
1068else
1069 echo "#undef HAVE_SYS_TYPES_H" >> public_config.h
1070fi
1071if grep WORDS_BIGENDIAN confdefs.h > tmp_config.$$; then
1072 uniq tmp_config.$$ >> public_config.h
1073else
1074 echo "#undef WORDS_BIGENDIAN" >> public_config.h
1075fi
1076rm -f tmp_config.$$
1077PUBLIC_CONFIG_HEADER=./public_config.h
1078AC_SUBST_FILE(PUBLIC_CONFIG_HEADER)
1079dnl
Theodore Ts'o0c193f82003-08-01 14:26:23 -04001080dnl See if we have inttypes.h and if intptr_t is defined
1081dnl
1082AC_CHECK_HEADERS([inttypes.h])
Theodore Ts'od2ee56d2005-01-09 00:57:45 -05001083AC_CHECK_TYPES(intptr_t)
Theodore Ts'o0c193f82003-08-01 14:26:23 -04001084dnl
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001085dnl See if struct stat has a st_flags field, in which case we can get file
1086dnl flags somewhat portably. Also check for the analogous setter, chflags().
1087dnl
1088AC_MSG_CHECKING(whether struct stat has a st_flags field)
1089AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags,
1090 AC_TRY_COMPILE([#include <sys/stat.h>],
1091 [struct stat stat; stat.st_flags = 0;],
1092 [e2fsprogs_cv_struct_st_flags=yes],
1093 [e2fsprogs_cv_struct_st_flags=no]))
1094AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags)
1095if test "$e2fsprogs_cv_struct_st_flags" = yes; then
Theodore Ts'oc03bc4e1999-10-20 18:20:36 +00001096 AC_MSG_CHECKING(whether st_flags field is useful)
1097 AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags_immut,
1098 AC_TRY_COMPILE([#include <sys/stat.h>],
1099 [struct stat stat; stat.st_flags |= UF_IMMUTABLE;],
1100 [e2fsprogs_cv_struct_st_flags_immut=yes],
1101 [e2fsprogs_cv_struct_st_flags_immut=no]))
1102 AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags_immut)
1103 if test "$e2fsprogs_cv_struct_st_flags_immut" = yes; then
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001104 AC_DEFINE(HAVE_STAT_FLAGS, 1,
1105 [Define to 1 if struct stat has st_flags])
Theodore Ts'oc03bc4e1999-10-20 18:20:36 +00001106 fi
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001107fi
Theodore Ts'o84ea6e72004-03-19 19:29:17 -05001108dnl
1109dnl Check for the presence of SA_LEN
1110dnl
Theodore Ts'o6c65d252005-01-19 12:59:48 -05001111AC_CHECK_MEMBER(struct sockaddr.sa_len,
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001112 AC_DEFINE_UNQUOTED(HAVE_SA_LEN,1,
1113 [Define to 1 if if struct sockaddr contains sa_len]),,
Theodore Ts'o6c65d252005-01-19 12:59:48 -05001114 [#include <sys/types.h>
1115 #include <sys/socket.h>])
Theodore Ts'o84ea6e72004-03-19 19:29:17 -05001116dnl
Theodore Ts'o7154d972019-02-10 21:44:05 -05001117dnl If we are using the system-provided blkid library, check for
1118dnl the functions added after migrating that library to util-linux
Eric Sandeen9ed8e5f2009-10-02 11:32:42 -05001119dnl
1120if test -n "$BLKID_CMT"; then
Theodore Ts'o7154d972019-02-10 21:44:05 -05001121 AC_CHECK_LIB(blkid, blkid_probe_get_topology,
Dongyang Lif72ea2d2019-03-06 22:59:55 +00001122 AC_DEFINE(HAVE_BLKID_PROBE_GET_TOPOLOGY, 1,
1123 [Define to 1 if blkid has blkid_probe_get_topology]))
Theodore Ts'o7154d972019-02-10 21:44:05 -05001124 AC_CHECK_LIB(blkid, blkid_probe_enable_partitions,
Dongyang Lif72ea2d2019-03-06 22:59:55 +00001125 AC_DEFINE(HAVE_BLKID_PROBE_ENABLE_PARTITIONS, 1,
1126 [Define to 1 if blkid has blkid_probe_enable_partitions]))
Eric Sandeen9ed8e5f2009-10-02 11:32:42 -05001127fi
1128dnl
Theodore Ts'o32179ce2016-06-07 00:14:35 -04001129if test -n "$DLOPEN_LIB" ; then
1130 ac_cv_func_dlopen=yes
1131fi
Mike Frysinger677fc912012-03-06 20:13:54 -05001132AC_CHECK_FUNCS(m4_flatten([
1133 __secure_getenv
Theodore Ts'o74f2c4a2015-06-19 19:28:25 -04001134 add_key
Mike Frysinger677fc912012-03-06 20:13:54 -05001135 backtrace
Mike Frysinger677fc912012-03-06 20:13:54 -05001136 chflags
Theodore Ts'o32179ce2016-06-07 00:14:35 -04001137 dlopen
Baruch Siach9a393892014-01-02 13:05:37 -05001138 fadvise64
Mike Frysinger677fc912012-03-06 20:13:54 -05001139 fallocate
1140 fallocate64
1141 fchown
Adrien Schildknechtf47f3192016-11-23 10:21:42 -08001142 fcntl
Mike Frysinger677fc912012-03-06 20:13:54 -05001143 fdatasync
1144 fstat64
Adrien Schildknechtf47f3192016-11-23 10:21:42 -08001145 fsync
Mike Frysinger677fc912012-03-06 20:13:54 -05001146 ftruncate64
Theodore Ts'o28739272014-01-03 00:26:43 -05001147 futimes
Theodore Ts'o6c59a662014-01-04 20:44:29 -05001148 getcwd
Mike Frysinger677fc912012-03-06 20:13:54 -05001149 getdtablesize
Shuichi Ihara32b88022018-05-01 22:26:06 -06001150 gethostname
Mike Frysinger677fc912012-03-06 20:13:54 -05001151 getmntinfo
Theodore Ts'o25ff7722012-04-05 15:16:50 -07001152 getpwuid_r
Mike Frysinger677fc912012-03-06 20:13:54 -05001153 getrlimit
1154 getrusage
1155 jrand48
Theodore Ts'o74f2c4a2015-06-19 19:28:25 -04001156 keyctl
Ross Burtonc84da2e2014-07-10 17:44:38 +01001157 llistxattr
Mike Frysinger677fc912012-03-06 20:13:54 -05001158 llseek
1159 lseek64
1160 mallinfo
1161 mbstowcs
1162 memalign
Theodore Ts'o6c59a662014-01-04 20:44:29 -05001163 mempcpy
Mike Frysinger677fc912012-03-06 20:13:54 -05001164 mmap
1165 msync
1166 nanosleep
1167 open64
1168 pathconf
1169 posix_fadvise
Baruch Siach9a393892014-01-02 13:05:37 -05001170 posix_fadvise64
Mike Frysinger677fc912012-03-06 20:13:54 -05001171 posix_memalign
1172 prctl
Darrick J. Wongbaa35442014-08-02 19:18:03 -04001173 pread
1174 pwrite
Theodore Ts'of00948a2014-08-08 16:42:05 -04001175 pread64
1176 pwrite64
Theodore Ts'o1ad31742013-06-16 14:34:59 -04001177 secure_getenv
Theodore Ts'ob24efa22012-04-05 15:31:09 -07001178 setmntent
Mike Frysinger677fc912012-03-06 20:13:54 -05001179 setresgid
1180 setresuid
Theodore Ts'oc42de752014-07-08 20:02:48 -04001181 snprintf
Mike Frysinger677fc912012-03-06 20:13:54 -05001182 srandom
Theodore Ts'o6c59a662014-01-04 20:44:29 -05001183 stpcpy
Mike Frysinger677fc912012-03-06 20:13:54 -05001184 strcasecmp
1185 strdup
1186 strnlen
1187 strptime
1188 strtoull
1189 sync_file_range
1190 sysconf
1191 usleep
1192 utime
Theodore Ts'o441eb332014-10-19 22:02:48 -04001193 utimes
Mike Frysinger677fc912012-03-06 20:13:54 -05001194 valloc
1195]))
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +00001196dnl
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +00001197dnl Check to see if -lsocket is required (solaris) to make something
1198dnl that uses socket() to compile; this is needed for the UUID library
1199dnl
1200SOCKET_LIB=''
1201AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket])
1202AC_SUBST(SOCKET_LIB)
1203dnl
Darrick J. Wongb291c112014-09-13 15:12:46 -07001204dnl See if libmagic exists
1205dnl
1206AC_CHECK_LIB(magic, magic_file, [MAGIC_LIB=-lmagic
1207AC_CHECK_HEADERS([magic.h])])
Theodore Ts'o32179ce2016-06-07 00:14:35 -04001208if test "$ac_cv_func_dlopen" = yes ; then
Theodore Ts'od2e3c0d2014-09-21 01:25:58 -04001209 MAGIC_LIB=$DLOPEN_LIB
1210fi
Darrick J. Wongb291c112014-09-13 15:12:46 -07001211AC_SUBST(MAGIC_LIB)
1212dnl
Gustavo Zacarias62bc2432016-06-09 16:56:15 -04001213dnl Check to see if librt is required for clock_gettime() (glibc < 2.17)
1214dnl
1215AC_CHECK_LIB(rt, clock_gettime, [CLOCK_GETTIME_LIB=-lrt])
1216AC_SUBST(CLOCK_GETTIME_LIB)
1217dnl
Darrick J. Wong81cbf1e2015-05-13 17:22:40 -07001218dnl Check to see if the FUSE library is -lfuse or -losxfuse
1219dnl
1220FUSE_CMT=
1221FUSE_LIB=
1222dnl osxfuse.dylib supersedes fuselib.dylib
1223AC_ARG_ENABLE([fuse2fs],
Theodore Ts'of5dffb82015-06-20 14:20:14 -04001224[ --disable-fuse2fs do not build fuse2fs],
Darrick J. Wong81cbf1e2015-05-13 17:22:40 -07001225if test "$enableval" = "no"
1226then
1227 FUSE_CMT="#"
1228 AC_MSG_RESULT([Disabling fuse2fs])
1229else
1230 AC_CHECK_HEADERS([pthread.h fuse.h], [],
1231[AC_MSG_FAILURE([Cannot find fuse2fs headers.])],
1232[#define _FILE_OFFSET_BITS 64
1233#define FUSE_USE_VERSION 29])
1234
1235 AC_PREPROC_IFELSE(
1236[AC_LANG_PROGRAM([[#define FUSE_USE_VERSION 29
1237#ifdef __linux__
1238#include <linux/fs.h>
1239#include <linux/falloc.h>
1240#include <linux/xattr.h>
1241#endif
1242]], [])], [], [AC_MSG_FAILURE([Cannot find fuse2fs Linux headers.])])
1243
1244 AC_CHECK_LIB(osxfuse, fuse_main, [FUSE_LIB=-losxfuse],
1245 [AC_CHECK_LIB(fuse, fuse_main, [FUSE_LIB=-lfuse],
1246 [AC_MSG_FAILURE([Cannot find fuse library.])])])
1247 AC_MSG_RESULT([Enabling fuse2fs])
1248fi
1249,
1250AC_CHECK_HEADERS([pthread.h fuse.h], [], [FUSE_CMT="#"],
1251[#define _FILE_OFFSET_BITS 64
1252#define FUSE_USE_VERSION 29
1253#ifdef __linux__
1254# include <linux/fs.h>
1255# include <linux/falloc.h>
1256# include <linux/xattr.h>
1257#endif])
1258if test -z "$FUSE_CMT"
1259then
1260 AC_CHECK_LIB(osxfuse, fuse_main, [FUSE_LIB=-losxfuse],
1261[AC_CHECK_LIB(fuse, fuse_main, [FUSE_LIB=-lfuse], [FUSE_CMT="#"])])
1262fi
1263if test -z "$FUSE_CMT"
1264then
1265 AC_MSG_RESULT([Enabling fuse2fs by default.])
1266fi
1267)
1268AC_SUBST(FUSE_LIB)
1269AC_SUBST(FUSE_CMT)
1270dnl
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001271dnl See if optreset exists
1272dnl
1273AC_MSG_CHECKING(for optreset)
1274AC_CACHE_VAL(ac_cv_have_optreset,
1275[AC_EGREP_HEADER(optreset, unistd.h,
1276 ac_cv_have_optreset=yes, ac_cv_have_optreset=no)])dnl
1277AC_MSG_RESULT($ac_cv_have_optreset)
1278if test $ac_cv_have_optreset = yes; then
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001279 AC_DEFINE(HAVE_OPTRESET, 1, [Define to 1 if optreset for getopt is present])
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001280fi
1281dnl
Theodore Ts'od7f45af2008-09-12 10:15:26 -04001282dnl Test for sem_init, and which library it might require:
1283dnl
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001284AH_TEMPLATE([HAVE_SEM_INIT], [Define to 1 if sem_init() exists])
Theodore Ts'od7f45af2008-09-12 10:15:26 -04001285SEM_INIT_LIB=''
Theodore Ts'ocfb8e0b2017-07-27 19:43:00 -04001286echo GL_THREADS_API: ${gl_threads_api}
1287if test "${gl_threads_api}" != none
1288then
1289 AC_CHECK_FUNC(sem_init, ,
1290 AC_CHECK_LIB(pthread, sem_init,
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001291 AC_DEFINE(HAVE_SEM_INIT, 1)
Theodore Ts'od7f45af2008-09-12 10:15:26 -04001292 SEM_INIT_LIB=-lpthread,
Theodore Ts'ocfb8e0b2017-07-27 19:43:00 -04001293 AC_CHECK_LIB(rt, sem_init,
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001294 AC_DEFINE(HAVE_SEM_INIT, 1)
Theodore Ts'od7f45af2008-09-12 10:15:26 -04001295 SEM_INIT_LIB=-lrt,
Theodore Ts'ocfb8e0b2017-07-27 19:43:00 -04001296 AC_CHECK_LIB(posix4, sem_init,
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001297 AC_DEFINE(HAVE_SEM_INIT, 1)
Theodore Ts'od7f45af2008-09-12 10:15:26 -04001298 SEM_INIT_LIB=-lposix4))))dnl
Theodore Ts'ocfb8e0b2017-07-27 19:43:00 -04001299fi
Theodore Ts'od7f45af2008-09-12 10:15:26 -04001300AC_SUBST(SEM_INIT_LIB)
1301dnl
Theodore Ts'oe54635d2006-08-06 14:33:13 -04001302dnl Check for unified diff
1303dnl
1304AC_MSG_CHECKING(for unified diff option)
Theodore Ts'o27f991b2008-04-01 20:32:55 -04001305if diff -u $0 $0 > /dev/null 2>&1 ; then
Theodore Ts'oe54635d2006-08-06 14:33:13 -04001306 UNI_DIFF_OPTS=-u
1307else
1308 UNI_DIFF_OPTS=-c
1309fi
1310AC_MSG_RESULT($UNI_DIFF_OPTS)
1311AC_SUBST(UNI_DIFF_OPTS)
1312dnl
Theodore Ts'o8f3f29d2000-02-11 05:04:44 +00001313dnl We use the EXT2 ioctls only under Linux
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001314dnl
Theodore Ts'o8f3f29d2000-02-11 05:04:44 +00001315case "$host_os" in
1316linux*)
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001317 AC_DEFINE(HAVE_EXT2_IOCTLS, 1, [Define to 1 if Ext2 ioctls present])
Theodore Ts'o8f3f29d2000-02-11 05:04:44 +00001318 ;;
1319esac
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001320dnl
Nicholas Clarkea1a3fa2018-10-16 15:37:45 -04001321dnl Check the available mount options
1322dnl
1323AX_CHECK_MOUNT_OPT(nosuid)
1324AX_CHECK_MOUNT_OPT(nodev)
Darrick J. Wong4aece322018-03-08 12:15:23 -08001325dnl Enable LTO for all packages
1326dnl
1327AC_ARG_ENABLE([lto],
1328[ --enable-lto enable link time optimization],,
Theodore Ts'o139a3092018-08-17 22:26:24 -04001329enable_lto=no)
Darrick J. Wong4aece322018-03-08 12:15:23 -08001330if test "$enable_lto" = "yes" || test "$enable_lto" = "probe"; then
1331 AC_MSG_CHECKING([if C compiler supports LTO])
1332 OLD_CFLAGS="$CFLAGS"
1333 OLD_LDFLAGS="$LDFLAGS"
Theodore Ts'o49715702018-08-08 22:16:07 -04001334 LTO_FLAGS="-g -flto -ffat-lto-objects"
Darrick J. Wong4aece322018-03-08 12:15:23 -08001335 CFLAGS="$CFLAGS $LTO_FLAGS"
1336 LDFLAGS="$LDFLAGS $LTO_FLAGS"
1337 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1338 [AC_MSG_RESULT([yes])]
1339 [lto_cflags=$LTO_FLAGS]
1340 [lto_ldflags=$LTO_FLAGS]
1341 [AC_PATH_PROG(gcc_ar, gcc-ar,,)]
1342 [AC_PATH_PROG(gcc_ranlib, gcc-ranlib,,)],
1343 [AC_MSG_RESULT([no])])
1344 if test -x "$gcc_ar" && test -x "$gcc_ranlib"; then
1345 have_lto=yes
1346 AR="${gcc_ar}"
1347 RANLIB="${gcc_ranlib}"
1348 fi
1349 CFLAGS="${OLD_CFLAGS}"
1350 LDFLAGS="${OLD_LDFLAGS}"
1351 AC_SUBST(have_lto)
1352 AC_SUBST(lto_cflags)
1353 AC_SUBST(lto_ldflags)
1354fi
1355if test "$enable_lto" = "yes" && test "$have_lto" != "yes"; then
1356 AC_MSG_ERROR([LTO not supported by compiler.])
1357fi
1358dnl
Darrick J. Wong1c2a76a2018-03-08 12:15:29 -08001359dnl Enable UBSAN for all packages
1360dnl
1361AC_ARG_ENABLE([ubsan],
1362[ --enable-ubsan enable undefined behavior sanitizer],,
1363enable_ubsan=no)
1364if test "$enable_ubsan" = "yes" || test "$enable_ubsan" = "probe"; then
1365 AC_MSG_CHECKING([if C compiler supports UBSAN])
1366 OLD_CFLAGS="$CFLAGS"
1367 OLD_LDFLAGS="$LDFLAGS"
1368 UBSAN_FLAGS="-fsanitize=undefined"
1369 CFLAGS="$CFLAGS $UBSAN_FLAGS"
1370 LDFLAGS="$LDFLAGS $UBSAN_FLAGS"
1371 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1372 [AC_MSG_RESULT([yes])]
1373 [ubsan_cflags=$UBSAN_FLAGS]
1374 [ubsan_ldflags=$UBSAN_FLAGS]
1375 [have_ubsan=yes],
1376 [AC_MSG_RESULT([no])])
1377 CFLAGS="${OLD_CFLAGS}"
1378 LDFLAGS="${OLD_LDFLAGS}"
1379 AC_SUBST(have_ubsan)
1380 AC_SUBST(ubsan_cflags)
1381 AC_SUBST(ubsan_ldflags)
1382fi
1383if test "$enable_ubsan" = "yes" && test "$have_ubsan" != "yes"; then
1384 AC_MSG_ERROR([UBSAN not supported by compiler.])
1385fi
1386dnl
Darrick J. Wong5e666e32018-03-08 12:15:35 -08001387dnl Enable ADDRSAN for all packages
1388dnl
1389AC_ARG_ENABLE([addrsan],
1390[ --enable-addrsan enable address sanitizer],,
1391enable_addrsan=no)
1392if test "$enable_addrsan" = "yes" || test "$enable_addrsan" = "probe"; then
1393 AC_MSG_CHECKING([if C compiler supports ADDRSAN])
1394 OLD_CFLAGS="$CFLAGS"
1395 OLD_LDFLAGS="$LDFLAGS"
1396 ADDRSAN_FLAGS="-fsanitize=address"
1397 CFLAGS="$CFLAGS $ADDRSAN_FLAGS"
1398 LDFLAGS="$LDFLAGS $ADDRSAN_FLAGS"
1399 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1400 [AC_MSG_RESULT([yes])]
1401 [addrsan_cflags=$ADDRSAN_FLAGS]
1402 [addrsan_ldflags=$ADDRSAN_FLAGS]
1403 [have_addrsan=yes],
1404 [AC_MSG_RESULT([no])])
1405 CFLAGS="${OLD_CFLAGS}"
1406 LDFLAGS="${OLD_LDFLAGS}"
1407 AC_SUBST(have_addrsan)
1408 AC_SUBST(addrsan_cflags)
1409 AC_SUBST(addrsan_ldflags)
1410fi
1411if test "$enable_addrsan" = "yes" && test "$have_addrsan" != "yes"; then
1412 AC_MSG_ERROR([ADDRSAN not supported by compiler.])
1413fi
1414dnl
Darrick J. Wongbcca7862018-03-08 12:15:43 -08001415dnl Enable THREADSAN for all packages
1416dnl
1417AC_ARG_ENABLE([threadsan],
1418[ --enable-threadsan enable thread sanitizer],,
1419enable_threadsan=no)
1420if test "$enable_threadsan" = "yes" || test "$enable_threadsan" = "probe"; then
1421 AC_MSG_CHECKING([if C compiler supports THREADSAN])
1422 OLD_CFLAGS="$CFLAGS"
1423 OLD_LDFLAGS="$LDFLAGS"
1424 THREADSAN_FLAGS="-fsanitize=thread"
1425 CFLAGS="$CFLAGS $THREADSAN_FLAGS"
1426 LDFLAGS="$LDFLAGS $THREADSAN_FLAGS"
1427 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1428 [AC_MSG_RESULT([yes])]
1429 [threadsan_cflags=$THREADSAN_FLAGS]
1430 [threadsan_ldflags=$THREADSAN_FLAGS]
1431 [have_threadsan=yes],
1432 [AC_MSG_RESULT([no])])
1433 CFLAGS="${OLD_CFLAGS}"
1434 LDFLAGS="${OLD_LDFLAGS}"
1435 AC_SUBST(have_threadsan)
1436 AC_SUBST(threadsan_cflags)
1437 AC_SUBST(threadsan_ldflags)
1438fi
1439if test "$enable_threadsan" = "yes" && test "$have_threadsan" != "yes"; then
1440 AC_MSG_ERROR([THREADSAN not supported by compiler.])
1441fi
1442if test "$have_threadsan" = "yes" && test "$have_addrsan" = "yes"; then
1443 AC_MSG_WARN([ADDRSAN and THREADSAN are not known to work together.])
1444fi
1445dnl
Theodore Ts'offf45482003-04-13 00:44:19 -04001446dnl OS-specific uncomment control
Theodore Ts'oe6f2bda2002-08-18 03:37:10 -04001447dnl
1448LINUX_CMT="#"
Theodore Ts'offf45482003-04-13 00:44:19 -04001449CYGWIN_CMT="#"
1450UNIX_CMT=
Theodore Ts'oe6f2bda2002-08-18 03:37:10 -04001451case "$host_os" in
1452linux*)
1453 LINUX_CMT=
1454 ;;
Theodore Ts'offf45482003-04-13 00:44:19 -04001455cygwin)
1456 CYGWIN_CMT=
1457 UNIX_CMT="#"
Theodore Ts'offf45482003-04-13 00:44:19 -04001458 ;;
Theodore Ts'oe6f2bda2002-08-18 03:37:10 -04001459esac
1460AC_SUBST(LINUX_CMT)
Theodore Ts'offf45482003-04-13 00:44:19 -04001461AC_SUBST(CYGWIN_CMT)
1462AC_SUBST(UNIX_CMT)
Theodore Ts'oe6f2bda2002-08-18 03:37:10 -04001463dnl
Darrick J. Wong5ce368f2018-03-23 18:57:09 -07001464dnl e2scrub only builds on linux
1465dnl
1466E2SCRUB_CMT="$LINUX_CMT"
1467AC_SUBST(E2SCRUB_CMT)
1468dnl
Theodore Ts'o6c133521999-07-03 20:37:03 +00001469dnl Linux and Hurd places root files in the / by default
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001470dnl
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001471case "$host_os" in
Theodore Ts'o93636bd2003-07-12 02:45:05 -04001472linux* | gnu* | k*bsd*-gnu)
Theodore Ts'oa4b2d3c1998-04-03 16:12:25 +00001473 if test "$prefix" = NONE -a "$root_prefix" = NONE ; then
1474 root_prefix="";
Theodore Ts'o02d04db2008-08-22 10:52:42 -04001475 AC_MSG_RESULT([On $host_os systems, root_prefix defaults to ''])
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +00001476 fi
1477 ;;
1478esac
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +00001479dnl
Theodore Ts'oa4b2d3c1998-04-03 16:12:25 +00001480dnl On Linux/hurd, force the prefix to be /usr
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +00001481dnl
1482case "$host_os" in
Theodore Ts'o93636bd2003-07-12 02:45:05 -04001483linux* | gnu* | k*bsd*-gnu)
Theodore Ts'ofc6d9d51997-04-29 14:51:31 +00001484 if test "$prefix" = NONE ; then
Theodore Ts'oa4b2d3c1998-04-03 16:12:25 +00001485 prefix="/usr";
Theodore Ts'o02d04db2008-08-22 10:52:42 -04001486 AC_MSG_RESULT([On $host_os systems, prefix defaults to /usr])
Theodore Ts'obff61a72002-05-21 22:21:38 -04001487 if test "$mandir" = '${prefix}/man' ; then
Theodore Ts'o02d04db2008-08-22 10:52:42 -04001488 AC_MSG_RESULT([...and mandir defaults to /usr/share/man])
Theodore Ts'obff61a72002-05-21 22:21:38 -04001489 mandir=/usr/share/man
1490 fi
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001491 fi
1492;;
1493esac
Theodore Ts'oa4b2d3c1998-04-03 16:12:25 +00001494if test "$root_prefix" = NONE ; then
Theodore Ts'offe19911998-04-08 06:05:49 +00001495 if test "$prefix" = NONE ; then
Theodore Ts'oa4b2d3c1998-04-03 16:12:25 +00001496 root_prefix="$ac_default_prefix"
1497 else
1498 root_prefix="$prefix"
1499 fi
Theodore Ts'ob5ffead2002-05-11 19:17:00 -04001500 root_bindir=$bindir
1501 root_sbindir=$sbindir
1502 root_libdir=$libdir
1503 root_sysconfdir=$sysconfdir
1504else
1505 root_bindir='${root_prefix}/bin'
1506 root_sbindir='${root_prefix}/sbin'
1507 root_libdir='${root_prefix}/lib'
1508 root_sysconfdir='${root_prefix}/etc'
Theodore Ts'oa4b2d3c1998-04-03 16:12:25 +00001509fi
Theodore Ts'oc4ef11c2008-01-04 16:55:37 -05001510if test "$bindir" != '${exec_prefix}/bin'; then
1511 root_bindir=$bindir
Theodore Ts'o02d04db2008-08-22 10:52:42 -04001512 AC_MSG_RESULT([Setting root_bindir to $root_bindir])
Theodore Ts'oc4ef11c2008-01-04 16:55:37 -05001513fi
1514if test "$sbindir" != '${exec_prefix}/sbin'; then
1515 root_sbindir=$sbindir
Theodore Ts'o02d04db2008-08-22 10:52:42 -04001516 AC_MSG_RESULT([Setting root_sbindir to $root_sbindir])
Theodore Ts'oc4ef11c2008-01-04 16:55:37 -05001517fi
1518if test "$libdir" != '${exec_prefix}/lib'; then
1519 root_libdir=$libdir
Theodore Ts'o02d04db2008-08-22 10:52:42 -04001520 AC_MSG_RESULT([Setting root_libdir to $root_libdir])
Theodore Ts'oc4ef11c2008-01-04 16:55:37 -05001521fi
1522if test "$sysconfdir" != '${prefix}/etc'; then
1523 root_sysconfdir=$sysconfdir
Theodore Ts'o02d04db2008-08-22 10:52:42 -04001524 AC_MSG_RESULT([Setting root_sysconfdir to $root_sysconfdir])
Theodore Ts'oc4ef11c2008-01-04 16:55:37 -05001525fi
Theodore Ts'oa4b2d3c1998-04-03 16:12:25 +00001526AC_SUBST(root_prefix)
Theodore Ts'ob5ffead2002-05-11 19:17:00 -04001527AC_SUBST(root_bindir)
1528AC_SUBST(root_sbindir)
1529AC_SUBST(root_libdir)
1530AC_SUBST(root_sysconfdir)
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001531dnl
Theodore Ts'o55e00a22011-09-18 23:53:23 -04001532dnl Allow specification of the multiarch arch
1533dnl
1534AC_ARG_WITH([multiarch],
1535[ --with-multiarch=ARCH specify the multiarch triplet],
Theodore Ts'od7fa4102014-02-05 15:45:36 -05001536if test "$withval" = "lib64"; then
1537 libdir=/usr/lib64
1538 root_libdir=/lib64
1539else
1540 libdir=$libdir/$withval
1541 root_libdir=$root_libdir/$withval
1542fi
Darrick J. Wonga2df5892018-03-23 18:57:22 -07001543)
1544dnl
Theodore Ts'o55e00a22011-09-18 23:53:23 -04001545dnl
Theodore Ts'od3de1a72012-12-15 22:10:27 -05001546dnl See if -static works. This could fail if the linker does not
1547dnl support -static, or if required external libraries are not available
1548dnl in static form.
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001549dnl
Theodore Ts'od3de1a72012-12-15 22:10:27 -05001550AC_MSG_CHECKING([whether we can link with -static])
Theodore Ts'oae851481997-04-29 18:13:24 +00001551AC_CACHE_VAL(ac_cv_e2fsprogs_use_static,
Theodore Ts'ofd1677e2016-05-21 23:51:19 -04001552[SAVE_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS_STATIC -static"
Theodore Ts'oae851481997-04-29 18:13:24 +00001553AC_TRY_LINK([#include <stdio.h>],[fflush(stdout);],
1554 ac_cv_e2fsprogs_use_static=yes, ac_cv_e2fsprogs_use_static=no)
1555LDFLAGS=$SAVE_LDFLAGS])
Theodore Ts'odefde781999-01-04 07:39:19 +00001556dnl
1557dnl Regardless of how the test turns out, Solaris doesn't handle -static
1558dnl This is caused by the socket library requiring the nsl library, which
1559dnl requires the -dl library, which only works for dynamically linked
1560dnl programs. It basically means you can't have statically linked programs
1561dnl which use the network under Solaris.
1562dnl
1563case "$host_os" in
1564solaris2.*)
1565 ac_cv_e2fsprogs_use_static=no
1566;;
1567esac
Theodore Ts'oae851481997-04-29 18:13:24 +00001568AC_MSG_RESULT($ac_cv_e2fsprogs_use_static)
Theodore Ts'oae851481997-04-29 18:13:24 +00001569if test $ac_cv_e2fsprogs_use_static = yes; then
Theodore Ts'ofd1677e2016-05-21 23:51:19 -04001570 LDFLAGS_STATIC="$LDFLAGS_STATIC -static"
Theodore Ts'oae851481997-04-29 18:13:24 +00001571fi
Theodore Ts'ofd1677e2016-05-21 23:51:19 -04001572AC_SUBST(LDFLAGS_STATIC)
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001573dnl
Theodore Ts'o07a0db12003-07-05 14:50:24 -04001574dnl Work around mysterious Darwin / GNU libintl problem
1575dnl (__asm__ redirection doesn't work for some mysterious reason. Looks like
1576dnl Apple hacked gcc somehow?)
1577dnl
1578case "$host_os" in
1579darwin*)
Theodore Ts'o02d04db2008-08-22 10:52:42 -04001580 AC_MSG_RESULT([Using Apple Darwin / GNU libintl workaround])
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001581 AC_DEFINE(_INTL_REDIRECT_MACROS, 1,
1582 [Define to 1 if Apple Darwin libintl workaround is needed])
Theodore Ts'o07a0db12003-07-05 14:50:24 -04001583 ;;
1584esac
1585dnl
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001586dnl Only try to run the test suite if we're not cross compiling.
1587dnl
1588if test "$cross_compiling" = yes ; then
1589 DO_TEST_SUITE=
1590else
1591 DO_TEST_SUITE=check
1592fi
1593AC_SUBST(DO_TEST_SUITE)
1594dnl
Theodore Ts'oc6f35b82003-05-17 16:29:27 -04001595dnl Only include the intl include files if we're building with them
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001596dnl
1597INCLUDES='-I. -I$(top_builddir)/lib -I$(top_srcdir)/lib'
1598if test -n "$CPPFLAGS" ; then
1599 INCLUDES="$INCLUDES $CPPFLAGS"
Theodore Ts'oc6f35b82003-05-17 16:29:27 -04001600fi
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001601if test "$USE_INCLUDED_LIBINTL" = "yes" ; then
1602 INCLUDES=$INCLUDES' -I$(top_builddir)/intl -I$(top_srcdir)/intl'
1603fi
Theodore Ts'o6c59a662014-01-04 20:44:29 -05001604if test -n "$WITH_DIET_LIBC" ; then
1605 INCLUDES="$INCLUDES -D_REENTRANT"
1606fi
Theodore Ts'od1154eb2011-09-18 17:34:37 -04001607AC_SUBST(INCLUDES)
Theodore Ts'oc6f35b82003-05-17 16:29:27 -04001608dnl
Theodore Ts'odd947da2005-11-09 18:37:07 -04001609dnl Build CFLAGS
1610dnl
1611if test $cross_compiling = no; then
Theodore Ts'o28739272014-01-03 00:26:43 -05001612 BUILD_CFLAGS="$CFLAGS $CPPFLAGS $INCLUDES -DHAVE_CONFIG_H"
Theodore Ts'odd947da2005-11-09 18:37:07 -04001613 BUILD_LDFLAGS="$LDFLAGS"
Theodore Ts'odd947da2005-11-09 18:37:07 -04001614fi
1615AC_SUBST(BUILD_CFLAGS)
1616AC_SUBST(BUILD_LDFLAGS)
1617dnl
Theodore Ts'ofd1677e2016-05-21 23:51:19 -04001618dnl Define CFLAGS and LDFLAGS for shared libraries
1619dnl
1620CFLAGS_SHLIB=${CFLAGS_SHLIB:-$CFLAGS}
1621CFLAGS_STLIB=${CFLAGS_STLIB:-$CFLAGS}
1622LDFLAGS_SHLIB=${LDFLAGS_SHLIB:-$LDFLAGS}
1623AC_SUBST(CFLAGS_SHLIB)
1624AC_SUBST(CFLAGS_STLIB)
1625AC_SUBST(LDFLAGS_SHLIB)
Darrick J. Wong5ce368f2018-03-23 18:57:09 -07001626
1627dnl
1628dnl Where do udev rules go?
1629dnl
1630AC_ARG_WITH([udev_rules_dir],
1631 [AS_HELP_STRING([--with-udev-rules-dir@<:@=DIR@:>@],
1632 [Install udev rules into DIR.])],
1633 [],
1634 [with_udev_rules_dir=yes])
1635AS_IF([test "x${with_udev_rules_dir}" != "xno"],
1636 [
1637 AS_IF([test "x${with_udev_rules_dir}" = "xyes"],
1638 [
1639 PKG_CHECK_MODULES([udev], [udev],
1640 [
1641 with_udev_rules_dir="$($PKG_CONFIG --variable=udevdir udev)/rules.d"
1642 ], [
1643 with_udev_rules_dir=""
1644 ])
1645 ])
1646 AC_MSG_CHECKING([for udev rules dir])
1647 pkg_udev_rules_dir="${with_udev_rules_dir}"
1648 AS_IF([test -n "${pkg_udev_rules_dir}"],
1649 [
1650 AC_MSG_RESULT(${pkg_udev_rules_dir})
1651 have_udev="yes"
1652 ],
1653 [
1654 AC_MSG_RESULT(no)
1655 have_udev="no"
1656 ])
1657 ],
1658 [
1659 have_udev="disabled"
1660 ])
1661AC_SUBST(have_udev)
1662AC_SUBST(pkg_udev_rules_dir)
1663
Theodore Ts'ofd1677e2016-05-21 23:51:19 -04001664dnl
Darrick J. Wonga2df5892018-03-23 18:57:22 -07001665dnl Where do cron jobs go?
1666dnl
1667AC_ARG_WITH([crond_dir],
1668 [AS_HELP_STRING([--with-crond-dir@<:@=DIR@:>@],
1669 [Install system crontabs into DIR.])],
1670 [],
1671 [with_crond_dir=yes])
1672AS_IF([test "x${with_crond_dir}" != "xno"],
1673 [
1674 AS_IF([test "x${with_crond_dir}" = "xyes"],
1675 [
1676 AS_IF([test -d "/etc/cron.d"],
Theodore Ts'o188bf392019-05-22 13:03:38 -04001677 [with_crond_dir="/etc/cron.d"],
1678 [have_crond="no"; with_crond_dir=""])
Darrick J. Wonga2df5892018-03-23 18:57:22 -07001679 ])
1680 AC_MSG_CHECKING([for system crontab dir])
1681 crond_dir="${with_crond_dir}"
1682 AS_IF([test -n "${crond_dir}"],
1683 [
1684 AC_MSG_RESULT(${crond_dir})
1685 have_crond="yes"
1686 ],
1687 [
1688 AC_MSG_RESULT(no)
1689 have_crond="no"
1690 ])
1691 ],
1692 [
1693 have_crond="disabled"
1694 ])
1695AC_SUBST(have_crond)
1696AC_SUBST(crond_dir)
1697
1698dnl
1699dnl Where do systemd services go?
1700dnl
1701AC_ARG_WITH([systemd_unit_dir],
1702 [AS_HELP_STRING([--with-systemd-unit-dir@<:@=DIR@:>@],
1703 [Install systemd system units into DIR.])],
1704 [],
1705 [with_systemd_unit_dir=yes])
1706AS_IF([test "x${with_systemd_unit_dir}" != "xno"],
1707 [
1708 AS_IF([test "x${with_systemd_unit_dir}" = "xyes"],
1709 [
1710 PKG_CHECK_MODULES([systemd], [systemd],
1711 [
1712 with_systemd_unit_dir="$($PKG_CONFIG --variable=systemdsystemunitdir systemd)"
1713 ], [
1714 with_systemd_unit_dir=""
1715 ])
1716 m4_pattern_allow([^PKG_(MAJOR|MINOR|BUILD|REVISION)$])
1717 ])
1718 AC_MSG_CHECKING([for systemd system unit dir])
1719 systemd_system_unit_dir="${with_systemd_unit_dir}"
1720 AS_IF([test -n "${systemd_system_unit_dir}"],
1721 [
1722 AC_MSG_RESULT(${systemd_system_unit_dir})
1723 have_systemd="yes"
1724 ],
1725 [
1726 AC_MSG_RESULT(no)
1727 have_systemd="no"
1728 ])
1729 ],
1730 [
1731 have_systemd="disabled"
1732 ])
1733AC_SUBST(have_systemd)
1734AC_SUBST(systemd_system_unit_dir)
1735
1736dnl
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001737dnl Make our output files, being sure that we create the some miscellaneous
1738dnl directories
1739dnl
1740test -d lib || mkdir lib
1741test -d include || mkdir include
1742test -d include/linux || mkdir include/linux
Theodore Ts'odefde781999-01-04 07:39:19 +00001743test -d include/asm || mkdir include/asm
Theodore Ts'o44dfb372015-07-01 19:42:05 -04001744if test -z "$UUID_CMT" ; then
1745 uuid_out_list="lib/uuid/Makefile lib/uuid/uuid.pc \
1746 lib/uuid/uuid_types.h"
1747fi
1748if test -z "$BLKID_CMT" ; then
1749 blkid_out_list="lib/blkid/Makefile lib/blkid/blkid.pc \
1750 lib/blkid/blkid_types.h"
1751fi
Theodore Ts'oe5f0f3e2018-08-18 10:42:44 -04001752for i in MCONFIG Makefile \
Theodore Ts'o183c73b2012-05-12 23:13:24 -04001753 util/Makefile util/subst.conf util/gen-tarball util/install-symlink \
Theodore Ts'o4ea7ea02006-04-09 08:41:55 -04001754 lib/et/Makefile lib/ss/Makefile lib/e2p/Makefile \
1755 lib/ext2fs/Makefile lib/ext2fs/ext2_types.h \
Theodore Ts'of34af412015-07-11 23:05:57 -04001756 $uuid_out_list $blkid_out_list lib/support/Makefile \
Theodore Ts'o44dfb372015-07-01 19:42:05 -04001757 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 -05001758 misc/Makefile ext2ed/Makefile e2fsck/Makefile \
Theodore Ts'o94ba8c72003-03-02 02:07:14 -05001759 debugfs/Makefile tests/Makefile tests/progs/Makefile \
Matthias Andree98a5ad62009-07-15 17:37:52 +02001760 resize/Makefile doc/Makefile intl/Makefile \
Darrick J. Wong5ce368f2018-03-23 18:57:09 -07001761 intl/libgnuintl.h po/Makefile.in scrub/Makefile; do
Theodore Ts'o94ba8c72003-03-02 02:07:14 -05001762 if test -d `dirname ${srcdir}/$i` ; then
1763 outlist="$outlist $i"
1764 fi
1765done
1766AC_OUTPUT($outlist)
Theodore Ts'oee683a12005-02-05 15:53:56 -05001767if test -f util/gen-tarball; then chmod +x util/gen-tarball; fi