OSDN Git Service

libreadline is a problematic library. Autoconf adds a block to the generated configur...
[android-x86/external-parted.git] / configure.ac
1 dnl GNU Parted - a library and front end for manipulation hard disk partitions
2 dnl Copyright (C) 1998, 1999, 2000, 2001, 2002, 2005, 2006, 2007
3 dnl Free Software Foundation, Inc.
4 dnl
5 dnl This file may be modified and/or distributed without restriction.
6
7 AC_PREREQ(2.61)
8 AC_INIT([GNU parted],[1.8.3],[bug-parted@gnu.org])
9
10 AC_CONFIG_SRCDIR(include/parted/parted.h)
11
12 AC_CONFIG_HEADERS([lib/config.h:lib/config.h.in])
13 AC_CONFIG_AUX_DIR(build-aux)
14
15 dnl Versioning
16 dnl Shamelessly pulled straight from glib's configure.in ...
17 dnl Making releases:
18 dnl    PED_MICRO_VERSION += 1;
19 dnl    PED_INTERFACE_AGE += 1;
20 dnl    PED_BINARY_AGE += 1;
21 dnl if any functions have been added, set PED_INTERFACE_AGE to 0.
22 dnl if backwards compatibility has been broken (eg. functions removed,
23 dnl function signatures changed),
24 dnl set PED_BINARY_AGE _and_ PED_INTERFACE_AGE to 0.
25 PED_MAJOR_VERSION=1
26 PED_MINOR_VERSION=8
27 PED_MICRO_VERSION=3
28 PED_INTERFACE_AGE=0
29 PED_BINARY_AGE=0
30 PED_VERSION_SUFFIX=
31 PED_VERSION=$PED_MAJOR_VERSION.$PED_MINOR_VERSION.$PED_MICRO_VERSION$PED_VERSION_SUFFIX
32
33 LT_RELEASE=$PED_MAJOR_VERSION.$PED_MINOR_VERSION
34 LT_CURRENT=`expr $PED_MICRO_VERSION - $PED_INTERFACE_AGE`
35 LT_REVISION=$PED_INTERFACE_AGE
36 LT_AGE=`expr $PED_BINARY_AGE - $PED_INTERFACE_AGE`
37 AC_SUBST(LT_RELEASE)
38 AC_SUBST(LT_CURRENT)
39 AC_SUBST(LT_REVISION)
40 AC_SUBST(LT_AGE)
41
42 # Ensure that the PED_*-specified version is the same as the literal
43 # in the AC_INIT line, above.
44 test $PACKAGE_VERSION = $PED_VERSION ||
45   AC_MSG_ERROR(configure.ac: version mismatch: $PACKAGE_VERSION != $PED_VERSION)
46
47 AM_INIT_AUTOMAKE([1.10 dist-bzip2])
48
49 AC_CANONICAL_HOST
50 case "$host_os" in
51         linux*) OS=linux ;;
52         gnu*)   OS=gnu ;;
53         beos*)  OS=beos ;;
54         *)      AC_MSG_ERROR([Unknown or unsupported OS "$host_os".  Only "linux", "gnu" and "beos" are supported in this version of GNU Parted.]) ;;
55 esac
56 AC_SUBST(OS)
57
58 dnl Command-line options
59 AC_ARG_WITH(readline,
60         [  --with-readline         support fancy command line editing], ,
61         with_readline=yes
62 )
63
64 AC_ARG_ENABLE(mtrace,
65         [  --enable-mtrace         enable malloc() debugging], ,
66         enable_mtrace=no
67 )
68 if test "$enable_mtrace" = yes; then
69         AC_DEFINE(ENABLE_MTRACE, 1, [Mtrace malloc() debugging])
70 fi
71
72 AC_ARG_ENABLE(device-mapper,
73         [  --enable-device-mapper  enable device mapper support [default=no]], ,
74         enable_device_mapper=no
75 )
76 if test "$enable_device_mapper" = yes; then
77         AC_DEFINE(ENABLE_DEVICE_MAPPER, 1, [device mapper (libdevmapper) support])
78 fi
79
80 AC_ARG_ENABLE(selinux,
81         [  --enable-selinux        enable SELinux support [default=no]], ,
82         enable_selinux=no
83 )
84
85 AC_ARG_ENABLE(discover-only,
86         [  --enable-discover-only  support only reading/probing [default=no]], ,
87         enable_discover_only=no
88 )
89 if test "$enable_discover_only" = yes; then
90         AC_DEFINE(DISCOVER_ONLY, 1, [Probing functionality only])
91 fi
92
93 PARTED_LIBS=""
94 AC_ARG_ENABLE(dynamic-loading,
95 [  --enable-dynamic-loading  support dynamic fs libraries [default=yes]], ,
96         if test "$enable_discover_only" = yes; then
97                 enable_dynamic_loading=no
98         else
99                 enable_dynamic_loading=yes
100         fi
101 )
102 if test "$enable_discover_only" = yes -a "$enable_dynamic_loading" = yes; then
103         AC_MSG_ERROR(
104 [You can't use --enable-dynamic-loading and --disable-discover-only together]
105         )
106 fi
107
108 AC_ARG_ENABLE(fs,
109         [  --enable-fs             include filesystem support [default=yes]], ,
110         enable_fs=yes
111 )
112 if test "$enable_fs" = yes; then
113         AC_DEFINE(ENABLE_FS, 1,
114                   [Include file system support.  i.e. libparted/fs_...])
115 fi
116
117 AC_ARG_ENABLE(debug,
118         [  --enable-debug          compile in assertions [default=yes]], ,
119         enable_debug=yes
120 )
121
122 if test "$enable_debug" = yes; then
123         AC_DEFINE(DEBUG, 1, [Enable assertions, etc.])
124 fi
125
126 AC_ARG_ENABLE(read-only,
127         [  --enable-read-only      disable writing (for debugging) [default=no]]
128         , ,
129         enable_read_only=no
130 )
131 if test "$enable_read_only" = yes; then
132         AC_DEFINE(READ_ONLY, 1, [Disable all writing code])
133 fi
134
135 PARTEDLDFLAGS=
136 AC_SUBST(PARTEDLDFLAGS)
137
138 AC_ARG_ENABLE(pc98,
139         [  --enable-pc98          build with pc98 support [default=yes]], ,
140         enable_pc98=yes
141 )
142 if test "$enable_pc98" = yes; then
143         AC_DEFINE(ENABLE_PC98, 1,
144                   [Include PC98 partition tables.  (Sometimes excluded to avoid
145                    collisions with msdos partition tables])
146 fi
147
148 AC_ARG_ENABLE(Werror,
149         [  --enable-Werror         build with gcc -Werror [default=yes]], ,
150         enable_Werror=yes
151 )
152
153 AC_ARG_ENABLE(hfs-extract-fs,
154         [  --enable-hfs-extract-fs Extract special HFS files for debugging [default=no]], ,
155         enable_hfs_extract_fs=no
156 )
157 if test "$enable_hfs_extract_fs" = yes; then
158        AC_DEFINE(HFS_EXTRACT_FS, 1,
159                  [Extract low level special HFS(+) files for debugging purposes
160                   when using the "check" command (NOT FOR PACKAGING)])
161 fi
162
163 dnl make libc threadsafe (not required for us, but useful other users of
164 dnl libparted)
165 AM_CPPFLAGS="$AM_CPPFLAGS -D_REENTRANT"
166
167 dnl Check for programs.
168 AC_ISC_POSIX
169 AC_PROG_CC
170 AC_PROG_GCC_TRADITIONAL
171 AM_PROG_CC_C_O
172
173 gl_EARLY
174
175 dnl This test must come as early as possible after the compiler configuration
176 dnl tests, because the choice of the file model can (in principle) affect
177 dnl whether functions and headers are available, whether they work, etc.
178 AC_SYS_LARGEFILE
179
180 gl_INIT
181
182 AC_CHECK_SIZEOF(off_t, 64, [
183         #include <stdio.h>
184         #include <sys/types.h>
185         #include <unistd.h>
186 ])
187
188 AM_ENABLE_SHARED
189 if test "$OS" = linux -a $ac_cv_sizeof_off_t -lt 8; then
190         dnl Need to disable shared libraries, to get llseek() to work.  Long
191         dnl story.  The short story is: lseek() isn't in glibc, so a syscall
192         dnl must be made.  syscalls can't be made from within shared libraries,
193         dnl because of a bug (?) in gcc.
194         AC_MSG_WARN(
195 off_t is less than 8 bytes.  Using llseek syscall, and disabling shared
196 libraries.)
197         AM_DISABLE_SHARED
198 fi
199 AM_PROG_LIBTOOL
200
201 AM_GNU_GETTEXT_VERSION([0.15])
202 AM_GNU_GETTEXT([external])
203 if test "$USE_INCLUDED_LIBINTL" = "yes"; then
204         AC_MSG_ERROR(
205 GNU Parted requires gettext to be installed for compilation -
206 if native language support is desired.  Either disable native language support
207 with:
208         $ ./configure --disable-nls
209 Or install gettext.  GNU gettext is available from
210         http://ftp.gnu.org/gnu/gettext
211 )
212         exit
213 fi
214
215 dnl Check for libdl, if we are doing dynamic loading
216 DL_LIBS=""
217 if test "$enable_dynamic_loading" = yes; then
218         AC_CHECK_LIB(dl, dlopen,
219                 DL_LIBS="-ldl"
220                 PARTED_LIBS="$PARTED_LIBS -ldl"
221                 AC_DEFINE(DYNAMIC_LOADING, 1, [Lazy linking to fs libs]),
222                 AC_MSG_ERROR(
223                         [-ldl not found!  Try using --disable-dynamic-loading]
224                 )
225                 exit
226         )
227 fi
228 AC_SUBST(DL_LIBS)
229
230 dnl Check for libuuid
231 UUID_LIBS=""
232 AC_CHECK_LIB(uuid, uuid_generate, UUID_LIBS="-luuid",
233         AC_MSG_ERROR(
234 GNU Parted requires libuuid - a part of the e2fsprogs package (but
235 sometimes distributed separately in uuid-devel or similar)
236 This can probably be found on your distribution's CD or FTP site or at:
237          http://web.mit.edu/tytso/www/linux/e2fsprogs.html
238 Note: if you are using precompiled packages you will also need the development
239 package as well (which may be called e2fsprogs-devel or something similar).
240 If you compile e2fsprogs yourself then you need to do 'make install' and
241 'make install-libs'.
242         )
243         exit
244 )
245 AC_SUBST(UUID_LIBS)
246
247 dnl Check for libdevmapper
248 DM_LIBS=""
249 if test "$enable_device_mapper" = yes; then
250         AC_CHECK_LIB(devmapper, dm_task_create,
251                 DM_LIBS="-ldevmapper",
252                 AC_MSG_ERROR(
253                         [libdevmapper not found!  Try using --disable-device-mapper]
254                 )
255                 exit
256         )
257 fi
258 AC_SUBST(DM_LIBS)
259
260 dnl Check for SELinux
261 SELINUX_LIBS=""
262 if test "$enable_selinux" = yes; then
263         SELINUX_LIBS="-lselinux -lsepol"
264 fi
265 AC_SUBST(SELINUX_LIBS)
266
267 dnl Check for libreiserfs
268 REISER_LIBS=""
269 if test "$enable_dynamic_loading" = no -a "$enable_discover_only" = no; then
270         OLD_LIBS="$LIBS"
271         AC_CHECK_LIB(dal, dal_equals,
272                 LIBS="-ldal"
273                 AC_CHECK_LIB(reiserfs, reiserfs_fs_probe,
274                         REISER_LIBS="-ldal -lreiserfs"
275                         AC_DEFINE(HAVE_LIBREISERFS, 1, [Have libreiserfs])
276                 )
277                 AC_CHECK_LIB(reiserfs, reiserfs_fs_check,
278                         AC_DEFINE(HAVE_REISERFS_FS_CHECK, 1, [Have reiserfs_fs_check()])
279                 )
280         )
281         LIBS="$OLD_LIBS"
282 fi
283 AC_SUBST(REISER_LIBS)
284
285 dnl Check for termcap
286 if test "$with_readline" = yes; then
287         OLD_LIBS="$LIBS"
288         LIBS=""
289         AC_SEARCH_LIBS(tgetent, tinfo ncurses curses termcap termlib,
290                 PARTED_LIBS="$PARTED_LIBS $LIBS",
291                 AC_MSG_ERROR(
292 termcap could not be found which is required for the
293 --with-readline option (which is enabled by default).  Either disable readline
294 support with --without-readline or download and install termcap from:
295         ftp.gnu.org/gnu/termcap
296 Note: if you are using precompiled packages you will also need the development
297   package as well (which may be called termcap-devel or something similar).
298 Note: (n)curses also seems to work as a substitute for termcap.  This was
299   not found either - but you could try installing that as well.
300 )
301         exit
302         )
303         LIBS="$OLD_LIBS"
304 fi
305
306 dnl Check for readline
307 dnl NOTE: We need to remove the gl_cv_ignore_unused_libraries flag if we
308 dnl detected one earlier.  libreadline on some platforms (e.g., RHEL and
309 dnl Fedora) is left with 
310 if test "$with_readline" = yes; then
311    OLD_LDFLAGS="$LDFLAGS"
312    LDFLAGS="$(echo $LDFLAGS | sed -e 's/-Wl,--as-needed//g' | sed -e 's/-Wl,-z,ignore//g' | sed -e 's/-z\ ignore//g')"
313         OLD_LIBS="$LIBS"
314         LIBS="$LIBS $PARTED_LIBS"
315         AC_CHECK_LIB(readline, readline,
316                 PARTED_LIBS="-lreadline $PARTED_LIBS"
317                 AC_DEFINE(HAVE_LIBREADLINE, 1, [have readline]),
318                 AC_MSG_ERROR(
319 GNU Readline could not be found which is required for the
320 --with-readline (which is enabled by default).  Either disable readline support with
321 --without-readline or downloaded and install it from:
322         ftp.gnu.org/gnu/readline
323 Note: if you are using precompiled packages you will also need the development
324 package as well (which may be called readline-devel or something similar).
325 )
326                 exit,
327                 $PARTED_LIBS
328         )
329         LIBS="$OLD_LIBS"
330    LDFLAGS="$OLD_LDFLAGS"
331 fi
332
333 AC_SUBST(PARTED_LIBS)
334
335 dnl Check for OS specific libraries
336
337 dnl GNU/Hurd:
338 if test "$OS" = gnu; then
339 dnl libshouldbeinlibc
340         AC_CHECK_LIB(shouldbeinlibc, vm_deallocate,
341                 OS_LIBS="$OS_LIBS -lshouldbeinlibc",
342                 AC_MSG_ERROR(
343 GNU Parted requires libshouldbeinlibc when running on
344 GNU/Hurd systems.  It is a standard part of a GNU/Hurd system.
345                 )
346                 exit
347         )
348
349 dnl libstore may depend on libparted being present.
350 dnl Aren't circular dependencies wonderful?
351         OLD_LIBS="$LIBS"
352         LIBS=
353
354         AC_CHECK_LIB(parted, ped_device_read)
355
356 dnl libstore
357         AC_CHECK_LIB(store, store_open,
358                 OS_LIBS="$OS_LIBS -lstore",
359                 AC_MSG_ERROR(
360 GNU Parted requires libstore when running on GNU/Hurd
361 systems.  It is a standard part of a GNU/Hurd system.
362                 )
363                 exit,
364                 $OS_LIBS $UUID_LIBS $DM_LIBS $LIBS
365         )
366         LIBS="$OLD_LIBS"
367 fi
368
369 dnl BeOS/ZETA/Haiku:
370
371 if test "$OS" = beos; then
372         dnl Include the socket library, as it is a depedency of libuuid
373         dnl and so also of us (due to socket() call in libuuid)
374         OS_LIBS="$OS_LIBS -lsocket"
375 fi
376
377 AC_SUBST(OS_LIBS)
378
379 dnl One day, gettext might support libtool...
380 dnl if test "$USE_INCLUDED_LIBINTL" = "yes"; then
381 dnl     INTLINCS='-I$(top_srcdir)/intl'
382 dnl fi
383 AC_SUBST(INTLINCS)
384
385
386 dnl Checks for header files.
387 AC_CHECK_HEADER(uuid/uuid.h, ,
388         AC_MSG_ERROR(
389 GNU Parted requires libuuid - a part of the e2fsprogs package.
390 You seem to have the library installed but not the headers.  These are usually
391 found in a corresponding development package (usually called e2fsprogs-devel).
392 If you can't find one try:
393         http://web.mit.edu/tytso/www/linux/e2fsprogs.html
394 )
395         exit
396 )
397
398 AC_CHECK_HEADERS(getopt.h)
399
400 dnl required for libparted/llseek.c  (TODO: make linux-x86 only)
401 if test "$OS" = linux; then
402         AC_CHECK_HEADER(linux/unistd.h)
403 fi
404
405 if test "$with_readline" = yes; then
406         AC_CHECK_HEADERS(readline/readline.h readline/history.h, ,
407                 AC_MSG_ERROR(
408 The headers for GNU Readline could not be found which
409 are required for the --with-readline option.  You seem to have the GNU readline
410 library installed but not the headers.  These are usually found in a
411 corresponding development package (usually called readline-devel).  If you can't
412 find one try:
413         ftp.gnu.org/gnu/readline
414 Alternatively you can disable readline support with --without-readline
415 )
416         exit
417         )
418 fi
419
420 AC_CHECK_HEADERS(termcap.h)
421
422 if test "$USE_NLS" = yes; then
423         AC_CHECK_HEADERS(wctype.h, ,
424                 AC_MSG_ERROR(
425 One or more of the header files that are required for
426 native language support (wctype.h) could not be found.  Either get a newer
427 version of GNU libc and its headers - which can be obtained from:
428         ftp.gnu.org/gnu/glibc
429 Or disable native language support with the --disable-nls option
430 )
431         exit
432         )
433 fi
434
435 AC_CHECK_HEADER([execinfo.h], [
436         AC_CHECK_LIB(c, backtrace, [
437                 AC_DEFINE(HAVE_BACKTRACE, 1, [Has backtrace support])
438                 LDFLAGS="$LDFLAGS -rdynamic"
439         ])
440 ])
441
442 dnl check for "check", unit testing library/header
443 PKG_CHECK_MODULES([CHECK], [check >= 0.9.3], have_check=yes, have_check=no)
444 if test "$have_check" != "yes"; then
445     AC_MSG_RESULT([Unable to locate check version 0.9.3 or higher: not building])
446 fi
447 AM_CONDITIONAL([HAVE_CHECK], [test "$have_check" = yes])
448
449 dnl Checks for typedefs, structures and compiler characteristics.
450 AC_PROG_LD
451
452 AC_C_BIGENDIAN
453 AC_C_INLINE
454 AC_C_CONST
455 AC_C_RESTRICT
456
457
458 dnl Checks for library functions.
459 AC_CHECK_FUNCS(sigaction)
460 AC_CHECK_FUNCS(getuid)
461
462 dnl NOTE: We need to remove the gl_cv_ignore_unused_libraries flag if we
463 dnl detected one earlier.  libreadline on some platforms (e.g., RHEL and
464 dnl Fedora) is left with 
465 if test "$with_readline" = yes; then
466    OLD_LDFLAGS="$LDFLAGS"
467    LDFLAGS="$(echo $LDFLAGS | sed -e 's/-Wl,--as-needed//g' | sed -e 's/-Wl,-z,ignore//g' | sed -e 's/-z\ ignore//g')"
468         OLD_LIBS="$LIBS"
469         LIBS="$LIBS $PARTED_LIBS -lreadline"
470         AC_CHECK_FUNCS(rl_completion_matches)
471         LIBS="$OLD_LIBS"
472    LDFLAGS="$OLD_LDFLAGS"
473 fi
474
475 AC_CHECK_FUNCS(canonicalize_file_name)
476
477 # CFLAGS="$CFLAGS -W -Wall -Wno-unused -Wno-switch -Wno-format"
478
479 if test "$enable_Werror" = yes; then
480         CFLAGS="$CFLAGS -Werror"
481 fi
482
483 DATE=$(date '+%d %b %Y %H:%M')
484 USER=$(whoami)
485 HOST=$(hostname)
486 BUILDINFO="$USER@$HOST, $DATE"
487 AC_SUBST(BUILDINFO)
488
489 AC_OUTPUT([
490 Makefile
491 lib/Makefile
492 include/Makefile
493 include/parted/Makefile
494 libparted/Makefile
495 libparted/labels/Makefile
496 libparted/fs/Makefile
497 libparted/fs/amiga/Makefile
498 libparted/fs/ext2/Makefile
499 libparted/fs/fat/Makefile
500 libparted/fs/hfs/Makefile
501 libparted/fs/jfs/Makefile
502 libparted/fs/linux_swap/Makefile
503 libparted/fs/ntfs/Makefile
504 libparted/fs/reiserfs/Makefile
505 libparted/fs/ufs/Makefile
506 libparted/fs/xfs/Makefile
507 libparted/tests/Makefile
508 libparted.pc
509 parted/Makefile
510 partprobe/Makefile
511 doc/Makefile
512 doc/C/Makefile
513 doc/pt_BR/Makefile
514 debug/Makefile
515 debug/clearfat/Makefile
516 debug/test/Makefile
517 tests/Makefile
518 po/Makefile.in
519 ])
520
521 echo
522 echo Type \'make\' to compile parted.