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