OSDN Git Service

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