]> git.ipfire.org Git - thirdparty/e2fsprogs.git/blame - configure.ac
ext2fs: implement dir entry creation in htree directories
[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
b9e66a18
TT
442dnl handle --enable-developer-features
443dnl
444AC_ARG_ENABLE([developer-features],
445[ --enable-developer-features enable features for use by ext4 developers],
446AH_TEMPLATE([CONFIG_DEVELOPER_FEATURES],
447 [Define to 1 for features for use by ext4 developers])
448if test "$enableval" = "yes"
449then
450 DEV_FEATURES_CMT=
451 AC_DEFINE(CONFIG_DEVELOPER_FEATURES, 1)
452 AC_MSG_RESULT([Enabling ext4 developer features])
453else
454 AC_MSG_RESULT([Disabling ext4 developer features])
455 DEV_FEATURES_CMT="#"
456fi
457,
458AC_MSG_RESULT([Disabling ext4 developer features by default])
459DEV_FEATURES_CMT=
460)
461AC_SUBST(DEV_FEATURES_CMT)
462dnl
39fd3d4f
SJR
463dnl handle --disable-libuuid
464dnl
465PKG_PROG_PKG_CONFIG
466LIBUUID=
467DEPLIBUUID=
468STATIC_LIBUUID=
469DEPSTATIC_LIBUUID=
470PROFILED_LIBUUID=
471DEPPROFILED_LIBUUID=
472UUID_CMT=
473AC_ARG_ENABLE([libuuid],
f5dffb81 474[ --enable-libuuid build and use private uuid library],
39fd3d4f
SJR
475if test "$enableval" = "no"
476then
477 if test -z "$PKG_CONFIG"; then
478 AC_MSG_ERROR([pkg-config not installed; please install it.])
479 fi
480
481 AC_CHECK_LIB(uuid, uuid_generate,
482 [LIBUUID=`$PKG_CONFIG --libs uuid`;
483 STATIC_LIBUUID=`$PKG_CONFIG --static --libs uuid`],
2d7583bd 484 [AC_MSG_ERROR([external uuid library not found])])
5afdf37b 485 PROFILED_LIBUUID=$LIBUUID
39fd3d4f
SJR
486 UUID_CMT=#
487 AC_MSG_RESULT([Disabling private uuid library])
488else
489 LIBUUID='$(LIB)/libuuid'$LIB_EXT
490 DEPLIBUUID=$LIBUUID
491 STATIC_LIBUUID='$(LIB)/libuuid'$STATIC_LIB_EXT
492 DEPSTATIC_LIBUUID=$STATIC_LIBUUID
493 PROFILED_LIBUUID='$(LIB)/libuuid'$PROFILED_LIB_EXT
494 DEPPROFILED_LIBUUID=$PROFILED_LIBUUID
495 AC_MSG_RESULT([Enabling private uuid library])
496fi
497,
f5dffb81
TT
498if test -n "$PKG_CONFIG"; then
499 AC_CHECK_LIB(uuid, uuid_generate,
500 [LIBUUID=`$PKG_CONFIG --libs uuid`;
501 STATIC_LIBUUID=`$PKG_CONFIG --static --libs uuid`])
502fi
503if test -n "$LIBUUID"; then
504 PROFILED_LIBUUID=$LIBUUID
505 UUID_CMT=#
506 AC_MSG_RESULT([Using system uuid by default])
507else
508 LIBUUID='$(LIB)/libuuid'$LIB_EXT
509 DEPLIBUUID=$LIBUUID
510 STATIC_LIBUUID='$(LIB)/libuuid'$STATIC_LIB_EXT
511 DEPSTATIC_LIBUUID=$STATIC_LIBUUID
512 PROFILED_LIBUUID='$(LIB)/libuuid'$PROFILED_LIB_EXT
513 DEPPROFILED_LIBUUID=$PROFILED_LIBUUID
514 AC_MSG_RESULT([Enabling private uuid library by default])
515fi
39fd3d4f
SJR
516)
517AC_SUBST(LIBUUID)
518AC_SUBST(DEPLIBUUID)
519AC_SUBST(STATIC_LIBUUID)
520AC_SUBST(DEPSTATIC_LIBUUID)
521AC_SUBST(PROFILED_LIBUUID)
522AC_SUBST(DEPPROFILED_LIBUUID)
523AC_SUBST(UUID_CMT)
524dnl
14b596d4
TT
525dnl handle --disable-libblkid
526dnl
527PKG_PROG_PKG_CONFIG
528LIBBLKID=
529DEPLIBBLKID=
530STATIC_LIBBLKID=
531DEPSTATIC_LIBBLKID=
532PROFILED_LIBBLKID=
533DEPPROFILED_LIBBLKID=
534BLKID_CMT=
d1154eb4 535AH_TEMPLATE([CONFIG_BUILD_FINDFS], [Define to 1 to compile findfs])
14b596d4 536AC_ARG_ENABLE([libblkid],
f5dffb81 537[ --enable-libblkid build and use private blkid library],
14b596d4
TT
538if test "$enableval" = "no"
539then
540 if test -z "$PKG_CONFIG"; then
541 AC_MSG_ERROR([pkg-config not installed; please install it.])
542 fi
543
544 AC_CHECK_LIB(blkid, blkid_get_cache,
545 [LIBBLKID=`$PKG_CONFIG --libs blkid`;
546 STATIC_LIBBLKID=`$PKG_CONFIG --static --libs blkid`],
2d7583bd 547 [AC_MSG_ERROR([external blkid library not found])], -luuid)
14b596d4 548 BLKID_CMT=#
5afdf37b 549 PROFILED_LIBBLKID=$LIBBLKID
14b596d4
TT
550 AC_MSG_RESULT([Disabling private blkid library])
551else
552 LIBBLKID='$(LIB)/libblkid'$LIB_EXT
553 DEPLIBBLKID=$LIBBLKID
554 STATIC_LIBBLKID='$(LIB)/libblkid'$STATIC_LIB_EXT
555 DEPSTATIC_LIBBLKID=$STATIC_LIBBLKID
556 PROFILED_LIBBLKID='$(LIB)/libblkid'$PROFILED_LIB_EXT
557 DEPPROFILED_LIBBLKID=$PROFILED_LIBBLKID
d1154eb4 558 AC_DEFINE(CONFIG_BUILD_FINDFS, 1)
14b596d4
TT
559 AC_MSG_RESULT([Enabling private blkid library])
560fi
561,
f5dffb81
TT
562if test -n "$PKG_CONFIG"; then
563 AC_CHECK_LIB(blkid, blkid_get_cache,
564 [LIBBLKID=`$PKG_CONFIG --libs blkid`;
565 STATIC_LIBBLKID=`$PKG_CONFIG --static --libs blkid`])
566fi
567if test -n "$LIBBLKID"; then
568 BLKID_CMT=#
569 PROFILED_LIBBLKID=$LIBBLKID
570 AC_MSG_RESULT([Using system blkid library by default])
571else
572 LIBBLKID='$(LIB)/libblkid'$LIB_EXT
573 DEPLIBBLKID=$LIBBLKID
574 STATIC_LIBBLKID='$(LIB)/libblkid'$STATIC_LIB_EXT
575 DEPSTATIC_LIBBLKID=$STATIC_LIBBLKID
576 PROFILED_LIBBLKID='$(LIB)/libblkid'$PROFILED_LIB_EXT
577 DEPPROFILED_LIBBLKID=$PROFILED_LIBBLKID
578 AC_DEFINE(CONFIG_BUILD_FINDFS, 1)
579 AC_MSG_RESULT([Enabling private blkid library by default])
580fi
14b596d4
TT
581)
582AC_SUBST(LIBBLKID)
583AC_SUBST(DEPLIBBLKID)
584AC_SUBST(STATIC_LIBBLKID)
585AC_SUBST(DEPSTATIC_LIBBLKID)
586AC_SUBST(PROFILED_LIBBLKID)
587AC_SUBST(DEPPROFILED_LIBBLKID)
588AC_SUBST(BLKID_CMT)
589dnl
0afb9be6
TT
590dnl handle --enable-subset
591dnl
592ALL_CMT=
feb235e0 593SUBSET_CMT=
0afb9be6
TT
594AC_ARG_ENABLE([subset],
595[ --enable-subset enable subset-only build],
596if test "$enableval" = "no"
597then
feb235e0 598 SUBSET_CMT=#
0afb9be6
TT
599 AC_MSG_RESULT([Disabling subset-only build])
600else
601 ALL_CMT=#
602 AC_MSG_RESULT([Enabling subset-only-build])
603fi
604,)
605AC_SUBST(ALL_CMT)
feb235e0 606AC_SUBST(SUBSET_CMT)
0afb9be6 607dnl
3df6014a
TT
608dnl handle --disable-backtrace
609dnl
610AH_TEMPLATE([DISABLE_BACKTRACE], [Define to 1 to disable use of backtrace])
611AC_ARG_ENABLE([backtrace],
612[ --disable-backtrace disable use backtrace],
613if test "$enableval" = "no"
614then
615 AC_MSG_RESULT([Disabling use of backtrace])
616 AC_DEFINE(DISABLE_BACKTRACE, 1)
617else
618 AC_MSG_RESULT([Enabling use of backtrace])
619fi
620,
621AC_MSG_RESULT([Enabling use of backtrace by default])
622)
623dnl
cdf186e4
TT
624dnl handle --enable-debugfs
625dnl
626AC_ARG_ENABLE([debugfs],
627[ --disable-debugfs disable support of debugfs program],
628if test "$enableval" = "no"
629then
02d04db4 630 AC_MSG_RESULT([Disabling debugfs support])
cdf186e4
TT
631 DEBUGFS_CMT="#"
632else
633 DEBUGFS_CMT=
02d04db4 634 AC_MSG_RESULT([Enabling debugfs support])
cdf186e4
TT
635fi
636,
02d04db4 637AC_MSG_RESULT([Enabling debugfs support by default])
cdf186e4
TT
638DEBUGFS_CMT=
639)
640AC_SUBST(DEBUGFS_CMT)
641dnl
642dnl handle --enable-imager
643dnl
644AC_ARG_ENABLE([imager],
645[ --disable-imager disable support of e2image program],
646if test "$enableval" = "no"
647then
02d04db4 648 AC_MSG_RESULT([Disabling e2image support])
cdf186e4
TT
649 IMAGER_CMT="#"
650else
651 IMAGER_CMT=
02d04db4 652 AC_MSG_RESULT([Enabling e2image support])
cdf186e4
TT
653fi
654,
02d04db4 655AC_MSG_RESULT([Enabling e2image support by default])
cdf186e4
TT
656IMAGER_CMT=
657)
658AC_SUBST(IMAGER_CMT)
659dnl
660dnl handle --enable-resizer
661dnl
662AC_ARG_ENABLE([resizer],
663[ --disable-resizer disable support of e2resize program],
664if test "$enableval" = "no"
665then
02d04db4 666 AC_MSG_RESULT([Disabling e2resize support])
cdf186e4
TT
667 RESIZER_CMT="#"
668else
669 RESIZER_CMT=
02d04db4 670 AC_MSG_RESULT([Enabling e2resize support])
cdf186e4
TT
671fi
672,
02d04db4 673AC_MSG_RESULT([Enabling e2resize support by default])
cdf186e4
TT
674RESIZER_CMT=
675)
676AC_SUBST(RESIZER_CMT)
677dnl
8d9c50c5
TT
678dnl handle --enable-defrag
679dnl
680AC_ARG_ENABLE([defrag],
681[ --disable-defrag disable support of e4defrag program],
682if test "$enableval" = "no"
683then
684 AC_MSG_RESULT([Disabling e4defrag support])
685 DEFRAG_CMT="#"
686else
687 DEFRAG_CMT=
688 AC_MSG_RESULT([Enabling e4defrag support])
689fi
690,
6c59a665
TT
691if test -z "$WITH_DIET_LIBC"
692then
693 AC_MSG_RESULT([Enabling e4defrag support by default])
694 DEFRAG_CMT=
695else
696 AC_MSG_RESULT([Disabling e4defrag support by default])
697 DEFRAG_CMT="#"
698fi
8d9c50c5
TT
699)
700AC_SUBST(DEFRAG_CMT)
701dnl
fc6d9d51
TT
702dnl See whether to install the `fsck' wrapper program (that calls e2fsck)
703dnl
704AC_ARG_ENABLE([fsck],
705[ --enable-fsck build fsck wrapper program],
706[if test "$enableval" = "no"
707then
708 FSCK_PROG='' FSCK_MAN=''
02d04db4 709 AC_MSG_RESULT([Not building fsck wrapper])
fc6d9d51
TT
710else
711 FSCK_PROG=fsck FSCK_MAN=fsck.8
02d04db4 712 AC_MSG_RESULT([Building fsck wrapper])
fc6d9d51
TT
713fi]
714,
715[case "$host_os" in
e363240d 716 gnu*)
fc6d9d51 717 FSCK_PROG='' FSCK_MAN=''
02d04db4 718 AC_MSG_RESULT([Not building fsck wrapper by default])
fc6d9d51
TT
719 ;;
720 *)
721 FSCK_PROG=fsck FSCK_MAN=fsck.8
02d04db4 722 AC_MSG_RESULT([Building fsck wrapper by default])
fc6d9d51
TT
723esac]
724)
725AC_SUBST(FSCK_PROG)
726AC_SUBST(FSCK_MAN)
727dnl
5d40773b
TT
728dnl See whether to install the `e2initrd-helper' program
729dnl
730AC_ARG_ENABLE([e2initrd-helper],
731[ --enable-e2initrd-helper build e2initrd-helper program],
732[if test "$enableval" = "no"
733then
734 E2INITRD_PROG='' E2INITRD_MAN=''
02d04db4 735 AC_MSG_RESULT([Not building e2initrd helper])
5d40773b
TT
736else
737 E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8
02d04db4 738 AC_MSG_RESULT([Building e2initrd helper])
5d40773b
TT
739fi]
740,
741E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8
02d04db4 742AC_MSG_RESULT([Building e2initrd helper by default])
5d40773b
TT
743)
744AC_SUBST(E2INITRD_PROG)
745AC_SUBST(E2INITRD_MAN)
4db2f59a 746dnl
5d40773b 747dnl
50e1e10f 748dnl
3249394d
TT
749AC_ARG_ENABLE([tls],
750[ --disable-tls disable use of thread local support],
751[if test "$enableval" = "no"
752then
753 try_tls=""
02d04db4 754 AC_MSG_RESULT([Disabling thread local support])
3249394d
TT
755else
756 try_tls="yes"
02d04db4 757 AC_MSG_RESULT([Enabling thread local support])
3249394d
TT
758fi]
759,
eafba6c3
TT
760if test -n "$WITH_DIET_LIBC"
761then
762 try_tls=""
02d04db4 763 AC_MSG_RESULT([Diet libc does not support thread local support])
eafba6c3
TT
764else
765 try_tls="yes"
02d04db4 766 AC_MSG_RESULT([Try using thread local support by default])
eafba6c3 767fi
3249394d
TT
768)
769if test "$try_tls" = "yes"
770then
771AX_TLS
772fi
773dnl
774dnl
775dnl
d1154eb4 776AH_TEMPLATE([USE_UUIDD], [Define to 1 to build uuidd])
5610f992
TT
777AC_ARG_ENABLE([uuidd],
778[ --disable-uuidd disable building the uuid daemon],
779[if test "$enableval" = "no"
780then
02d04db4 781 AC_MSG_RESULT([Not building uuidd])
5610f992
TT
782 UUIDD_CMT="#"
783else
d1154eb4 784 AC_DEFINE(USE_UUIDD, 1)
5610f992 785 UUIDD_CMT=""
02d04db4 786 AC_MSG_RESULT([Building uuidd])
5610f992
TT
787fi]
788,
d1154eb4 789AC_DEFINE(USE_UUIDD, 1)
e3d10158
TT
790if test -z "$UUID_CMT"
791then
792 UUIDD_CMT=""
793 AC_MSG_RESULT([Building uuidd by default])
794else
795 UUIDD_CMT="#"
796 AC_MSG_RESULT([Disabling uuidd by default])
797fi
5610f992
TT
798)
799AC_SUBST(UUIDD_CMT)
800dnl
d6a4bcb5
TB
801dnl handle --disable-mmp
802dnl
803AH_TEMPLATE([CONFIG_MMP], [Define to 1 to enable mmp support])
804AC_ARG_ENABLE([mmp],
805[ --disable-mmp disable support mmp, Multi Mount Protection],
806if test "$enableval" = "no"
807then
808 AC_MSG_RESULT([Disabling mmp support])
809else
810 AC_MSG_RESULT([Enabling mmp support])
811 AC_DEFINE(CONFIG_MMP, 1)
812fi
813,
814AC_MSG_RESULT([Enabling mmp support by default])
815AC_DEFINE(CONFIG_MMP, 1)
816)
817dnl
749f0712
TT
818dnl handle --disable-tdb
819dnl
820AH_TEMPLATE([CONFIG_TDB], [Define to 1 to enable tdb support])
821AC_ARG_ENABLE([tdb],
822[ --disable-tdb disable tdb support],
823if test "$enableval" = "no"
824then
825 AC_MSG_RESULT([Disabling tdb support])
826 TDB_CMT="#"
827 TDB_MAN_COMMENT='.\"'
828else
829 AC_MSG_RESULT([Enabling tdb support])
830 AC_DEFINE(CONFIG_TDB, 1)
831 TDB_CMT=""
832 TDB_MAN_COMMENT=""
833fi
834,
835AC_MSG_RESULT([Enabling mmp support by default])
836AC_DEFINE(CONFIG_TDB, 1)
837TDB_CMT=""
838TDB_MAN_COMMENT=""
839)
840AC_SUBST(TDB_CMT)
841AC_SUBST(TDB_MAN_COMMENT)
842dnl
1625bf42
TB
843dnl handle --disable-bmap-stats
844dnl
845AH_TEMPLATE([ENABLE_BMAP_STATS], [Define to 1 to enable bitmap stats.])
846AC_ARG_ENABLE([bmap-stats],
847[ --disable-bmap-stats disable collection of bitmap stats.],
848if test "$enableval" = "no"
849then
850 AC_MSG_RESULT([Disabling bitmap statistics support])
851else
852 AC_MSG_RESULT([Enabling bitmap statistics support])
853 AC_DEFINE(ENABLE_BMAP_STATS, 1)
854fi
855,
856AC_MSG_RESULT([Enabling bitmap statistics support by default])
857AC_DEFINE(ENABLE_BMAP_STATS, 1)
858)
859dnl
860dnl handle --enable-bmap-stats-ops
861dnl
862AH_TEMPLATE([ENABLE_BMAP_STATS_OPS], [Define to 1 to enable bitmap stats.])
863AC_ARG_ENABLE([bmap-stats-ops],
864[ --enable-bmap-stats-ops enable collection of additional bitmap stats],
865if test "$enableval" = "no"
866then
867 AC_MSG_RESULT([Disabling additional bitmap statistics])
868else
869 dnl There has to be a better way!
870 AS_IF([test "x${enable_bmap_stats}" = "xno"],
871 AC_MSG_FAILURE([Error --enable-bmap-stats-ops requires bmap-stats]))
872
873 AC_MSG_RESULT([Enabling additional bitmap statistics])
874 AC_DEFINE(ENABLE_BMAP_STATS_OPS, 1)
875fi
876,
877AC_MSG_RESULT([Disabling additional bitmap statistics by default])
878)
879dnl
5610f992
TT
880dnl
881dnl
50e1e10f
TT
882MAKEFILE_LIBRARY=$srcdir/lib/Makefile.library
883AC_SUBST_FILE(MAKEFILE_LIBRARY)
884dnl
cdf186e4
TT
885dnl Add internationalization support, using gettext.
886dnl
b0cacab0 887GETTEXT_PACKAGE=e2fsprogs
cdf186e4
TT
888PACKAGE=e2fsprogs
889VERSION="$E2FSPROGS_VERSION"
b0cacab0 890VERSION=0.14.1
d1154eb4
TT
891AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [package name for gettext])
892AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [version for gettext])
b0cacab0 893AC_SUBST(GETTEXT_PACKAGE)
cdf186e4
TT
894AC_SUBST(PACKAGE)
895AC_SUBST(VERSION)
896
cdf186e4
TT
897AM_GNU_GETTEXT
898dnl
50e1e10f
TT
899dnl End of configuration options
900dnl
74becf3c 901AC_SUBST(BINARY_TYPE)
50e1e10f 902AC_PROG_MAKE_SET
bcb915b0 903CHECK_GNU_MAKE
50e1e10f 904AC_PATH_PROG(LN, ln, ln)
5abc0414 905AC_PROG_MKDIR_P
fc6d9d51 906AC_PROG_LN_S
50e1e10f
TT
907AC_PATH_PROG(MV, mv, mv)
908AC_PATH_PROG(CP, cp, cp)
909AC_PATH_PROG(RM, rm, rm)
910AC_PATH_PROG(CHMOD, chmod, :)
32237014
TT
911AC_PROG_AWK
912AC_PROG_EGREP
50e1e10f 913AC_PATH_PROG(SED, sed, sed)
9d564f73 914AC_PATH_PROG(PERL, perl, perl)
250f79f0 915AC_PATH_PROG(LDCONFIG, ldconfig, :)
50e1e10f
TT
916AC_CHECK_TOOL(AR, ar, ar)
917AC_CHECK_TOOL(RANLIB, ranlib, :)
918AC_CHECK_TOOL(STRIP, strip, :)
7321d94e
MK
919AC_CHECK_PROG(MAKEINFO, makeinfo, makeinfo, )
920if test "_$MAKEINFO" = "_"; then
ca1de98a 921 MAKEINFO="echo Makeinfo is missing. Info documentation will not be built."
7321d94e
MK
922else
923 case "$MAKEINFO" in
924 */missing.*)
925 AC_MSG_WARN([
926*** Makeinfo is missing. Info documentation will not be built.])
927 ;;
928 *)
929 ;;
930 esac
931fi
932AC_SUBST(MAKEINFO)
50e1e10f 933AC_PROG_INSTALL
6c133523
TT
934# See if we need a separate native compiler.
935if test $cross_compiling = no; then
936 BUILD_CC="$CC"
937 AC_SUBST(BUILD_CC)
938else
939 AC_CHECK_PROGS(BUILD_CC, gcc cc)
940fi
677fc916
MF
941AC_CHECK_HEADERS(m4_flatten([
942 dirent.h
943 errno.h
944 execinfo.h
945 getopt.h
946 malloc.h
947 mntent.h
948 paths.h
949 semaphore.h
950 setjmp.h
951 signal.h
952 stdarg.h
953 stdint.h
954 stdlib.h
955 termios.h
956 termio.h
957 unistd.h
958 utime.h
c84da2ee 959 attr/xattr.h
677fc916
MF
960 linux/falloc.h
961 linux/fd.h
82424fc6 962 linux/fsmap.h
677fc916 963 linux/major.h
fbabd5c4 964 linux/loop.h
f47f3195 965 linux/types.h
677fc916
MF
966 net/if_dl.h
967 netinet/in.h
81cbf1ef 968 sys/acl.h
677fc916 969 sys/disklabel.h
51050544 970 sys/disk.h
677fc916
MF
971 sys/file.h
972 sys/ioctl.h
74f2c4aa 973 sys/key.h
677fc916
MF
974 sys/mkdev.h
975 sys/mman.h
51050544 976 sys/mount.h
677fc916 977 sys/prctl.h
677fc916
MF
978 sys/resource.h
979 sys/select.h
980 sys/socket.h
981 sys/sockio.h
982 sys/stat.h
983 sys/syscall.h
79614b27 984 sys/sysctl.h
677fc916
MF
985 sys/sysmacros.h
986 sys/time.h
987 sys/types.h
988 sys/un.h
989 sys/wait.h
d7de3f3d 990 sys/xattr.h
677fc916 991]))
ec3a69bb
MA
992dnl Check where to find a dd(1) that supports iflag=fullblock
993dnl and oflag=append
994AC_MSG_CHECKING([for a dd(1) program that supports iflag=fullblock])
995DD=
996for i in dd gdd ; do
997 if "$i" if=/dev/null of=/dev/null count=1 bs=10k 2>/dev/null iflag=fullblock oflag=append ; then
998 DD=$i
999 break
1000 fi
1001done
1002if test -n "$DD" ; then
1003 AC_MSG_RESULT([$DD])
1004else
1005 AC_MSG_RESULT([not found, using dd])
1006 DD=dd
1007 AC_MSG_WARN([No GNU-compatible dd(1) program found, expect some self-test failures.])
1008fi
1009AC_SUBST([DD])
1010
da76d6b7
TT
1011AC_CHECK_HEADERS(net/if.h,,,
1012[[
1013#if HAVE_SYS_TYPES_H
1014#include <sys/types.h>
1015#endif
1016#if HAVE_SYS_SOCKET
1017#include <sys/socket.h>
1018#endif
1019]])
50e1e10f 1020AC_FUNC_VPRINTF
fff45483 1021dnl Check to see if dirent has member d_reclen. On cygwin those d_reclen
055866d8 1022dnl is not declared.
d1154eb4
TT
1023AC_CHECK_MEMBER(struct dirent.d_reclen,[AC_DEFINE(HAVE_RECLEN_DIRENT, 1,
1024 [Define to 1 if dirent has d_reclen])],,
6c65d251 1025 [#include <dirent.h>])
2873927d 1026AC_CHECK_MEMBERS([struct stat.st_atim])
d1154eb4
TT
1027dnl Check to see if ssize_t was declared
1028AC_CHECK_TYPE(ssize_t,[AC_DEFINE(HAVE_TYPE_SSIZE_T, 1,
1029 [Define to 1 if ssize_t declared])],,
6c65d251 1030 [#include <sys/types.h>])
50e1e10f 1031dnl
b0b9c4de
TT
1032dnl Check to see if llseek() is declared in unistd.h. On some libc's
1033dnl it is, and on others it isn't..... Thank you glibc developers....
1034dnl
d1154eb4
TT
1035AC_CHECK_DECL(llseek,[AC_DEFINE(HAVE_LLSEEK_PROTOTYPE, 1,
1036 [Define to 1 if llseek declared in unistd.h])],,
6c65d251 1037 [#include <unistd.h>])
b0b9c4de 1038dnl
6928adc9
TT
1039dnl Check to see if lseek64() is declared in unistd.h. Glibc's header files
1040dnl are so convoluted that I can't tell whether it will always be defined,
1041dnl and if it isn't defined while lseek64 is defined in the library,
1042dnl disaster will strike.
1043dnl
1044dnl Warning! Use of --enable-gcc-wall may throw off this test.
1045dnl
1046dnl
d1154eb4
TT
1047AC_CHECK_DECL(lseek64,[AC_DEFINE(HAVE_LSEEK64_PROTOTYPE, 1,
1048 [Define to 1 if lseek64 declared in unistd.h])],,
6c65d251
TT
1049 [#define _LARGEFILE_SOURCE
1050 #define _LARGEFILE64_SOURCE
1051 #include <unistd.h>])
6928adc9 1052dnl
50e1e10f
TT
1053dnl Word sizes...
1054dnl
50e1e10f
TT
1055AC_CHECK_SIZEOF(short)
1056AC_CHECK_SIZEOF(int)
1057AC_CHECK_SIZEOF(long)
fc6d9d51 1058AC_CHECK_SIZEOF(long long)
274d46e1 1059AC_CHECK_SIZEOF(off_t)
2dd680f3 1060AC_CHECK_SIZEOF(time_t)
50e1e10f
TT
1061SIZEOF_SHORT=$ac_cv_sizeof_short
1062SIZEOF_INT=$ac_cv_sizeof_int
1063SIZEOF_LONG=$ac_cv_sizeof_long
fc6d9d51 1064SIZEOF_LONG_LONG=$ac_cv_sizeof_long_long
274d46e1 1065SIZEOF_OFF_T=$ac_cv_sizeof_off_t
2dd680f3 1066SIZEOF_TIME_T=$ac_cv_sizeof_time_t
50e1e10f
TT
1067AC_SUBST(SIZEOF_SHORT)
1068AC_SUBST(SIZEOF_INT)
1069AC_SUBST(SIZEOF_LONG)
fc6d9d51 1070AC_SUBST(SIZEOF_LONG_LONG)
274d46e1 1071AC_SUBST(SIZEOF_OFF_T)
2dd680f3 1072AC_SUBST(SIZEOF_TIME_T)
877eb6d9 1073AC_C_BIGENDIAN
91f04685
CQ
1074if test $cross_compiling = no; then
1075 BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh
1076else
1077 CROSS_COMPILE="1" BUILD_CC="$BUILD_CC" CPP="$CPP" /bin/sh $ac_aux_dir/parse-types.sh
1078fi
4ea7ea00
TT
1079ASM_TYPES_HEADER=./asm_types.h
1080AC_SUBST_FILE(ASM_TYPES_HEADER)
50e1e10f 1081dnl
488c75a6
TT
1082dnl Save the configuration #defines needed for the public ext2fs.h
1083dnl header file
1084dnl
1085echo "/* These defines are needed for the public ext2fs.h header file */" \
1086 > public_config.h
1087if grep HAVE_SYS_TYPES_H confdefs.h > tmp_config.$$; then
1088 uniq tmp_config.$$ >> public_config.h
1089else
1090 echo "#undef HAVE_SYS_TYPES_H" >> public_config.h
1091fi
1092if grep WORDS_BIGENDIAN confdefs.h > tmp_config.$$; then
1093 uniq tmp_config.$$ >> public_config.h
1094else
1095 echo "#undef WORDS_BIGENDIAN" >> public_config.h
1096fi
1097rm -f tmp_config.$$
1098PUBLIC_CONFIG_HEADER=./public_config.h
1099AC_SUBST_FILE(PUBLIC_CONFIG_HEADER)
1100dnl
0c193f82
TT
1101dnl See if we have inttypes.h and if intptr_t is defined
1102dnl
1103AC_CHECK_HEADERS([inttypes.h])
d2ee56d8 1104AC_CHECK_TYPES(intptr_t)
0c193f82 1105dnl
50e1e10f
TT
1106dnl See if struct stat has a st_flags field, in which case we can get file
1107dnl flags somewhat portably. Also check for the analogous setter, chflags().
1108dnl
1109AC_MSG_CHECKING(whether struct stat has a st_flags field)
1110AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags,
1111 AC_TRY_COMPILE([#include <sys/stat.h>],
1112 [struct stat stat; stat.st_flags = 0;],
1113 [e2fsprogs_cv_struct_st_flags=yes],
1114 [e2fsprogs_cv_struct_st_flags=no]))
1115AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags)
1116if test "$e2fsprogs_cv_struct_st_flags" = yes; then
c03bc4e8
TT
1117 AC_MSG_CHECKING(whether st_flags field is useful)
1118 AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags_immut,
1119 AC_TRY_COMPILE([#include <sys/stat.h>],
1120 [struct stat stat; stat.st_flags |= UF_IMMUTABLE;],
1121 [e2fsprogs_cv_struct_st_flags_immut=yes],
1122 [e2fsprogs_cv_struct_st_flags_immut=no]))
1123 AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags_immut)
1124 if test "$e2fsprogs_cv_struct_st_flags_immut" = yes; then
d1154eb4
TT
1125 AC_DEFINE(HAVE_STAT_FLAGS, 1,
1126 [Define to 1 if struct stat has st_flags])
c03bc4e8 1127 fi
50e1e10f 1128fi
84ea6e70
TT
1129dnl
1130dnl Check for the presence of SA_LEN
1131dnl
6c65d251 1132AC_CHECK_MEMBER(struct sockaddr.sa_len,
d1154eb4
TT
1133 AC_DEFINE_UNQUOTED(HAVE_SA_LEN,1,
1134 [Define to 1 if if struct sockaddr contains sa_len]),,
6c65d251
TT
1135 [#include <sys/types.h>
1136 #include <sys/socket.h>])
84ea6e70 1137dnl
7154d974
TT
1138dnl If we are using the system-provided blkid library, check for
1139dnl the functions added after migrating that library to util-linux
9ed8e5fe
ES
1140dnl
1141if test -n "$BLKID_CMT"; then
7154d974 1142 AC_CHECK_LIB(blkid, blkid_probe_get_topology,
f72ea2de
DL
1143 AC_DEFINE(HAVE_BLKID_PROBE_GET_TOPOLOGY, 1,
1144 [Define to 1 if blkid has blkid_probe_get_topology]))
7154d974 1145 AC_CHECK_LIB(blkid, blkid_probe_enable_partitions,
f72ea2de
DL
1146 AC_DEFINE(HAVE_BLKID_PROBE_ENABLE_PARTITIONS, 1,
1147 [Define to 1 if blkid has blkid_probe_enable_partitions]))
9ed8e5fe
ES
1148fi
1149dnl
32179ce2
TT
1150if test -n "$DLOPEN_LIB" ; then
1151 ac_cv_func_dlopen=yes
1152fi
677fc916
MF
1153AC_CHECK_FUNCS(m4_flatten([
1154 __secure_getenv
74f2c4aa 1155 add_key
677fc916 1156 backtrace
677fc916 1157 chflags
32179ce2 1158 dlopen
9a393891 1159 fadvise64
677fc916
MF
1160 fallocate
1161 fallocate64
1162 fchown
f47f3195 1163 fcntl
677fc916
MF
1164 fdatasync
1165 fstat64
f47f3195 1166 fsync
677fc916 1167 ftruncate64
2873927d 1168 futimes
6c59a665 1169 getcwd
677fc916 1170 getdtablesize
32b8802a 1171 gethostname
677fc916 1172 getmntinfo
25ff7725 1173 getpwuid_r
677fc916
MF
1174 getrlimit
1175 getrusage
1176 jrand48
74f2c4aa 1177 keyctl
c84da2ee 1178 llistxattr
677fc916
MF
1179 llseek
1180 lseek64
1181 mallinfo
1182 mbstowcs
1183 memalign
6c59a665 1184 mempcpy
677fc916
MF
1185 mmap
1186 msync
1187 nanosleep
1188 open64
1189 pathconf
1190 posix_fadvise
9a393891 1191 posix_fadvise64
677fc916
MF
1192 posix_memalign
1193 prctl
baa35446
DW
1194 pread
1195 pwrite
f00948ad
TT
1196 pread64
1197 pwrite64
1ad3174a 1198 secure_getenv
b24efa21 1199 setmntent
677fc916
MF
1200 setresgid
1201 setresuid
c42de75b 1202 snprintf
677fc916 1203 srandom
6c59a665 1204 stpcpy
677fc916
MF
1205 strcasecmp
1206 strdup
1207 strnlen
1208 strptime
1209 strtoull
1210 sync_file_range
1211 sysconf
1212 usleep
1213 utime
441eb337 1214 utimes
677fc916
MF
1215 valloc
1216]))
fc6d9d51 1217dnl
fc6d9d51
TT
1218dnl Check to see if -lsocket is required (solaris) to make something
1219dnl that uses socket() to compile; this is needed for the UUID library
1220dnl
1221SOCKET_LIB=''
1222AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket])
1223AC_SUBST(SOCKET_LIB)
1224dnl
b291c11f
DW
1225dnl See if libmagic exists
1226dnl
1227AC_CHECK_LIB(magic, magic_file, [MAGIC_LIB=-lmagic
1228AC_CHECK_HEADERS([magic.h])])
32179ce2 1229if test "$ac_cv_func_dlopen" = yes ; then
d2e3c0dc
TT
1230 MAGIC_LIB=$DLOPEN_LIB
1231fi
b291c11f
DW
1232AC_SUBST(MAGIC_LIB)
1233dnl
62bc243f
GZ
1234dnl Check to see if librt is required for clock_gettime() (glibc < 2.17)
1235dnl
1236AC_CHECK_LIB(rt, clock_gettime, [CLOCK_GETTIME_LIB=-lrt])
1237AC_SUBST(CLOCK_GETTIME_LIB)
1238dnl
81cbf1ef
DW
1239dnl Check to see if the FUSE library is -lfuse or -losxfuse
1240dnl
1241FUSE_CMT=
1242FUSE_LIB=
1243dnl osxfuse.dylib supersedes fuselib.dylib
1244AC_ARG_ENABLE([fuse2fs],
f5dffb81 1245[ --disable-fuse2fs do not build fuse2fs],
81cbf1ef
DW
1246if test "$enableval" = "no"
1247then
1248 FUSE_CMT="#"
1249 AC_MSG_RESULT([Disabling fuse2fs])
1250else
1251 AC_CHECK_HEADERS([pthread.h fuse.h], [],
1252[AC_MSG_FAILURE([Cannot find fuse2fs headers.])],
1253[#define _FILE_OFFSET_BITS 64
1254#define FUSE_USE_VERSION 29])
1255
1256 AC_PREPROC_IFELSE(
1257[AC_LANG_PROGRAM([[#define FUSE_USE_VERSION 29
1258#ifdef __linux__
1259#include <linux/fs.h>
1260#include <linux/falloc.h>
1261#include <linux/xattr.h>
1262#endif
1263]], [])], [], [AC_MSG_FAILURE([Cannot find fuse2fs Linux headers.])])
1264
1265 AC_CHECK_LIB(osxfuse, fuse_main, [FUSE_LIB=-losxfuse],
1266 [AC_CHECK_LIB(fuse, fuse_main, [FUSE_LIB=-lfuse],
1267 [AC_MSG_FAILURE([Cannot find fuse library.])])])
1268 AC_MSG_RESULT([Enabling fuse2fs])
1269fi
1270,
1271AC_CHECK_HEADERS([pthread.h fuse.h], [], [FUSE_CMT="#"],
1272[#define _FILE_OFFSET_BITS 64
1273#define FUSE_USE_VERSION 29
1274#ifdef __linux__
1275# include <linux/fs.h>
1276# include <linux/falloc.h>
1277# include <linux/xattr.h>
1278#endif])
1279if test -z "$FUSE_CMT"
1280then
1281 AC_CHECK_LIB(osxfuse, fuse_main, [FUSE_LIB=-losxfuse],
1282[AC_CHECK_LIB(fuse, fuse_main, [FUSE_LIB=-lfuse], [FUSE_CMT="#"])])
1283fi
1284if test -z "$FUSE_CMT"
1285then
1286 AC_MSG_RESULT([Enabling fuse2fs by default.])
1287fi
1288)
1289AC_SUBST(FUSE_LIB)
1290AC_SUBST(FUSE_CMT)
1291dnl
50e1e10f
TT
1292dnl See if optreset exists
1293dnl
1294AC_MSG_CHECKING(for optreset)
1295AC_CACHE_VAL(ac_cv_have_optreset,
1296[AC_EGREP_HEADER(optreset, unistd.h,
1297 ac_cv_have_optreset=yes, ac_cv_have_optreset=no)])dnl
1298AC_MSG_RESULT($ac_cv_have_optreset)
1299if test $ac_cv_have_optreset = yes; then
d1154eb4 1300 AC_DEFINE(HAVE_OPTRESET, 1, [Define to 1 if optreset for getopt is present])
50e1e10f
TT
1301fi
1302dnl
d7f45af8
TT
1303dnl Test for sem_init, and which library it might require:
1304dnl
d1154eb4 1305AH_TEMPLATE([HAVE_SEM_INIT], [Define to 1 if sem_init() exists])
d7f45af8 1306SEM_INIT_LIB=''
cfb8e0bd
TT
1307echo GL_THREADS_API: ${gl_threads_api}
1308if test "${gl_threads_api}" != none
1309then
1310 AC_CHECK_FUNC(sem_init, ,
1311 AC_CHECK_LIB(pthread, sem_init,
d1154eb4 1312 AC_DEFINE(HAVE_SEM_INIT, 1)
d7f45af8 1313 SEM_INIT_LIB=-lpthread,
cfb8e0bd 1314 AC_CHECK_LIB(rt, sem_init,
d1154eb4 1315 AC_DEFINE(HAVE_SEM_INIT, 1)
d7f45af8 1316 SEM_INIT_LIB=-lrt,
cfb8e0bd 1317 AC_CHECK_LIB(posix4, sem_init,
d1154eb4 1318 AC_DEFINE(HAVE_SEM_INIT, 1)
d7f45af8 1319 SEM_INIT_LIB=-lposix4))))dnl
cfb8e0bd 1320fi
d7f45af8
TT
1321AC_SUBST(SEM_INIT_LIB)
1322dnl
e54635de
TT
1323dnl Check for unified diff
1324dnl
1325AC_MSG_CHECKING(for unified diff option)
27f991b0 1326if diff -u $0 $0 > /dev/null 2>&1 ; then
e54635de
TT
1327 UNI_DIFF_OPTS=-u
1328else
1329 UNI_DIFF_OPTS=-c
1330fi
1331AC_MSG_RESULT($UNI_DIFF_OPTS)
1332AC_SUBST(UNI_DIFF_OPTS)
1333dnl
8f3f29d3
TT
1334dnl We use the EXT2 ioctls only under Linux
1335dnl
1336case "$host_os" in
1337linux*)
d1154eb4 1338 AC_DEFINE(HAVE_EXT2_IOCTLS, 1, [Define to 1 if Ext2 ioctls present])
8f3f29d3
TT
1339 ;;
1340esac
50e1e10f 1341dnl
ea1a3fa2
NC
1342dnl Check the available mount options
1343dnl
1344AX_CHECK_MOUNT_OPT(nosuid)
1345AX_CHECK_MOUNT_OPT(nodev)
4aece328
DW
1346dnl Enable LTO for all packages
1347dnl
1348AC_ARG_ENABLE([lto],
1349[ --enable-lto enable link time optimization],,
139a3092 1350enable_lto=no)
4aece328
DW
1351if test "$enable_lto" = "yes" || test "$enable_lto" = "probe"; then
1352 AC_MSG_CHECKING([if C compiler supports LTO])
1353 OLD_CFLAGS="$CFLAGS"
1354 OLD_LDFLAGS="$LDFLAGS"
49715704 1355 LTO_FLAGS="-g -flto -ffat-lto-objects"
4aece328
DW
1356 CFLAGS="$CFLAGS $LTO_FLAGS"
1357 LDFLAGS="$LDFLAGS $LTO_FLAGS"
1358 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1359 [AC_MSG_RESULT([yes])]
1360 [lto_cflags=$LTO_FLAGS]
1361 [lto_ldflags=$LTO_FLAGS]
1362 [AC_PATH_PROG(gcc_ar, gcc-ar,,)]
1363 [AC_PATH_PROG(gcc_ranlib, gcc-ranlib,,)],
1364 [AC_MSG_RESULT([no])])
1365 if test -x "$gcc_ar" && test -x "$gcc_ranlib"; then
1366 have_lto=yes
1367 AR="${gcc_ar}"
1368 RANLIB="${gcc_ranlib}"
1369 fi
1370 CFLAGS="${OLD_CFLAGS}"
1371 LDFLAGS="${OLD_LDFLAGS}"
1372 AC_SUBST(have_lto)
1373 AC_SUBST(lto_cflags)
1374 AC_SUBST(lto_ldflags)
1375fi
1376if test "$enable_lto" = "yes" && test "$have_lto" != "yes"; then
1377 AC_MSG_ERROR([LTO not supported by compiler.])
1378fi
1379dnl
1c2a76ae
DW
1380dnl Enable UBSAN for all packages
1381dnl
1382AC_ARG_ENABLE([ubsan],
1383[ --enable-ubsan enable undefined behavior sanitizer],,
1384enable_ubsan=no)
1385if test "$enable_ubsan" = "yes" || test "$enable_ubsan" = "probe"; then
1386 AC_MSG_CHECKING([if C compiler supports UBSAN])
1387 OLD_CFLAGS="$CFLAGS"
1388 OLD_LDFLAGS="$LDFLAGS"
1389 UBSAN_FLAGS="-fsanitize=undefined"
1390 CFLAGS="$CFLAGS $UBSAN_FLAGS"
1391 LDFLAGS="$LDFLAGS $UBSAN_FLAGS"
1392 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1393 [AC_MSG_RESULT([yes])]
1394 [ubsan_cflags=$UBSAN_FLAGS]
1395 [ubsan_ldflags=$UBSAN_FLAGS]
1396 [have_ubsan=yes],
1397 [AC_MSG_RESULT([no])])
1398 CFLAGS="${OLD_CFLAGS}"
1399 LDFLAGS="${OLD_LDFLAGS}"
1400 AC_SUBST(have_ubsan)
1401 AC_SUBST(ubsan_cflags)
1402 AC_SUBST(ubsan_ldflags)
1403fi
1404if test "$enable_ubsan" = "yes" && test "$have_ubsan" != "yes"; then
1405 AC_MSG_ERROR([UBSAN not supported by compiler.])
1406fi
1407dnl
5e666e3d
DW
1408dnl Enable ADDRSAN for all packages
1409dnl
1410AC_ARG_ENABLE([addrsan],
1411[ --enable-addrsan enable address sanitizer],,
1412enable_addrsan=no)
1413if test "$enable_addrsan" = "yes" || test "$enable_addrsan" = "probe"; then
1414 AC_MSG_CHECKING([if C compiler supports ADDRSAN])
1415 OLD_CFLAGS="$CFLAGS"
1416 OLD_LDFLAGS="$LDFLAGS"
1417 ADDRSAN_FLAGS="-fsanitize=address"
1418 CFLAGS="$CFLAGS $ADDRSAN_FLAGS"
1419 LDFLAGS="$LDFLAGS $ADDRSAN_FLAGS"
1420 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1421 [AC_MSG_RESULT([yes])]
1422 [addrsan_cflags=$ADDRSAN_FLAGS]
1423 [addrsan_ldflags=$ADDRSAN_FLAGS]
1424 [have_addrsan=yes],
1425 [AC_MSG_RESULT([no])])
1426 CFLAGS="${OLD_CFLAGS}"
1427 LDFLAGS="${OLD_LDFLAGS}"
1428 AC_SUBST(have_addrsan)
1429 AC_SUBST(addrsan_cflags)
1430 AC_SUBST(addrsan_ldflags)
1431fi
1432if test "$enable_addrsan" = "yes" && test "$have_addrsan" != "yes"; then
1433 AC_MSG_ERROR([ADDRSAN not supported by compiler.])
1434fi
1435dnl
bcca786b
DW
1436dnl Enable THREADSAN for all packages
1437dnl
1438AC_ARG_ENABLE([threadsan],
1439[ --enable-threadsan enable thread sanitizer],,
1440enable_threadsan=no)
1441if test "$enable_threadsan" = "yes" || test "$enable_threadsan" = "probe"; then
1442 AC_MSG_CHECKING([if C compiler supports THREADSAN])
1443 OLD_CFLAGS="$CFLAGS"
1444 OLD_LDFLAGS="$LDFLAGS"
1445 THREADSAN_FLAGS="-fsanitize=thread"
1446 CFLAGS="$CFLAGS $THREADSAN_FLAGS"
1447 LDFLAGS="$LDFLAGS $THREADSAN_FLAGS"
1448 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
1449 [AC_MSG_RESULT([yes])]
1450 [threadsan_cflags=$THREADSAN_FLAGS]
1451 [threadsan_ldflags=$THREADSAN_FLAGS]
1452 [have_threadsan=yes],
1453 [AC_MSG_RESULT([no])])
1454 CFLAGS="${OLD_CFLAGS}"
1455 LDFLAGS="${OLD_LDFLAGS}"
1456 AC_SUBST(have_threadsan)
1457 AC_SUBST(threadsan_cflags)
1458 AC_SUBST(threadsan_ldflags)
1459fi
1460if test "$enable_threadsan" = "yes" && test "$have_threadsan" != "yes"; then
1461 AC_MSG_ERROR([THREADSAN not supported by compiler.])
1462fi
1463if test "$have_threadsan" = "yes" && test "$have_addrsan" = "yes"; then
1464 AC_MSG_WARN([ADDRSAN and THREADSAN are not known to work together.])
1465fi
1466dnl
fff45483 1467dnl OS-specific uncomment control
e6f2bda3
TT
1468dnl
1469LINUX_CMT="#"
fff45483
TT
1470CYGWIN_CMT="#"
1471UNIX_CMT=
e6f2bda3
TT
1472case "$host_os" in
1473linux*)
1474 LINUX_CMT=
1475 ;;
fff45483
TT
1476cygwin)
1477 CYGWIN_CMT=
1478 UNIX_CMT="#"
fff45483 1479 ;;
e6f2bda3
TT
1480esac
1481AC_SUBST(LINUX_CMT)
fff45483
TT
1482AC_SUBST(CYGWIN_CMT)
1483AC_SUBST(UNIX_CMT)
e6f2bda3 1484dnl
5ce368f0
DW
1485dnl e2scrub only builds on linux
1486dnl
1487E2SCRUB_CMT="$LINUX_CMT"
1488AC_SUBST(E2SCRUB_CMT)
1489dnl
6c133523 1490dnl Linux and Hurd places root files in the / by default
50e1e10f 1491dnl
50e1e10f 1492case "$host_os" in
93636bde 1493linux* | gnu* | k*bsd*-gnu)
a4b2d3ce
TT
1494 if test "$prefix" = NONE -a "$root_prefix" = NONE ; then
1495 root_prefix="";
02d04db4 1496 AC_MSG_RESULT([On $host_os systems, root_prefix defaults to ''])
fc6d9d51
TT
1497 fi
1498 ;;
1499esac
fc6d9d51 1500dnl
a4b2d3ce 1501dnl On Linux/hurd, force the prefix to be /usr
fc6d9d51
TT
1502dnl
1503case "$host_os" in
93636bde 1504linux* | gnu* | k*bsd*-gnu)
fc6d9d51 1505 if test "$prefix" = NONE ; then
a4b2d3ce 1506 prefix="/usr";
02d04db4 1507 AC_MSG_RESULT([On $host_os systems, prefix defaults to /usr])
bff61a7a 1508 if test "$mandir" = '${prefix}/man' ; then
02d04db4 1509 AC_MSG_RESULT([...and mandir defaults to /usr/share/man])
bff61a7a
TT
1510 mandir=/usr/share/man
1511 fi
50e1e10f
TT
1512 fi
1513;;
1514esac
a4b2d3ce 1515if test "$root_prefix" = NONE ; then
ffe1991f 1516 if test "$prefix" = NONE ; then
a4b2d3ce
TT
1517 root_prefix="$ac_default_prefix"
1518 else
1519 root_prefix="$prefix"
1520 fi
b5ffeade
TT
1521 root_bindir=$bindir
1522 root_sbindir=$sbindir
1523 root_libdir=$libdir
1524 root_sysconfdir=$sysconfdir
1525else
1526 root_bindir='${root_prefix}/bin'
1527 root_sbindir='${root_prefix}/sbin'
1528 root_libdir='${root_prefix}/lib'
1529 root_sysconfdir='${root_prefix}/etc'
a4b2d3ce 1530fi
c4ef11c5
TT
1531if test "$bindir" != '${exec_prefix}/bin'; then
1532 root_bindir=$bindir
02d04db4 1533 AC_MSG_RESULT([Setting root_bindir to $root_bindir])
c4ef11c5
TT
1534fi
1535if test "$sbindir" != '${exec_prefix}/sbin'; then
1536 root_sbindir=$sbindir
02d04db4 1537 AC_MSG_RESULT([Setting root_sbindir to $root_sbindir])
c4ef11c5
TT
1538fi
1539if test "$libdir" != '${exec_prefix}/lib'; then
1540 root_libdir=$libdir
02d04db4 1541 AC_MSG_RESULT([Setting root_libdir to $root_libdir])
c4ef11c5
TT
1542fi
1543if test "$sysconfdir" != '${prefix}/etc'; then
1544 root_sysconfdir=$sysconfdir
02d04db4 1545 AC_MSG_RESULT([Setting root_sysconfdir to $root_sysconfdir])
c4ef11c5 1546fi
a4b2d3ce 1547AC_SUBST(root_prefix)
b5ffeade
TT
1548AC_SUBST(root_bindir)
1549AC_SUBST(root_sbindir)
1550AC_SUBST(root_libdir)
1551AC_SUBST(root_sysconfdir)
50e1e10f 1552dnl
55e00a25
TT
1553dnl Allow specification of the multiarch arch
1554dnl
1555AC_ARG_WITH([multiarch],
1556[ --with-multiarch=ARCH specify the multiarch triplet],
d7fa4103
TT
1557if test "$withval" = "lib64"; then
1558 libdir=/usr/lib64
1559 root_libdir=/lib64
1560else
1561 libdir=$libdir/$withval
1562 root_libdir=$root_libdir/$withval
1563fi
a2df5894
DW
1564)
1565dnl
55e00a25 1566dnl
d3de1a71
TT
1567dnl See if -static works. This could fail if the linker does not
1568dnl support -static, or if required external libraries are not available
1569dnl in static form.
50e1e10f 1570dnl
d3de1a71 1571AC_MSG_CHECKING([whether we can link with -static])
ae851482 1572AC_CACHE_VAL(ac_cv_e2fsprogs_use_static,
fd1677e8 1573[SAVE_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS_STATIC -static"
ae851482
TT
1574AC_TRY_LINK([#include <stdio.h>],[fflush(stdout);],
1575 ac_cv_e2fsprogs_use_static=yes, ac_cv_e2fsprogs_use_static=no)
1576LDFLAGS=$SAVE_LDFLAGS])
defde784
TT
1577dnl
1578dnl Regardless of how the test turns out, Solaris doesn't handle -static
1579dnl This is caused by the socket library requiring the nsl library, which
1580dnl requires the -dl library, which only works for dynamically linked
1581dnl programs. It basically means you can't have statically linked programs
1582dnl which use the network under Solaris.
1583dnl
1584case "$host_os" in
1585solaris2.*)
1586 ac_cv_e2fsprogs_use_static=no
1587;;
1588esac
ae851482 1589AC_MSG_RESULT($ac_cv_e2fsprogs_use_static)
ae851482 1590if test $ac_cv_e2fsprogs_use_static = yes; then
fd1677e8 1591 LDFLAGS_STATIC="$LDFLAGS_STATIC -static"
ae851482 1592fi
fd1677e8 1593AC_SUBST(LDFLAGS_STATIC)
50e1e10f 1594dnl
07a0db15
TT
1595dnl Work around mysterious Darwin / GNU libintl problem
1596dnl (__asm__ redirection doesn't work for some mysterious reason. Looks like
1597dnl Apple hacked gcc somehow?)
1598dnl
1599case "$host_os" in
1600darwin*)
02d04db4 1601 AC_MSG_RESULT([Using Apple Darwin / GNU libintl workaround])
d1154eb4
TT
1602 AC_DEFINE(_INTL_REDIRECT_MACROS, 1,
1603 [Define to 1 if Apple Darwin libintl workaround is needed])
07a0db15
TT
1604 ;;
1605esac
1606dnl
50e1e10f
TT
1607dnl Only try to run the test suite if we're not cross compiling.
1608dnl
1609if test "$cross_compiling" = yes ; then
1610 DO_TEST_SUITE=
1611else
1612 DO_TEST_SUITE=check
1613fi
1614AC_SUBST(DO_TEST_SUITE)
1615dnl
c6f35b8a 1616dnl Only include the intl include files if we're building with them
d1154eb4
TT
1617dnl
1618INCLUDES='-I. -I$(top_builddir)/lib -I$(top_srcdir)/lib'
1619if test -n "$CPPFLAGS" ; then
1620 INCLUDES="$INCLUDES $CPPFLAGS"
1621fi
c6f35b8a 1622if test "$USE_INCLUDED_LIBINTL" = "yes" ; then
d1154eb4 1623 INCLUDES=$INCLUDES' -I$(top_builddir)/intl -I$(top_srcdir)/intl'
c6f35b8a 1624fi
6c59a665
TT
1625if test -n "$WITH_DIET_LIBC" ; then
1626 INCLUDES="$INCLUDES -D_REENTRANT"
1627fi
d1154eb4 1628AC_SUBST(INCLUDES)
c6f35b8a 1629dnl
dd947da2
TT
1630dnl Build CFLAGS
1631dnl
1632if test $cross_compiling = no; then
2873927d 1633 BUILD_CFLAGS="$CFLAGS $CPPFLAGS $INCLUDES -DHAVE_CONFIG_H"
dd947da2 1634 BUILD_LDFLAGS="$LDFLAGS"
dd947da2
TT
1635fi
1636AC_SUBST(BUILD_CFLAGS)
1637AC_SUBST(BUILD_LDFLAGS)
1638dnl
fd1677e8
TT
1639dnl Define CFLAGS and LDFLAGS for shared libraries
1640dnl
1641CFLAGS_SHLIB=${CFLAGS_SHLIB:-$CFLAGS}
1642CFLAGS_STLIB=${CFLAGS_STLIB:-$CFLAGS}
1643LDFLAGS_SHLIB=${LDFLAGS_SHLIB:-$LDFLAGS}
1644AC_SUBST(CFLAGS_SHLIB)
1645AC_SUBST(CFLAGS_STLIB)
1646AC_SUBST(LDFLAGS_SHLIB)
5ce368f0
DW
1647
1648dnl
1649dnl Where do udev rules go?
1650dnl
1651AC_ARG_WITH([udev_rules_dir],
1652 [AS_HELP_STRING([--with-udev-rules-dir@<:@=DIR@:>@],
1653 [Install udev rules into DIR.])],
1654 [],
1655 [with_udev_rules_dir=yes])
1656AS_IF([test "x${with_udev_rules_dir}" != "xno"],
1657 [
1658 AS_IF([test "x${with_udev_rules_dir}" = "xyes"],
1659 [
1660 PKG_CHECK_MODULES([udev], [udev],
1661 [
1662 with_udev_rules_dir="$($PKG_CONFIG --variable=udevdir udev)/rules.d"
1663 ], [
1664 with_udev_rules_dir=""
1665 ])
1666 ])
1667 AC_MSG_CHECKING([for udev rules dir])
1668 pkg_udev_rules_dir="${with_udev_rules_dir}"
1669 AS_IF([test -n "${pkg_udev_rules_dir}"],
1670 [
1671 AC_MSG_RESULT(${pkg_udev_rules_dir})
1672 have_udev="yes"
1673 ],
1674 [
1675 AC_MSG_RESULT(no)
1676 have_udev="no"
1677 ])
1678 ],
1679 [
1680 have_udev="disabled"
1681 ])
1682AC_SUBST(have_udev)
1683AC_SUBST(pkg_udev_rules_dir)
1684
a2df5894
DW
1685dnl
1686dnl Where do cron jobs go?
1687dnl
1688AC_ARG_WITH([crond_dir],
1689 [AS_HELP_STRING([--with-crond-dir@<:@=DIR@:>@],
1690 [Install system crontabs into DIR.])],
1691 [],
1692 [with_crond_dir=yes])
1693AS_IF([test "x${with_crond_dir}" != "xno"],
1694 [
1695 AS_IF([test "x${with_crond_dir}" = "xyes"],
1696 [
1697 AS_IF([test -d "/etc/cron.d"],
188bf39a
TT
1698 [with_crond_dir="/etc/cron.d"],
1699 [have_crond="no"; with_crond_dir=""])
a2df5894
DW
1700 ])
1701 AC_MSG_CHECKING([for system crontab dir])
1702 crond_dir="${with_crond_dir}"
1703 AS_IF([test -n "${crond_dir}"],
1704 [
1705 AC_MSG_RESULT(${crond_dir})
1706 have_crond="yes"
1707 ],
1708 [
1709 AC_MSG_RESULT(no)
1710 have_crond="no"
1711 ])
1712 ],
1713 [
1714 have_crond="disabled"
1715 ])
1716AC_SUBST(have_crond)
1717AC_SUBST(crond_dir)
1718
1719dnl
1720dnl Where do systemd services go?
1721dnl
1722AC_ARG_WITH([systemd_unit_dir],
1723 [AS_HELP_STRING([--with-systemd-unit-dir@<:@=DIR@:>@],
1724 [Install systemd system units into DIR.])],
1725 [],
1726 [with_systemd_unit_dir=yes])
1727AS_IF([test "x${with_systemd_unit_dir}" != "xno"],
1728 [
1729 AS_IF([test "x${with_systemd_unit_dir}" = "xyes"],
1730 [
1731 PKG_CHECK_MODULES([systemd], [systemd],
1732 [
1733 with_systemd_unit_dir="$($PKG_CONFIG --variable=systemdsystemunitdir systemd)"
1734 ], [
1735 with_systemd_unit_dir=""
1736 ])
1737 m4_pattern_allow([^PKG_(MAJOR|MINOR|BUILD|REVISION)$])
1738 ])
1739 AC_MSG_CHECKING([for systemd system unit dir])
1740 systemd_system_unit_dir="${with_systemd_unit_dir}"
1741 AS_IF([test -n "${systemd_system_unit_dir}"],
1742 [
1743 AC_MSG_RESULT(${systemd_system_unit_dir})
1744 have_systemd="yes"
1745 ],
1746 [
1747 AC_MSG_RESULT(no)
1748 have_systemd="no"
1749 ])
1750 ],
1751 [
1752 have_systemd="disabled"
1753 ])
1754AC_SUBST(have_systemd)
1755AC_SUBST(systemd_system_unit_dir)
1756
fd1677e8 1757dnl
50e1e10f
TT
1758dnl Make our output files, being sure that we create the some miscellaneous
1759dnl directories
1760dnl
1761test -d lib || mkdir lib
1762test -d include || mkdir include
1763test -d include/linux || mkdir include/linux
defde784 1764test -d include/asm || mkdir include/asm
44dfb378
TT
1765if test -z "$UUID_CMT" ; then
1766 uuid_out_list="lib/uuid/Makefile lib/uuid/uuid.pc \
1767 lib/uuid/uuid_types.h"
1768fi
1769if test -z "$BLKID_CMT" ; then
1770 blkid_out_list="lib/blkid/Makefile lib/blkid/blkid.pc \
1771 lib/blkid/blkid_types.h"
1772fi
e5f0f3ee 1773for i in MCONFIG Makefile \
183c73b0 1774 util/Makefile util/subst.conf util/gen-tarball util/install-symlink \
4ea7ea00
TT
1775 lib/et/Makefile lib/ss/Makefile lib/e2p/Makefile \
1776 lib/ext2fs/Makefile lib/ext2fs/ext2_types.h \
f34af41b 1777 $uuid_out_list $blkid_out_list lib/support/Makefile \
44dfb378 1778 lib/ss/ss.pc lib/et/com_err.pc lib/e2p/e2p.pc lib/ext2fs/ext2fs.pc \
921f4ad5 1779 misc/Makefile ext2ed/Makefile e2fsck/Makefile \
94ba8c75 1780 debugfs/Makefile tests/Makefile tests/progs/Makefile \
98a5ad61 1781 resize/Makefile doc/Makefile intl/Makefile \
5ce368f0 1782 intl/libgnuintl.h po/Makefile.in scrub/Makefile; do
94ba8c75
TT
1783 if test -d `dirname ${srcdir}/$i` ; then
1784 outlist="$outlist $i"
1785 fi
1786done
1787AC_OUTPUT($outlist)
ee683a13 1788if test -f util/gen-tarball; then chmod +x util/gen-tarball; fi