If GD library is available, define HAVE_GD as 1 or
[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.1, m17n-lib-bug@m17n.org)
27 AM_INIT_AUTOMAKE(m17n-lib, 1.3.1)
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 funciton 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   CPPFLAGS="$save_CPPFLAGS"
167   if test "x$HAVE_OTF" = "xyes"; then
168     AC_DEFINE(HAVE_OTF, 1, 
169               [Define to 1 if you have OTF library and header file.])
170     M17N_EXT_LIBS="$M17N_EXT_LIBS libotf"
171   else
172     CPPFLAGS="$save_CPPFLAGS"
173     OTF_LD_FLAGS=
174   fi
175   LIBS="$save_LIBS"
176 fi
177 AC_SUBST(OTF_LD_FLAGS)
178
179 dnl Check for Freetype2 usability.
180 AC_CHECK_PROG(HAVE_FREETYPE_CONFIG, freetype-config, yes)
181 if test "x$HAVE_FREETYPE_CONFIG" = "xyes"; then
182   FREETYPE_INC=`freetype-config --cflags`
183   save_CPPFLAGS="$CPPFLAGS"
184   CPPFLAGS="$CPPFLAGS $FREETYPE_INC"
185   AC_CHECK_HEADER(ft2build.h, HAVE_FREETYPE=yes,
186                               HAVE_FREETYPE=no CPPFLAGS="$save_CPPFLAGS")
187   if test "x$HAVE_FREETYPE" = "xyes" ; then
188     save_LIBS="$LIBS"
189     LIBS="$LIBS `freetype-config --libs`"
190     AC_CHECK_LIB(freetype, FT_Init_FreeType, HAVE_FREETYPE=yes,
191                                              HAVE_FREETYPE=no)
192     LIBS="$save_LIBS"
193     if test "x$HAVE_FREETYPE" = "xyes"; then
194       FREETYPE_LD_FLAGS=`freetype-config --libs`
195       AC_DEFINE(HAVE_FREETYPE, 1, 
196                 [Define to 1 if you have FreeType library and header file.])
197       M17N_EXT_LIBS="$M17N_EXT_LIBS freetype"
198       AC_CHECK_HEADER(freetype/ftbdf.h, HAVE_FTBDF_H=yes, HAVE_FTBDF_H=no,
199                       [#include <ft2build.h>
200 #include FT_FREETYPE_H])
201       if test "x$HAVE_FTBDF_H" = "xyes"; then
202         AC_DEFINE(HAVE_FTBDF_H, 1,
203                   [Define to 1 if you have freetype/ftbdf.h.])
204       fi
205       CONFIG_FLAGS="$CONFIG_FLAGS -DHAVE_FREETYPE"
206     fi
207   fi
208 fi
209 AC_SUBST(FREETYPE_LD_FLAGS)
210
211 AC_CHECK_PROG(HAVE_PKG_CONFIG, pkg-config, yes)
212
213 dnl Check for Xft2 usability.
214 save_CPPFLAGS="$CPPFLAGS"
215 save_LIBS="$LIBS"
216 XFT2_LD_FLAGS="-lXft -lfreetype -lfontconfig -lXrender -lX11"
217 AC_CHECK_PROG(HAVE_XFT_CONFIG, xft-config, yes)
218 if test "x$HAVE_XFT_CONFIG" = "xyes"; then
219   CPPFLAGS="$CPPFLAGS `xft-config --cflags`"
220   XFT2_LD_FLAGS="`xft-config --libs`"
221 elif test "x$HAVE_PKG_CONFIG" = "xyes" ; then
222   if pkg-config xft ; then
223     CPPFLAGS="$CPPFLAGS `pkg-config --cflags xft`"
224     XFT2_LD_FLAGS="`pkg-config --libs xft`"
225   fi
226 fi
227 LIBS="$LIBS $XFT2_LD_FLAGS"
228 AC_CHECK_LIB(Xft, XftDrawCreate, HAVE_XFT2=yes, HAVE_XFT2=no)
229 AC_CHECK_HEADER(X11/Xft/Xft.h,, HAVE_XFT2=no, 
230                 [#include <X11/Xft/Xft.h>
231 #if XftVersion >= 20000
232 #else
233 Version too old.  Compiling this line should fail.
234 #endif])
235 if test "x$HAVE_XFT2" = "xyes"; then
236   AC_DEFINE(HAVE_XFT2, 1,
237             [Define to 1 if you have Xft2 library and header file.])
238   M17N_EXT_LIBS="$M17N_EXT_LIBS xft2"
239 else
240   XFT2_LD_FLAGS=
241   CPPFLAGS="$save_CPPFLAGS"
242 fi
243 LIBS="$save_LIBS"
244 AC_SUBST(XFT2_LD_FLAGS)
245
246 dnl Check for fontconfig usability.
247 save_CPPFLAGS="$CPPFLAGS"
248 save_LIBS="$LIBS"
249 FONTCONFIG_LD_FLAGS=-lfontconfig
250 if test "x$HAVE_PKG_CONFIG" = "xyes"; then
251   if pkg-config --exists fontconfig; then
252     CPPFLAGS="$CPPFLAGS `pkg-config --cflags fontconfig`"
253     FONTCONFIG_LD_FLAGS="`pkg-config --libs fontconfig`"
254     LIBS="$LIBS $FONTCONFIG_LD_FLAGS"
255   fi
256 fi
257 AC_CHECK_LIB(fontconfig, FcInit, HAVE_FONTCONFIG=yes, HAVE_FONTCONFIG=no)
258 AC_CHECK_HEADER(fontconfig/fontconfig.h, , HAVE_FONTCONFIG=no)
259 if test "x$HAVE_FONTCONFIG" = "xyes"; then
260   AC_DEFINE(HAVE_FONTCONFIG, 1,
261               [Define to 1 if you have fontconfig library and header file.])
262   M17N_EXT_LIBS="$M17N_EXT_LIBS fontconfig"
263 else
264   FONTCONFIG_LD_FLAGS=
265   CPPFLAGS="$save_CPPFLAGS"
266 fi
267 LIBS="$save_LIBS"
268 AC_SUBST(FONTCONFIG_LD_FLAGS)
269
270 dnl Check for gdlib usability.
271 AC_ARG_WITH(gd, 
272             AC_HELP_STRING([--with-gd],
273                            [suport graphic device by GD library (default is YES)]))
274
275 if test "x$with_gd" != "xno"; then
276   save_LIBS="$LIBS"
277   AC_CHECK_LIB(gd, gdImageCreate, HAVE_GD=yes, HAVE_GD=no)
278   AC_CHECK_HEADER(gd.h, , HAVE_GD=no)
279   if test "x$HAVE_GD" = "xyes"; then
280     AC_CHECK_LIB(gd, gdImageCreateTrueColor, HAVE_GD=2, HAVE_GD=1)
281     AC_DEFINE_UNQUOTED(HAVE_GD, $HAVE_GD,
282               [Define to 1 or 2 if you have gd library and header file.])
283     M17N_EXT_LIBS="$M17N_EXT_LIBS gdlib"
284     GD_LD_FLAGS=-lgd
285     CONFIG_FLAGS="$CONFIG_FLAGS -DHAVE_GD=$HAVE_GD"
286   fi
287   LIBS="$save_LIBS"
288 fi
289 AC_SUBST(GD_LD_FLAGS)
290
291 fi
292
293 dnl Check for libxml2 usability.
294 save_CPPFLAGS="$CPPFLAGS"
295 save_LIBS="$LIBS"
296 AC_CHECK_PROG(HAVE_XML2_CONFIG, xml2-config, yes)
297 if test "x$HAVE_XML2_CONFIG" = "xyes"; then
298   CPPFLAGS="$CPPFLAGS `xml2-config --cflags`"
299   XML2_LD_FLAGS="`xml2-config --libs`"
300   LIBS="$LIBS $XML2_LD_FLAGS"
301 else
302   CPPFLAGS="$CPPFLAGS -I/usr/include/libxml2"
303   XML2_LD_FLAGS="-lxml2 -lz -lpthread -lm"
304 fi
305 AC_CHECK_LIB(xml2, xmlParseMemory, HAVE_XML2=yes, HAVE_XML2=no)
306 AC_CHECK_HEADER(libxml/tree.h,, HAVE_XML2=no, /**/)
307 if test "x$HAVE_XML2" = "xyes"; then
308   AC_DEFINE(HAVE_XML2, 1,
309             [Define to 1 if you have libxml2 library and header file])
310   M17N_EXT_LIBS="$M17N_EXT_LIBS xml2"
311 else
312   XML2_LD_FLAGS=
313   CPPFLAGS="$save_CPPFLAGS"
314 fi
315 LIBS="$save_LIBS"
316 AC_SUBST(XML2_LD_FLAGS)
317
318 dnl Check for Anthy usability.
319 AC_CHECK_LIB(anthydic, anthy_init_sessions, HAVE_ANTHY=yes, HAVE_ANTHY=no)
320 if test "x$HAVE_ANTHY" = "xyes"; then
321   AC_CHECK_LIB(anthy, anthy_init, HAVE_ANTHY=yes, HAVE_ANTHY=no, -lanthydic)
322   if test "x$HAVE_ANTHY" = "xyes"; then
323     AC_CHECK_HEADER(anthy/anthy.h, HAVE_ANTHY=yes, HAVE_ANTHY=no)
324     if test "x$HAVE_ANTHY" = "xyes"; then
325       AC_DEFINE(HAVE_ANTHY, 1,
326                 [Define to 1 if you have Anthy library and header file])
327       M17N_EXT_LIBS="$M17N_EXT_LIBS anthy"
328       ANTHY_LD_FLAGS="-lanthy -lanthydic"
329       CONFIG_FLAGS="$CONFIG_FLAGS -DHAVE_ANTHY"
330     fi
331   fi
332 fi
333 AC_SUBST(ANTHY_LD_FLAGS)
334
335 dnl Check for Ispell usability.
336 AC_CHECK_PROG(HAVE_ISPELL, ispell, yes)
337 if test "x$HAVE_ISPELL" = "xyes"; then
338   AC_DEFINE(HAVE_ISPELL, 1, [Define if ispell is available.])
339   M17N_EXT_LIBS="$M17N_EXT_LIBS ispell"
340   CONFIG_FLAGS="$CONFIG_FLAGS -DHAVE_ISPELL"
341 fi
342
343 dnl Check for Thai word-segmentation library.
344 dnl If we have one, define HAVE_THAI_WORDSEG and one of these:
345 dnl   HAVE_LIBTHAI, HAVE_WORDCUT, or HAVE_WORDCUT_OLD
346 dnl In addition, set THAI_WORDSEG_LD_FLAGS to a proper value.
347
348 PKG_CHECK_MODULES(LIBTHAI, libthai, HAVE_LIBTHAI=yes, HAVE_LIBTHAI=no)
349 PKG_CHECK_MODULES(WORDCUT, wordcut, HAVE_WORDCUT=yes, HAVE_WORDCUT=no)
350
351 if test "x$HAVE_LIBTHAI" == "xyes"; then
352
353   AC_DEFINE(HAVE_LIBTHAI, 1, [Define if you have libthai])
354   THAI_WORDSEG_LD_FLAGS="$LIBTHAI_LIBS"
355   M17N_EXT_LIBS="$M17N_EXT_LIBS libthai"
356   HAVE_THAI_WORDSEG=yes
357
358 elif test "x$HAVE_WORDCUT" = "xyes"; then
359
360   save_CPPFLAGS="$CPPFLAGS"
361   CPPFLAGS="$CPPFLAGS $WORDCUT_CFLAGS"
362   AC_TRY_CPP([#include <wordcut/wcwordcut.h>], , HAVE_WORDCUT=no)
363   if test "x$HAVE_WORDCUT" = "xno"; then
364     PKG_CHECK_MODULES(GLIB_2_0, glib-2.0, HAVE_GLIB_2_0=yes, HAVE_GLIB_2_0=no)
365     if test "x$HAVE_GLIB_2_0" = "xyes"; then
366       CPPFLAGS="$CPPFLAGS $GLIB_2_0_CFLAGS"
367       AC_TRY_CPP([#include <wordcut/wcwordcut.h>], HAVE_WORDCUT=yes)
368     fi
369   fi
370   if test "x$HAVE_WORDCUT" = "xyes"; then
371     THAI_WORDSEG_LD_FLAGS="$WORDCUT_LIBS"
372     AC_DEFINE(HAVE_WORDCUT, 1,
373               [Define if you have the wordcut library and header file])
374     M17N_EXT_LIBS="$M17N_EXT_LIBS wordcut"
375     HAVE_THAI_WORDSEG=yes
376   else
377     CPPFLAGS="$save_CPPFLAGS"
378   fi
379
380 else
381
382   AC_CHECK_LIB(wordcut, wordcut_init, HAVE_WORDCUT_OLD=yes)
383   if test "x$HAVE_WORDCUT_OLD" = "xyes"; then
384     if test -f "/usr/share/wordcut/tdict.wcd"; then
385       tdict="/usr/share/wordcut/tdict.wcd"
386     elif test -f "/usr/local/share/wordcut/tdict.wcd"; then
387       tdict="/usr/local/share/wordcut/tdict.wcd"
388     fi
389     echo "TDICT=$tdict"
390     if test "x$tdict" != "x"; then
391       AC_DEFINE(HAVE_WORDCUT_OLD, 1,
392                 [Define if you have the old version of wordcut library])
393       AC_DEFINE_UNQUOTED(WORDCUT_TDICT, "$tdict", [Define tdict file name])
394       THAI_WORDSEG_LD_FLAGS=-lwordcut
395       M17N_EXT_LIBS="$M17N_EXT_LIBS wordcut-old"
396       HAVE_THAI_WORDSEG=yes
397     else
398       HAVE_WORDCUT=no
399     fi
400   fi
401 fi  
402
403 if test "x$HAVE_THAI_WORDSEG" = "xyes"; then
404   AC_DEFINE(HAVE_THAI_WORDSEG, 1,
405             [Define if you have some Thai word-segmentation library])
406 fi
407 AC_SUBST(THAI_WORDSEG_LD_FLAGS)
408
409 AC_SUBST(CONFIG_FLAGS)
410
411 dnl We can't include X_CFLAGS in AM_CPPFLAGS because the generated
412 dnl Makefile put ${AM_CPPFLAGS} before ${CPPFLAGS} and that leads to
413 dnl inclusion of an incorrect header file.  So, append X_CFLAGS to
414 dnl CPPFLAGS here directly.
415
416 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
417
418 dnl AC_ARG_ENABLE(xom, 
419 dnl           [  --enable-xom            build and install XOM library.],
420 dnl           XOM="$enableval")
421
422 SHLIB_EXT=".so"
423 case $host_os in
424 darwin* | rhapsody*)
425   SHLIB_EXT=".dylib";;
426 esac
427 AC_DEFINE_UNQUOTED(DLOPEN_SHLIB_EXT, "$SHLIB_EXT",
428                    [Define to loadable module extention])
429
430 AC_CONFIG_FILES([Makefile
431                  src/Makefile
432                  example/Makefile
433                  m17n-config
434                  m17n-core.pc
435                  m17n-shell.pc
436                  m17n-gui.pc
437                  ])
438
439 dnl if test "x$XOM" = "xyes"; then
440 dnl  AC_CONFIG_FILES(omM17N/Makefile)
441 dnl fi
442
443 AC_OUTPUT
444
445 echo "The m17n library is configured with these external libraries."
446 echo " $M17N_EXT_LIBS"
447
448 dnl Local Variables:
449 dnl comment-start: "dnl "
450 dnl comment-end: ""
451 dnl comment-start-skip: "\\bdnl\\b\\s *"
452 dnl End: