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