OSDN Git Service

Normalize the way we handle a generated-and-distributed file, parted.spec.
[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.9],[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=9
28 PED_INTERFACE_AGE=1
29 PED_BINARY_AGE=1
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, 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 if test "$with_readline" = yes; then
308         OLD_LIBS="$LIBS"
309         LIBS="$LIBS $PARTED_LIBS"
310         AC_CHECK_LIB(readline, readline,
311                 PARTED_LIBS="-lreadline $PARTED_LIBS"
312                 AC_DEFINE(HAVE_LIBREADLINE, 1, [have readline]),
313                 AC_MSG_ERROR(
314 GNU Readline could not be found which is required for the
315 --with-readline (which is enabled by default).  Either disable readline support with
316 --without-readline or downloaded and install it from:
317         ftp.gnu.org/gnu/readline
318 Note: if you are using precompiled packages you will also need the development
319 package as well (which may be called readline-devel or something similar).
320 )
321                 exit,
322                 $PARTED_LIBS
323         )
324         LIBS="$OLD_LIBS"
325 fi
326
327 AC_SUBST(PARTED_LIBS)
328
329 dnl Check for OS specific libraries
330
331 dnl GNU/Hurd:
332 if test "$OS" = gnu; then
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 AC_CHECK_FUNCS(canonicalize_file_name)
464
465 # CFLAGS="$CFLAGS -W -Wall -Wno-unused -Wno-switch -Wno-format"
466
467 if test "$enable_Werror" = yes; then
468         CFLAGS="$CFLAGS -Werror"
469 fi
470
471 DATE=$(date '+%d %b %Y %H:%M')
472 USER=$(whoami)
473 HOST=$(hostname)
474 BUILDINFO="$USER@$HOST, $DATE"
475 AC_SUBST(BUILDINFO)
476
477 AC_OUTPUT([
478 Makefile
479 lib/Makefile
480 include/Makefile
481 include/parted/Makefile
482 libparted/Makefile
483 libparted/labels/Makefile
484 libparted/fs/Makefile
485 libparted/fs/amiga/Makefile
486 libparted/fs/ext2/Makefile
487 libparted/fs/fat/Makefile
488 libparted/fs/hfs/Makefile
489 libparted/fs/jfs/Makefile
490 libparted/fs/linux_swap/Makefile
491 libparted/fs/ntfs/Makefile
492 libparted/fs/reiserfs/Makefile
493 libparted/fs/ufs/Makefile
494 libparted/fs/xfs/Makefile
495 libparted/tests/Makefile
496 libparted.pc
497 parted/Makefile
498 partprobe/Makefile
499 doc/Makefile
500 doc/C/Makefile
501 doc/pt_BR/Makefile
502 debug/Makefile
503 debug/clearfat/Makefile
504 debug/test/Makefile
505 po/Makefile.in
506 ])
507
508 echo
509 echo Type \'make\' to compile parted.