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