OSDN Git Service

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