Fix previous change.
[m17n/m17n-lib.git] / configure.ac
1 dnl configure.ac -- autoconf script for the m17n library.
2
3 dnl Copyright (C) 2003, 2004
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.2.0, m17n-lib-bug@m17n.org)
27 AM_INIT_AUTOMAKE(m17n-lib, 1.2.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
49 dnl Checks for typedefs, structures, and compiler characteristics.
50 AC_C_CONST
51 AC_C_INLINE
52 AC_TYPE_SIZE_T
53 AC_STRUCT_TM
54
55 dnl Checks for endian.  This influence the default UTF-16 definition.
56 AC_C_BIGENDIAN
57
58 dnl Checks for library functions.
59 AC_FUNC_ALLOCA
60 AC_FUNC_MALLOC
61 AC_FUNC_REALLOC
62 AC_FUNC_MEMCMP
63 AC_FUNC_STAT
64 AC_FUNC_STRCOLL
65 AC_FUNC_STRFTIME
66 AC_FUNC_STRTOD
67 AC_CHECK_FUNCS(memmove memset nl_langinfo putenv regcomp setlocale)
68 AC_CHECK_FUNCS(strchr strdup gettimeofday)
69
70 dnl Checks where the m17n database is installed.
71
72 AC_CHECK_PROG(HAVE_M17N_DB, m17n-db, yes)
73 if test "x$HAVE_M17N_DB" = "xyes"; then
74   M17NDIR=`m17n-db`
75 else
76   M17NDIR="${datadir}/m17n"
77 fi
78 AC_SUBST(M17NDIR)
79
80
81 dnl Checks if dlopen exists, and if it's in libc or libdl.
82
83 AC_SEARCH_LIBS(dlopen, dl,
84                AC_DEFINE(HAVE_DLOPEN, 1,
85                [Define to 1 if you have the funciton dlopen.]))
86
87 dnl Check several libraries without adding -lxxx to LIBS, without
88 dnl defining HAVE_LIBXXX nor HAVE_XXX_H because they are used only by
89 dnl some libraries (e.g. libm17n-X.so).  Instead, define XXX_LD_FLAGS
90 dnl and HAVE_XXX if library XXX is available.  CPPFLAGS will be
91 dnl augmented.
92
93 M17N_EXT_LIBS=
94
95 dnl Check for fribidi library.
96 save_CPPFLAGS="$CPPFLAGS"
97 save_LIBS="$LIBS"
98 AC_CHECK_PROG(HAVE_FRIBIDI_CONFIG, fribidi-config, yes)
99 if test "$HAVE_FRIBIDI_CONFIG" = "xyes"; then
100   CPPFLAGS="$CPPFLAGS `fribidi-config --cflags`"
101   FRIBIDI_LD_FLAGS="`fribidi-config --libs`"
102   LIBS="$LIBS $FRIBIDI_LD_FLAGS"
103 else
104   FRIBIDI_LD_FLAGS=-lfribidi
105 fi
106 AC_CHECK_LIB(fribidi, fribidi_set_mirroring, HAVE_FRIBIDI=yes, HAVE_FRIBIDI=no)
107 AC_CHECK_HEADER(fribidi/fribidi.h,, HAVE_FRIBIDI=no)
108 if test "x$HAVE_FRIBIDI" = "xyes"; then
109   AC_DEFINE(HAVE_FRIBIDI, 1, 
110             [Define to 1 if you have Fribidi library and header file.])
111   M17N_EXT_LIBS="$M17N_EXT_LIBS fribidi"
112 else
113   CPPFLAGS="$save_CPPFLAGS"
114   FRIBIDI_LD_FLAGS=
115 fi
116 LIBS="$save_LIBS"
117 AC_SUBST(FRIBIDI_LD_FLAGS)
118
119 dnl Check for otflib usability.
120 save_CPPFLAGS="$CPPFLAGS"
121 save_LIBS="$LIBS"
122 AC_CHECK_PROG(HAVE_OTFLIB_CONFIG, libotf-config, yes)
123 if test "x$HAVE_OTFLIB_CONFIG" = "xyes"; then
124   CPPFLAGS="$CPPFLAGS `libotf-config --cflags`"
125   OTF_LD_FLAGS="`libotf-config --libs`  "
126   LIBS="$LIBS $OTF_LD_FLAGS"
127 else
128   OTF_LD_FLAGS=-lotf
129 fi
130 AC_CHECK_LIB(otf, OTF_open, HAVE_OTF=yes, HAVE_OTF=no)
131 AC_CHECK_HEADER(otf.h,, HAVE_OTF=no)
132 CPPFLAGS="$save_CPPFLAGS"
133 if test "x$HAVE_OTF" = "xyes"; then
134   AC_DEFINE(HAVE_OTF, 1, 
135             [Define to 1 if you have OTF library and header file.])
136   M17N_EXT_LIBS="$M17N_EXT_LIBS libotf"
137 else
138   CPPFLAGS="$save_CPPFLAGS"
139   OTF_LD_FLAGS=
140 fi
141 LIBS="$save_LIBS"
142 AC_SUBST(OTF_LD_FLAGS)
143
144 dnl Check for Freetype2 usability.
145 AC_CHECK_PROG(HAVE_FREETYPE_CONFIG, freetype-config, yes)
146 if test "x$HAVE_FREETYPE_CONFIG" = "xyes"; then
147   FREETYPE_INC=`freetype-config --cflags`
148   save_CPPFLAGS="$CPPFLAGS"
149   CPPFLAGS="$CPPFLAGS $FREETYPE_INC"
150   AC_CHECK_HEADER(ft2build.h, HAVE_FREETYPE=yes,
151                               HAVE_FREETYPE=no CPPFLAGS="$save_CPPFLAGS")
152   if test "x$HAVE_FREETYPE" = "xyes" ; then
153     save_LIBS="$LIBS"
154     LIBS="$LIBS `freetype-config --libs`"
155     AC_CHECK_LIB(freetype, FT_Init_FreeType, HAVE_FREETYPE=yes,
156                                              HAVE_FREETYPE=no)
157     LIBS="$save_LIBS"
158     if test "x$HAVE_FREETYPE" = "xyes"; then
159       FREETYPE_LD_FLAGS=`freetype-config --libs`
160       AC_DEFINE(HAVE_FREETYPE, 1, 
161                 [Define to 1 if you have FreeType library and header file.])
162       M17N_EXT_LIBS="$M17N_EXT_LIBS freetype"
163       AC_CHECK_HEADER(freetype/ftbdf.h, HAVE_FTBDF_H=yes, HAVE_FTBDF_H=no,
164                       [#include <ft2build.h>
165 #include FT_FREETYPE_H])
166       if test "x$HAVE_FTBDF_H" = "xyes"; then
167         AC_DEFINE(HAVE_FTBDF_H, 1,
168                   [Define to 1 if you have freetype/ftbdf.h.])
169       fi
170     fi
171   fi
172 fi
173 AC_SUBST(FREETYPE_LD_FLAGS)
174
175 AC_CHECK_PROG(HAVE_PKG_CONFIG, pkg-config, yes)
176
177 dnl Check for Xft2 usability.
178 save_CPPFLAGS="$CPPFLAGS"
179 save_LIBS="$LIBS"
180 XFT2_LD_FLAGS="-lXft -lfreetype -lfontconfig -lXrender -lX11"
181 AC_CHECK_PROG(HAVE_XFT_CONFIG, xft-config, yes)
182 if test "x$HAVE_XFT_CONFIG" = "xyes"; then
183   CPPFLAGS="$CPPFLAGS `xft-config --cflags`"
184   XFT2_LD_FLAGS="`xft-config --libs`"
185 elif test "x$HAVE_PKG_CONFIG" = "xyes" ; then
186   if pkg-config xft ; then
187     CPPFLAGS="$CPPFLAGS `pkg-config --cflags xft`"
188     XFT2_LD_FLAGS="`pkg-config --libs xft`"
189   fi
190 fi
191 LIBS="$LIBS $XFT2_LD_FLAGS"
192 AC_CHECK_LIB(Xft, XftDrawCreate, HAVE_XFT2=yes, HAVE_XFT2=no)
193 AC_CHECK_HEADER(X11/Xft/Xft.h,, HAVE_XFT2=no, 
194                 [#include <X11/Xft/Xft.h>
195 #if XftVersion >= 20000
196 #else
197 Version too old.  Compiling this line should fail.
198 #endif])
199 if test "x$HAVE_XFT2" = "xyes"; then
200   AC_DEFINE(HAVE_XFT2, 1,
201             [Define to 1 if you have Xft2 library and header file.])
202   M17N_EXT_LIBS="$M17N_EXT_LIBS xft2"
203 else
204   XFT2_LD_FLAGS=
205   CPPFLAGS="$save_CPPFLAGS"
206 fi
207 LIBS="$save_LIBS"
208 AC_SUBST(XFT2_LD_FLAGS)
209
210 dnl Check for fontconfig usability.
211 save_CPPFLAGS="$CPPFLAGS"
212 save_LIBS="$LIBS"
213 FONTCONFIG_LD_FLAGS=-lfontconfig
214 if test "x$HAVE_PKG_CONFIG" = "xyes"; then
215   if pkg-config --exists fontconfig; then
216     CPPFLAGS="$CPPFLAGS `pkg-config --cflags fontconfig`"
217     FONTCONFIG_LD_FLAGS="`pkg-config --libs fontconfig`"
218     LIBS="$LIBS $FONTCONFIG_LD_FLAGS"
219   fi
220 fi
221 AC_CHECK_LIB(fontconfig, FcInit, HAVE_FONTCONFIG=yes, HAVE_FONTCONFIG=no)
222 AC_CHECK_HEADER(fontconfig/fontconfig.h, , HAVE_FONTCONFIG=no)
223 if test "x$HAVE_FONTCONFIG" = "xyes"; then
224   AC_DEFINE(HAVE_FONTCONFIG, 1,
225               [Define to 1 if you have fontconfig library and header file.])
226   M17N_EXT_LIBS="$M17N_EXT_LIBS fontconfig"
227 else
228   FONTCONFIG_LD_FLAGS=
229   CPPFLAGS="$save_CPPFLAGS"
230 fi
231 LIBS="$save_LIBS"
232 AC_SUBST(FONTCONFIG_LD_FLAGS)
233
234 dnl Check for gdlib usability.
235 save_LIBS="$LIBS"
236 AC_CHECK_LIB(gd, gdImageCreate, HAVE_GD=yes, HAVE_GD=no)
237 AC_CHECK_HEADER(gd.h, , HAVE_GD=no)
238 if test "x$HAVE_GD" = "xyes"; then
239   AC_CHECK_LIB(gd, gdImageCreateTrueColor, HAVE_GD=2, HAVE_GD=1)
240   AC_DEFINE_UNQUOTED(HAVE_GD, $HAVE_GD,
241             [Define to 1 or 2 if you have gd library and header file.])
242   M17N_EXT_LIBS="$M17N_EXT_LIBS gdlib"
243   GD_LD_FLAGS=-lgd
244 fi
245 LIBS="$save_LIBS"
246 AC_SUBST(GD_LD_FLAGS)
247
248 dnl Check for libxml2 usability.
249 save_CPPFLAGS="$CPPFLAGS"
250 save_LIBS="$LIBS"
251 AC_CHECK_PROG(HAVE_XML2_CONFIG, xml2-config, yes)
252 if test "x$HAVE_XML2_CONFIG" = "xyes"; then
253   CPPFLAGS="$CPPFLAGS `xml2-config --cflags`"
254   XML2_LD_FLAGS="`xml2-config --libs`"
255   LIBS="$LIBS $XML2_LD_FLAGS"
256 else
257   CPPFLAGS="$CPPFLAGS -I/usr/include/libxml2"
258   XML2_LD_FLAGS="-lxml2 -lz -lpthread -lm"
259 fi
260 AC_CHECK_LIB(xml2, xmlParseMemory, HAVE_XML2=yes, HAVE_XML2=no)
261 AC_CHECK_HEADER(libxml/tree.h,, HAVE_XML2=no, /**/)
262 if test "x$HAVE_XML2" = "xyes"; then
263   AC_DEFINE(HAVE_XML2, 1,
264             [Define to 1 if you have libxml2 library and header file])
265   M17N_EXT_LIBS="$M17N_EXT_LIBS xml2"
266 else
267   XML2_LD_FLAGS=
268   CPPFLAGS="$save_CPPFLAGS"
269 fi
270 LIBS="$save_LIBS"
271 AC_SUBST(XML2_LD_FLAGS)
272
273 dnl Check for Anthy usability.
274 AC_CHECK_LIB(anthydic, anthy_init_sessions, HAVE_ANTHY=yes, HAVE_ANTHY=no)
275 if test "x$HAVE_ANTHY" = "xyes"; then
276   AC_CHECK_LIB(anthy, anthy_init, HAVE_ANTHY=yes, HAVE_ANTHY=no, -lanthydic)
277   if test "x$HAVE_ANTHY" = "xyes"; then
278     AC_CHECK_HEADER(anthy/anthy.h, HAVE_ANTHY=yes, HAVE_ANTHY=no)
279     if test "x$HAVE_ANTHY" = "xyes"; then
280     AC_DEFINE(HAVE_ANTHY, 1,
281               [Define to 1 if you have Anthy library and header file])
282     M17N_EXT_LIBS="$M17N_EXT_LIBS anthy"
283     ANTHY_LD_FLAGS="-lanthy -lanthydic"
284     fi
285   fi
286 fi
287 AC_SUBST(ANTHY_LD_FLAGS)
288
289 dnl Check for Ispell usability.
290 AC_CHECK_PROG(HAVE_ISPELL, ispell, yes)
291 if test "x$HAVE_ISPELL" = "xyes"; then
292   AC_DEFINE(HAVE_ISPELL, 1, [Define if ispell is available.])
293   M17N_EXT_LIBS="$M17N_EXT_LIBS ispell"
294 fi
295
296 dnl Check for libwordcut (for Thai).
297 AC_CHECK_LIB(wordcut, wordcut_init, HAVE_WORDCUT=yes, HAVE_WORDCUT=no)
298 if test "x$HAVE_WORDCUT" = "xyes"; then
299   if test -f "/usr/share/wordcut/tdict.wcd"; then
300     tdict="/usr/share/wordcut/tdict.wcd"
301   elif test -f "/usr/local/share/wordcut/tdict.wcd"; then
302     tdict="/usr/local/share/wordcut/tdict.wcd"
303   fi
304   echo "TDICT=$tdict"
305   if test "x$tdict" != "x"; then
306     AC_DEFINE(HAVE_WORDCUT, 1,
307               [Define if you have the wordcut library and header file])
308     M17N_EXT_LIBS="$M17N_EXT_LIBS wordcut"
309     AC_DEFINE_UNQUOTED(WORDCUT_TDICT, "$tdict", [Define to tdict file name])
310     WORDCUT_LD_FLAGS=-lwordcut
311   fi
312 fi
313 AC_SUBST(WORDCUT_LD_FLAGS)
314
315 dnl We can't include X_CFLAGS in AM_CPPFLAGS because the generated
316 dnl Makefile put ${AM_CPPFLAGS} before ${CPPFLAGS} and that leads to
317 dnl inclusion of an incorrect header file.  So, append X_CFLAGS to
318 dnl CPPFLAGS here directly.
319
320 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
321
322 dnl AC_ARG_ENABLE(xom, 
323 dnl           [  --enable-xom            build and install XOM library.],
324 dnl           XOM="$enableval")
325
326 case $host_os in
327 darwin* | rhapsody*)
328   AC_DEFINE(DLOPEN_SHLIB_EXT, ".dylib",
329             [Define to loadable module extention]);;
330 esac
331
332 AC_CONFIG_FILES([Makefile
333                  src/Makefile
334                  example/Makefile
335                  m17n-config
336                  m17n-core.pc
337                  m17n-shell.pc
338                  m17n-gui.pc
339                  ])
340
341 dnl if test "x$XOM" = "xyes"; then
342 dnl  AC_CONFIG_FILES(omM17N/Makefile)
343 dnl fi
344
345 AC_OUTPUT
346
347 echo "The m17n library is configured with these external libraries."
348 echo " $M17N_EXT_LIBS"
349
350 dnl Local Variables:
351 dnl comment-start: "dnl "
352 dnl comment-end: ""
353 dnl comment-start-skip: "\\bdnl\\b\\s *"
354 dnl End: