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