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