*** 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, 2005, 2006, 2007, 2008, 2009, 2010
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.6.1],[m17n-lib-bug@m17n.org])
27 AC_CONFIG_MACRO_DIR([m4])
28 AM_INIT_AUTOMAKE
29 AC_CONFIG_HEADERS([src/config.h])
30 AM_MAINTAINER_MODE
31
32 API_VERSION=4:0:4
33 AC_SUBST(API_VERSION)
34
35 # The earliest version that this release has binary compatibility
36 # with.  This is used for module locations.
37 M17N_BINARY_VERSION=1.0
38
39 M17N_MODULE_DIR="m17n/$M17N_BINARY_VERSION"
40 AC_SUBST(M17N_MODULE_DIR)
41
42
43 dnl Checks for programs for compiling.
44 AC_PROG_CC
45 AC_GNU_SOURCE
46
47 AM_GNU_GETTEXT
48 AM_GNU_GETTEXT_VERSION([0.17])
49 GETTEXTDIR="$datadir/locale"
50 AC_SUBST(GETTEXTDIR)
51
52 AC_PROG_LIBTOOL
53 dnl LT_PREREQ([2.2.4])
54 dnl LT_INIT
55
56 dnl Checks for X libraries.
57 AC_PATH_XTRA
58
59 dnl Checks for standard header files.
60 AC_HEADER_STDC
61 AC_HEADER_DIRENT
62 AC_HEADER_TIME
63 AC_CHECK_HEADERS([fcntl.h langinfo.h limits.h locale.h stdlib.h \
64                           string.h strings.h sys/time.h unistd.h])
65 AC_CHECK_HEADER(X11/Xaw/Command.h, HAVE_XAW=yes)
66
67 dnl Checks for typedefs, structures, and compiler characteristics.
68 AC_C_CONST
69 AC_C_INLINE
70 AC_TYPE_SIZE_T
71 AC_STRUCT_TM
72
73 dnl Checks for endian.  This influence the default UTF-16 definition.
74 AC_C_BIGENDIAN
75
76 dnl Checks for library functions.
77 AC_FUNC_ALLOCA
78 AC_FUNC_MALLOC
79 AC_FUNC_REALLOC
80 AC_FUNC_MEMCMP
81 AC_FUNC_STAT
82 AC_FUNC_STRCOLL
83 AC_FUNC_STRFTIME
84 AC_FUNC_STRTOD
85 AC_CHECK_FUNCS(memmove memset nl_langinfo putenv regcomp setlocale)
86 AC_CHECK_FUNCS(strchr strdup gettimeofday)
87
88 dnl Checks where the m17n database is installed.
89
90 AC_CHECK_PROG(HAVE_M17N_DB, m17n-db, yes)
91 if test "x$HAVE_M17N_DB" = "xyes"; then
92   M17NDIR=`m17n-db`
93 else
94   M17NDIR="${datadir}/m17n"
95 fi
96 AC_SUBST(M17NDIR)
97
98 dnl Checks which levels of APIs should be compiled.
99
100 AC_ARG_ENABLE(gui,
101               AS_HELP_STRING([--enable-gui],[enable GUI level APIs (default is YES)]))
102
103 AM_CONDITIONAL(WITH_GUI, test x$with_gui != xno)
104
105 if test x$with_gui != xno; then
106
107 dnl Checks if dlopen exists, and if it's in libc or libdl.
108
109 AC_SEARCH_LIBS(dlopen, dl,
110                AC_DEFINE(HAVE_DLOPEN, 1,
111                [Define to 1 if you have the function dlopen.]))
112
113 dnl Check several libraries without adding -lxxx to LIBS, without
114 dnl defining HAVE_LIBXXX nor HAVE_XXX_H because they are used only by
115 dnl some libraries (e.g. libm17n-X.so).  Instead, define XXX_LD_FLAGS
116 dnl and HAVE_XXX if library XXX is available.  CPPFLAGS will be
117 dnl augmented.
118
119 M17N_EXT_LIBS=
120
121 AC_CHECK_PROG(HAVE_PKG_CONFIG, pkg-config, yes)
122
123 if test "x$no_x" != "xyes"; then
124   AC_DEFINE(HAVE_X11, 1, [Define to 1 if you have X11.])
125   X11_LD_FLAGS="-lXt -lX11"
126   M17N_EXT_LIBS="$M17N_EXT_LIBS X11"
127
128   if test "x$HAVE_XAW" = "xyes"; then
129     AC_DEFINE(HAVE_X11_XAW_COMMAND_H, 1,
130               [Define to 1 if you have the Xaw header files.])
131     XAW_LD_FLAGS="-lXaw -lXmu"
132     CONFIG_FLAGS="$CONFIG_FLAGS -DHAVE_X11_XAW_COMMAND_H"
133     M17N_EXT_LIBS="$M17N_EXT_LIBS Xaw"
134   fi
135 fi
136 AC_SUBST(X11_LD_FLAGS)
137 AC_SUBST(XAW_LD_FLAGS)
138
139 dnl Check for fribidi library.
140 save_CPPFLAGS="$CPPFLAGS"
141 save_LIBS="$LIBS"
142 AC_CHECK_PROG(HAVE_FRIBIDI_CONFIG, fribidi-config, yes)
143 if test "x$HAVE_FRIBIDI_CONFIG" = "xyes"; then
144   CPPFLAGS="$CPPFLAGS `fribidi-config --cflags`"
145   FRIBIDI_LD_FLAGS="`fribidi-config --libs`"
146   LIBS="$LIBS $FRIBIDI_LD_FLAGS"
147 else
148   FRIBIDI_LD_FLAGS=-lfribidi
149 fi
150 AC_CHECK_LIB(fribidi, fribidi_set_mirroring, HAVE_FRIBIDI=yes, HAVE_FRIBIDI=no)
151 AC_CHECK_HEADER(fribidi/fribidi.h,, HAVE_FRIBIDI=no)
152 if test "x$HAVE_FRIBIDI" = "xyes"; then
153   AC_DEFINE(HAVE_FRIBIDI, 1, 
154             [Define to 1 if you have Fribidi library and header file.])
155   M17N_EXT_LIBS="$M17N_EXT_LIBS fribidi"
156 else
157   CPPFLAGS="$save_CPPFLAGS"
158   FRIBIDI_LD_FLAGS=
159 fi
160 LIBS="$save_LIBS"
161 AC_SUBST(FRIBIDI_LD_FLAGS)
162
163 dnl Check for otflib usability.
164 AC_ARG_WITH(libotf, 
165             AS_HELP_STRING([--with-libotf],[with OpenType font suport (default is YES)]))
166
167 if test "x$with_libotf" != "xno"; then
168   save_CPPFLAGS="$CPPFLAGS"
169   save_LIBS="$LIBS"
170   AC_CHECK_PROG(HAVE_OTFLIB_CONFIG, libotf-config, yes)
171   if test "x$HAVE_OTFLIB_CONFIG" = "xyes"; then
172     CPPFLAGS="$CPPFLAGS `libotf-config --cflags`"
173     OTF_LD_FLAGS="`libotf-config --libs`"
174     LIBS="$LIBS $OTF_LD_FLAGS"
175   else
176     OTF_LD_FLAGS=-lotf
177   fi
178   ## We check the availability of OTF_check_features
179   ## because we need libotf-0.9.4 or the later.
180   AC_CHECK_LIB(otf, OTF_check_features, HAVE_OTF=yes, HAVE_OTF=no)
181   AC_CHECK_HEADER(otf.h,, HAVE_OTF=no)
182   if test "x$HAVE_OTF" = "xyes"; then
183     AC_DEFINE(HAVE_OTF, 1, 
184               [Define to 1 if you have OTF library and header file.])
185     M17N_EXT_LIBS="$M17N_EXT_LIBS libotf"
186     AC_CHECK_LIB(otf, OTF_drive_gpos2, HAVE_OTF_DRIVE_GPOS2=yes,
187                  HAVE_OTF_DRIVE_GPOS2=no)
188     if test "x$HAVE_OTF_DRIVE_GPOS2" = "xyes"; then
189       AC_DEFINE(HAVE_OTF_DRIVE_GPOS2, 1,
190                 [Define to 1 if the OTF library has OTF_drive_gpos2().])
191     fi
192   else
193     CPPFLAGS="$save_CPPFLAGS"
194     OTF_LD_FLAGS=
195   fi
196   LIBS="$save_LIBS"
197 fi
198 AC_SUBST(OTF_LD_FLAGS)
199
200 dnl Check for Freetype2 usability.
201 AC_CHECK_PROG(HAVE_FREETYPE_CONFIG, freetype-config, yes)
202 if test "x$HAVE_FREETYPE_CONFIG" = "xyes"; then
203   FREETYPE_INC=`freetype-config --cflags`
204   save_CPPFLAGS="$CPPFLAGS"
205   CPPFLAGS="$CPPFLAGS $FREETYPE_INC"
206   AC_CHECK_HEADER(ft2build.h, HAVE_FREETYPE=yes,
207                               HAVE_FREETYPE=no CPPFLAGS="$save_CPPFLAGS")
208   if test "x$HAVE_FREETYPE" = "xyes" ; then
209     save_LIBS="$LIBS"
210     LIBS="$LIBS `freetype-config --libs`"
211     AC_CHECK_LIB(freetype, FT_Init_FreeType, HAVE_FREETYPE=yes,
212                                              HAVE_FREETYPE=no)
213     LIBS="$save_LIBS"
214     if test "x$HAVE_FREETYPE" = "xyes"; then
215       FREETYPE_LD_FLAGS=`freetype-config --libs`
216       AC_DEFINE(HAVE_FREETYPE, 1, 
217                 [Define to 1 if you have FreeType library and header file.])
218       M17N_EXT_LIBS="$M17N_EXT_LIBS freetype"
219       AC_CHECK_HEADER(freetype/ftbdf.h, HAVE_FTBDF_H=yes, HAVE_FTBDF_H=no,
220                       [#include <ft2build.h>
221 #include FT_FREETYPE_H])
222       if test "x$HAVE_FTBDF_H" = "xyes"; then
223         AC_DEFINE(HAVE_FTBDF_H, 1,
224                   [Define to 1 if you have freetype/ftbdf.h.])
225       fi
226       CONFIG_FLAGS="$CONFIG_FLAGS -DHAVE_FREETYPE"
227     fi
228   fi
229 fi
230 AC_SUBST(FREETYPE_LD_FLAGS)
231
232 dnl Check for Xft2 usability.
233 save_CPPFLAGS="$CPPFLAGS"
234 save_LIBS="$LIBS"
235 XFT2_LD_FLAGS="-lXft -lfreetype -lfontconfig -lXrender -lX11"
236 AC_CHECK_PROG(HAVE_XFT_CONFIG, xft-config, yes)
237 if test "x$HAVE_XFT_CONFIG" = "xyes"; then
238   CPPFLAGS="$CPPFLAGS `xft-config --cflags`"
239   XFT2_LD_FLAGS="`xft-config --libs`"
240 elif test "x$HAVE_PKG_CONFIG" = "xyes" ; then
241   if pkg-config xft ; then
242     CPPFLAGS="$CPPFLAGS `pkg-config --cflags xft`"
243     XFT2_LD_FLAGS="`pkg-config --libs xft`"
244   fi
245 fi
246 LIBS="$LIBS $XFT2_LD_FLAGS"
247 AC_CHECK_LIB(Xft, XftDrawCreate, HAVE_XFT2=yes, HAVE_XFT2=no)
248 AC_CHECK_HEADER(X11/Xft/Xft.h,, HAVE_XFT2=no, 
249                 [#include <X11/Xft/Xft.h>
250 #if XftVersion >= 20000
251 #else
252 Version too old.  Compiling this line should fail.
253 #endif])
254 if test "x$HAVE_XFT2" = "xyes"; then
255   AC_DEFINE(HAVE_XFT2, 1,
256             [Define to 1 if you have Xft2 library and header file.])
257   M17N_EXT_LIBS="$M17N_EXT_LIBS xft2"
258 else
259   XFT2_LD_FLAGS=
260   CPPFLAGS="$save_CPPFLAGS"
261 fi
262 LIBS="$save_LIBS"
263 AC_SUBST(XFT2_LD_FLAGS)
264
265 dnl Check for fontconfig usability.
266 AC_ARG_WITH(fontconfig,
267             AS_HELP_STRING([--with-fontconfig],[with FontConfig library (default is YES)]))
268 if test "x$with_fontconfig" != "xno"; then
269   save_CPPFLAGS="$CPPFLAGS"
270   save_LIBS="$LIBS"
271   FONTCONFIG_LD_FLAGS=-lfontconfig
272   if test "x$HAVE_PKG_CONFIG" = "xyes"; then
273     if pkg-config --exists fontconfig; then
274       CPPFLAGS="$CPPFLAGS `pkg-config --cflags fontconfig`"
275       FONTCONFIG_LD_FLAGS="`pkg-config --libs fontconfig`"
276       LIBS="$LIBS $FONTCONFIG_LD_FLAGS"
277     fi
278   fi
279   AC_CHECK_LIB(fontconfig, FcInit, HAVE_FONTCONFIG=yes, HAVE_FONTCONFIG=no)
280   AC_CHECK_HEADER(fontconfig/fontconfig.h, , HAVE_FONTCONFIG=no)
281   if test "x$HAVE_FONTCONFIG" = "xyes"; then
282     AC_DEFINE(HAVE_FONTCONFIG, 1,
283               [Define to 1 if you have fontconfig library and header file.])
284     M17N_EXT_LIBS="$M17N_EXT_LIBS fontconfig"
285   else
286     FONTCONFIG_LD_FLAGS=
287     CPPFLAGS="$save_CPPFLAGS"
288   fi
289   LIBS="$save_LIBS"
290 fi
291 AC_SUBST(FONTCONFIG_LD_FLAGS)
292
293 dnl Check for gdlib usability.
294 AC_ARG_WITH(gd, 
295             AS_HELP_STRING([--with-gd],[suport graphic device by GD library (default is YES)]))
296
297 if test "x$with_gd" != "xno"; then
298   save_LIBS="$LIBS"
299   AC_CHECK_LIB(gd, gdImageCreate, HAVE_GD=yes, HAVE_GD=no)
300   AC_CHECK_HEADER(gd.h, , HAVE_GD=no)
301   if test "x$HAVE_GD" = "xyes"; then
302     AC_CHECK_LIB(gd, gdImageCreateTrueColor, HAVE_GD=2, HAVE_GD=1)
303     AC_DEFINE_UNQUOTED(HAVE_GD, $HAVE_GD,
304               [Define to 1 or 2 if you have gd library and header file.])
305     M17N_EXT_LIBS="$M17N_EXT_LIBS gdlib"
306     GD_LD_FLAGS=-lgd
307     CONFIG_FLAGS="$CONFIG_FLAGS -DHAVE_GD=$HAVE_GD"
308   fi
309   LIBS="$save_LIBS"
310 fi
311 AC_SUBST(GD_LD_FLAGS)
312
313 fi
314
315 dnl Check for libxml2 usability.
316 save_CPPFLAGS="$CPPFLAGS"
317 save_LIBS="$LIBS"
318 AC_CHECK_PROG(HAVE_XML2_CONFIG, xml2-config, yes)
319 if test "x$HAVE_XML2_CONFIG" = "xyes"; then
320   CPPFLAGS="$CPPFLAGS `xml2-config --cflags`"
321   XML2_LD_FLAGS="`xml2-config --libs`"
322   LIBS="$LIBS $XML2_LD_FLAGS"
323 else
324   CPPFLAGS="$CPPFLAGS -I/usr/include/libxml2"
325   XML2_LD_FLAGS="-lxml2 -lz -lpthread -lm"
326 fi
327 AC_CHECK_LIB(xml2, xmlParseMemory, HAVE_XML2=yes, HAVE_XML2=no)
328 AC_CHECK_HEADER(libxml/tree.h,, HAVE_XML2=no, /**/)
329 if test "x$HAVE_XML2" = "xyes"; then
330   AC_DEFINE(HAVE_XML2, 1,
331             [Define to 1 if you have libxml2 library and header file])
332   M17N_EXT_LIBS="$M17N_EXT_LIBS xml2"
333 else
334   XML2_LD_FLAGS=
335   CPPFLAGS="$save_CPPFLAGS"
336 fi
337 LIBS="$save_LIBS"
338 AC_SUBST(XML2_LD_FLAGS)
339
340 dnl Check for Anthy usability.
341
342 PKG_CHECK_MODULES(ANTHY, anthy, HAVE_ANTHY=yes, HAVE_ANTHY=no)
343 if test "x$HAVE_ANTHY" = "xyes"; then
344   AC_DEFINE(HAVE_ANTHY, 1,
345            [Define to 1 if you have Anthy library and header file])
346   M17N_EXT_LIBS="$M17N_EXT_LIBS anthy"
347   ANTHY_LD_FLAGS="$ANTHY_LIBS"
348   CONFIG_FLAGS="$CONFIG_FLAGS -DHAVE_ANTHY"
349 fi
350 AC_SUBST(ANTHY_LD_FLAGS)
351
352 dnl Check for Ispell usability.
353 AC_CHECK_PROG(HAVE_ISPELL, ispell, yes)
354 if test "x$HAVE_ISPELL" = "xyes"; then
355   AC_DEFINE(HAVE_ISPELL, 1, [Define if ispell is available.])
356   M17N_EXT_LIBS="$M17N_EXT_LIBS ispell"
357   CONFIG_FLAGS="$CONFIG_FLAGS -DHAVE_ISPELL"
358 fi
359
360 dnl Check for Thai word-segmentation library.
361 dnl If we have one, define HAVE_THAI_WORDSEG and one of these:
362 dnl   HAVE_LIBTHAI, HAVE_WORDCUT, or HAVE_WORDCUT_OLD
363 dnl In addition, set THAI_WORDSEG_LD_FLAGS to a proper value.
364
365 PKG_CHECK_MODULES(LIBTHAI, libthai, HAVE_LIBTHAI=yes, HAVE_LIBTHAI=no)
366 PKG_CHECK_MODULES(WORDCUT, wordcut, HAVE_WORDCUT=yes, HAVE_WORDCUT=no)
367
368 if test "x$HAVE_LIBTHAI" == "xyes"; then
369
370   AC_DEFINE(HAVE_LIBTHAI, 1, [Define if you have libthai])
371   THAI_WORDSEG_LD_FLAGS="$LIBTHAI_LIBS"
372   M17N_EXT_LIBS="$M17N_EXT_LIBS libthai"
373   HAVE_THAI_WORDSEG=yes
374
375 elif test "x$HAVE_WORDCUT" = "xyes"; then
376
377   save_CPPFLAGS="$CPPFLAGS"
378   CPPFLAGS="$CPPFLAGS $WORDCUT_CFLAGS"
379   AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <wordcut/wcwordcut.h>]])],[],[HAVE_WORDCUT=no])
380   if test "x$HAVE_WORDCUT" = "xno"; then
381     PKG_CHECK_MODULES(GLIB_2_0, glib-2.0, HAVE_GLIB_2_0=yes, HAVE_GLIB_2_0=no)
382     if test "x$HAVE_GLIB_2_0" = "xyes"; then
383       CPPFLAGS="$CPPFLAGS $GLIB_2_0_CFLAGS"
384       AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <wordcut/wcwordcut.h>]])],[HAVE_WORDCUT=yes],[])
385     fi
386   fi
387   if test "x$HAVE_WORDCUT" = "xyes"; then
388     THAI_WORDSEG_LD_FLAGS="$WORDCUT_LIBS"
389     AC_DEFINE(HAVE_WORDCUT, 1,
390               [Define if you have the wordcut library and header file])
391     M17N_EXT_LIBS="$M17N_EXT_LIBS wordcut"
392     HAVE_THAI_WORDSEG=yes
393   else
394     CPPFLAGS="$save_CPPFLAGS"
395   fi
396
397 else
398
399   AC_CHECK_LIB(wordcut, wordcut_init, HAVE_WORDCUT_OLD=yes)
400   if test "x$HAVE_WORDCUT_OLD" = "xyes"; then
401     if test -f "/usr/share/wordcut/tdict.wcd"; then
402       tdict="/usr/share/wordcut/tdict.wcd"
403     elif test -f "/usr/local/share/wordcut/tdict.wcd"; then
404       tdict="/usr/local/share/wordcut/tdict.wcd"
405     fi
406     echo "TDICT=$tdict"
407     if test "x$tdict" != "x"; then
408       AC_DEFINE(HAVE_WORDCUT_OLD, 1,
409                 [Define if you have the old version of wordcut library])
410       AC_DEFINE_UNQUOTED(WORDCUT_TDICT, "$tdict", [Define tdict file name])
411       THAI_WORDSEG_LD_FLAGS=-lwordcut
412       M17N_EXT_LIBS="$M17N_EXT_LIBS wordcut-old"
413       HAVE_THAI_WORDSEG=yes
414     else
415       HAVE_WORDCUT=no
416     fi
417   fi
418 fi  
419
420 if test "x$HAVE_THAI_WORDSEG" = "xyes"; then
421   AC_DEFINE(HAVE_THAI_WORDSEG, 1,
422             [Define if you have some Thai word-segmentation library])
423 fi
424 AC_SUBST(THAI_WORDSEG_LD_FLAGS)
425
426 AC_SUBST(CONFIG_FLAGS)
427
428 dnl We can't include X_CFLAGS in AM_CPPFLAGS because the generated
429 dnl Makefile put ${AM_CPPFLAGS} before ${CPPFLAGS} and that leads to
430 dnl inclusion of an incorrect header file.  So, append X_CFLAGS to
431 dnl CPPFLAGS here directly.
432
433 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
434
435 dnl AC_ARG_ENABLE(xom, 
436 dnl           [  --enable-xom            build and install XOM library.],
437 dnl           XOM="$enableval")
438
439 SHLIB_EXT=".so"
440 case $host_os in
441 darwin* | rhapsody*)
442   SHLIB_EXT=".dylib";;
443 esac
444 AC_DEFINE_UNQUOTED(DLOPEN_SHLIB_EXT, "$SHLIB_EXT",
445                    [Define to loadable module extention])
446
447 AC_CONFIG_FILES([Makefile intl/Makefile po/Makefile.in
448                  src/Makefile
449                  example/Makefile
450                  m17n-config
451                  m17n-core.pc
452                  m17n-shell.pc
453                  m17n-flt.pc
454                  m17n-gui.pc
455                  ])
456
457 dnl if test "x$XOM" = "xyes"; then
458 dnl  AC_CONFIG_FILES(omM17N/Makefile)
459 dnl fi
460
461 AC_OUTPUT
462
463 echo "The m17n library is configured with these external libraries."
464 echo " $M17N_EXT_LIBS"
465
466 dnl Local Variables:
467 dnl comment-start: "dnl "
468 dnl comment-end: ""
469 dnl comment-start-skip: "\\bdnl\\b\\s *"
470 dnl End: