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