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