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