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