Add AC_CONFIG_MACRO_DIR([m4]).
[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, 2007, 2008, 2009
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., 51 Franklin Street, Fifth Floor,
22 dnl Boston, MA 02110-1301, USA.
23
24 dnl Process this file with autoconf to produce a configure script.
25
26 AC_INIT(m17n-lib, 1.5.5, m17n-lib-bug@m17n.org)
27 AC_CONFIG_MACRO_DIR([m4])
28 AM_INIT_AUTOMAKE
29 AM_CONFIG_HEADER(src/config.h)
30 AM_MAINTAINER_MODE
31
32 API_VERSION=3:0:3
33 AC_SUBST(API_VERSION)
34
35 AM_GNU_GETTEXT
36 GETTEXTDIR="$datadir/locale"
37 AC_SUBST(GETTEXTDIR)
38
39 dnl Checks for programs for compiling.
40 AC_PROG_CC
41 AC_LIBTOOL_DLOPEN
42 AC_LIBLTDL_CONVENIENCE
43 AM_PROG_LIBTOOL
44
45 dnl Checks for X libraries.
46 AC_PATH_XTRA
47
48 dnl Checks for standard header files.
49 AC_HEADER_STDC
50 AC_HEADER_DIRENT
51 AC_HEADER_TIME
52 AC_CHECK_HEADERS([fcntl.h langinfo.h limits.h locale.h stdlib.h \
53                           string.h strings.h sys/time.h unistd.h])
54 AC_CHECK_HEADER(X11/Xaw/Command.h, HAVE_XAW=yes)
55
56 dnl Checks for typedefs, structures, and compiler characteristics.
57 AC_C_CONST
58 AC_C_INLINE
59 AC_TYPE_SIZE_T
60 AC_STRUCT_TM
61
62 dnl Checks for endian.  This influence the default UTF-16 definition.
63 AC_C_BIGENDIAN
64
65 dnl Checks for library functions.
66 AC_FUNC_ALLOCA
67 AC_FUNC_MALLOC
68 AC_FUNC_REALLOC
69 AC_FUNC_MEMCMP
70 AC_FUNC_STAT
71 AC_FUNC_STRCOLL
72 AC_FUNC_STRFTIME
73 AC_FUNC_STRTOD
74 AC_CHECK_FUNCS(memmove memset nl_langinfo putenv regcomp setlocale)
75 AC_CHECK_FUNCS(strchr strdup gettimeofday)
76
77 dnl Checks where the m17n database is installed.
78
79 AC_CHECK_PROG(HAVE_M17N_DB, m17n-db, yes)
80 if test "x$HAVE_M17N_DB" = "xyes"; then
81   M17NDIR=`m17n-db`
82 else
83   M17NDIR="${datadir}/m17n"
84 fi
85 AC_SUBST(M17NDIR)
86
87 dnl Checks which levels of APIs should be compiled.
88
89 AC_ARG_ENABLE(gui,
90               AC_HELP_STRING([--with-gui],
91                              [with GUI level APIs (default is YES)]))
92
93 AM_CONDITIONAL(WITH_GUI, test x$with_gui != xno)
94
95 if test x$with_gui != xno; then
96
97 dnl Checks if dlopen exists, and if it's in libc or libdl.
98
99 AC_SEARCH_LIBS(dlopen, dl,
100                AC_DEFINE(HAVE_DLOPEN, 1,
101                [Define to 1 if you have the function dlopen.]))
102
103 dnl Check several libraries without adding -lxxx to LIBS, without
104 dnl defining HAVE_LIBXXX nor HAVE_XXX_H because they are used only by
105 dnl some libraries (e.g. libm17n-X.so).  Instead, define XXX_LD_FLAGS
106 dnl and HAVE_XXX if library XXX is available.  CPPFLAGS will be
107 dnl augmented.
108
109 M17N_EXT_LIBS=
110
111 AC_CHECK_PROG(HAVE_PKG_CONFIG, pkg-config, yes)
112
113 if test "x$no_x" != "xyes"; then
114   AC_DEFINE(HAVE_X11, 1, [Define to 1 if you have X11.])
115   X11_LD_FLAGS="-lXt -lX11"
116   M17N_EXT_LIBS="$M17N_EXT_LIBS X11"
117
118   if test "x$HAVE_XAW" = "xyes"; then
119     AC_DEFINE(HAVE_X11_XAW_COMMAND_H, 1,
120               [Define to 1 if you have the Xaw header files.])
121     XAW_LD_FLAGS="-lXaw -lXmu"
122     CONFIG_FLAGS="$CONFIG_FLAGS -DHAVE_X11_XAW_COMMAND_H"
123     M17N_EXT_LIBS="$M17N_EXT_LIBS Xaw"
124   fi
125 fi
126 AC_SUBST(X11_LD_FLAGS)
127 AC_SUBST(XAW_LD_FLAGS)
128
129 dnl Check for fribidi library.
130 save_CPPFLAGS="$CPPFLAGS"
131 save_LIBS="$LIBS"
132 AC_CHECK_PROG(HAVE_FRIBIDI_CONFIG, fribidi-config, yes)
133 if test "x$HAVE_FRIBIDI_CONFIG" = "xyes"; then
134   CPPFLAGS="$CPPFLAGS `fribidi-config --cflags`"
135   FRIBIDI_LD_FLAGS="`fribidi-config --libs`"
136   LIBS="$LIBS $FRIBIDI_LD_FLAGS"
137 else
138   FRIBIDI_LD_FLAGS=-lfribidi
139 fi
140 AC_CHECK_LIB(fribidi, fribidi_set_mirroring, HAVE_FRIBIDI=yes, HAVE_FRIBIDI=no)
141 AC_CHECK_HEADER(fribidi/fribidi.h,, HAVE_FRIBIDI=no)
142 if test "x$HAVE_FRIBIDI" = "xyes"; then
143   AC_DEFINE(HAVE_FRIBIDI, 1, 
144             [Define to 1 if you have Fribidi library and header file.])
145   M17N_EXT_LIBS="$M17N_EXT_LIBS fribidi"
146 else
147   CPPFLAGS="$save_CPPFLAGS"
148   FRIBIDI_LD_FLAGS=
149 fi
150 LIBS="$save_LIBS"
151 AC_SUBST(FRIBIDI_LD_FLAGS)
152
153 dnl Check for otflib usability.
154 AC_ARG_WITH(libotf, 
155             AC_HELP_STRING([--with-libotf],
156                            [with OpenType font suport (default is YES)]))
157
158 if test "x$with_libotf" != "xno"; then
159   save_CPPFLAGS="$CPPFLAGS"
160   save_LIBS="$LIBS"
161   AC_CHECK_PROG(HAVE_OTFLIB_CONFIG, libotf-config, yes)
162   if test "x$HAVE_OTFLIB_CONFIG" = "xyes"; then
163     CPPFLAGS="$CPPFLAGS `libotf-config --cflags`"
164     OTF_LD_FLAGS="`libotf-config --libs`"
165     LIBS="$LIBS $OTF_LD_FLAGS"
166   else
167     OTF_LD_FLAGS=-lotf
168   fi
169   ## We check the availability of OTF_check_features
170   ## because we need libotf-0.9.4 or the later.
171   AC_CHECK_LIB(otf, OTF_check_features, HAVE_OTF=yes, HAVE_OTF=no)
172   AC_CHECK_HEADER(otf.h,, HAVE_OTF=no)
173   if test "x$HAVE_OTF" = "xyes"; then
174     AC_DEFINE(HAVE_OTF, 1, 
175               [Define to 1 if you have OTF library and header file.])
176     M17N_EXT_LIBS="$M17N_EXT_LIBS libotf"
177   else
178     CPPFLAGS="$save_CPPFLAGS"
179     OTF_LD_FLAGS=
180   fi
181   LIBS="$save_LIBS"
182 fi
183 AC_SUBST(OTF_LD_FLAGS)
184
185 dnl Check for Freetype2 usability.
186 AC_CHECK_PROG(HAVE_FREETYPE_CONFIG, freetype-config, yes)
187 if test "x$HAVE_FREETYPE_CONFIG" = "xyes"; then
188   FREETYPE_INC=`freetype-config --cflags`
189   save_CPPFLAGS="$CPPFLAGS"
190   CPPFLAGS="$CPPFLAGS $FREETYPE_INC"
191   AC_CHECK_HEADER(ft2build.h, HAVE_FREETYPE=yes,
192                               HAVE_FREETYPE=no CPPFLAGS="$save_CPPFLAGS")
193   if test "x$HAVE_FREETYPE" = "xyes" ; then
194     save_LIBS="$LIBS"
195     LIBS="$LIBS `freetype-config --libs`"
196     AC_CHECK_LIB(freetype, FT_Init_FreeType, HAVE_FREETYPE=yes,
197                                              HAVE_FREETYPE=no)
198     LIBS="$save_LIBS"
199     if test "x$HAVE_FREETYPE" = "xyes"; then
200       FREETYPE_LD_FLAGS=`freetype-config --libs`
201       AC_DEFINE(HAVE_FREETYPE, 1, 
202                 [Define to 1 if you have FreeType library and header file.])
203       M17N_EXT_LIBS="$M17N_EXT_LIBS freetype"
204       AC_CHECK_HEADER(freetype/ftbdf.h, HAVE_FTBDF_H=yes, HAVE_FTBDF_H=no,
205                       [#include <ft2build.h>
206 #include FT_FREETYPE_H])
207       if test "x$HAVE_FTBDF_H" = "xyes"; then
208         AC_DEFINE(HAVE_FTBDF_H, 1,
209                   [Define to 1 if you have freetype/ftbdf.h.])
210       fi
211       CONFIG_FLAGS="$CONFIG_FLAGS -DHAVE_FREETYPE"
212     fi
213   fi
214 fi
215 AC_SUBST(FREETYPE_LD_FLAGS)
216
217 dnl Check for Xft2 usability.
218 save_CPPFLAGS="$CPPFLAGS"
219 save_LIBS="$LIBS"
220 XFT2_LD_FLAGS="-lXft -lfreetype -lfontconfig -lXrender -lX11"
221 AC_CHECK_PROG(HAVE_XFT_CONFIG, xft-config, yes)
222 if test "x$HAVE_XFT_CONFIG" = "xyes"; then
223   CPPFLAGS="$CPPFLAGS `xft-config --cflags`"
224   XFT2_LD_FLAGS="`xft-config --libs`"
225 elif test "x$HAVE_PKG_CONFIG" = "xyes" ; then
226   if pkg-config xft ; then
227     CPPFLAGS="$CPPFLAGS `pkg-config --cflags xft`"
228     XFT2_LD_FLAGS="`pkg-config --libs xft`"
229   fi
230 fi
231 LIBS="$LIBS $XFT2_LD_FLAGS"
232 AC_CHECK_LIB(Xft, XftDrawCreate, HAVE_XFT2=yes, HAVE_XFT2=no)
233 AC_CHECK_HEADER(X11/Xft/Xft.h,, HAVE_XFT2=no, 
234                 [#include <X11/Xft/Xft.h>
235 #if XftVersion >= 20000
236 #else
237 Version too old.  Compiling this line should fail.
238 #endif])
239 if test "x$HAVE_XFT2" = "xyes"; then
240   AC_DEFINE(HAVE_XFT2, 1,
241             [Define to 1 if you have Xft2 library and header file.])
242   M17N_EXT_LIBS="$M17N_EXT_LIBS xft2"
243 else
244   XFT2_LD_FLAGS=
245   CPPFLAGS="$save_CPPFLAGS"
246 fi
247 LIBS="$save_LIBS"
248 AC_SUBST(XFT2_LD_FLAGS)
249
250 dnl Check for fontconfig usability.
251 AC_ARG_WITH(fontconfig,
252             AC_HELP_STRING([--with-fontconfig],
253                            [with FontConfig library (default is YES)]))
254 if test "x$with_fontconfig" != "xno"; then
255   save_CPPFLAGS="$CPPFLAGS"
256   save_LIBS="$LIBS"
257   FONTCONFIG_LD_FLAGS=-lfontconfig
258   if test "x$HAVE_PKG_CONFIG" = "xyes"; then
259     if pkg-config --exists fontconfig; then
260       CPPFLAGS="$CPPFLAGS `pkg-config --cflags fontconfig`"
261       FONTCONFIG_LD_FLAGS="`pkg-config --libs fontconfig`"
262       LIBS="$LIBS $FONTCONFIG_LD_FLAGS"
263     fi
264   fi
265   AC_CHECK_LIB(fontconfig, FcInit, HAVE_FONTCONFIG=yes, HAVE_FONTCONFIG=no)
266   AC_CHECK_HEADER(fontconfig/fontconfig.h, , HAVE_FONTCONFIG=no)
267   if test "x$HAVE_FONTCONFIG" = "xyes"; then
268     AC_DEFINE(HAVE_FONTCONFIG, 1,
269               [Define to 1 if you have fontconfig library and header file.])
270     M17N_EXT_LIBS="$M17N_EXT_LIBS fontconfig"
271   else
272     FONTCONFIG_LD_FLAGS=
273     CPPFLAGS="$save_CPPFLAGS"
274   fi
275   LIBS="$save_LIBS"
276 fi
277 AC_SUBST(FONTCONFIG_LD_FLAGS)
278
279 dnl Check for gdlib usability.
280 AC_ARG_WITH(gd, 
281             AC_HELP_STRING([--with-gd],
282                            [suport graphic device by GD library (default is YES)]))
283
284 if test "x$with_gd" != "xno"; then
285   save_LIBS="$LIBS"
286   AC_CHECK_LIB(gd, gdImageCreate, HAVE_GD=yes, HAVE_GD=no)
287   AC_CHECK_HEADER(gd.h, , HAVE_GD=no)
288   if test "x$HAVE_GD" = "xyes"; then
289     AC_CHECK_LIB(gd, gdImageCreateTrueColor, HAVE_GD=2, HAVE_GD=1)
290     AC_DEFINE_UNQUOTED(HAVE_GD, $HAVE_GD,
291               [Define to 1 or 2 if you have gd library and header file.])
292     M17N_EXT_LIBS="$M17N_EXT_LIBS gdlib"
293     GD_LD_FLAGS=-lgd
294     CONFIG_FLAGS="$CONFIG_FLAGS -DHAVE_GD=$HAVE_GD"
295   fi
296   LIBS="$save_LIBS"
297 fi
298 AC_SUBST(GD_LD_FLAGS)
299
300 fi
301
302 dnl Check for libxml2 usability.
303 save_CPPFLAGS="$CPPFLAGS"
304 save_LIBS="$LIBS"
305 AC_CHECK_PROG(HAVE_XML2_CONFIG, xml2-config, yes)
306 if test "x$HAVE_XML2_CONFIG" = "xyes"; then
307   CPPFLAGS="$CPPFLAGS `xml2-config --cflags`"
308   XML2_LD_FLAGS="`xml2-config --libs`"
309   LIBS="$LIBS $XML2_LD_FLAGS"
310 else
311   CPPFLAGS="$CPPFLAGS -I/usr/include/libxml2"
312   XML2_LD_FLAGS="-lxml2 -lz -lpthread -lm"
313 fi
314 AC_CHECK_LIB(xml2, xmlParseMemory, HAVE_XML2=yes, HAVE_XML2=no)
315 AC_CHECK_HEADER(libxml/tree.h,, HAVE_XML2=no, /**/)
316 if test "x$HAVE_XML2" = "xyes"; then
317   AC_DEFINE(HAVE_XML2, 1,
318             [Define to 1 if you have libxml2 library and header file])
319   M17N_EXT_LIBS="$M17N_EXT_LIBS xml2"
320 else
321   XML2_LD_FLAGS=
322   CPPFLAGS="$save_CPPFLAGS"
323 fi
324 LIBS="$save_LIBS"
325 AC_SUBST(XML2_LD_FLAGS)
326
327 dnl Check for Anthy usability.
328
329 PKG_CHECK_MODULES(ANTHY, anthy, HAVE_ANTHY=yes, HAVE_ANTHY=no)
330 if test "x$HAVE_ANTHY" = "xyes"; then
331   AC_DEFINE(HAVE_ANTHY, 1,
332            [Define to 1 if you have Anthy library and header file])
333   M17N_EXT_LIBS="$M17N_EXT_LIBS anthy"
334   ANTHY_LD_FLAGS="$ANTHY_LIBS"
335   CONFIG_FLAGS="$CONFIG_FLAGS -DHAVE_ANTHY"
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 po/Makefile.in intl/Makefile
435                  src/Makefile
436                  example/Makefile
437                  m17n-config
438                  m17n-core.pc
439                  m17n-shell.pc
440                  m17n-flt.pc
441                  m17n-gui.pc
442                  ])
443
444 dnl if test "x$XOM" = "xyes"; then
445 dnl  AC_CONFIG_FILES(omM17N/Makefile)
446 dnl fi
447
448 AC_OUTPUT
449
450 echo "The m17n library is configured with these external libraries."
451 echo " $M17N_EXT_LIBS"
452
453 dnl Local Variables:
454 dnl comment-start: "dnl "
455 dnl comment-end: ""
456 dnl comment-start-skip: "\\bdnl\\b\\s *"
457 dnl End: