Add AC_PROG_LIBTOOL. Comment out LT_PREREQ and
[m17n/m17n-lib.git] / configure.ac
1 dnl configure.ac -- autoconf script for the m17n library.
2
3 dnl Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
4 dnl   National Institute of Advanced Industrial Science and Technology (AIST)
5 dnl   Registration Number H15PRO112
6
7 dnl This file is part of the m17n library.
8
9 dnl The m17n library is free software; you can redistribute it and/or
10 dnl modify it under the terms of the GNU Lesser General Public License
11 dnl as published by the Free Software Foundation; either version 2.1 of
12 dnl the License, or (at your option) any later version.
13
14 dnl The m17n library is distributed in the hope that it will be useful,
15 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
16 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17 dnl Lesser General Public License for more details.
18
19 dnl You should have received a copy of the GNU Lesser General Public
20 dnl License along with the m17n library; if not, write to the Free
21 dnl Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
22 dnl Boston, MA 02110-1301, USA.
23
24 dnl Process this file with autoconf to produce a configure script.
25
26 AC_INIT([m17n-lib],[1.6.1],[m17n-lib-bug@m17n.org])
27 AC_CONFIG_MACRO_DIR([m4])
28 AM_INIT_AUTOMAKE
29 AC_PROG_LIBTOOL
30 AC_CONFIG_HEADERS([src/config.h])
31 AM_MAINTAINER_MODE
32
33 API_VERSION=4:0:4
34 AC_SUBST(API_VERSION)
35
36 # The earliest version that this release has binary compatibility
37 # with.  This is used for module locations.
38 M17N_BINARY_VERSION=1.0
39
40 M17N_MODULE_DIR="m17n/$M17N_BINARY_VERSION"
41 AC_SUBST(M17N_MODULE_DIR)
42
43 AM_GNU_GETTEXT
44 GETTEXTDIR="$datadir/locale"
45 AC_SUBST(GETTEXTDIR)
46
47 dnl Checks for programs for compiling.
48 AC_PROG_CC
49 dnl LT_PREREQ([2.2.4])
50 dnl LT_INIT
51
52 dnl Checks for X libraries.
53 AC_PATH_XTRA
54
55 dnl Checks for standard header files.
56 AC_HEADER_STDC
57 AC_HEADER_DIRENT
58 AC_HEADER_TIME
59 AC_CHECK_HEADERS([fcntl.h langinfo.h limits.h locale.h stdlib.h \
60                           string.h strings.h sys/time.h unistd.h])
61 AC_CHECK_HEADER(X11/Xaw/Command.h, HAVE_XAW=yes)
62
63 dnl Checks for typedefs, structures, and compiler characteristics.
64 AC_C_CONST
65 AC_C_INLINE
66 AC_TYPE_SIZE_T
67 AC_STRUCT_TM
68
69 dnl Checks for endian.  This influence the default UTF-16 definition.
70 AC_C_BIGENDIAN
71
72 dnl Checks for library functions.
73 AC_FUNC_ALLOCA
74 AC_FUNC_MALLOC
75 AC_FUNC_REALLOC
76 AC_FUNC_MEMCMP
77 AC_FUNC_STAT
78 AC_FUNC_STRCOLL
79 AC_FUNC_STRFTIME
80 AC_FUNC_STRTOD
81 AC_CHECK_FUNCS(memmove memset nl_langinfo putenv regcomp setlocale)
82 AC_CHECK_FUNCS(strchr strdup gettimeofday)
83
84 dnl Checks where the m17n database is installed.
85
86 AC_CHECK_PROG(HAVE_M17N_DB, m17n-db, yes)
87 if test "x$HAVE_M17N_DB" = "xyes"; then
88   M17NDIR=`m17n-db`
89 else
90   M17NDIR="${datadir}/m17n"
91 fi
92 AC_SUBST(M17NDIR)
93
94 dnl Checks which levels of APIs should be compiled.
95
96 AC_ARG_ENABLE(gui,
97               AS_HELP_STRING([--with-gui],[with GUI level APIs (default is YES)]))
98
99 AM_CONDITIONAL(WITH_GUI, test x$with_gui != xno)
100
101 if test x$with_gui != xno; then
102
103 dnl Checks if dlopen exists, and if it's in libc or libdl.
104
105 AC_SEARCH_LIBS(dlopen, dl,
106                AC_DEFINE(HAVE_DLOPEN, 1,
107                [Define to 1 if you have the function dlopen.]))
108
109 dnl Check several libraries without adding -lxxx to LIBS, without
110 dnl defining HAVE_LIBXXX nor HAVE_XXX_H because they are used only by
111 dnl some libraries (e.g. libm17n-X.so).  Instead, define XXX_LD_FLAGS
112 dnl and HAVE_XXX if library XXX is available.  CPPFLAGS will be
113 dnl augmented.
114
115 M17N_EXT_LIBS=
116
117 AC_CHECK_PROG(HAVE_PKG_CONFIG, pkg-config, yes)
118
119 if test "x$no_x" != "xyes"; then
120   AC_DEFINE(HAVE_X11, 1, [Define to 1 if you have X11.])
121   X11_LD_FLAGS="-lXt -lX11"
122   M17N_EXT_LIBS="$M17N_EXT_LIBS X11"
123
124   if test "x$HAVE_XAW" = "xyes"; then
125     AC_DEFINE(HAVE_X11_XAW_COMMAND_H, 1,
126               [Define to 1 if you have the Xaw header files.])
127     XAW_LD_FLAGS="-lXaw -lXmu"
128     CONFIG_FLAGS="$CONFIG_FLAGS -DHAVE_X11_XAW_COMMAND_H"
129     M17N_EXT_LIBS="$M17N_EXT_LIBS Xaw"
130   fi
131 fi
132 AC_SUBST(X11_LD_FLAGS)
133 AC_SUBST(XAW_LD_FLAGS)
134
135 dnl Check for fribidi library.
136 save_CPPFLAGS="$CPPFLAGS"
137 save_LIBS="$LIBS"
138 AC_CHECK_PROG(HAVE_FRIBIDI_CONFIG, fribidi-config, yes)
139 if test "x$HAVE_FRIBIDI_CONFIG" = "xyes"; then
140   CPPFLAGS="$CPPFLAGS `fribidi-config --cflags`"
141   FRIBIDI_LD_FLAGS="`fribidi-config --libs`"
142   LIBS="$LIBS $FRIBIDI_LD_FLAGS"
143 else
144   FRIBIDI_LD_FLAGS=-lfribidi
145 fi
146 AC_CHECK_LIB(fribidi, fribidi_set_mirroring, HAVE_FRIBIDI=yes, HAVE_FRIBIDI=no)
147 AC_CHECK_HEADER(fribidi/fribidi.h,, HAVE_FRIBIDI=no)
148 if test "x$HAVE_FRIBIDI" = "xyes"; then
149   AC_DEFINE(HAVE_FRIBIDI, 1, 
150             [Define to 1 if you have Fribidi library and header file.])
151   M17N_EXT_LIBS="$M17N_EXT_LIBS fribidi"
152 else
153   CPPFLAGS="$save_CPPFLAGS"
154   FRIBIDI_LD_FLAGS=
155 fi
156 LIBS="$save_LIBS"
157 AC_SUBST(FRIBIDI_LD_FLAGS)
158
159 dnl Check for otflib usability.
160 AC_ARG_WITH(libotf, 
161             AS_HELP_STRING([--with-libotf],[with OpenType font suport (default is YES)]))
162
163 if test "x$with_libotf" != "xno"; then
164   save_CPPFLAGS="$CPPFLAGS"
165   save_LIBS="$LIBS"
166   AC_CHECK_PROG(HAVE_OTFLIB_CONFIG, libotf-config, yes)
167   if test "x$HAVE_OTFLIB_CONFIG" = "xyes"; then
168     CPPFLAGS="$CPPFLAGS `libotf-config --cflags`"
169     OTF_LD_FLAGS="`libotf-config --libs`"
170     LIBS="$LIBS $OTF_LD_FLAGS"
171   else
172     OTF_LD_FLAGS=-lotf
173   fi
174   ## We check the availability of OTF_check_features
175   ## because we need libotf-0.9.4 or the later.
176   AC_CHECK_LIB(otf, OTF_check_features, HAVE_OTF=yes, HAVE_OTF=no)
177   AC_CHECK_HEADER(otf.h,, HAVE_OTF=no)
178   if test "x$HAVE_OTF" = "xyes"; then
179     AC_DEFINE(HAVE_OTF, 1, 
180               [Define to 1 if you have OTF library and header file.])
181     M17N_EXT_LIBS="$M17N_EXT_LIBS libotf"
182     AC_CHECK_LIB(otf, OTF_drive_gpos2, HAVE_OTF_DRIVE_GPOS2=yes,
183                  HAVE_OTF_DRIVE_GPOS2=no)
184     if test "x$HAVE_OTF_DRIVE_GPOS2" = "xyes"; then
185       AC_DEFINE(HAVE_OTF_DRIVE_GPOS2, 1,
186                 [Define to 1 if the OTF library has OTF_drive_gpos2().])
187     fi
188   else
189     CPPFLAGS="$save_CPPFLAGS"
190     OTF_LD_FLAGS=
191   fi
192   LIBS="$save_LIBS"
193 fi
194 AC_SUBST(OTF_LD_FLAGS)
195
196 dnl Check for Freetype2 usability.
197 AC_CHECK_PROG(HAVE_FREETYPE_CONFIG, freetype-config, yes)
198 if test "x$HAVE_FREETYPE_CONFIG" = "xyes"; then
199   FREETYPE_INC=`freetype-config --cflags`
200   save_CPPFLAGS="$CPPFLAGS"
201   CPPFLAGS="$CPPFLAGS $FREETYPE_INC"
202   AC_CHECK_HEADER(ft2build.h, HAVE_FREETYPE=yes,
203                               HAVE_FREETYPE=no CPPFLAGS="$save_CPPFLAGS")
204   if test "x$HAVE_FREETYPE" = "xyes" ; then
205     save_LIBS="$LIBS"
206     LIBS="$LIBS `freetype-config --libs`"
207     AC_CHECK_LIB(freetype, FT_Init_FreeType, HAVE_FREETYPE=yes,
208                                              HAVE_FREETYPE=no)
209     LIBS="$save_LIBS"
210     if test "x$HAVE_FREETYPE" = "xyes"; then
211       FREETYPE_LD_FLAGS=`freetype-config --libs`
212       AC_DEFINE(HAVE_FREETYPE, 1, 
213                 [Define to 1 if you have FreeType library and header file.])
214       M17N_EXT_LIBS="$M17N_EXT_LIBS freetype"
215       AC_CHECK_HEADER(freetype/ftbdf.h, HAVE_FTBDF_H=yes, HAVE_FTBDF_H=no,
216                       [#include <ft2build.h>
217 #include FT_FREETYPE_H])
218       if test "x$HAVE_FTBDF_H" = "xyes"; then
219         AC_DEFINE(HAVE_FTBDF_H, 1,
220                   [Define to 1 if you have freetype/ftbdf.h.])
221       fi
222       CONFIG_FLAGS="$CONFIG_FLAGS -DHAVE_FREETYPE"
223     fi
224   fi
225 fi
226 AC_SUBST(FREETYPE_LD_FLAGS)
227
228 dnl Check for Xft2 usability.
229 save_CPPFLAGS="$CPPFLAGS"
230 save_LIBS="$LIBS"
231 XFT2_LD_FLAGS="-lXft -lfreetype -lfontconfig -lXrender -lX11"
232 AC_CHECK_PROG(HAVE_XFT_CONFIG, xft-config, yes)
233 if test "x$HAVE_XFT_CONFIG" = "xyes"; then
234   CPPFLAGS="$CPPFLAGS `xft-config --cflags`"
235   XFT2_LD_FLAGS="`xft-config --libs`"
236 elif test "x$HAVE_PKG_CONFIG" = "xyes" ; then
237   if pkg-config xft ; then
238     CPPFLAGS="$CPPFLAGS `pkg-config --cflags xft`"
239     XFT2_LD_FLAGS="`pkg-config --libs xft`"
240   fi
241 fi
242 LIBS="$LIBS $XFT2_LD_FLAGS"
243 AC_CHECK_LIB(Xft, XftDrawCreate, HAVE_XFT2=yes, HAVE_XFT2=no)
244 AC_CHECK_HEADER(X11/Xft/Xft.h,, HAVE_XFT2=no, 
245                 [#include <X11/Xft/Xft.h>
246 #if XftVersion >= 20000
247 #else
248 Version too old.  Compiling this line should fail.
249 #endif])
250 if test "x$HAVE_XFT2" = "xyes"; then
251   AC_DEFINE(HAVE_XFT2, 1,
252             [Define to 1 if you have Xft2 library and header file.])
253   M17N_EXT_LIBS="$M17N_EXT_LIBS xft2"
254 else
255   XFT2_LD_FLAGS=
256   CPPFLAGS="$save_CPPFLAGS"
257 fi
258 LIBS="$save_LIBS"
259 AC_SUBST(XFT2_LD_FLAGS)
260
261 dnl Check for fontconfig usability.
262 AC_ARG_WITH(fontconfig,
263             AS_HELP_STRING([--with-fontconfig],[with FontConfig library (default is YES)]))
264 if test "x$with_fontconfig" != "xno"; then
265   save_CPPFLAGS="$CPPFLAGS"
266   save_LIBS="$LIBS"
267   FONTCONFIG_LD_FLAGS=-lfontconfig
268   if test "x$HAVE_PKG_CONFIG" = "xyes"; then
269     if pkg-config --exists fontconfig; then
270       CPPFLAGS="$CPPFLAGS `pkg-config --cflags fontconfig`"
271       FONTCONFIG_LD_FLAGS="`pkg-config --libs fontconfig`"
272       LIBS="$LIBS $FONTCONFIG_LD_FLAGS"
273     fi
274   fi
275   AC_CHECK_LIB(fontconfig, FcInit, HAVE_FONTCONFIG=yes, HAVE_FONTCONFIG=no)
276   AC_CHECK_HEADER(fontconfig/fontconfig.h, , HAVE_FONTCONFIG=no)
277   if test "x$HAVE_FONTCONFIG" = "xyes"; then
278     AC_DEFINE(HAVE_FONTCONFIG, 1,
279               [Define to 1 if you have fontconfig library and header file.])
280     M17N_EXT_LIBS="$M17N_EXT_LIBS fontconfig"
281   else
282     FONTCONFIG_LD_FLAGS=
283     CPPFLAGS="$save_CPPFLAGS"
284   fi
285   LIBS="$save_LIBS"
286 fi
287 AC_SUBST(FONTCONFIG_LD_FLAGS)
288
289 dnl Check for gdlib usability.
290 AC_ARG_WITH(gd, 
291             AS_HELP_STRING([--with-gd],[suport graphic device by GD library (default is YES)]))
292
293 if test "x$with_gd" != "xno"; then
294   save_LIBS="$LIBS"
295   AC_CHECK_LIB(gd, gdImageCreate, HAVE_GD=yes, HAVE_GD=no)
296   AC_CHECK_HEADER(gd.h, , HAVE_GD=no)
297   if test "x$HAVE_GD" = "xyes"; then
298     AC_CHECK_LIB(gd, gdImageCreateTrueColor, HAVE_GD=2, HAVE_GD=1)
299     AC_DEFINE_UNQUOTED(HAVE_GD, $HAVE_GD,
300               [Define to 1 or 2 if you have gd library and header file.])
301     M17N_EXT_LIBS="$M17N_EXT_LIBS gdlib"
302     GD_LD_FLAGS=-lgd
303     CONFIG_FLAGS="$CONFIG_FLAGS -DHAVE_GD=$HAVE_GD"
304   fi
305   LIBS="$save_LIBS"
306 fi
307 AC_SUBST(GD_LD_FLAGS)
308
309 fi
310
311 dnl Check for libxml2 usability.
312 save_CPPFLAGS="$CPPFLAGS"
313 save_LIBS="$LIBS"
314 AC_CHECK_PROG(HAVE_XML2_CONFIG, xml2-config, yes)
315 if test "x$HAVE_XML2_CONFIG" = "xyes"; then
316   CPPFLAGS="$CPPFLAGS `xml2-config --cflags`"
317   XML2_LD_FLAGS="`xml2-config --libs`"
318   LIBS="$LIBS $XML2_LD_FLAGS"
319 else
320   CPPFLAGS="$CPPFLAGS -I/usr/include/libxml2"
321   XML2_LD_FLAGS="-lxml2 -lz -lpthread -lm"
322 fi
323 AC_CHECK_LIB(xml2, xmlParseMemory, HAVE_XML2=yes, HAVE_XML2=no)
324 AC_CHECK_HEADER(libxml/tree.h,, HAVE_XML2=no, /**/)
325 if test "x$HAVE_XML2" = "xyes"; then
326   AC_DEFINE(HAVE_XML2, 1,
327             [Define to 1 if you have libxml2 library and header file])
328   M17N_EXT_LIBS="$M17N_EXT_LIBS xml2"
329 else
330   XML2_LD_FLAGS=
331   CPPFLAGS="$save_CPPFLAGS"
332 fi
333 LIBS="$save_LIBS"
334 AC_SUBST(XML2_LD_FLAGS)
335
336 dnl Check for Anthy usability.
337
338 PKG_CHECK_MODULES(ANTHY, anthy, HAVE_ANTHY=yes, HAVE_ANTHY=no)
339 if test "x$HAVE_ANTHY" = "xyes"; then
340   AC_DEFINE(HAVE_ANTHY, 1,
341            [Define to 1 if you have Anthy library and header file])
342   M17N_EXT_LIBS="$M17N_EXT_LIBS anthy"
343   ANTHY_LD_FLAGS="$ANTHY_LIBS"
344   CONFIG_FLAGS="$CONFIG_FLAGS -DHAVE_ANTHY"
345 fi
346 AC_SUBST(ANTHY_LD_FLAGS)
347
348 dnl Check for Ispell usability.
349 AC_CHECK_PROG(HAVE_ISPELL, ispell, yes)
350 if test "x$HAVE_ISPELL" = "xyes"; then
351   AC_DEFINE(HAVE_ISPELL, 1, [Define if ispell is available.])
352   M17N_EXT_LIBS="$M17N_EXT_LIBS ispell"
353   CONFIG_FLAGS="$CONFIG_FLAGS -DHAVE_ISPELL"
354 fi
355
356 dnl Check for Thai word-segmentation library.
357 dnl If we have one, define HAVE_THAI_WORDSEG and one of these:
358 dnl   HAVE_LIBTHAI, HAVE_WORDCUT, or HAVE_WORDCUT_OLD
359 dnl In addition, set THAI_WORDSEG_LD_FLAGS to a proper value.
360
361 PKG_CHECK_MODULES(LIBTHAI, libthai, HAVE_LIBTHAI=yes, HAVE_LIBTHAI=no)
362 PKG_CHECK_MODULES(WORDCUT, wordcut, HAVE_WORDCUT=yes, HAVE_WORDCUT=no)
363
364 if test "x$HAVE_LIBTHAI" == "xyes"; then
365
366   AC_DEFINE(HAVE_LIBTHAI, 1, [Define if you have libthai])
367   THAI_WORDSEG_LD_FLAGS="$LIBTHAI_LIBS"
368   M17N_EXT_LIBS="$M17N_EXT_LIBS libthai"
369   HAVE_THAI_WORDSEG=yes
370
371 elif test "x$HAVE_WORDCUT" = "xyes"; then
372
373   save_CPPFLAGS="$CPPFLAGS"
374   CPPFLAGS="$CPPFLAGS $WORDCUT_CFLAGS"
375   AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <wordcut/wcwordcut.h>]])],[],[HAVE_WORDCUT=no])
376   if test "x$HAVE_WORDCUT" = "xno"; then
377     PKG_CHECK_MODULES(GLIB_2_0, glib-2.0, HAVE_GLIB_2_0=yes, HAVE_GLIB_2_0=no)
378     if test "x$HAVE_GLIB_2_0" = "xyes"; then
379       CPPFLAGS="$CPPFLAGS $GLIB_2_0_CFLAGS"
380       AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <wordcut/wcwordcut.h>]])],[HAVE_WORDCUT=yes],[])
381     fi
382   fi
383   if test "x$HAVE_WORDCUT" = "xyes"; then
384     THAI_WORDSEG_LD_FLAGS="$WORDCUT_LIBS"
385     AC_DEFINE(HAVE_WORDCUT, 1,
386               [Define if you have the wordcut library and header file])
387     M17N_EXT_LIBS="$M17N_EXT_LIBS wordcut"
388     HAVE_THAI_WORDSEG=yes
389   else
390     CPPFLAGS="$save_CPPFLAGS"
391   fi
392
393 else
394
395   AC_CHECK_LIB(wordcut, wordcut_init, HAVE_WORDCUT_OLD=yes)
396   if test "x$HAVE_WORDCUT_OLD" = "xyes"; then
397     if test -f "/usr/share/wordcut/tdict.wcd"; then
398       tdict="/usr/share/wordcut/tdict.wcd"
399     elif test -f "/usr/local/share/wordcut/tdict.wcd"; then
400       tdict="/usr/local/share/wordcut/tdict.wcd"
401     fi
402     echo "TDICT=$tdict"
403     if test "x$tdict" != "x"; then
404       AC_DEFINE(HAVE_WORDCUT_OLD, 1,
405                 [Define if you have the old version of wordcut library])
406       AC_DEFINE_UNQUOTED(WORDCUT_TDICT, "$tdict", [Define tdict file name])
407       THAI_WORDSEG_LD_FLAGS=-lwordcut
408       M17N_EXT_LIBS="$M17N_EXT_LIBS wordcut-old"
409       HAVE_THAI_WORDSEG=yes
410     else
411       HAVE_WORDCUT=no
412     fi
413   fi
414 fi  
415
416 if test "x$HAVE_THAI_WORDSEG" = "xyes"; then
417   AC_DEFINE(HAVE_THAI_WORDSEG, 1,
418             [Define if you have some Thai word-segmentation library])
419 fi
420 AC_SUBST(THAI_WORDSEG_LD_FLAGS)
421
422 AC_SUBST(CONFIG_FLAGS)
423
424 dnl We can't include X_CFLAGS in AM_CPPFLAGS because the generated
425 dnl Makefile put ${AM_CPPFLAGS} before ${CPPFLAGS} and that leads to
426 dnl inclusion of an incorrect header file.  So, append X_CFLAGS to
427 dnl CPPFLAGS here directly.
428
429 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
430
431 dnl AC_ARG_ENABLE(xom, 
432 dnl           [  --enable-xom            build and install XOM library.],
433 dnl           XOM="$enableval")
434
435 SHLIB_EXT=".so"
436 case $host_os in
437 darwin* | rhapsody*)
438   SHLIB_EXT=".dylib";;
439 esac
440 AC_DEFINE_UNQUOTED(DLOPEN_SHLIB_EXT, "$SHLIB_EXT",
441                    [Define to loadable module extention])
442
443 AC_CONFIG_FILES([Makefile po/Makefile.in intl/Makefile
444                  src/Makefile
445                  example/Makefile
446                  m17n-config
447                  m17n-core.pc
448                  m17n-shell.pc
449                  m17n-flt.pc
450                  m17n-gui.pc
451                  ])
452
453 dnl if test "x$XOM" = "xyes"; then
454 dnl  AC_CONFIG_FILES(omM17N/Makefile)
455 dnl fi
456
457 AC_OUTPUT
458
459 echo "The m17n library is configured with these external libraries."
460 echo " $M17N_EXT_LIBS"
461
462 dnl Local Variables:
463 dnl comment-start: "dnl "
464 dnl comment-end: ""
465 dnl comment-start-skip: "\\bdnl\\b\\s *"
466 dnl End: