Use pkg-config (if available) for Xft.
[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.1.0, m17n-lib-bug@m17n.org)
27 AM_INIT_AUTOMAKE(m17n-lib, 1.1.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 dnl Check for fribidi library.
94 save_CPPFLAGS="$CPPFLAGS"
95 save_LIBS="$LIBS"
96 AC_CHECK_PROG(HAVE_FRIBIDI_CONFIG, fribidi-config, yes)
97 if test "$HAVE_FRIBIDI_CONFIG" = "xyes"; then
98   CPPFLAGS="$CPPFLAGS `fribidi-config --cflags`"
99   FRIBIDI_LD_FLAGS="`fribidi-config --libs`"
100   LIBS="$LIBS $FRIBIDI_LD_FLAGS"
101 else
102   FRIBIDI_LD_FLAGS=-lfribidi
103 fi
104 AC_CHECK_LIB(fribidi, fribidi_set_mirroring, HAVE_FRIBIDI=yes, HAVE_FRIBIDI=no)
105 AC_CHECK_HEADER(fribidi/fribidi.h,, HAVE_FRIBIDI=no)
106 if test "x$HAVE_FRIBIDI" = "xyes"; then
107   AC_DEFINE(HAVE_FRIBIDI, 1, 
108             [Define to 1 if you have Fribidi library and header file.])
109 else
110   CPPFLAGS="$save_CPPFLAGS"
111   FRIBIDI_LD_FLAGS=
112 fi
113 LIBS="$save_LIBS"
114 AC_SUBST(FRIBIDI_LD_FLAGS)
115
116 dnl Check for otflib usability.
117 save_CPPFLAGS="$CPPFLAGS"
118 save_LIBS="$LIBS"
119 AC_CHECK_PROG(HAVE_OTFLIB_CONFIG, libotf-config, yes)
120 if test "x$HAVE_OTFLIB_CONFIG" = "xyes"; then
121   CPPFLAGS="$CPPFLAGS `libotf-config --cflags`"
122   OTF_LD_FLAGS="`libotf-config --libs`  "
123   LIBS="$LIBS $OTF_LD_FLAGS"
124 else
125   OTF_LD_FLAGS=-lotf
126 fi
127 AC_CHECK_LIB(otf, OTF_open, HAVE_OTF=yes, HAVE_OTF=no)
128 AC_CHECK_HEADER(otf.h,, HAVE_OTF=no)
129 CPPFLAGS="$save_CPPFLAGS"
130 if test "x$HAVE_OTF" = "xyes"; then
131   AC_DEFINE(HAVE_OTF, 1, 
132             [Define to 1 if you have OTF library and header file.])
133 else
134   CPPFLAGS="$save_CPPFLAGS"
135   OTF_LD_FLAGS=
136 fi
137 LIBS="$save_LIBS"
138 AC_SUBST(OTF_LD_FLAGS)
139
140 dnl Check for Freetype2 usability.
141 AC_CHECK_PROG(HAVE_FREETYPE_CONFIG, freetype-config, yes)
142 if test "x$HAVE_FREETYPE_CONFIG" = "xyes"; then
143   FREETYPE_INC=`freetype-config --cflags`
144   save_CPPFLAGS="$CPPFLAGS"
145   CPPFLAGS="$CPPFLAGS $FREETYPE_INC"
146   AC_CHECK_HEADER(ft2build.h, HAVE_FREETYPE=yes,
147                               HAVE_FREETYPE=no CPPFLAGS="$save_CPPFLAGS")
148   if test "x$HAVE_FREETYPE" = "xyes" ; then
149     save_LIBS="$LIBS"
150     LIBS="$LIBS `freetype-config --libs`"
151     AC_CHECK_LIB(freetype, FT_Init_FreeType, HAVE_FREETYPE=yes,
152                                              HAVE_FREETYPE=no)
153     LIBS="$save_LIBS"
154     if test "x$HAVE_FREETYPE" = "xyes"; then
155       FREETYPE_LD_FLAGS=`freetype-config --libs`
156       AC_DEFINE(HAVE_FREETYPE, 1, 
157                 [Define to 1 if you have FreeType library and header file.])
158     fi
159   fi
160 fi
161 AC_SUBST(FREETYPE_LD_FLAGS)
162
163 AC_CHECK_PROG(HAVE_PKG_CONFIG, pkg-config, yes)
164
165 dnl Check for Xft2 usability.
166 save_CPPFLAGS="$CPPFLAGS"
167 save_LIBS="$LIBS"
168 XFT2_LD_FLAGS="-lXft -lfreetype -lfontconfig -lXrender -lX11"
169 AC_CHECK_PROG(HAVE_XFT_CONFIG, xft-config, yes)
170 if test "x$HAVE_XFT_CONFIG" = "xyes"; then
171   CPPFLAGS="$CPPFLAGS `xft-config --cflags`"
172   XFT2_LD_FLAGS="`xft-config --libs`"
173 elif test "x$HAVE_PKG_CONFIG" = "xyes" ; then
174   if pkg-config xft ; then
175     CPPFLAGS="$CPPFLAGS `pkg-config --cflags xft`"
176     XFT2_LD_FLAGS="`pkg-config --libs xft`"
177   fi
178 fi
179 LIBS="$LIBS $XFT2_LD_FLAGS"
180 AC_CHECK_LIB(Xft, XftDrawCreate, HAVE_XFT2=yes, HAVE_XFT2=no)
181 AC_CHECK_HEADER(X11/Xft/Xft.h,, HAVE_XFT2=no, 
182                 [#include <X11/Xft/Xft.h>
183 #if XftVersion >= 20000
184 #else
185 Version too old.  Compiling this line should fail.
186 #endif])
187 if test "x$HAVE_XFT2" = "xyes"; then
188   AC_DEFINE(HAVE_XFT2, 1,
189             [Define to 1 if you have Xft2 library and header file.])
190 else
191   XFT2_LD_FLAGS=
192   CPPFLAGS="$save_CPPFLAGS"
193 fi
194 LIBS="$save_LIBS"
195 AC_SUBST(XFT2_LD_FLAGS)
196
197 dnl Check for fontconfig usability.
198 save_CPPFLAGS="$CPPFLAGS"
199 save_LIBS="$LIBS"
200 FONTCONFIG_LD_FLAGS=-lfontconfig
201 if test "x$HAVE_PKG_CONFIG" = "xyes"; then
202   if pkg-config --exists fontconfig; then
203     CPPFLAGS="$CPPFLAGS `pkg-config --cflags fontconfig`"
204     FONTCONFIG_LD_FLAGS="`pkg-config --libs fontconfig`"
205     LIBS="$LIBS $FONTCONFIG_LD_FLAGS"
206   fi
207 fi
208 AC_CHECK_LIB(fontconfig, FcInit, HAVE_FONTCONFIG=yes, HAVE_FONTCONFIG=no)
209 AC_CHECK_HEADER(fontconfig/fontconfig.h, , HAVE_FONTCONFIG=no)
210 if test "x$HAVE_FONTCONFIG" = "xyes"; then
211   AC_DEFINE(HAVE_FONTCONFIG, 1,
212               [Define to 1 if you have fontconfig library and header file.])
213 else
214   FONTCONFIG_LD_FLAGS=
215   CPPFLAGS="$save_CPPFLAGS"
216 fi
217 LIBS="$save_LIBS"
218 AC_SUBST(FONTCONFIG_LD_FLAGS)
219
220 dnl Check for gdlib usability.
221 save_LIBS="$LIBS"
222 AC_CHECK_LIB(gd, gdImageCreate, HAVE_GD=yes, HAVE_GD=no)
223 AC_CHECK_HEADER(gd.h, , HAVE_GD=no)
224 if test "x$HAVE_GD" = "xyes"; then
225   AC_CHECK_LIB(gd, gdImageCreateTrueColor, HAVE_GD=2, HAVE_GD=1)
226   AC_DEFINE_UNQUOTED(HAVE_GD, $HAVE_GD,
227             [Define to 1 if you have gd library and header file.])
228   GD_LD_FLAGS=-lgd
229 fi
230 LIBS="$save_LIBS"
231 AC_SUBST(GD_LD_FLAGS)
232
233 dnl Check for libxml2 usability.
234 save_CPPFLAGS="$CPPFLAGS"
235 save_LIBS="$LIBS"
236 AC_CHECK_PROG(HAVE_XML2_CONFIG, xml2-config, yes)
237 if test "x$HAVE_XML2_CONFIG" = "xyes"; then
238   CPPFLAGS="$CPPFLAGS `xml2-config --cflags`"
239   XML2_LD_FLAGS="`xml2-config --libs`"
240   LIBS="$LIBS $XML2_LD_FLAGS"
241 else
242   CPPFLAGS="$CPPFLAGS -I/usr/include/libxml2"
243   XML2_LD_FLAGS="-lxml2 -lz -lpthread -lm"
244 fi
245 AC_CHECK_LIB(xml2, xmlParseMemory, HAVE_XML2=yes, HAVE_XML2=no)
246 AC_CHECK_HEADER(libxml/tree.h,, HAVE_XML2=no, /**/)
247 if test "x$HAVE_XML2" = "xyes"; then
248   AC_DEFINE(HAVE_XML2, 1,
249             [Define to 1 if you have libxml2 library and header file])
250 else
251   XML2_LD_FLAGS=
252   CPPFLAGS="$save_CPPFLAGS"
253 fi
254 LIBS="$save_LIBS"
255 AC_SUBST(XML2_LD_FLAGS)
256
257 dnl Check for Anthy usability.
258 AC_CHECK_LIB(anthydic, anthy_init_sessions, HAVE_ANTHY=yes, HAVE_ANTHY=no)
259 if test "x$HAVE_ANTHY" = "xyes"; then
260   AC_CHECK_LIB(anthy, anthy_init, HAVE_ANTHY=yes, HAVE_ANTHY=no, -lanthydic)
261   if test "x$HAVE_ANTHY" = "xyes"; then
262     AC_CHECK_HEADER(anthy/anthy.h, HAVE_ANTHY=yes, HAVE_ANTHY=no)
263     if test "x$HAVE_ANTHY" = "xyes"; then
264     AC_DEFINE(HAVE_ANTHY, 1,
265               [Define to 1 if you have Anthy library and header file])
266     ANTHY_LD_FLAGS="-lanthy -lanthydic"
267     fi
268   fi
269 fi
270 AC_SUBST(ANTHY_LD_FLAGS)
271
272 dnl Check for Ispell usability.
273 AC_CHECK_PROG(HAVE_ISPELL, ispell, yes)
274 if test "x$HAVE_ISPELL" = "xyes"; then
275   AC_DEFINE(HAVE_ISPELL, 1, [Define if ispell is available.])
276 fi
277
278 dnl Check for libwordcut (for Thai).
279 AC_CHECK_LIB(wordcut, wordcut_init, HAVE_WORDCUT=yes, HAVE_WORDCUT=no)
280 if test "x$HAVE_WORDCUT" = "xyes"; then
281   if test -f "/usr/share/wordcut/tdict.wcd"; then
282     tdict="/usr/share/wordcut/tdict.wcd"
283   elif test -f "/usr/local/share/wordcut/tdict.wcd"; then
284     tdict="/usr/local/share/wordcut/tdict.wcd"
285   fi
286   echo "TDICT=$tdict"
287   if test "x$tdict" != "x"; then
288     AC_DEFINE(HAVE_WORDCUT, 1,
289               [Define if you have the wordcut library and header file])
290     AC_DEFINE_UNQUOTED(WORDCUT_TDICT, "$tdict", [Define to tdict file name])
291     WORDCUT_LD_FLAGS=-lwordcut
292   fi
293 fi
294 AC_SUBST(WORDCUT_LD_FLAGS)
295
296 dnl We can't include X_CFLAGS in AM_CPPFLAGS because the generated
297 dnl Makefile put ${AM_CPPFLAGS} before ${CPPFLAGS} and that leads to
298 dnl inclusion of an incorrect header file.  So, append X_CFLAGS to
299 dnl CPPFLAGS here directly.
300
301 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
302
303 dnl AC_ARG_ENABLE(xom, 
304 dnl           [  --enable-xom            build and install XOM library.],
305 dnl           XOM="$enableval")
306
307 case $host_os in
308 darwin* | rhapsody*)
309   AC_DEFINE(DLOPEN_SHLIB_EXT, ".dylib",
310             [Define to loadable module extention]);;
311 esac
312
313 AC_CONFIG_FILES([Makefile
314                  src/Makefile
315                  example/Makefile
316                  m17n-config
317                  m17n-core.pc
318                  m17n-shell.pc
319                  m17n-gui.pc
320                  ])
321
322 dnl if test "x$XOM" = "xyes"; then
323 dnl  AC_CONFIG_FILES(omM17N/Makefile)
324 dnl fi
325
326 AC_OUTPUT
327
328 dnl Local Variables:
329 dnl comment-start: "dnl "
330 dnl comment-end: ""
331 dnl comment-start-skip: "\\bdnl\\b\\s *"
332 dnl End: