]> git.ipfire.org Git - thirdparty/e2fsprogs.git/blame - configure.in
e2image.c (scramble_dir_block): Make sure the unused space
[thirdparty/e2fsprogs.git] / configure.in
CommitLineData
50e1e10f 1AC_INIT(version.h)
b0cacab0
TT
2AC_PREREQ(2.50)
3AC_CONFIG_AUX_DIR(config)
50e1e10f
TT
4MCONFIG=./MCONFIG
5AC_SUBST_FILE(MCONFIG)
74becf3c
TT
6BINARY_TYPE=bin
7dnl
8dnl This is to figure out the version number and the date....
9dnl
10E2FSPROGS_VERSION=`grep E2FSPROGS_VERSION ${srcdir}/version.h \
11 | awk '{print $3}' | tr \" " " | awk '{print $1}'`
12DATE=`grep E2FSPROGS_DATE ${srcdir}/version.h | awk '{print $3}' \
13 | tr \" " "`
bff0cc95 14E2FSPROGS_DAY=`echo $DATE | awk -F- '{print $1}'`
74becf3c
TT
15MONTH=`echo $DATE | awk -F- '{print $2}'`
16YEAR=`echo $DATE | awk -F- '{print $3}'`
17
40fa8cc9
TT
18if expr $YEAR ">" 1900 > /dev/null ; then
19 E2FSPROGS_YEAR=$YEAR
20elif expr $YEAR ">" 90 >/dev/null ; then
74becf3c
TT
21 E2FSPROGS_YEAR=19$YEAR
22else
23 E2FSPROGS_YEAR=20$YEAR
24fi
25
26case $MONTH in
27Jan) E2FSPROGS_MONTH="January" ;;
28Feb) E2FSPROGS_MONTH="February" ;;
29Mar) E2FSPROGS_MONTH="March" ;;
30Apr) E2FSPROGS_MONTH="April" ;;
31May) E2FSPROGS_MONTH="May" ;;
32Jun) E2FSPROGS_MONTH="June" ;;
33Jul) E2FSPROGS_MONTH="July" ;;
34Aug) E2FSPROGS_MONTH="August" ;;
35Sep) E2FSPROGS_MONTH="September" ;;
36Oct) E2FSPROGS_MONTH="October" ;;
37Nov) E2FSPROGS_MONTH="November" ;;
38Dec) E2FSPROGS_MONTH="December" ;;
39*) echo "Unknown month $MONTH??" ;;
40esac
41
42unset DATE MONTH YEAR
43echo "Generating configuration file for e2fsprogs version $E2FSPROGS_VERSION"
44echo "Release date is ${E2FSPROGS_MONTH}, ${E2FSPROGS_YEAR}"
45AC_SUBST(E2FSPROGS_YEAR)
46AC_SUBST(E2FSPROGS_MONTH)
bff0cc95 47AC_SUBST(E2FSPROGS_DAY)
74becf3c 48AC_SUBST(E2FSPROGS_VERSION)
ea97be5a 49AC_CANONICAL_HOST
74becf3c 50dnl
d21ae6c5
TT
51dnl Use diet libc
52dnl
53AC_ARG_WITH([diet-libc],
54[ --with-diet-libc Use diet libc],
55CC="diet cc -nostdinc"
d21ae6c5
TT
56AC_MSG_RESULT(CC=$CC))dnl
57dnl
74becf3c
TT
58dnl set $(CC) from --with-cc=value
59dnl
60AC_ARG_WITH([cc],
61[ --with-cc=COMPILER select compiler to use],
62AC_MSG_RESULT(CC=$withval)
63CC=$withval,
64if test -z "$CC" ; then CC=cc; fi
65[AC_MSG_RESULT(CC defaults to $CC)])dnl
66export CC
67AC_SUBST([CC])
73ae2d4a 68AC_PROG_CC
74becf3c
TT
69dnl
70dnl set $(LD) from --with-linker=value
71dnl
72AC_ARG_WITH([linker],
73[ --with-linker=LINKER select linker to use],
74AC_MSG_RESULT(LD=$withval)
75LD=$withval,
76if test -z "$LD" ; then LD=$CC; fi
77[AC_MSG_RESULT(LD defaults to $LD)])dnl
78export LD
79AC_SUBST([LD])
80dnl
81dnl set $(CCOPTS) from --with-ccopts=value
82dnl
83AC_ARG_WITH([ccopts],
84[ --with-ccopts=CCOPTS select compiler command line options],
85AC_MSG_RESULT(CCOPTS is $withval)
877eb6d9
TT
86CFLAGS=$withval,
87)dnl
74becf3c 88dnl
f8bd9807
TT
89dnl On systems without linux header files, we add an extra include directory
90dnl that holds enough to fake it (hopefully). Note that the $(top_srcdir) here
91dnl is quoted so that it gets expanded by make, not by configure.
92dnl
93AC_CHECK_HEADER(linux/fs.h, [linux_headers=yes], [linux_headers=no])
73ae2d4a
TT
94if test "$linux_headers" != yes; then
95 LINUX_INCLUDE='-I$(top_builddir)/include'
f8bd9807
TT
96fi
97AC_SUBST(LINUX_INCLUDE)
98dnl
b1c92f91
MA
99dnl Alpha computers use fast and imprecise floating point code that may
100dnl miss exceptions by default. Force sane options if we're using GCC.
101AC_MSG_CHECKING(for additional special compiler flags)
102if test "$GCC" = yes
103then
104 case "$host_cpu" in
105 alpha) addcflags="-mieee" ;;
106 esac
107fi
108if test "x$addcflags" != x
109then
110 AC_MSG_RESULT($addcflags)
111 CFLAGS="$addcflags $CFLAGS"
112else
113 AC_MSG_RESULT([[(none)]])
114fi
115dnl
a4d09610
TT
116dnl Set default values for library extentions. Will be dealt with after
117dnl parsing configuration opions, which may modify these
118dnl
119LIB_EXT=.a
120STATIC_LIB_EXT=.a
121PROFILE_LIB_EXT=.a
122dnl
74becf3c
TT
123dnl set $(LDFLAGS) from --with-ldopts=value
124dnl
125AC_ARG_WITH([ldopts],
126[ --with-ldopts=LDOPTS select linker command line options],
127AC_MSG_RESULT(LDFLAGS is $withval)
128LDFLAGS=$withval,
129LDFLAGS=)dnl
130AC_SUBST(LDFLAGS)
50e1e10f 131dnl
a4b2d3ce 132dnl Allow separate `root_prefix' to be specified
fc6d9d51 133dnl
a4b2d3ce
TT
134AC_ARG_WITH([root-prefix],
135[ --with-root-prefix=PREFIX override prefix variable for files to be placed in the root],
136root_prefix=$withval,
137root_prefix=NONE)dnl
fc6d9d51 138dnl
1917875f
TT
139dnl handle --enable-compression
140dnl
141AC_ARG_ENABLE([compression],
142[ --enable-compression enable EXPERIMENTAL compression support],
143if test "$enableval" = "no"
144then
145 echo "Disabling compression support"
146else
147 AC_DEFINE(ENABLE_COMPRESSION)
148 echo "Enabling compression support"
149 echo "WARNING: Compression support is experimental"
150fi
151,
152echo "Disabling compression support by default"
153)
154dnl
8fdc9985
TT
155dnl handle --enable-htree
156dnl
157AC_ARG_ENABLE([htree],
158[ --enable-htree enable EXPERIMENTAL htree directory support],
159if test "$enableval" = "no"
160then
161 HTREE_CMT=#
162 echo "Disabling htree directory support"
163else
164 HTREE_CMT=
165 AC_DEFINE(ENABLE_HTREE)
166 echo "Enabling htree directory support"
8fdc9985
TT
167fi
168,
559ca6cb
TT
169HTREE_CMT=
170AC_DEFINE(ENABLE_HTREE)
171echo "Enabling htree directory support by default"
8fdc9985
TT
172)
173AC_SUBST(HTREE_CMT)
174dnl
175dnl handle --enable-clear-htree
176dnl
177AC_ARG_ENABLE([htree-clear],
178[ --enable-htree-clear clear htree because we don't trust e2fsck],
179if test "$enableval" = "no"
180then
181 HTREE_CLR_CMT=#
182 echo "Disabling htree clearing"
183else
184 HTREE_CLR_CMT=
185 AC_DEFINE(ENABLE_HTREE_CLEAR)
186 echo "Enabling htree clearing"
187fi
188,
189HTREE_CLR_CMT=#
190echo "Disabling htree clearing by default"
191)
192AC_SUBST(HTREE_CLR_CMT)
193dnl
50e1e10f
TT
194dnl handle --enable-elf-shlibs
195dnl
196AC_ARG_ENABLE([elf-shlibs],
a4d09610 197[ --enable-elf-shlibs select ELF shared libraries],
50e1e10f
TT
198if test "$enableval" = "no"
199then
200 ELF_CMT=#
201 MAKEFILE_ELF=/dev/null
202 echo "Disabling ELF shared libraries"
203else
204 ELF_CMT=
205 MAKEFILE_ELF=$srcdir/lib/Makefile.elf-lib
f5955dda
TT
206 [case "$host_os" in
207 solaris2.*)
208 MAKEFILE_ELF=$srcdir/lib/Makefile.solaris-lib
209 ;;
210 esac]
74becf3c 211 BINARY_TYPE=elfbin
a4d09610 212 LIB_EXT=.so
50e1e10f
TT
213 echo "Enabling ELF shared libraries"
214fi
215,
216MAKEFILE_ELF=/dev/null
217ELF_CMT=#
218echo "Disabling ELF shared libraries by default"
219)
220AC_SUBST(ELF_CMT)
221AC_SUBST_FILE(MAKEFILE_ELF)
222dnl
223dnl handle --enable-bsd-shlibs
224dnl
225AC_ARG_ENABLE([bsd-shlibs],
a4d09610 226[ --enable-bsd-shlibs select BSD shared libraries],
50e1e10f
TT
227if test "$enableval" = "no"
228then
229 BSDLIB_CMT=#
230 MAKEFILE_BSDLIB=/dev/null
231 echo "Disabling BSD shared libraries"
232else
233 BSDLIB_CMT=
234 MAKEFILE_BSDLIB=$srcdir/lib/Makefile.bsd-lib
a4d09610 235 LIB_EXT=.so
e71d8731 236 [case "$host_os" in
aa75eccc 237 darwin*)
e71d8731
TT
238 MAKEFILE_BSDLIB=$srcdir/lib/Makefile.darwin-lib
239 LIB_EXT=.dylib
240 ;;
241 esac]
50e1e10f
TT
242 echo "Enabling BSD shared libraries"
243fi
244,
245MAKEFILE_BSDLIB=/dev/null
246BSDLIB_CMT=#
247echo "Disabling BSD shared libraries by default"
248)
249AC_SUBST(BSDLIB_CMT)
250AC_SUBST_FILE(MAKEFILE_BSDLIB)
251dnl
252dnl handle --enable-profile
253dnl
254AC_ARG_ENABLE([profile],
a4d09610 255[ --enable-profile build profiling libraries],
50e1e10f
TT
256if test "$enableval" = "no"
257then
258 PROFILE_CMT=#
259 MAKEFILE_PROFILE=/dev/null
260 echo "Disabling profiling libraries"
261else
262 PROFILE_CMT=
263 MAKEFILE_PROFILE=$srcdir/lib/Makefile.profile
a4d09610 264 PROFILED_LIB_EXT=_p.a
50e1e10f
TT
265 echo "Building profiling libraries"
266fi
267,
268PROFILE_CMT=#
269MAKEFILE_PROFILE=/dev/null
270echo "Disabling profiling libraries by default"
271)
272AC_SUBST(PROFILE_CMT)
273AC_SUBST_FILE(MAKEFILE_PROFILE)
274dnl
275dnl handle --enable-checker
276dnl
277AC_ARG_ENABLE([checker],
a4d09610 278[ --enable-checker build checker libraries],
50e1e10f
TT
279if test "$enableval" = "no"
280then
281 CHECKER_CMT=#
282 MAKEFILE_CHECKER=/dev/null
283 echo "Disabling checker libraries"
284else
285 CHECKER_CMT=
286 MAKEFILE_CHECKER=$srcdir/lib/Makefile.checker
287 echo "Building checker libraries"
288fi
289,
290CHECKER_CMT=#
291MAKEFILE_CHECKER=/dev/null
292echo "Disabling checker libraries by default"
293)
294AC_SUBST(CHECKER_CMT)
295AC_SUBST_FILE(MAKEFILE_CHECKER)
296dnl
a4d09610
TT
297dnl Substitute library extensions
298dnl
299AC_SUBST(LIB_EXT)
300AC_SUBST(STATIC_LIB_EXT)
301AC_SUBST(PROFILED_LIB_EXT)
302dnl
782bebfd 303dnl handle --enable-jbd-debug
cdf186e4 304dnl
782bebfd
TT
305AC_ARG_ENABLE([jbd-debug],
306[ --enable-jbd-debug enable journal debugging],
cdf186e4
TT
307if test "$enableval" = "no"
308then
309 echo "Disabling journal debugging"
310else
8cf93332 311 AC_DEFINE(CONFIG_JBD_DEBUG)
cdf186e4
TT
312 echo "Enabling journal debugging"
313fi
314,
315echo "Disabling journal debugging by default"
316)
317dnl
f0a22d0f
TT
318dnl handle --enable-blkid-debug
319dnl
320AC_ARG_ENABLE([blkid-debug],
d21ae6c5 321[ --enable-blkid-debug enable blkid debugging],
f0a22d0f
TT
322if test "$enableval" = "no"
323then
324 echo "Disabling blkid debugging"
325else
326 AC_DEFINE(CONFIG_BLKID_DEBUG)
327 echo "Enabling blkid debugging"
328fi
329,
330echo "Disabling blkid debugging by default"
2a29f135
TT
331)
332dnl
333dnl handle --enable-testio-debug
334dnl
335AC_ARG_ENABLE([testio-debug],
336[ --enable-testio-debug enable the use of the test I/O manager for debugging],
337if test "$enableval" = "no"
338then
339 echo "Disabling testio debugging"
340else
341 AC_DEFINE(CONFIG_TESTIO_DEBUG)
342 echo "Enabling testio debugging"
343fi
344,
345echo "Disabling testio debugging by default"
f0a22d0f
TT
346)
347dnl
cdf186e4
TT
348dnl handle --enable-swapfs
349dnl
350AC_ARG_ENABLE([swapfs],
351[ --disable-swapfs disable support of legacy byte-swapped filesystems],
352if test "$enableval" = "no"
353then
feb44c69 354 SWAPFS_CMT=#
cdf186e4
TT
355 echo "Disabling swapfs support"
356else
feb44c69 357 SWAPFS_CMT=
cdf186e4
TT
358 AC_DEFINE(ENABLE_SWAPFS)
359 echo "Enabling swapfs support"
360fi
361,
feb44c69 362SWAPFS_CMT=
cdf186e4
TT
363echo "Enabling swapfs support by default"
364AC_DEFINE(ENABLE_SWAPFS)
365)
feb44c69 366AC_SUBST(SWAPFS_CMT)
cdf186e4
TT
367dnl
368dnl handle --enable-debugfs
369dnl
370AC_ARG_ENABLE([debugfs],
371[ --disable-debugfs disable support of debugfs program],
372if test "$enableval" = "no"
373then
374 echo "Disabling debugfs support"
375 DEBUGFS_CMT="#"
376else
377 DEBUGFS_CMT=
378 echo "Enabling debugfs support"
379fi
380,
381echo "Enabling debugfs support by default"
382DEBUGFS_CMT=
383)
384AC_SUBST(DEBUGFS_CMT)
385dnl
386dnl handle --enable-imager
387dnl
388AC_ARG_ENABLE([imager],
389[ --disable-imager disable support of e2image program],
390if test "$enableval" = "no"
391then
392 echo "Disabling e2image support"
393 IMAGER_CMT="#"
394else
395 IMAGER_CMT=
396 echo "Enabling e2image support"
397fi
398,
399echo "Enabling e2image support by default"
400IMAGER_CMT=
401)
402AC_SUBST(IMAGER_CMT)
403dnl
404dnl handle --enable-resizer
405dnl
406AC_ARG_ENABLE([resizer],
407[ --disable-resizer disable support of e2resize program],
408if test "$enableval" = "no"
409then
410 echo "Disabling e2resize support"
411 RESIZER_CMT="#"
412else
413 RESIZER_CMT=
414 echo "Enabling e2resize support"
415fi
416,
417echo "Enabling e2resize support by default"
418RESIZER_CMT=
419)
420AC_SUBST(RESIZER_CMT)
421dnl
4d0f3e17 422dnl handle --enable-dynamic-e2fsck
50e1e10f 423dnl
a4d09610
TT
424AC_ARG_ENABLE([dynamic-e2fsck],
425[ --enable-dynamic-e2fsck build e2fsck dynamically],
426if test "$enableval" = "no"
427then
428 E2FSCK_TYPE=static
429 echo "Building e2fsck statically"
430else
431 E2FSCK_TYPE=shared
432 echo "Building e2fsck dynamically"
433fi
434,
435E2FSCK_TYPE=static
436echo "Building e2fsck statically by default"
437)
438AC_SUBST(E2FSCK_TYPE)
50e1e10f 439dnl
fc6d9d51
TT
440dnl See whether to install the `fsck' wrapper program (that calls e2fsck)
441dnl
442AC_ARG_ENABLE([fsck],
443[ --enable-fsck build fsck wrapper program],
444[if test "$enableval" = "no"
445then
446 FSCK_PROG='' FSCK_MAN=''
447 echo "Not building fsck wrapper"
448else
449 FSCK_PROG=fsck FSCK_MAN=fsck.8
450 echo "Building fsck wrapper"
451fi]
452,
453[case "$host_os" in
e363240d 454 gnu*)
fc6d9d51
TT
455 FSCK_PROG='' FSCK_MAN=''
456 echo "Not building fsck wrapper by default"
457 ;;
458 *)
459 FSCK_PROG=fsck FSCK_MAN=fsck.8
460 echo "Building fsck wrapper by default"
461esac]
462)
463AC_SUBST(FSCK_PROG)
464AC_SUBST(FSCK_MAN)
465dnl
5d40773b
TT
466dnl See whether to install the `e2initrd-helper' program
467dnl
468AC_ARG_ENABLE([e2initrd-helper],
469[ --enable-e2initrd-helper build e2initrd-helper program],
470[if test "$enableval" = "no"
471then
472 E2INITRD_PROG='' E2INITRD_MAN=''
473 echo "Not building e2initrd helper"
474else
475 E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8
476 echo "Building e2initrd helper"
477fi]
478,
479E2INITRD_PROG=e2initrd_helper E2INITRD_MAN=e2initrd_helper.8
480echo "Building e2initrd helper by default"
481)
482AC_SUBST(E2INITRD_PROG)
483AC_SUBST(E2INITRD_MAN)
484dnl
50e1e10f
TT
485dnl
486MAKEFILE_LIBRARY=$srcdir/lib/Makefile.library
487AC_SUBST_FILE(MAKEFILE_LIBRARY)
488dnl
fc6d9d51
TT
489dnl
490AC_ARG_ENABLE([old-bitops],
491[ --enable-old-bitops Use old (non-standard but native) bitmask operations],
492if test "$enableval" = "no"
493then
494 echo "Using new (standard) bitmask operations"
495else
496 AC_DEFINE(EXT2_OLD_BITOPS)
497 echo "Using old (native) bitmask operations"
498
499fi
500,
501echo "Using standard bitmask operations by default"
502)
503dnl
cdf186e4
TT
504dnl Add internationalization support, using gettext.
505dnl
b0cacab0 506GETTEXT_PACKAGE=e2fsprogs
cdf186e4
TT
507PACKAGE=e2fsprogs
508VERSION="$E2FSPROGS_VERSION"
b0cacab0 509VERSION=0.14.1
cdf186e4
TT
510AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
511AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
b0cacab0 512AC_SUBST(GETTEXT_PACKAGE)
cdf186e4
TT
513AC_SUBST(PACKAGE)
514AC_SUBST(VERSION)
515
cdf186e4
TT
516AM_GNU_GETTEXT
517dnl
50e1e10f
TT
518dnl End of configuration options
519dnl
74becf3c 520AC_SUBST(BINARY_TYPE)
50e1e10f
TT
521AC_PROG_MAKE_SET
522AC_PATH_PROG(LN, ln, ln)
fc6d9d51 523AC_PROG_LN_S
50e1e10f
TT
524AC_PATH_PROG(MV, mv, mv)
525AC_PATH_PROG(CP, cp, cp)
526AC_PATH_PROG(RM, rm, rm)
527AC_PATH_PROG(CHMOD, chmod, :)
32237014
TT
528AC_PROG_AWK
529AC_PROG_EGREP
50e1e10f 530AC_PATH_PROG(SED, sed, sed)
9d564f73 531AC_PATH_PROG(PERL, perl, perl)
250f79f0 532AC_PATH_PROG(LDCONFIG, ldconfig, :)
50e1e10f
TT
533AC_CHECK_TOOL(AR, ar, ar)
534AC_CHECK_TOOL(RANLIB, ranlib, :)
535AC_CHECK_TOOL(STRIP, strip, :)
50e1e10f 536AC_PROG_INSTALL
6c133523
TT
537# See if we need a separate native compiler.
538if test $cross_compiling = no; then
539 BUILD_CC="$CC"
540 AC_SUBST(BUILD_CC)
541else
542 AC_CHECK_PROGS(BUILD_CC, gcc cc)
543fi
da76d6b7
TT
544AC_CHECK_HEADERS(stdlib.h unistd.h stdarg.h stdint.h errno.h malloc.h mntent.h paths.h dirent.h getopt.h setjmp.h signal.h termios.h linux/fd.h linux/major.h sys/disklabel.h sys/ioctl.h sys/mkdev.h sys/queue.h sys/sockio.h sys/socket.h sys/sysmacros.h sys/time.h sys/stat.h sys/types.h sys/wait.h sys/resource.h net/if_dl.h netinet/in.h)
545AC_CHECK_HEADERS(sys/disk.h sys/mount.h,,,
546[[
547#if HAVE_SYS_QUEUE_H
548#include <sys/queue.h>
549#endif
550]])
551AC_CHECK_HEADERS(net/if.h,,,
552[[
553#if HAVE_SYS_TYPES_H
554#include <sys/types.h>
555#endif
556#if HAVE_SYS_SOCKET
557#include <sys/socket.h>
558#endif
559]])
50e1e10f 560AC_FUNC_VPRINTF
fff45483
TT
561dnl Check to see if dirent has member d_reclen. On cygwin those d_reclen
562dnl is not decleared.
6c65d251
TT
563AC_CHECK_MEMBER(struct dirent.d_reclen,[AC_DEFINE(HAVE_RECLEN_DIRENT)],,
564 [#include <dirent.h>])
fff45483 565dnl Check to see if ssize_t was decleared
6c65d251
TT
566AC_CHECK_TYPE(ssize_t,[AC_DEFINE(HAVE_TYPE_SSIZE_T)],,
567 [#include <sys/types.h>])
50e1e10f 568dnl
b0b9c4de
TT
569dnl Check to see if llseek() is declared in unistd.h. On some libc's
570dnl it is, and on others it isn't..... Thank you glibc developers....
571dnl
6c65d251
TT
572AC_CHECK_DECL(llseek,[AC_DEFINE(HAVE_LLSEEK_PROTOTYPE)],,
573 [#include <unistd.h>])
b0b9c4de 574dnl
6928adc9
TT
575dnl Check to see if lseek64() is declared in unistd.h. Glibc's header files
576dnl are so convoluted that I can't tell whether it will always be defined,
577dnl and if it isn't defined while lseek64 is defined in the library,
578dnl disaster will strike.
579dnl
580dnl Warning! Use of --enable-gcc-wall may throw off this test.
581dnl
582dnl
6c65d251
TT
583AC_CHECK_DECL(lseek64,[AC_DEFINE(HAVE_LSEEK64_PROTOTYPE)],,
584 [#define _LARGEFILE_SOURCE
585 #define _LARGEFILE64_SOURCE
586 #include <unistd.h>])
6928adc9 587dnl
50e1e10f
TT
588dnl Word sizes...
589dnl
590if test "$cross_compiling" = yes -a "$ac_cv_sizeof_long" = ""; then
591 # if cross-compiling, with no cached values, just assume something common.
592 ac_cv_sizeof_short=2
593 ac_cv_sizeof_int=4
594 ac_cv_sizeof_long=4
6c133523
TT
595 ac_cv_sizeof_long_long=8
596 AC_MSG_WARN([Cross-compiling, so cannot check type sizes; assuming short=2, int=4, long=4, long long=8])
50e1e10f
TT
597fi
598AC_CHECK_SIZEOF(short)
599AC_CHECK_SIZEOF(int)
600AC_CHECK_SIZEOF(long)
fc6d9d51 601AC_CHECK_SIZEOF(long long)
50e1e10f
TT
602SIZEOF_SHORT=$ac_cv_sizeof_short
603SIZEOF_INT=$ac_cv_sizeof_int
604SIZEOF_LONG=$ac_cv_sizeof_long
fc6d9d51 605SIZEOF_LONG_LONG=$ac_cv_sizeof_long_long
50e1e10f
TT
606AC_SUBST(SIZEOF_SHORT)
607AC_SUBST(SIZEOF_INT)
608AC_SUBST(SIZEOF_LONG)
fc6d9d51 609AC_SUBST(SIZEOF_LONG_LONG)
877eb6d9 610AC_C_BIGENDIAN
50e1e10f 611dnl
0c193f82
TT
612dnl See if we have inttypes.h and if intptr_t is defined
613dnl
614AC_CHECK_HEADERS([inttypes.h])
d2ee56d8 615AC_CHECK_TYPES(intptr_t)
0c193f82 616dnl
50e1e10f
TT
617dnl See if struct stat has a st_flags field, in which case we can get file
618dnl flags somewhat portably. Also check for the analogous setter, chflags().
619dnl
620AC_MSG_CHECKING(whether struct stat has a st_flags field)
621AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags,
622 AC_TRY_COMPILE([#include <sys/stat.h>],
623 [struct stat stat; stat.st_flags = 0;],
624 [e2fsprogs_cv_struct_st_flags=yes],
625 [e2fsprogs_cv_struct_st_flags=no]))
626AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags)
627if test "$e2fsprogs_cv_struct_st_flags" = yes; then
c03bc4e8
TT
628 AC_MSG_CHECKING(whether st_flags field is useful)
629 AC_CACHE_VAL(e2fsprogs_cv_struct_st_flags_immut,
630 AC_TRY_COMPILE([#include <sys/stat.h>],
631 [struct stat stat; stat.st_flags |= UF_IMMUTABLE;],
632 [e2fsprogs_cv_struct_st_flags_immut=yes],
633 [e2fsprogs_cv_struct_st_flags_immut=no]))
634 AC_MSG_RESULT($e2fsprogs_cv_struct_st_flags_immut)
635 if test "$e2fsprogs_cv_struct_st_flags_immut" = yes; then
636 AC_DEFINE(HAVE_STAT_FLAGS)
637 fi
50e1e10f 638fi
84ea6e70
TT
639dnl
640dnl Check for the presence of SA_LEN
641dnl
6c65d251
TT
642AC_CHECK_MEMBER(struct sockaddr.sa_len,
643 AC_DEFINE_UNQUOTED(HAVE_SA_LEN,1,[Define if struct sockaddr contains sa_len]),,
644 [#include <sys/types.h>
645 #include <sys/socket.h>])
84ea6e70 646dnl
1c29b097 647AC_CHECK_FUNCS(chflags getrusage llseek lseek64 open64 getmntinfo strtoull strcasecmp srandom fchown mallinfo fdatasync strnlen strptime sysconf pathconf posix_memalign memalign valloc)
fc6d9d51 648dnl
fc6d9d51
TT
649dnl Check to see if -lsocket is required (solaris) to make something
650dnl that uses socket() to compile; this is needed for the UUID library
651dnl
652SOCKET_LIB=''
653AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket])
654AC_SUBST(SOCKET_LIB)
655dnl
3ae497ea
TT
656dnl Check to see if libdl exists for the sake of dlopen
657dnl
658DLOPEN_LIB=''
659AC_CHECK_LIB(dl, dlopen,
660[DLOPEN_LIB=-ldl
661AC_DEFINE(HAVE_DLOPEN)])
662AC_SUBST(DLOPEN_LIB)
663dnl
50e1e10f
TT
664dnl See if optreset exists
665dnl
666AC_MSG_CHECKING(for optreset)
667AC_CACHE_VAL(ac_cv_have_optreset,
668[AC_EGREP_HEADER(optreset, unistd.h,
669 ac_cv_have_optreset=yes, ac_cv_have_optreset=no)])dnl
670AC_MSG_RESULT($ac_cv_have_optreset)
671if test $ac_cv_have_optreset = yes; then
672 AC_DEFINE(HAVE_OPTRESET)
673fi
674dnl
8f3f29d3
TT
675dnl We use the EXT2 ioctls only under Linux
676dnl
677case "$host_os" in
678linux*)
679 AC_DEFINE(HAVE_EXT2_IOCTLS)
680 ;;
681esac
50e1e10f 682dnl
fff45483 683dnl OS-specific uncomment control
e6f2bda3
TT
684dnl
685LINUX_CMT="#"
fff45483
TT
686CYGWIN_CMT="#"
687UNIX_CMT=
e6f2bda3
TT
688case "$host_os" in
689linux*)
690 LINUX_CMT=
691 ;;
fff45483
TT
692cygwin)
693 CYGWIN_CMT=
694 UNIX_CMT="#"
fff45483 695 ;;
e6f2bda3
TT
696esac
697AC_SUBST(LINUX_CMT)
fff45483
TT
698AC_SUBST(CYGWIN_CMT)
699AC_SUBST(UNIX_CMT)
e6f2bda3 700dnl
6c133523 701dnl Linux and Hurd places root files in the / by default
50e1e10f 702dnl
50e1e10f 703case "$host_os" in
93636bde 704linux* | gnu* | k*bsd*-gnu)
a4b2d3ce
TT
705 if test "$prefix" = NONE -a "$root_prefix" = NONE ; then
706 root_prefix="";
707 echo "On $host_os systems, root_prefix defaults to ''"
fc6d9d51
TT
708 fi
709 ;;
710esac
fc6d9d51 711dnl
a4b2d3ce 712dnl On Linux/hurd, force the prefix to be /usr
fc6d9d51
TT
713dnl
714case "$host_os" in
93636bde 715linux* | gnu* | k*bsd*-gnu)
fc6d9d51 716 if test "$prefix" = NONE ; then
a4b2d3ce
TT
717 prefix="/usr";
718 echo "On $host_os systems, prefix defaults to /usr"
bff61a7a
TT
719 if test "$mandir" = '${prefix}/man' ; then
720 echo "...and mandir defaults to /usr/share/man"
721 mandir=/usr/share/man
722 fi
50e1e10f
TT
723 fi
724;;
725esac
a4b2d3ce 726if test "$root_prefix" = NONE ; then
ffe1991f 727 if test "$prefix" = NONE ; then
a4b2d3ce
TT
728 root_prefix="$ac_default_prefix"
729 else
730 root_prefix="$prefix"
731 fi
b5ffeade
TT
732 root_bindir=$bindir
733 root_sbindir=$sbindir
734 root_libdir=$libdir
735 root_sysconfdir=$sysconfdir
736else
737 root_bindir='${root_prefix}/bin'
738 root_sbindir='${root_prefix}/sbin'
739 root_libdir='${root_prefix}/lib'
740 root_sysconfdir='${root_prefix}/etc'
a4b2d3ce
TT
741fi
742AC_SUBST(root_prefix)
b5ffeade
TT
743AC_SUBST(root_bindir)
744AC_SUBST(root_sbindir)
745AC_SUBST(root_libdir)
746AC_SUBST(root_sysconfdir)
50e1e10f
TT
747dnl
748dnl See if -static works.
50e1e10f 749dnl
ae851482
TT
750AC_MSG_CHECKING([whether linker accepts -static])
751AC_CACHE_VAL(ac_cv_e2fsprogs_use_static,
752[SAVE_LDFLAGS=$LDFLAGS; LDFLAGS="$LDFLAGS -static"
753AC_TRY_LINK([#include <stdio.h>],[fflush(stdout);],
754 ac_cv_e2fsprogs_use_static=yes, ac_cv_e2fsprogs_use_static=no)
755LDFLAGS=$SAVE_LDFLAGS])
defde784
TT
756dnl
757dnl Regardless of how the test turns out, Solaris doesn't handle -static
758dnl This is caused by the socket library requiring the nsl library, which
759dnl requires the -dl library, which only works for dynamically linked
760dnl programs. It basically means you can't have statically linked programs
761dnl which use the network under Solaris.
762dnl
763case "$host_os" in
764solaris2.*)
765 ac_cv_e2fsprogs_use_static=no
766;;
767esac
ae851482 768AC_MSG_RESULT($ac_cv_e2fsprogs_use_static)
74becf3c 769LDFLAG_STATIC=
ae851482 770if test $ac_cv_e2fsprogs_use_static = yes; then
50e1e10f 771 LDFLAG_STATIC=-static
ae851482 772fi
50e1e10f
TT
773AC_SUBST(LDFLAG_STATIC)
774dnl
07a0db15
TT
775dnl Work around mysterious Darwin / GNU libintl problem
776dnl (__asm__ redirection doesn't work for some mysterious reason. Looks like
777dnl Apple hacked gcc somehow?)
778dnl
779case "$host_os" in
780darwin*)
781 echo "Using Apple Darwin / GNU libintl workaround"
782 AC_DEFINE(_INTL_REDIRECT_MACROS)
783 ;;
784esac
785dnl
50e1e10f
TT
786dnl Make the ss and et directories work correctly.
787dnl
788SS_DIR=`cd ${srcdir}/lib/ss; pwd`
789ET_DIR=`cd ${srcdir}/lib/et; pwd`
790AC_SUBST(SS_DIR)
791AC_SUBST(ET_DIR)
792dnl
793dnl Only try to run the test suite if we're not cross compiling.
794dnl
795if test "$cross_compiling" = yes ; then
796 DO_TEST_SUITE=
797else
798 DO_TEST_SUITE=check
799fi
800AC_SUBST(DO_TEST_SUITE)
801dnl
c6f35b8a
TT
802dnl Only include the intl include files if we're building with them
803dnl
804INTL_FLAGS=
805if test "$USE_INCLUDED_LIBINTL" = "yes" ; then
806 INTL_FLAGS='-I$(top_builddir)/intl -I$(top_srcdir)/intl'
807fi
808AC_SUBST(INTL_FLAGS)
809dnl
50e1e10f
TT
810dnl Make our output files, being sure that we create the some miscellaneous
811dnl directories
812dnl
813test -d lib || mkdir lib
814test -d include || mkdir include
815test -d include/linux || mkdir include/linux
defde784 816test -d include/asm || mkdir include/asm
bff0cc95
TT
817for i in MCONFIG Makefile e2fsprogs.spec \
818 util/Makefile util/subst.conf util/gen-tarball \
819 lib/et/Makefile lib/ss/Makefile lib/ext2fs/Makefile lib/e2p/Makefile \
94ba8c75
TT
820 lib/uuid/Makefile lib/uuid/uuid_types.h \
821 lib/blkid/Makefile lib/blkid/blkid_types.h \
921f4ad5 822 misc/Makefile ext2ed/Makefile e2fsck/Makefile \
94ba8c75
TT
823 debugfs/Makefile tests/Makefile tests/progs/Makefile \
824 resize/Makefile doc/Makefile intl/Makefile po/Makefile.in ; do
825 if test -d `dirname ${srcdir}/$i` ; then
826 outlist="$outlist $i"
827 fi
828done
829AC_OUTPUT($outlist)