]> git.ipfire.org Git - thirdparty/e2fsprogs.git/blame - configure.ac
Drop use of -pedantic when doing gcc-wall
[thirdparty/e2fsprogs.git] / configure.ac
CommitLineData
50e1e10f 1AC_INIT(version.h)
37cdbee0 2AC_PREREQ(2.54)
b0cacab0 3AC_CONFIG_AUX_DIR(config)
d1154eb4 4AC_CONFIG_HEADERS([lib/config.h])
c714d024 5AH_BOTTOM([#include <dirpaths.h>])
50e1e10f
TT
6MCONFIG=./MCONFIG
7AC_SUBST_FILE(MCONFIG)
74becf3c
TT
8BINARY_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}'`
5ce368f0
DW
14E2FSPROGS_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}'`
74becf3c 19
40fa8cc9
TT
20if expr $YEAR ">" 1900 > /dev/null ; then
21 E2FSPROGS_YEAR=$YEAR
22elif expr $YEAR ">" 90 >/dev/null ; then
74becf3c
TT
23 E2FSPROGS_YEAR=19$YEAR
24else
25 E2FSPROGS_YEAR=20$YEAR
26fi
27
28case $MONTH in
927566a3
AD
29Jan) MONTH_NUM=01; E2FSPROGS_MONTH="January" ;;
30Feb) MONTH_NUM=02; E2FSPROGS_MONTH="February" ;;
31Mar) MONTH_NUM=03; E2FSPROGS_MONTH="March" ;;
32Apr) MONTH_NUM=04; E2FSPROGS_MONTH="April" ;;
33May) MONTH_NUM=05; E2FSPROGS_MONTH="May" ;;
34Jun) MONTH_NUM=06; E2FSPROGS_MONTH="June" ;;
35Jul) MONTH_NUM=07; E2FSPROGS_MONTH="July" ;;
36Aug) MONTH_NUM=08; E2FSPROGS_MONTH="August" ;;
37Sep) MONTH_NUM=09; E2FSPROGS_MONTH="September" ;;
38Oct) MONTH_NUM=10; E2FSPROGS_MONTH="October" ;;
39Nov) MONTH_NUM=11; E2FSPROGS_MONTH="November" ;;
40Dec) MONTH_NUM=12; E2FSPROGS_MONTH="December" ;;
02d04db4 41*) AC_MSG_WARN([Unknown month $MONTH??]) ;;
74becf3c
TT
42esac
43
927566a3
AD
44base_ver=`echo $E2FSPROGS_VERSION | \
45 sed -e 's/-WIP//' -e 's/pre-//' -e 's/-PLUS//'`
927566a3
AD
46
47date_spec=${E2FSPROGS_YEAR}.${MONTH_NUM}.${E2FSPROGS_DAY}
48
49case $E2FSPROGS_VERSION in
50*-WIP|pre-*)
2ab53829 51 E2FSPROGS_PKGVER="$base_ver~WIP.$date_spec"
927566a3
AD
52 ;;
53*)
54 E2FSPROGS_PKGVER="$base_ver"
55 ;;
56esac
57
58unset DATE MONTH YEAR base_ver pre_vers date_spec
02d04db4
TT
59AC_MSG_RESULT([Generating configuration file for e2fsprogs version $E2FSPROGS_VERSION])
60AC_MSG_RESULT([Release date is ${E2FSPROGS_MONTH}, ${E2FSPROGS_YEAR}])
74becf3c
TT
61AC_SUBST(E2FSPROGS_YEAR)
62AC_SUBST(E2FSPROGS_MONTH)
bff0cc95 63AC_SUBST(E2FSPROGS_DAY)
74becf3c 64AC_SUBST(E2FSPROGS_VERSION)
927566a3 65AC_SUBST(E2FSPROGS_PKGVER)
5ce368f0 66AC_SUBST(E2FSPROGS_DATE)
57aa50d4 67dnl
d21ae6c5
TT
68dnl Use diet libc
69dnl
eafba6c3 70WITH_DIET_LIBC=
d21ae6c5 71AC_ARG_WITH([diet-libc],
3249394d 72[ --with-diet-libc use diet libc],
d21ae6c5 73CC="diet cc -nostdinc"
eafba6c3 74WITH_DIET_LIBC=yes
6c59a665
TT
75if test -z "$LIBS"
76then
77 LIBS="-lcompat"
78else
79 LIBS="$LIBS -lcompat"
80fi
d21ae6c5
TT
81AC_MSG_RESULT(CC=$CC))dnl
82dnl
6c59a665
TT
83AC_CANONICAL_HOST
84dnl
85dnl Check to see if libdl exists for the sake of dlopen
86dnl
87DLOPEN_LIB=''
32179ce2 88AC_CHECK_LIB(dl, dlopen,DLOPEN_LIB=-ldl)
6c59a665
TT
89AC_SUBST(DLOPEN_LIB)
90dnl
74becf3c 91AC_ARG_WITH([cc],
0b5b9f90
TT
92AC_HELP_STRING([--with-cc],[no longer supported, use CC= instead]),
93AC_MSG_ERROR([--with-cc no longer supported; use CC= instead]))
74becf3c 94dnl
0b5b9f90
TT
95AC_ARG_WITH([ccopts],
96AC_HELP_STRING([--with-ccopts],[no longer supported, use CFLAGS= instead]),
97AC_MSG_ERROR([--with-ccopts no longer supported; use CFLAGS= instead]))
74becf3c 98dnl
0b5b9f90
TT
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]))
74becf3c 102dnl
0b5b9f90 103AC_PROG_CC
9b3018a8
TT
104if test "$GCC" = yes; then
105 RDYNAMIC="-rdynamic"
106 AC_SUBST(RDYNAMIC)
107fi
0b5b9f90 108AC_PROG_CPP
74becf3c 109dnl
b1c92f91
MA
110dnl 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
93613951 126AC_USE_SYSTEM_EXTENSIONS
b1c92f91 127dnl
055866d8
SR
128dnl Set default values for library extensions. Will be dealt with after
129dnl parsing configuration options, which may modify these
a4d09610
TT
130dnl
131LIB_EXT=.a
132STATIC_LIB_EXT=.a
14b596d4 133PROFILED_LIB_EXT=.a
a4d09610 134dnl
a4b2d3ce 135dnl Allow separate `root_prefix' to be specified
fc6d9d51 136dnl
a4b2d3ce
TT
137AC_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
fc6d9d51 141dnl
98919bdb
TT
142dnl 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=#
02d04db4 149 AC_MSG_RESULT([Disabling maintainer mode])
98919bdb
TT
150else
151 MAINTAINER_CMT=
02d04db4 152 AC_MSG_RESULT([Enabling maintainer mode])
98919bdb
TT
153fi
154,
155MAINTAINER_CMT=#
02d04db4 156AC_MSG_RESULT([Disabling maintainer mode by default])
98919bdb
TT
157)
158AC_SUBST(MAINTAINER_CMT)
159dnl
5aa6c3f6
TT
160dnl 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
183c73b0 174AC_MSG_RESULT([Disabling symlinks for install by default])
5aa6c3f6
TT
175)
176AC_SUBST(LINK_INSTALL_FLAGS)
177dnl
183c73b0
TT
178dnl handle --enable-relative-symlinks
179dnl
91d11da1
TT
180relative_symlink_defined=
181AC_ARG_ENABLE([relative-symlinks],
183c73b0
TT
182[ --enable-relative-symlinks use relative symlinks when installing],
183if test "$enableval" = "no"
184then
185 SYMLINK_RELATIVE=
91d11da1 186 relative_symlink_defined=yes
183c73b0
TT
187 AC_MSG_RESULT([Disabling relative symlinks for install])
188else
189 SYMLINK_RELATIVE=--relative
91d11da1
TT
190 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])
183c73b0
TT
201fi
202,
91d11da1
TT
203if test -z "$relative_symlink_defined"
204then
183c73b0
TT
205 SYMLINK_RELATIVE=
206AC_MSG_RESULT([Disabling relative symlinks for install by default])
91d11da1 207fi
183c73b0
TT
208)
209AC_SUBST(SYMLINK_RELATIVE)
210dnl
5aa6c3f6
TT
211dnl 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=
183c73b0 225AC_MSG_RESULT([Disabling symlinks for build by default])
5aa6c3f6
TT
226)
227AC_SUBST(LINK_BUILD_FLAGS)
228dnl
c13351f6
TT
229dnl handle --enable-verbose-makecmds
230dnl
231AC_ARG_ENABLE([verbose-makecmds],
5aa6c3f6 232[ --enable-verbose-makecmds enable verbose make command output],
c13351f6
TT
233if test "$enableval" = "no"
234then
235 AC_MSG_RESULT([Disabling verbose make commands])
236 E=@echo
c1986ecb 237 ES=echo
c13351f6
TT
238 Q=@
239else
240 AC_MSG_RESULT([Enabling verbose make commands])
241 E=@\\#
c1986ecb 242 ES=\\#
c13351f6
TT
243 Q=
244fi
245,
246AC_MSG_RESULT([Disabling verbose make commands])
247E=@echo
c1986ecb 248ES=echo
c13351f6
TT
249Q=@
250)
251AC_SUBST(E)
c1986ecb 252AC_SUBST(ES)
c13351f6
TT
253AC_SUBST(Q)
254dnl
a4ece359
TT
255dnl This needs to be before all of the --enable-*-shlibs options
256dnl
257E2_PKG_CONFIG_STATIC=--static
55da9876
TT
258LDFLAG_DYNAMIC=
259PRIVATE_LIBS_CMT=
a4ece359 260dnl
50e1e10f
TT
261dnl handle --enable-elf-shlibs
262dnl
263AC_ARG_ENABLE([elf-shlibs],
a4d09610 264[ --enable-elf-shlibs select ELF shared libraries],
50e1e10f
TT
265if test "$enableval" = "no"
266then
267 ELF_CMT=#
268 MAKEFILE_ELF=/dev/null
02d04db4 269 AC_MSG_RESULT([Disabling ELF shared libraries])
50e1e10f 270else
a4ece359 271 E2_PKG_CONFIG_STATIC=
50e1e10f
TT
272 ELF_CMT=
273 MAKEFILE_ELF=$srcdir/lib/Makefile.elf-lib
f5955dda
TT
274 [case "$host_os" in
275 solaris2.*)
276 MAKEFILE_ELF=$srcdir/lib/Makefile.solaris-lib
277 ;;
278 esac]
74becf3c 279 BINARY_TYPE=elfbin
a4d09610 280 LIB_EXT=.so
55da9876
TT
281 PRIVATE_LIBS_CMT=#
282 LDFLAG_DYNAMIC=['-Wl,-rpath-link,$(top_builddir)/lib']
02d04db4 283 AC_MSG_RESULT([Enabling ELF shared libraries])
50e1e10f
TT
284fi
285,
286MAKEFILE_ELF=/dev/null
287ELF_CMT=#
02d04db4 288AC_MSG_RESULT([Disabling ELF shared libraries by default])
50e1e10f
TT
289)
290AC_SUBST(ELF_CMT)
291AC_SUBST_FILE(MAKEFILE_ELF)
292dnl
293dnl handle --enable-bsd-shlibs
294dnl
295AC_ARG_ENABLE([bsd-shlibs],
a4d09610 296[ --enable-bsd-shlibs select BSD shared libraries],
50e1e10f
TT
297if test "$enableval" = "no"
298then
299 BSDLIB_CMT=#
300 MAKEFILE_BSDLIB=/dev/null
02d04db4 301 AC_MSG_RESULT([Disabling BSD shared libraries])
50e1e10f 302else
a4ece359 303 E2_PKG_CONFIG_STATIC=
50e1e10f
TT
304 BSDLIB_CMT=
305 MAKEFILE_BSDLIB=$srcdir/lib/Makefile.bsd-lib
a4d09610 306 LIB_EXT=.so
e71d8731 307 [case "$host_os" in
aa75eccc 308 darwin*)
e71d8731
TT
309 MAKEFILE_BSDLIB=$srcdir/lib/Makefile.darwin-lib
310 LIB_EXT=.dylib
311 ;;
312 esac]
02d04db4 313 AC_MSG_RESULT([Enabling BSD shared libraries])
50e1e10f
TT
314fi
315,
316MAKEFILE_BSDLIB=/dev/null
317BSDLIB_CMT=#
02d04db4 318AC_MSG_RESULT([Disabling BSD shared libraries by default])
50e1e10f
TT
319)
320AC_SUBST(BSDLIB_CMT)
321AC_SUBST_FILE(MAKEFILE_BSDLIB)
322dnl
323dnl handle --enable-profile
324dnl
325AC_ARG_ENABLE([profile],
a4d09610 326[ --enable-profile build profiling libraries],
50e1e10f
TT
327if test "$enableval" = "no"
328then
329 PROFILE_CMT=#
330 MAKEFILE_PROFILE=/dev/null
02d04db4 331 AC_MSG_RESULT([Disabling profiling libraries])
50e1e10f
TT
332else
333 PROFILE_CMT=
334 MAKEFILE_PROFILE=$srcdir/lib/Makefile.profile
a4d09610 335 PROFILED_LIB_EXT=_p.a
02d04db4 336 AC_MSG_RESULT([Building profiling libraries])
50e1e10f
TT
337fi
338,
339PROFILE_CMT=#
340MAKEFILE_PROFILE=/dev/null
02d04db4 341AC_MSG_RESULT([Disabling profiling libraries by default])
50e1e10f
TT
342)
343AC_SUBST(PROFILE_CMT)
344AC_SUBST_FILE(MAKEFILE_PROFILE)
345dnl
fedfb27f
TT
346dnl 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)
fd1677e8
TT
357dnl
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)
50e1e10f 379dnl
a4d09610
TT
380dnl Substitute library extensions
381dnl
382AC_SUBST(LIB_EXT)
383AC_SUBST(STATIC_LIB_EXT)
384AC_SUBST(PROFILED_LIB_EXT)
55da9876
TT
385AC_SUBST(LDFLAG_DYNAMIC)
386AC_SUBST(PRIVATE_LIBS_CMT)
a4d09610 387dnl
782bebfd 388dnl handle --enable-jbd-debug
cdf186e4 389dnl
782bebfd
TT
390AC_ARG_ENABLE([jbd-debug],
391[ --enable-jbd-debug enable journal debugging],
cdf186e4
TT
392if test "$enableval" = "no"
393then
02d04db4 394 AC_MSG_RESULT([Disabling journal debugging])
cdf186e4 395else
d1154eb4
TT
396 AC_DEFINE(CONFIG_JBD_DEBUG, 1,
397 [Define to 1 if debugging ext3/4 journal code])
02d04db4 398 AC_MSG_RESULT([Enabling journal debugging])
cdf186e4
TT
399fi
400,
02d04db4 401AC_MSG_RESULT([Disabling journal debugging by default])
cdf186e4
TT
402)
403dnl
f0a22d0f
TT
404dnl handle --enable-blkid-debug
405dnl
406AC_ARG_ENABLE([blkid-debug],
d21ae6c5 407[ --enable-blkid-debug enable blkid debugging],
f0a22d0f
TT
408if test "$enableval" = "no"
409then
02d04db4 410 AC_MSG_RESULT([Disabling blkid debugging])
f0a22d0f 411else
d1154eb4
TT
412 AC_DEFINE(CONFIG_BLKID_DEBUG, 1,
413 [Define to 1 if debugging the blkid library])
02d04db4 414 AC_MSG_RESULT([Enabling blkid debugging])
f0a22d0f
TT
415fi
416,
02d04db4 417AC_MSG_RESULT([Disabling blkid debugging by default])
2a29f135
TT
418)
419dnl
420dnl handle --enable-testio-debug
421dnl
422AC_ARG_ENABLE([testio-debug],
af773654 423[ --disable-testio-debug disable the use of the test I/O manager for debugging],
d1154eb4
TT
424AH_TEMPLATE([CONFIG_TESTIO_DEBUG],
425 [Define to 1 if the testio I/O manager should be enabled])
2a29f135
TT
426if test "$enableval" = "no"
427then
02d04db4 428 AC_MSG_RESULT([Disabling testio debugging])
af773654 429 TEST_IO_CMT="#"
2a29f135 430else
af773654 431 TEST_IO_CMT=
d1154eb4 432 AC_DEFINE(CONFIG_TESTIO_DEBUG, 1)
02d04db4 433 AC_MSG_RESULT([Enabling testio debugging])
2a29f135
TT
434fi
435,
af773654 436AC_MSG_RESULT([Enabling testio debugging by default])
d1154eb4 437AC_DEFINE(CONFIG_TESTIO_DEBUG, 1)
af773654 438TEST_IO_CMT=
f0a22d0f 439)
af773654 440AC_SUBST(TEST_IO_CMT)
f0a22d0f 441dnl
39fd3d4f
SJR
442dnl handle --disable-libuuid
443dnl
444PKG_PROG_PKG_CONFIG
445LIBUUID=
446DEPLIBUUID=
447STATIC_LIBUUID=
448DEPSTATIC_LIBUUID=
449PROFILED_LIBUUID=
450DEPPROFILED_LIBUUID=
451UUID_CMT=
452AC_ARG_ENABLE([libuuid],
f5dffb81 453[ --enable-libuuid build and use private uuid library],
39fd3d4f
SJR
454if 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`],
2d7583bd 463 [AC_MSG_ERROR([external uuid library not found])])
5afdf37b 464 PROFILED_LIBUUID=$LIBUUID
39fd3d4f
SJR
465 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,
f5dffb81
TT
477if 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
39fd3d4f
SJR
495)
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
14b596d4
TT
504dnl handle --disable-libblkid
505dnl
506PKG_PROG_PKG_CONFIG
507LIBBLKID=
508DEPLIBBLKID=
509STATIC_LIBBLKID=
510DEPSTATIC_LIBBLKID=
511PROFILED_LIBBLKID=
512DEPPROFILED_LIBBLKID=
513BLKID_CMT=
d1154eb4 514AH_TEMPLATE([CONFIG_BUILD_FINDFS], [Define to 1 to compile findfs])
14b596d4 515AC_ARG_ENABLE([libblkid],
f5dffb81 516[ --enable-libblkid build and use private blkid library],
14b596d4
TT
517if 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`],
2d7583bd 526 [AC_MSG_ERROR([external blkid library not found])], -luuid)
14b596d4 527 BLKID_CMT=#
5afdf37b 528 PROFILED_LIBBLKID=$LIBBLKID
14b596d4
TT
529 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
d1154eb4 537 AC_DEFINE(CONFIG_BUILD_FINDFS, 1)
14b596d4
TT
538 AC_MSG_RESULT([Enabling private blkid library])
539fi
540,
f5dffb81
TT
541if 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
14b596d4
TT
560)
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
0afb9be6
TT
569dnl handle --enable-subset
570dnl
571ALL_CMT=
feb235e0 572SUBSET_CMT=
0afb9be6
TT
573AC_ARG_ENABLE([subset],
574[ --enable-subset enable subset-only build],
575if test "$enableval" = "no"
576then
feb235e0 577 SUBSET_CMT=#
0afb9be6
TT
578 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)
feb235e0 585AC_SUBST(SUBSET_CMT)
0afb9be6 586dnl
3df6014a
TT
587dnl 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
cdf186e4
TT
603dnl handle --enable-debugfs
604dnl
605AC_ARG_ENABLE([debugfs],
606[ --disable-debugfs disable support of debugfs program],
607if test "$enableval" = "no"
608then
02d04db4 609 AC_MSG_RESULT([Disabling debugfs support])
cdf186e4
TT
610 DEBUGFS_CMT="#"
611else
612 DEBUGFS_CMT=
02d04db4 613 AC_MSG_RESULT([Enabling debugfs support])
cdf186e4
TT
614fi
615,
02d04db4 616AC_MSG_RESULT([Enabling debugfs support by default])
cdf186e4
TT
617DEBUGFS_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
02d04db4 627 AC_MSG_RESULT([Disabling e2image support])
cdf186e4
TT
628 IMAGER_CMT="#"
629else
630 IMAGER_CMT=
02d04db4 631 AC_MSG_RESULT([Enabling e2image support])
cdf186e4
TT
632fi
633,
02d04db4 634AC_MSG_RESULT([Enabling e2image support by default])
cdf186e4
TT
635IMAGER_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
02d04db4 645 AC_MSG_RESULT([Disabling e2resize support])
cdf186e4
TT
646 RESIZER_CMT="#"
647else
648 RESIZER_CMT=
02d04db4 649 AC_MSG_RESULT([Enabling e2resize support])
cdf186e4
TT
650fi
651,
02d04db4 652AC_MSG_RESULT([Enabling e2resize support by default])
cdf186e4
TT
653RESIZER_CMT=
654)
655AC_SUBST(RESIZER_CMT)
656dnl
8d9c50c5
TT
657dnl 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,
6c59a665
TT
670if 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
8d9c50c5
TT
678)
679AC_SUBST(DEFRAG_CMT)
680dnl
fc6d9d51
TT
681dnl 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=''
02d04db4 688 AC_MSG_RESULT([Not building fsck wrapper])
fc6d9d51
TT
689else
690 FSCK_PROG=fsck FSCK_MAN=fsck.8
02d04db4 691 AC_MSG_RESULT([Building fsck wrapper])
fc6d9d51
TT
692fi]
693,
694[case "$host_os" in
e363240d 695 gnu*)
fc6d9d51 696 FSCK_PROG='' FSCK_MAN=''
02d04db4 697 AC_MSG_RESULT([Not building fsck wrapper by default])
fc6d9d51
TT
698 ;;
699 *)
700 FSCK_PROG=fsck FSCK_MAN=fsck.8
02d04db4 701 AC_MSG_RESULT([Building fsck wrapper by default])
fc6d9d51
TT
702esac]
703)
704AC_SUBST(FSCK_PROG)
705AC_SUBST(FSCK_MAN)
706dnl
5d40773b
TT
707dnl 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=''
02d04db4 714 AC_MSG_RESULT([Not building e2initrd helper])
5d40773b
TT
715else
716 E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8
02d04db4 717 AC_MSG_RESULT([Building e2initrd helper])
5d40773b
TT
718fi]
719,
720E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8
02d04db4 721AC_MSG_RESULT([Building e2initrd helper by default])
5d40773b
TT
722)
723AC_SUBST(E2INITRD_PROG)
724AC_SUBST(E2INITRD_MAN)
4db2f59a 725dnl
5d40773b 726dnl
50e1e10f 727dnl
3249394d
TT
728AC_ARG_ENABLE([tls],
729[ --disable-tls disable use of thread local support],
730[if test "$enableval" = "no"
731then
732 try_tls=""
02d04db4 733 AC_MSG_RESULT([Disabling thread local support])
3249394d
TT
734else
735 try_tls="yes"
02d04db4 736 AC_MSG_RESULT([Enabling thread local support])
3249394d
TT
737fi]
738,
eafba6c3
TT
739if test -n "$WITH_DIET_LIBC"
740then
741 try_tls=""
02d04db4 742 AC_MSG_RESULT([Diet libc does not support thread local support])
eafba6c3
TT
743else
744 try_tls="yes"
02d04db4 745 AC_MSG_RESULT([Try using thread local support by default])
eafba6c3 746fi
3249394d
TT
747)
748if test "$try_tls" = "yes"
749then
750AX_TLS
751fi
752dnl
753dnl
754dnl
d1154eb4 755AH_TEMPLATE([USE_UUIDD], [Define to 1 to build uuidd])
5610f992
TT
756AC_ARG_ENABLE([uuidd],
757[ --disable-uuidd disable building the uuid daemon],
758[if test "$enableval" = "no"
759then
02d04db4 760 AC_MSG_RESULT([Not building uuidd])
5610f992
TT
761 UUIDD_CMT="#"
762else
d1154eb4 763 AC_DEFINE(USE_UUIDD, 1)
5610f992 764 UUIDD_CMT=""
02d04db4 765 AC_MSG_RESULT([Building uuidd])
5610f992
TT
766fi]
767,
d1154eb4 768AC_DEFINE(USE_UUIDD, 1)
e3d10158
TT
769if 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
5610f992
TT
777)
778AC_SUBST(UUIDD_CMT)
779dnl
d6a4bcb5
TB
780dnl 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
749f0712
TT
797dnl 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
1625bf42
TB
822dnl 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
5610f992
TT
859dnl
860dnl
50e1e10f
TT
861MAKEFILE_LIBRARY=$srcdir/lib/Makefile.library
862AC_SUBST_FILE(MAKEFILE_LIBRARY)
863dnl
cdf186e4
TT
864dnl Add internationalization support, using gettext.
865dnl
b0cacab0 866GETTEXT_PACKAGE=e2fsprogs
cdf186e4
TT
867PACKAGE=e2fsprogs
868VERSION="$E2FSPROGS_VERSION"
b0cacab0 869VERSION=0.14.1
d1154eb4
TT
870AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [package name for gettext])
871AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [version for gettext])
b0cacab0 872AC_SUBST(GETTEXT_PACKAGE)
cdf186e4
TT
873AC_SUBST(PACKAGE)
874AC_SUBST(VERSION)
875
cdf186e4
TT
876AM_GNU_GETTEXT
877dnl
50e1e10f
TT
878dnl End of configuration options
879dnl
74becf3c 880AC_SUBST(BINARY_TYPE)
50e1e10f 881AC_PROG_MAKE_SET
bcb915b0 882CHECK_GNU_MAKE
50e1e10f 883AC_PATH_PROG(LN, ln, ln)
5abc0414 884AC_PROG_MKDIR_P
fc6d9d51 885AC_PROG_LN_S
50e1e10f
TT
886AC_PATH_PROG(MV, mv, mv)
887AC_PATH_PROG(CP, cp, cp)
888AC_PATH_PROG(RM, rm, rm)
889AC_PATH_PROG(CHMOD, chmod, :)
32237014
TT
890AC_PROG_AWK
891AC_PROG_EGREP
50e1e10f 892AC_PATH_PROG(SED, sed, sed)
9d564f73 893AC_PATH_PROG(PERL, perl, perl)
250f79f0 894AC_PATH_PROG(LDCONFIG, ldconfig, :)
50e1e10f
TT
895AC_CHECK_TOOL(AR, ar, ar)
896AC_CHECK_TOOL(RANLIB, ranlib, :)
897AC_CHECK_TOOL(STRIP, strip, :)
7321d94e
MK
898AC_CHECK_PROG(MAKEINFO, makeinfo, makeinfo, )
899if test "_$MAKEINFO" = "_"; then
ca1de98a 900 MAKEINFO="echo Makeinfo is missing. Info documentation will not be built."
7321d94e
MK
901else
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)
50e1e10f 912AC_PROG_INSTALL
6c133523
TT
913# 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
677fc916
MF
920AC_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
c84da2ee 938 attr/xattr.h
677fc916
MF
939 linux/falloc.h
940 linux/fd.h
82424fc6 941 linux/fsmap.h
677fc916 942 linux/major.h
fbabd5c4 943 linux/loop.h
f47f3195 944 linux/types.h
677fc916
MF
945 net/if_dl.h
946 netinet/in.h
81cbf1ef 947 sys/acl.h
677fc916 948 sys/disklabel.h
51050544 949 sys/disk.h
677fc916
MF
950 sys/file.h
951 sys/ioctl.h
74f2c4aa 952 sys/key.h
677fc916
MF
953 sys/mkdev.h
954 sys/mman.h
51050544 955 sys/mount.h
677fc916 956 sys/prctl.h
677fc916
MF
957 sys/resource.h
958 sys/select.h
959 sys/socket.h
960 sys/sockio.h
961 sys/stat.h
962 sys/syscall.h
79614b27 963 sys/sysctl.h
677fc916
MF
964 sys/sysmacros.h
965 sys/time.h
966 sys/types.h
967 sys/un.h
968 sys/wait.h
d7de3f3d 969 sys/xattr.h
677fc916 970]))
ec3a69bb
MA
971dnl 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
da76d6b7
TT
990AC_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]])
50e1e10f 999AC_FUNC_VPRINTF
fff45483 1000dnl Check to see if dirent has member d_reclen. On cygwin those d_reclen
055866d8 1001dnl is not declared.
d1154eb4
TT
1002AC_CHECK_MEMBER(struct dirent.d_reclen,[AC_DEFINE(HAVE_RECLEN_DIRENT, 1,
1003 [Define to 1 if dirent has d_reclen])],,
6c65d251 1004 [#include <dirent.h>])
2873927d 1005AC_CHECK_MEMBERS([struct stat.st_atim])
d1154eb4
TT
1006dnl 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])],,
6c65d251 1009 [#include <sys/types.h>])
50e1e10f 1010dnl
b0b9c4de
TT
1011dnl 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
d1154eb4
TT
1014AC_CHECK_DECL(llseek,[AC_DEFINE(HAVE_LLSEEK_PROTOTYPE, 1,
1015 [Define to 1 if llseek declared in unistd.h])],,
6c65d251 1016 [#include <unistd.h>])
b0b9c4de 1017dnl
6928adc9
TT
1018dnl 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
d1154eb4
TT
1026AC_CHECK_DECL(lseek64,[AC_DEFINE(HAVE_LSEEK64_PROTOTYPE, 1,
1027 [Define to 1 if lseek64 declared in unistd.h])],,
6c65d251
TT
1028 [#define _LARGEFILE_SOURCE
1029 #define _LARGEFILE64_SOURCE
1030 #include <unistd.h>])
6928adc9 1031dnl
50e1e10f
TT
1032dnl Word sizes...
1033dnl
50e1e10f
TT
1034AC_CHECK_SIZEOF(short)
1035AC_CHECK_SIZEOF(int)
1036AC_CHECK_SIZEOF(long)
fc6d9d51 1037AC_CHECK_SIZEOF(long long)
274d46e1 1038AC_CHECK_SIZEOF(off_t)
2dd680f3 1039AC_CHECK_SIZEOF(time_t)
50e1e10f
TT
1040SIZEOF_SHORT=$ac_cv_sizeof_short
1041SIZEOF_INT=$ac_cv_sizeof_int
1042SIZEOF_LONG=$ac_cv_sizeof_long
fc6d9d51 1043SIZEOF_LONG_LONG=$ac_cv_sizeof_long_long
274d46e1 1044SIZEOF_OFF_T=$ac_cv_sizeof_off_t
2dd680f3 1045SIZEOF_TIME_T=$ac_cv_sizeof_time_t
50e1e10f
TT
1046AC_SUBST(SIZEOF_SHORT)
1047AC_SUBST(SIZEOF_INT)
1048AC_SUBST(SIZEOF_LONG)
fc6d9d51 1049AC_SUBST(SIZEOF_LONG_LONG)
274d46e1 1050AC_SUBST(SIZEOF_OFF_T)
2dd680f3 1051AC_SUBST(SIZEOF_TIME_T)
877eb6d9 1052AC_C_BIGENDIAN
91f04685
CQ
1053if 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
4ea7ea00
TT
1058ASM_TYPES_HEADER=./asm_types.h
1059AC_SUBST_FILE(ASM_TYPES_HEADER)
50e1e10f 1060dnl
488c75a6
TT
1061dnl 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
0c193f82
TT
1080dnl See if we have inttypes.h and if intptr_t is defined
1081dnl
1082AC_CHECK_HEADERS([inttypes.h])
d2ee56d8 1083AC_CHECK_TYPES(intptr_t)
0c193f82 1084dnl
50e1e10f
TT
1085dnl 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
c03bc4e8
TT
1096 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
d1154eb4
TT
1104 AC_DEFINE(HAVE_STAT_FLAGS, 1,
1105 [Define to 1 if struct stat has st_flags])
c03bc4e8 1106 fi
50e1e10f 1107fi
84ea6e70
TT
1108dnl
1109dnl Check for the presence of SA_LEN
1110dnl
6c65d251 1111AC_CHECK_MEMBER(struct sockaddr.sa_len,
d1154eb4
TT
1112 AC_DEFINE_UNQUOTED(HAVE_SA_LEN,1,
1113 [Define to 1 if if struct sockaddr contains sa_len]),,
6c65d251
TT
1114 [#include <sys/types.h>
1115 #include <sys/socket.h>])
84ea6e70 1116dnl
7154d974
TT
1117dnl If we are using the system-provided blkid library, check for
1118dnl the functions added after migrating that library to util-linux
9ed8e5fe
ES
1119dnl
1120if test -n "$BLKID_CMT"; then
7154d974 1121 AC_CHECK_LIB(blkid, blkid_probe_get_topology,
f72ea2de
DL
1122 AC_DEFINE(HAVE_BLKID_PROBE_GET_TOPOLOGY, 1,
1123 [Define to 1 if blkid has blkid_probe_get_topology]))
7154d974 1124 AC_CHECK_LIB(blkid, blkid_probe_enable_partitions,
f72ea2de
DL
1125 AC_DEFINE(HAVE_BLKID_PROBE_ENABLE_PARTITIONS, 1,
1126 [Define to 1 if blkid has blkid_probe_enable_partitions]))
9ed8e5fe
ES
1127fi
1128dnl
32179ce2
TT
1129if test -n "$DLOPEN_LIB" ; then
1130 ac_cv_func_dlopen=yes
1131fi
677fc916
MF
1132AC_CHECK_FUNCS(m4_flatten([
1133 __secure_getenv
74f2c4aa 1134 add_key
677fc916 1135 backtrace
677fc916 1136 chflags
32179ce2 1137 dlopen
9a393891 1138 fadvise64
677fc916
MF
1139 fallocate
1140 fallocate64
1141 fchown
f47f3195 1142 fcntl
677fc916
MF
1143 fdatasync
1144 fstat64
f47f3195 1145 fsync
677fc916 1146 ftruncate64
2873927d 1147 futimes
6c59a665 1148 getcwd
677fc916 1149 getdtablesize
32b8802a 1150 gethostname
677fc916 1151 getmntinfo
25ff7725 1152 getpwuid_r
677fc916
MF
1153 getrlimit
1154 getrusage
1155 jrand48
74f2c4aa 1156 keyctl
c84da2ee 1157 llistxattr
677fc916
MF
1158 llseek
1159 lseek64
1160 mallinfo
1161 mbstowcs
1162 memalign
6c59a665 1163 mempcpy
677fc916
MF
1164 mmap
1165 msync
1166 nanosleep
1167 open64
1168 pathconf
1169 posix_fadvise
9a393891 1170 posix_fadvise64
677fc916
MF
1171 posix_memalign
1172 prctl
baa35446
DW
1173 pread
1174 pwrite
f00948ad
TT
1175 pread64
1176 pwrite64
1ad3174a 1177 secure_getenv
b24efa21 1178 setmntent
677fc916
MF
1179 setresgid
1180 setresuid
c42de75b 1181 snprintf
677fc916 1182 srandom
6c59a665 1183 stpcpy
677fc916
MF
1184 strcasecmp
1185 strdup
1186 strnlen
1187 strptime
1188 strtoull
1189 sync_file_range
1190 sysconf
1191 usleep
1192 utime
441eb337 1193 utimes
677fc916
MF
1194 valloc
1195]))
fc6d9d51 1196dnl
fc6d9d51
TT
1197dnl 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
b291c11f
DW
1204dnl See if libmagic exists
1205dnl
1206AC_CHECK_LIB(magic, magic_file, [MAGIC_LIB=-lmagic
1207AC_CHECK_HEADERS([magic.h])])
32179ce2 1208if test "$ac_cv_func_dlopen" = yes ; then
d2e3c0dc
TT
1209 MAGIC_LIB=$DLOPEN_LIB
1210fi
b291c11f
DW
1211AC_SUBST(MAGIC_LIB)
1212dnl
62bc243f
GZ
1213dnl 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
81cbf1ef
DW
1218dnl 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],
f5dffb81 1224[ --disable-fuse2fs do not build fuse2fs],
81cbf1ef
DW
1225if 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
50e1e10f
TT
1271dnl 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
d1154eb4 1279 AC_DEFINE(HAVE_OPTRESET, 1, [Define to 1 if optreset for getopt is present])
50e1e10f
TT
1280fi
1281dnl
d7f45af8
TT
1282dnl Test for sem_init, and which library it might require:
1283dnl
d1154eb4 1284AH_TEMPLATE([HAVE_SEM_INIT], [Define to 1 if sem_init() exists])
d7f45af8 1285SEM_INIT_LIB=''
cfb8e0bd
TT
1286echo 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,
d1154eb4 1291 AC_DEFINE(HAVE_SEM_INIT, 1)
d7f45af8 1292 SEM_INIT_LIB=-lpthread,
cfb8e0bd 1293 AC_CHECK_LIB(rt, sem_init,
d1154eb4 1294 AC_DEFINE(HAVE_SEM_INIT, 1)
d7f45af8 1295 SEM_INIT_LIB=-lrt,
cfb8e0bd 1296 AC_CHECK_LIB(posix4, sem_init,
d1154eb4 1297 AC_DEFINE(HAVE_SEM_INIT, 1)
d7f45af8 1298 SEM_INIT_LIB=-lposix4))))dnl
cfb8e0bd 1299fi
d7f45af8
TT
1300AC_SUBST(SEM_INIT_LIB)
1301dnl
e54635de
TT
1302dnl Check for unified diff
1303dnl
1304AC_MSG_CHECKING(for unified diff option)
27f991b0 1305if diff -u $0 $0 > /dev/null 2>&1 ; then
e54635de
TT
1306 UNI_DIFF_OPTS=-u
1307else
1308 UNI_DIFF_OPTS=-c
1309fi
1310AC_MSG_RESULT($UNI_DIFF_OPTS)
1311AC_SUBST(UNI_DIFF_OPTS)
1312dnl
8f3f29d3
TT
1313dnl We use the EXT2 ioctls only under Linux
1314dnl
1315case "$host_os" in
1316linux*)
d1154eb4 1317 AC_DEFINE(HAVE_EXT2_IOCTLS, 1, [Define to 1 if Ext2 ioctls present])
8f3f29d3
TT
1318 ;;
1319esac
50e1e10f 1320dnl
ea1a3fa2
NC
1321dnl Check the available mount options
1322dnl
1323AX_CHECK_MOUNT_OPT(nosuid)
1324AX_CHECK_MOUNT_OPT(nodev)
4aece328
DW
1325dnl Enable LTO for all packages
1326dnl
1327AC_ARG_ENABLE([lto],
1328[ --enable-lto enable link time optimization],,
139a3092 1329enable_lto=no)
4aece328
DW
1330if 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"
49715704 1334 LTO_FLAGS="-g -flto -ffat-lto-objects"
4aece328
DW
1335 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
1c2a76ae
DW
1359dnl 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
5e666e3d
DW
1387dnl 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
bcca786b
DW
1415dnl 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
fff45483 1446dnl OS-specific uncomment control
e6f2bda3
TT
1447dnl
1448LINUX_CMT="#"
fff45483
TT
1449CYGWIN_CMT="#"
1450UNIX_CMT=
e6f2bda3
TT
1451case "$host_os" in
1452linux*)
1453 LINUX_CMT=
1454 ;;
fff45483
TT
1455cygwin)
1456 CYGWIN_CMT=
1457 UNIX_CMT="#"
fff45483 1458 ;;
e6f2bda3
TT
1459esac
1460AC_SUBST(LINUX_CMT)
fff45483
TT
1461AC_SUBST(CYGWIN_CMT)
1462AC_SUBST(UNIX_CMT)
e6f2bda3 1463dnl
5ce368f0
DW
1464dnl e2scrub only builds on linux
1465dnl
1466E2SCRUB_CMT="$LINUX_CMT"
1467AC_SUBST(E2SCRUB_CMT)
1468dnl
6c133523 1469dnl Linux and Hurd places root files in the / by default
50e1e10f 1470dnl
50e1e10f 1471case "$host_os" in
93636bde 1472linux* | gnu* | k*bsd*-gnu)
a4b2d3ce
TT
1473 if test "$prefix" = NONE -a "$root_prefix" = NONE ; then
1474 root_prefix="";
02d04db4 1475 AC_MSG_RESULT([On $host_os systems, root_prefix defaults to ''])
fc6d9d51
TT
1476 fi
1477 ;;
1478esac
fc6d9d51 1479dnl
a4b2d3ce 1480dnl On Linux/hurd, force the prefix to be /usr
fc6d9d51
TT
1481dnl
1482case "$host_os" in
93636bde 1483linux* | gnu* | k*bsd*-gnu)
fc6d9d51 1484 if test "$prefix" = NONE ; then
a4b2d3ce 1485 prefix="/usr";
02d04db4 1486 AC_MSG_RESULT([On $host_os systems, prefix defaults to /usr])
bff61a7a 1487 if test "$mandir" = '${prefix}/man' ; then
02d04db4 1488 AC_MSG_RESULT([...and mandir defaults to /usr/share/man])
bff61a7a
TT
1489 mandir=/usr/share/man
1490 fi
50e1e10f
TT
1491 fi
1492;;
1493esac
a4b2d3ce 1494if test "$root_prefix" = NONE ; then
ffe1991f 1495 if test "$prefix" = NONE ; then
a4b2d3ce
TT
1496 root_prefix="$ac_default_prefix"
1497 else
1498 root_prefix="$prefix"
1499 fi
b5ffeade
TT
1500 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'
a4b2d3ce 1509fi
c4ef11c5
TT
1510if test "$bindir" != '${exec_prefix}/bin'; then
1511 root_bindir=$bindir
02d04db4 1512 AC_MSG_RESULT([Setting root_bindir to $root_bindir])
c4ef11c5
TT
1513fi
1514if test "$sbindir" != '${exec_prefix}/sbin'; then
1515 root_sbindir=$sbindir
02d04db4 1516 AC_MSG_RESULT([Setting root_sbindir to $root_sbindir])
c4ef11c5
TT
1517fi
1518if test "$libdir" != '${exec_prefix}/lib'; then
1519 root_libdir=$libdir
02d04db4 1520 AC_MSG_RESULT([Setting root_libdir to $root_libdir])
c4ef11c5
TT
1521fi
1522if test "$sysconfdir" != '${prefix}/etc'; then
1523 root_sysconfdir=$sysconfdir
02d04db4 1524 AC_MSG_RESULT([Setting root_sysconfdir to $root_sysconfdir])
c4ef11c5 1525fi
a4b2d3ce 1526AC_SUBST(root_prefix)
b5ffeade
TT
1527AC_SUBST(root_bindir)
1528AC_SUBST(root_sbindir)
1529AC_SUBST(root_libdir)
1530AC_SUBST(root_sysconfdir)
50e1e10f 1531dnl
55e00a25
TT
1532dnl Allow specification of the multiarch arch
1533dnl
1534AC_ARG_WITH([multiarch],
1535[ --with-multiarch=ARCH specify the multiarch triplet],
d7fa4103
TT
1536if test "$withval" = "lib64"; then
1537 libdir=/usr/lib64
1538 root_libdir=/lib64
1539else
1540 libdir=$libdir/$withval
1541 root_libdir=$root_libdir/$withval
1542fi
a2df5894
DW
1543)
1544dnl
55e00a25 1545dnl
d3de1a71
TT
1546dnl 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.
50e1e10f 1549dnl
d3de1a71 1550AC_MSG_CHECKING([whether we can link with -static])
ae851482 1551AC_CACHE_VAL(ac_cv_e2fsprogs_use_static,
fd1677e8 1552[SAVE_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS_STATIC -static"
ae851482
TT
1553AC_TRY_LINK([#include <stdio.h>],[fflush(stdout);],
1554 ac_cv_e2fsprogs_use_static=yes, ac_cv_e2fsprogs_use_static=no)
1555LDFLAGS=$SAVE_LDFLAGS])
defde784
TT
1556dnl
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
ae851482 1568AC_MSG_RESULT($ac_cv_e2fsprogs_use_static)
ae851482 1569if test $ac_cv_e2fsprogs_use_static = yes; then
fd1677e8 1570 LDFLAGS_STATIC="$LDFLAGS_STATIC -static"
ae851482 1571fi
fd1677e8 1572AC_SUBST(LDFLAGS_STATIC)
50e1e10f 1573dnl
07a0db15
TT
1574dnl 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*)
02d04db4 1580 AC_MSG_RESULT([Using Apple Darwin / GNU libintl workaround])
d1154eb4
TT
1581 AC_DEFINE(_INTL_REDIRECT_MACROS, 1,
1582 [Define to 1 if Apple Darwin libintl workaround is needed])
07a0db15
TT
1583 ;;
1584esac
1585dnl
50e1e10f
TT
1586dnl 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
c6f35b8a 1595dnl Only include the intl include files if we're building with them
d1154eb4
TT
1596dnl
1597INCLUDES='-I. -I$(top_builddir)/lib -I$(top_srcdir)/lib'
1598if test -n "$CPPFLAGS" ; then
1599 INCLUDES="$INCLUDES $CPPFLAGS"
1600fi
c6f35b8a 1601if test "$USE_INCLUDED_LIBINTL" = "yes" ; then
d1154eb4 1602 INCLUDES=$INCLUDES' -I$(top_builddir)/intl -I$(top_srcdir)/intl'
c6f35b8a 1603fi
6c59a665
TT
1604if test -n "$WITH_DIET_LIBC" ; then
1605 INCLUDES="$INCLUDES -D_REENTRANT"
1606fi
d1154eb4 1607AC_SUBST(INCLUDES)
c6f35b8a 1608dnl
dd947da2
TT
1609dnl Build CFLAGS
1610dnl
1611if test $cross_compiling = no; then
2873927d 1612 BUILD_CFLAGS="$CFLAGS $CPPFLAGS $INCLUDES -DHAVE_CONFIG_H"
dd947da2 1613 BUILD_LDFLAGS="$LDFLAGS"
dd947da2
TT
1614fi
1615AC_SUBST(BUILD_CFLAGS)
1616AC_SUBST(BUILD_LDFLAGS)
1617dnl
fd1677e8
TT
1618dnl 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)
5ce368f0
DW
1626
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
a2df5894
DW
1664dnl
1665dnl 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"],
188bf39a
TT
1677 [with_crond_dir="/etc/cron.d"],
1678 [have_crond="no"; with_crond_dir=""])
a2df5894
DW
1679 ])
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
fd1677e8 1736dnl
50e1e10f
TT
1737dnl 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
defde784 1743test -d include/asm || mkdir include/asm
44dfb378
TT
1744if 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
e5f0f3ee 1752for i in MCONFIG Makefile \
183c73b0 1753 util/Makefile util/subst.conf util/gen-tarball util/install-symlink \
4ea7ea00
TT
1754 lib/et/Makefile lib/ss/Makefile lib/e2p/Makefile \
1755 lib/ext2fs/Makefile lib/ext2fs/ext2_types.h \
f34af41b 1756 $uuid_out_list $blkid_out_list lib/support/Makefile \
44dfb378 1757 lib/ss/ss.pc lib/et/com_err.pc lib/e2p/e2p.pc lib/ext2fs/ext2fs.pc \
921f4ad5 1758 misc/Makefile ext2ed/Makefile e2fsck/Makefile \
94ba8c75 1759 debugfs/Makefile tests/Makefile tests/progs/Makefile \
98a5ad61 1760 resize/Makefile doc/Makefile intl/Makefile \
5ce368f0 1761 intl/libgnuintl.h po/Makefile.in scrub/Makefile; do
94ba8c75
TT
1762 if test -d `dirname ${srcdir}/$i` ; then
1763 outlist="$outlist $i"
1764 fi
1765done
1766AC_OUTPUT($outlist)
ee683a13 1767if test -f util/gen-tarball; then chmod +x util/gen-tarball; fi