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