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