*** empty log message ***
[m17n/m17n-lib.git] / configure.ac
1 dnl configure.ac -- autoconf script for the m17n library.
2
3 dnl Copyright (C) 2003, 2004
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.2.0, m17n-lib-bug@m17n.org)
27 AM_INIT_AUTOMAKE(m17n-lib, 1.2.0)
28 AM_CONFIG_HEADER(src/config.h)
29
30 API_VERSION=1:0:1
31 AC_SUBST(API_VERSION)
32
33 dnl Checks for programs for compiling.
34 AC_PROG_CC
35 AC_LIBTOOL_DLOPEN
36 AC_LIBLTDL_CONVENIENCE
37 AM_PROG_LIBTOOL
38
39 dnl Checks for X libraries.
40 AC_PATH_XTRA
41
42 dnl Checks for standard header files.
43 AC_HEADER_STDC
44 AC_HEADER_DIRENT
45 AC_HEADER_TIME
46 AC_CHECK_HEADERS([fcntl.h langinfo.h limits.h locale.h stdlib.h \
47                           string.h strings.h sys/time.h unistd.h])
48 AC_CHECK_HEADER(X11/Xaw/Command.h, XAW_LD_FLAGS=-lXaw)
49 AC_SUBST(XAW_LD_FLAGS)
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
83 dnl Checks if dlopen exists, and if it's in libc or libdl.
84
85 AC_SEARCH_LIBS(dlopen, dl,
86                AC_DEFINE(HAVE_DLOPEN, 1,
87                [Define to 1 if you have the funciton dlopen.]))
88
89 dnl Check several libraries without adding -lxxx to LIBS, without
90 dnl defining HAVE_LIBXXX nor HAVE_XXX_H because they are used only by
91 dnl some libraries (e.g. libm17n-X.so).  Instead, define XXX_LD_FLAGS
92 dnl and HAVE_XXX if library XXX is available.  CPPFLAGS will be
93 dnl augmented.
94
95 M17N_EXT_LIBS=
96
97 dnl Check for fribidi library.
98 save_CPPFLAGS="$CPPFLAGS"
99 save_LIBS="$LIBS"
100 AC_CHECK_PROG(HAVE_FRIBIDI_CONFIG, fribidi-config, yes)
101 if test "$HAVE_FRIBIDI_CONFIG" = "xyes"; then
102   CPPFLAGS="$CPPFLAGS `fribidi-config --cflags`"
103   FRIBIDI_LD_FLAGS="`fribidi-config --libs`"
104   LIBS="$LIBS $FRIBIDI_LD_FLAGS"
105 else
106   FRIBIDI_LD_FLAGS=-lfribidi
107 fi
108 AC_CHECK_LIB(fribidi, fribidi_set_mirroring, HAVE_FRIBIDI=yes, HAVE_FRIBIDI=no)
109 AC_CHECK_HEADER(fribidi/fribidi.h,, HAVE_FRIBIDI=no)
110 if test "x$HAVE_FRIBIDI" = "xyes"; then
111   AC_DEFINE(HAVE_FRIBIDI, 1, 
112             [Define to 1 if you have Fribidi library and header file.])
113   M17N_EXT_LIBS="$M17N_EXT_LIBS fribidi"
114 else
115   CPPFLAGS="$save_CPPFLAGS"
116   FRIBIDI_LD_FLAGS=
117 fi
118 LIBS="$save_LIBS"
119 AC_SUBST(FRIBIDI_LD_FLAGS)
120
121 dnl Check for otflib usability.
122 save_CPPFLAGS="$CPPFLAGS"
123 save_LIBS="$LIBS"
124 AC_CHECK_PROG(HAVE_OTFLIB_CONFIG, libotf-config, yes)
125 if test "x$HAVE_OTFLIB_CONFIG" = "xyes"; then
126   CPPFLAGS="$CPPFLAGS `libotf-config --cflags`"
127   OTF_LD_FLAGS="`libotf-config --libs`  "
128   LIBS="$LIBS $OTF_LD_FLAGS"
129 else
130   OTF_LD_FLAGS=-lotf
131 fi
132 AC_CHECK_LIB(otf, OTF_open, HAVE_OTF=yes, HAVE_OTF=no)
133 AC_CHECK_HEADER(otf.h,, HAVE_OTF=no)
134 CPPFLAGS="$save_CPPFLAGS"
135 if test "x$HAVE_OTF" = "xyes"; then
136   AC_DEFINE(HAVE_OTF, 1, 
137             [Define to 1 if you have OTF library and header file.])
138   M17N_EXT_LIBS="$M17N_EXT_LIBS libotf"
139 else
140   CPPFLAGS="$save_CPPFLAGS"
141   OTF_LD_FLAGS=
142 fi
143 LIBS="$save_LIBS"
144 AC_SUBST(OTF_LD_FLAGS)
145
146 dnl Check for Freetype2 usability.
147 AC_CHECK_PROG(HAVE_FREETYPE_CONFIG, freetype-config, yes)
148 if test "x$HAVE_FREETYPE_CONFIG" = "xyes"; then
149   FREETYPE_INC=`freetype-config --cflags`
150   save_CPPFLAGS="$CPPFLAGS"
151   CPPFLAGS="$CPPFLAGS $FREETYPE_INC"
152   AC_CHECK_HEADER(ft2build.h, HAVE_FREETYPE=yes,
153                               HAVE_FREETYPE=no CPPFLAGS="$save_CPPFLAGS")
154   if test "x$HAVE_FREETYPE" = "xyes" ; then
155     save_LIBS="$LIBS"
156     LIBS="$LIBS `freetype-config --libs`"
157     AC_CHECK_LIB(freetype, FT_Init_FreeType, HAVE_FREETYPE=yes,
158                                              HAVE_FREETYPE=no)
159     LIBS="$save_LIBS"
160     if test "x$HAVE_FREETYPE" = "xyes"; then
161       FREETYPE_LD_FLAGS=`freetype-config --libs`
162       AC_DEFINE(HAVE_FREETYPE, 1, 
163                 [Define to 1 if you have FreeType library and header file.])
164       M17N_EXT_LIBS="$M17N_EXT_LIBS freetype"
165       AC_CHECK_HEADER(freetype/ftbdf.h, HAVE_FTBDF_H=yes, HAVE_FTBDF_H=no,
166                       [#include <ft2build.h>
167 #include FT_FREETYPE_H])
168       if test "x$HAVE_FTBDF_H" = "xyes"; then
169         AC_DEFINE(HAVE_FTBDF_H, 1,
170                   [Define to 1 if you have freetype/ftbdf.h.])
171       fi
172     fi
173   fi
174 fi
175 AC_SUBST(FREETYPE_LD_FLAGS)
176
177 AC_CHECK_PROG(HAVE_PKG_CONFIG, pkg-config, yes)
178
179 dnl Check for Xft2 usability.
180 save_CPPFLAGS="$CPPFLAGS"
181 save_LIBS="$LIBS"
182 XFT2_LD_FLAGS="-lXft -lfreetype -lfontconfig -lXrender -lX11"
183 AC_CHECK_PROG(HAVE_XFT_CONFIG, xft-config, yes)
184 if test "x$HAVE_XFT_CONFIG" = "xyes"; then
185   CPPFLAGS="$CPPFLAGS `xft-config --cflags`"
186   XFT2_LD_FLAGS="`xft-config --libs`"
187 elif test "x$HAVE_PKG_CONFIG" = "xyes" ; then
188   if pkg-config xft ; then
189     CPPFLAGS="$CPPFLAGS `pkg-config --cflags xft`"
190     XFT2_LD_FLAGS="`pkg-config --libs xft`"
191   fi
192 fi
193 LIBS="$LIBS $XFT2_LD_FLAGS"
194 AC_CHECK_LIB(Xft, XftDrawCreate, HAVE_XFT2=yes, HAVE_XFT2=no)
195 AC_CHECK_HEADER(X11/Xft/Xft.h,, HAVE_XFT2=no, 
196                 [#include <X11/Xft/Xft.h>
197 #if XftVersion >= 20000
198 #else
199 Version too old.  Compiling this line should fail.
200 #endif])
201 if test "x$HAVE_XFT2" = "xyes"; then
202   AC_DEFINE(HAVE_XFT2, 1,
203             [Define to 1 if you have Xft2 library and header file.])
204   M17N_EXT_LIBS="$M17N_EXT_LIBS xft2"
205 else
206   XFT2_LD_FLAGS=
207   CPPFLAGS="$save_CPPFLAGS"
208 fi
209 LIBS="$save_LIBS"
210 AC_SUBST(XFT2_LD_FLAGS)
211
212 dnl Check for fontconfig usability.
213 save_CPPFLAGS="$CPPFLAGS"
214 save_LIBS="$LIBS"
215 FONTCONFIG_LD_FLAGS=-lfontconfig
216 if test "x$HAVE_PKG_CONFIG" = "xyes"; then
217   if pkg-config --exists fontconfig; then
218     CPPFLAGS="$CPPFLAGS `pkg-config --cflags fontconfig`"
219     FONTCONFIG_LD_FLAGS="`pkg-config --libs fontconfig`"
220     LIBS="$LIBS $FONTCONFIG_LD_FLAGS"
221   fi
222 fi
223 AC_CHECK_LIB(fontconfig, FcInit, HAVE_FONTCONFIG=yes, HAVE_FONTCONFIG=no)
224 AC_CHECK_HEADER(fontconfig/fontconfig.h, , HAVE_FONTCONFIG=no)
225 if test "x$HAVE_FONTCONFIG" = "xyes"; then
226   AC_DEFINE(HAVE_FONTCONFIG, 1,
227               [Define to 1 if you have fontconfig library and header file.])
228   M17N_EXT_LIBS="$M17N_EXT_LIBS fontconfig"
229 else
230   FONTCONFIG_LD_FLAGS=
231   CPPFLAGS="$save_CPPFLAGS"
232 fi
233 LIBS="$save_LIBS"
234 AC_SUBST(FONTCONFIG_LD_FLAGS)
235
236 dnl Check for gdlib usability.
237 save_LIBS="$LIBS"
238 AC_CHECK_LIB(gd, gdImageCreate, HAVE_GD=yes, HAVE_GD=no)
239 AC_CHECK_HEADER(gd.h, , HAVE_GD=no)
240 if test "x$HAVE_GD" = "xyes"; then
241   AC_CHECK_LIB(gd, gdImageCreateTrueColor, HAVE_GD=2, HAVE_GD=1)
242   AC_DEFINE_UNQUOTED(HAVE_GD, $HAVE_GD,
243             [Define to 1 or 2 if you have gd library and header file.])
244   M17N_EXT_LIBS="$M17N_EXT_LIBS gdlib"
245   GD_LD_FLAGS=-lgd
246 fi
247 LIBS="$save_LIBS"
248 AC_SUBST(GD_LD_FLAGS)
249
250 dnl Check for libxml2 usability.
251 save_CPPFLAGS="$CPPFLAGS"
252 save_LIBS="$LIBS"
253 AC_CHECK_PROG(HAVE_XML2_CONFIG, xml2-config, yes)
254 if test "x$HAVE_XML2_CONFIG" = "xyes"; then
255   CPPFLAGS="$CPPFLAGS `xml2-config --cflags`"
256   XML2_LD_FLAGS="`xml2-config --libs`"
257   LIBS="$LIBS $XML2_LD_FLAGS"
258 else
259   CPPFLAGS="$CPPFLAGS -I/usr/include/libxml2"
260   XML2_LD_FLAGS="-lxml2 -lz -lpthread -lm"
261 fi
262 AC_CHECK_LIB(xml2, xmlParseMemory, HAVE_XML2=yes, HAVE_XML2=no)
263 AC_CHECK_HEADER(libxml/tree.h,, HAVE_XML2=no, /**/)
264 if test "x$HAVE_XML2" = "xyes"; then
265   AC_DEFINE(HAVE_XML2, 1,
266             [Define to 1 if you have libxml2 library and header file])
267   M17N_EXT_LIBS="$M17N_EXT_LIBS xml2"
268 else
269   XML2_LD_FLAGS=
270   CPPFLAGS="$save_CPPFLAGS"
271 fi
272 LIBS="$save_LIBS"
273 AC_SUBST(XML2_LD_FLAGS)
274
275 dnl Check for Anthy usability.
276 AC_CHECK_LIB(anthydic, anthy_init_sessions, HAVE_ANTHY=yes, HAVE_ANTHY=no)
277 if test "x$HAVE_ANTHY" = "xyes"; then
278   AC_CHECK_LIB(anthy, anthy_init, HAVE_ANTHY=yes, HAVE_ANTHY=no, -lanthydic)
279   if test "x$HAVE_ANTHY" = "xyes"; then
280     AC_CHECK_HEADER(anthy/anthy.h, HAVE_ANTHY=yes, HAVE_ANTHY=no)
281     if test "x$HAVE_ANTHY" = "xyes"; then
282     AC_DEFINE(HAVE_ANTHY, 1,
283               [Define to 1 if you have Anthy library and header file])
284     M17N_EXT_LIBS="$M17N_EXT_LIBS anthy"
285     ANTHY_LD_FLAGS="-lanthy -lanthydic"
286     fi
287   fi
288 fi
289 AC_SUBST(ANTHY_LD_FLAGS)
290
291 dnl Check for Ispell usability.
292 AC_CHECK_PROG(HAVE_ISPELL, ispell, yes)
293 if test "x$HAVE_ISPELL" = "xyes"; then
294   AC_DEFINE(HAVE_ISPELL, 1, [Define if ispell is available.])
295   M17N_EXT_LIBS="$M17N_EXT_LIBS ispell"
296 fi
297
298 dnl Check for Thai word-segmentation library.
299 dnl If we have one, define HAVE_THAI_WORDSEG and one of these:
300 dnl   HAVE_LIBTHAI, HAVE_WORDCUT, or HAVE_WORDCUT_OLD
301 dnl In addition, set THAI_WORDSEG_LD_FLAGS to a proper value.
302
303 PKG_CHECK_MODULES(LIBTHAI, libthai, HAVE_LIBTHAI=yes, HAVE_LIBTHAI=no)
304 PKG_CHECK_MODULES(WORDCUT, wordcut, HAVE_WORDCUT=yes, HAVE_WORDCUT=no)
305
306 if test "x$HAVE_LIBTHAI" == "xyes"; then
307
308   AC_DEFINE(HAVE_LIBTHAI, 1, [Define if you have libthai])
309   THAI_WORDSEG_LD_FLAGS="$LIBTHAI_LIBS"
310   M17N_EXT_LIBS="$M17N_EXT_LIBS libthai"
311   HAVE_THAI_WORDSEG=yes
312
313 elif test "x$HAVE_WORDCUT" = "xyes"; then
314
315   save_CPPFLAGS="$CPPFLAGS"
316   CPPFLAGS="$CPPFLAGS $WORDCUT_CFLAGS"
317   AC_TRY_CPP([#include <wordcut/wcwordcut.h>], , HAVE_WORDCUT=no)
318   if test "x$HAVE_WORDCUT" = "xno"; then
319     PKG_CHECK_MODULES(GLIB_2_0, glib-2.0, HAVE_GLIB_2_0=yes, HAVE_GLIB_2_0=no)
320     if test "x$HAVE_GLIB_2_0" = "xyes"; then
321       CPPFLAGS="$CPPFLAGS $GLIB_2_0_CFLAGS"
322       AC_TRY_CPP([#include <wordcut/wcwordcut.h>], HAVE_WORDCUT=yes)
323     fi
324   fi
325   if test "x$HAVE_WORDCUT" = "xyes"; then
326     THAI_WORDSEG_LD_FLAGS="$WORDCUT_LIBS"
327     AC_DEFINE(HAVE_WORDCUT, 1,
328               [Define if you have the wordcut library and header file])
329     M17N_EXT_LIBS="$M17N_EXT_LIBS wordcut"
330     HAVE_THAI_WORDSEG=yes
331   else
332     CPPFLAGS="$save_CPPFLAGS"
333   fi
334
335 else
336
337   AC_CHECK_LIB(wordcut, wordcut_init, HAVE_WORDCUT_OLD=yes)
338   if test "x$HAVE_WORDCUT_OLD" = "xyes"; then
339     if test -f "/usr/share/wordcut/tdict.wcd"; then
340       tdict="/usr/share/wordcut/tdict.wcd"
341     elif test -f "/usr/local/share/wordcut/tdict.wcd"; then
342       tdict="/usr/local/share/wordcut/tdict.wcd"
343     fi
344     echo "TDICT=$tdict"
345     if test "x$tdict" != "x"; then
346       AC_DEFINE(HAVE_WORDCUT_OLD, 1,
347                 [Define if you have the old version of wordcut library])
348       AC_DEFINE_UNQUOTED(WORDCUT_TDICT, "$tdict", [Define tdict file name])
349       THAI_WORDSEG_LD_FLAGS=-lwordcut
350       M17N_EXT_LIBS="$M17N_EXT_LIBS wordcut-old"
351       HAVE_THAI_WORDSEG=yes
352     else
353       HAVE_WORDCUT=no
354     fi
355   fi
356 fi  
357
358 if test "x$HAVE_THAI_WORDSEG" = "xyes"; then
359   AC_DEFINE(HAVE_THAI_WORDSEG, 1,
360             [Define if you have some Thai word-segmentation library])
361 fi
362 AC_SUBST(THAI_WORDSEG_LD_FLAGS)
363
364 dnl We can't include X_CFLAGS in AM_CPPFLAGS because the generated
365 dnl Makefile put ${AM_CPPFLAGS} before ${CPPFLAGS} and that leads to
366 dnl inclusion of an incorrect header file.  So, append X_CFLAGS to
367 dnl CPPFLAGS here directly.
368
369 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
370
371 dnl AC_ARG_ENABLE(xom, 
372 dnl           [  --enable-xom            build and install XOM library.],
373 dnl           XOM="$enableval")
374
375 SHLIB_EXT=".so"
376 case $host_os in
377 darwin* | rhapsody*)
378   SHLIB_EXT=".dylib";;
379 esac
380 AC_DEFINE_UNQUOTED(DLOPEN_SHLIB_EXT, "$SHLIB_EXT",
381                    [Define to loadable module extention])
382
383 AC_CONFIG_FILES([Makefile
384                  src/Makefile
385                  example/Makefile
386                  m17n-config
387                  m17n-core.pc
388                  m17n-shell.pc
389                  m17n-gui.pc
390                  ])
391
392 dnl if test "x$XOM" = "xyes"; then
393 dnl  AC_CONFIG_FILES(omM17N/Makefile)
394 dnl fi
395
396 AC_OUTPUT
397
398 echo "The m17n library is configured with these external libraries."
399 echo " $M17N_EXT_LIBS"
400
401 dnl Local Variables:
402 dnl comment-start: "dnl "
403 dnl comment-end: ""
404 dnl comment-start-skip: "\\bdnl\\b\\s *"
405 dnl End: