OSDN Git Service

On the edge branch, labeled the version as 1.9.0 so we can mark it more correctly...
[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.9.0],[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=9
27 PED_MICRO_VERSION=0
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_LIBS="$LIBS"
312         LIBS="$LIBS $PARTED_LIBS"
313         AC_CHECK_LIB(readline, readline,
314                 PARTED_LIBS="-lreadline $PARTED_LIBS"
315                 AC_DEFINE(HAVE_LIBREADLINE, 1, [have readline]),
316                 AC_MSG_ERROR(
317 GNU Readline could not be found which is required for the
318 --with-readline (which is enabled by default).  Either disable readline support with
319 --without-readline or downloaded and install it from:
320         ftp.gnu.org/gnu/readline
321 Note: if you are using precompiled packages you will also need the development
322 package as well (which may be called readline-devel or something similar).
323 )
324                 exit,
325                 $PARTED_LIBS
326         )
327         LIBS="$OLD_LIBS"
328 fi
329
330 AC_SUBST(PARTED_LIBS)
331
332 dnl Check for OS specific libraries
333
334 dnl GNU/Hurd:
335 if test "$OS" = gnu; then
336 dnl libshouldbeinlibc
337         AC_CHECK_LIB(shouldbeinlibc, vm_deallocate,
338                 OS_LIBS="$OS_LIBS -lshouldbeinlibc",
339                 AC_MSG_ERROR(
340 GNU Parted requires libshouldbeinlibc when running on
341 GNU/Hurd systems.  It is a standard part of a GNU/Hurd system.
342                 )
343                 exit
344         )
345
346 dnl libstore may depend on libparted being present.
347 dnl Aren't circular dependencies wonderful?
348         OLD_LIBS="$LIBS"
349         LIBS=
350
351         AC_CHECK_LIB(parted, ped_device_read)
352
353 dnl libstore
354         AC_CHECK_LIB(store, store_open,
355                 OS_LIBS="$OS_LIBS -lstore",
356                 AC_MSG_ERROR(
357 GNU Parted requires libstore when running on GNU/Hurd
358 systems.  It is a standard part of a GNU/Hurd system.
359                 )
360                 exit,
361                 $OS_LIBS $UUID_LIBS $DM_LIBS $LIBS
362         )
363         LIBS="$OLD_LIBS"
364 fi
365
366 dnl BeOS/ZETA/Haiku:
367
368 if test "$OS" = beos; then
369         dnl Include the socket library, as it is a depedency of libuuid
370         dnl and so also of us (due to socket() call in libuuid)
371         OS_LIBS="$OS_LIBS -lsocket"
372 fi
373
374 AC_SUBST(OS_LIBS)
375
376 dnl One day, gettext might support libtool...
377 dnl if test "$USE_INCLUDED_LIBINTL" = "yes"; then
378 dnl     INTLINCS='-I$(top_srcdir)/intl'
379 dnl fi
380 AC_SUBST(INTLINCS)
381
382
383 dnl Checks for header files.
384 AC_CHECK_HEADER(uuid/uuid.h, ,
385         AC_MSG_ERROR(
386 GNU Parted requires libuuid - a part of the e2fsprogs package.
387 You seem to have the library installed but not the headers.  These are usually
388 found in a corresponding development package (usually called e2fsprogs-devel).
389 If you can't find one try:
390         http://web.mit.edu/tytso/www/linux/e2fsprogs.html
391 )
392         exit
393 )
394
395 AC_CHECK_HEADERS(getopt.h)
396
397 dnl required for libparted/llseek.c  (TODO: make linux-x86 only)
398 if test "$OS" = linux; then
399         AC_CHECK_HEADER(linux/unistd.h)
400 fi
401
402 if test "$with_readline" = yes; then
403         AC_CHECK_HEADERS(readline/readline.h readline/history.h, ,
404                 AC_MSG_ERROR(
405 The headers for GNU Readline could not be found which
406 are required for the --with-readline option.  You seem to have the GNU readline
407 library installed but not the headers.  These are usually found in a
408 corresponding development package (usually called readline-devel).  If you can't
409 find one try:
410         ftp.gnu.org/gnu/readline
411 Alternatively you can disable readline support with --without-readline
412 )
413         exit
414         )
415 fi
416
417 AC_CHECK_HEADERS(termcap.h)
418
419 if test "$USE_NLS" = yes; then
420         AC_CHECK_HEADERS(wctype.h, ,
421                 AC_MSG_ERROR(
422 One or more of the header files that are required for
423 native language support (wctype.h) could not be found.  Either get a newer
424 version of GNU libc and its headers - which can be obtained from:
425         ftp.gnu.org/gnu/glibc
426 Or disable native language support with the --disable-nls option
427 )
428         exit
429         )
430 fi
431
432 AC_CHECK_HEADER([execinfo.h], [
433         AC_CHECK_LIB(c, backtrace, [
434                 AC_DEFINE(HAVE_BACKTRACE, 1, [Has backtrace support])
435                 LDFLAGS="$LDFLAGS -rdynamic"
436         ])
437 ])
438
439 dnl check for "check", unit testing library/header
440 PKG_CHECK_MODULES([CHECK], [check >= 0.9.3], have_check=yes, have_check=no)
441 if test "$have_check" != "yes"; then
442     AC_MSG_RESULT([Unable to locate check version 0.9.3 or higher: not building])
443 fi
444 AM_CONDITIONAL([HAVE_CHECK], [test "$have_check" = yes])
445
446 dnl Checks for typedefs, structures and compiler characteristics.
447 AC_PROG_LD
448
449 AC_C_BIGENDIAN
450 AC_C_INLINE
451 AC_C_CONST
452 AC_C_RESTRICT
453
454
455 dnl Checks for library functions.
456 AC_CHECK_FUNCS(sigaction)
457 AC_CHECK_FUNCS(getuid)
458
459 dnl NOTE: We need to remove the gl_cv_ignore_unused_libraries flag if we
460 dnl detected one earlier.  libreadline on some platforms (e.g., RHEL and
461 dnl Fedora) is left with 
462 if test "$with_readline" = yes; then
463         OLD_LIBS="$LIBS"
464         LIBS="$LIBS $PARTED_LIBS -lreadline"
465         AC_CHECK_FUNCS(rl_completion_matches)
466         LIBS="$OLD_LIBS"
467 fi
468
469 AC_CHECK_FUNCS(canonicalize_file_name)
470
471 # CFLAGS="$CFLAGS -W -Wall -Wno-unused -Wno-switch -Wno-format"
472
473 if test "$enable_Werror" = yes; then
474         CFLAGS="$CFLAGS -Werror"
475 fi
476
477 DATE=$(date '+%d %b %Y %H:%M')
478 USER=$(whoami)
479 HOST=$(hostname)
480 BUILDINFO="$USER@$HOST, $DATE"
481 AC_SUBST(BUILDINFO)
482
483 AC_OUTPUT([
484 Makefile
485 lib/Makefile
486 include/Makefile
487 include/parted/Makefile
488 libparted/Makefile
489 libparted/labels/Makefile
490 libparted/fs/Makefile
491 libparted/fs/amiga/Makefile
492 libparted/fs/ext2/Makefile
493 libparted/fs/fat/Makefile
494 libparted/fs/hfs/Makefile
495 libparted/fs/jfs/Makefile
496 libparted/fs/linux_swap/Makefile
497 libparted/fs/ntfs/Makefile
498 libparted/fs/reiserfs/Makefile
499 libparted/fs/ufs/Makefile
500 libparted/fs/xfs/Makefile
501 libparted/tests/Makefile
502 libparted.pc
503 parted/Makefile
504 partprobe/Makefile
505 doc/Makefile
506 doc/C/Makefile
507 doc/pt_BR/Makefile
508 debug/Makefile
509 debug/clearfat/Makefile
510 debug/test/Makefile
511 tests/Makefile
512 po/Makefile.in
513 ])
514
515 echo
516 echo Type \'make\' to compile parted.