]> git.wh0rd.org Git - fontconfig.git/blob - configure.in
Deal with libtool 2.2 which doesn't let us use LT_ variables. (bug 15692)
[fontconfig.git] / configure.in
1 dnl 
2 dnl  $Id$
3 dnl 
4 dnl  Copyright © 2003 Keith Packard
5 dnl 
6 dnl  Permission to use, copy, modify, distribute, and sell this software and its
7 dnl  documentation for any purpose is hereby granted without fee, provided that
8 dnl  the above copyright notice appear in all copies and that both that
9 dnl  copyright notice and this permission notice appear in supporting
10 dnl  documentation, and that the name of Keith Packard not be used in
11 dnl  advertising or publicity pertaining to distribution of the software without
12 dnl  specific, written prior permission.  Keith Packard makes no
13 dnl  representations about the suitability of this software for any purpose.  It
14 dnl  is provided "as is" without express or implied warranty.
15 dnl 
16 dnl  KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
17 dnl  INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
18 dnl  EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
19 dnl  CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
20 dnl  DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
21 dnl  TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
22 dnl  PERFORMANCE OF THIS SOFTWARE.
23 dnl
24 dnl Process this file with autoconf to create configure.
25
26 AC_INIT(fonts.dtd)
27
28 dnl ==========================================================================
29 dnl                               Versioning              
30 dnl ==========================================================================
31
32 dnl This is the package version number, not the shared library
33 dnl version.  This same version number must appear in fontconfig/fontconfig.h
34 dnl Yes, it is a pain to synchronize version numbers.  Unfortunately, it's
35 dnl not possible to extract the version number here from fontconfig.h
36 AM_INIT_AUTOMAKE(fontconfig, 2.5.91)
37 AM_MAINTAINER_MODE
38
39 dnl libtool versioning
40
41 dnl bump revision when fixing bugs
42 dnl bump current and age, reset revision to zero when adding APIs
43 dnl bump current, leave age, reset revision to zero when changing/removing APIS
44 LIBT_CURRENT=4
45 LIBT_REVISION=0
46 AC_SUBST(LIBT_CURRENT)
47 AC_SUBST(LIBT_REVISION)
48 LIBT_AGE=3
49
50 LIBT_VERSION_INFO="$LIBT_CURRENT:$LIBT_REVISION:$LIBT_AGE"
51 AC_SUBST(LIBT_VERSION_INFO)
52
53 LIBT_CURRENT_MINUS_AGE=`expr $LIBT_CURRENT - $LIBT_AGE`
54 AC_SUBST(LIBT_CURRENT_MINUS_AGE)
55
56 dnl ==========================================================================
57
58 AM_CONFIG_HEADER(config.h)
59
60 AC_PROG_CC
61 AC_PROG_INSTALL
62 AC_PROG_LN_S
63 AC_LIBTOOL_WIN32_DLL
64 AM_PROG_LIBTOOL
65 DOLT
66 AC_PROG_MAKE_SET
67
68 dnl ==========================================================================
69
70 case "$host" in
71   *-*-mingw*)
72     os_win32=yes
73     ;;
74   *)
75     os_win32=no
76 esac
77 AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
78
79 if test "$os_win32" = "yes"; then
80   AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
81 fi
82 AM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes)
83
84 WARN_CFLAGS=""
85 if test "x$GCC" = "xyes"; then
86         WARN_CFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes \
87         -Wmissing-prototypes -Wmissing-declarations \
88         -Wnested-externs -fno-strict-aliasing"
89         AC_DEFINE_UNQUOTED(HAVE_WARNING_CPP_DIRECTIVE,1,
90         [Can use #warning in C files])
91 fi
92 AC_SUBST(WARN_CFLAGS)
93
94
95 dnl ==========================================================================
96
97 AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
98
99 dnl ==========================================================================
100
101 # Setup for compiling build tools (fc-glyphname, etc)
102 AC_MSG_CHECKING([for a C compiler for build tools])
103 if test $cross_compiling = yes; then
104   AC_CHECK_PROGS(CC_FOR_BUILD, gcc cc)
105 else
106   CC_FOR_BUILD=$CC
107 fi
108 AC_MSG_RESULT([$CC_FOR_BUILD])
109 AC_SUBST(CC_FOR_BUILD)
110
111 AC_MSG_CHECKING([for suffix of executable build tools])
112 if test $cross_compiling = yes; then
113   cat >conftest.c <<\_______EOF
114 int
115 main ()
116 {
117   exit (0);
118 }
119 _______EOF
120   for i in .exe ""; do
121     compile="$CC_FOR_BUILD conftest.c -o conftest$i"
122     if AC_TRY_EVAL(compile); then
123       if (./conftest) 2>&AC_FD_CC; then
124         EXEEXT_FOR_BUILD=$i
125         break
126       fi
127     fi
128   done
129   rm -f conftest*
130   if test "${EXEEXT_FOR_BUILD+set}" != set; then
131     AC_MSG_ERROR([Cannot determine suffix of executable build tools])
132   fi
133 else
134   EXEEXT_FOR_BUILD=$EXEEXT
135 fi
136 AC_MSG_RESULT([$EXEEXT_FOR_BUILD])
137 AC_SUBST(EXEEXT_FOR_BUILD)
138
139 dnl ==========================================================================
140
141 AC_ARG_WITH(arch,      [  --with-arch=ARCH      Force architecture to ARCH], arch="$withval", arch=auto)
142
143 if test $cross_compiling = yes; then
144         case "$arch" in
145         auto)
146                 AC_MSG_ERROR([Cannot autodetect architecture in cross compile environment]
147                              [Use --with-arch=ARCH to specify architecture])
148                 ;;
149         esac
150 fi
151
152 ARCHITECTURE=$arch
153 AC_SUBST(ARCHITECTURE)
154
155 dnl ==========================================================================
156
157 # Checks for header files.
158 AC_HEADER_DIRENT
159 AC_HEADER_STDC
160 AC_CHECK_HEADERS([fcntl.h stdlib.h string.h unistd.h])
161
162 # Checks for typedefs, structures, and compiler characteristics.
163 AC_C_CONST
164 AC_C_INLINE
165 AC_TYPE_PID_T
166
167 # Checks for library functions.
168 AC_FUNC_VPRINTF
169 AC_FUNC_MMAP
170 AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr strtol getopt getopt_long sysconf ftruncate chsize rand random lrand48])
171
172 #
173 # Checks for iconv
174 #
175 AC_MSG_CHECKING([for a usable iconv])
176 ICONV_LIBS=""
177 AC_TRY_LINK([#include <iconv.h>],
178             [iconv_open ("from", "to");],
179             [use_iconv=1],
180             [use_iconv=0])
181 if test x$use_iconv = x1; then
182         AC_MSG_RESULT([libc])
183 else
184         # try using libiconv
185         fontconfig_save_libs="$LIBS"
186         LIBS="$LIBS -liconv"
187
188         AC_TRY_LINK([#include <iconv.h>],
189                     [iconv_open ("from", "to");],
190                     [use_iconv=1],
191                     [use_iconv=0])
192         
193         if test x$use_iconv = x1; then
194                 ICONV_LIBS="-liconv"
195                 AC_MSG_RESULT([libiconv])
196         else
197                 AC_MSG_RESULT([no])
198         fi
199
200         LIBS="$fontconfig_save_libs"
201 fi
202 AC_SUBST(ICONV_LIBS)
203 AC_DEFINE_UNQUOTED(USE_ICONV,$use_iconv,[Use iconv.])
204
205 #
206 # Checks for FreeType
207 #
208
209 AC_ARG_WITH(freetype-config, [  --with-freetype-config=PROG   Use FreeType configuration program PROG], freetype_config=$withval, freetype_config=yes)
210
211 if test "$freetype_config" = "yes"; then 
212         AC_PATH_PROG(ft_config,freetype-config,no)
213         if test "$ft_config" = "no"; then
214                 AC_MSG_ERROR([You must have freetype installed; see http://www.freetype.org/])
215         fi
216 else
217         ft_config="$freetype_config"
218 fi
219
220 FREETYPE_CFLAGS="`$ft_config --cflags`"
221 FREETYPE_LIBS="`$ft_config --libs`"
222
223 AC_SUBST(FREETYPE_LIBS)
224 AC_SUBST(FREETYPE_CFLAGS)
225
226 #
227 # Check to see whether we have:
228 #  FT_Get_Next_Char
229 #  FT_Get_BDF_Property
230 #  FT_Get_PS_Font_Info
231 #  FT_Has_PS_Glyph_Names
232 #
233
234 fontconfig_save_libs="$LIBS"
235 fontconfig_save_cflags="$CFLAGS"
236 LIBS="$LIBS $FREETYPE_LIBS"
237 CFLAGS="$CFLAGS $FREETYPE_CFLAGS"
238 AC_CHECK_FUNCS(FT_Get_Next_Char FT_Get_BDF_Property FT_Get_PS_Font_Info FT_Has_PS_Glyph_Names FT_Get_X11_Font_Format)
239 AC_CHECK_MEMBER(FT_Bitmap_Size.y_ppem,
240                 HAVE_FT_BITMAP_SIZE_Y_PPEM=1,
241                 HAVE_FT_BITMAP_SIZE_Y_PPEM=0,
242 [#include <ft2build.h>
243 #include FT_FREETYPE_H])
244 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,$HAVE_FT_BITMAP_SIZE_Y_PPEM,
245                    [FT_Bitmap_Size structure includes y_ppem field])
246 CFLAGS="$fontconfig_save_cflags"
247 LIBS="$fontconfig_save_libs"
248
249 #
250 # Check expat configuration
251 #
252
253 AC_ARG_WITH(expat,             [  --with-expat=DIR              Use Expat in DIR], expat=$withval, expat=yes)
254 AC_ARG_WITH(expat-includes,    [  --with-expat-includes=DIR     Use Expat includes in DIR], expat_includes=$withval, expat_includes=yes)
255 AC_ARG_WITH(expat-lib,         [  --with-expat-lib=DIR          Use Expat library in DIR], expat_lib=$withval, expat_lib=yes)
256
257 if test "$enable_libxml2" != "yes"; then
258         case "$expat" in
259         no)
260         ;;
261         *)
262                 case "$expat_includes" in
263                 yes)
264                         case "$expat" in
265                         yes)
266                                 ;;
267                         *)
268                                 EXPAT_CFLAGS="-I$expat/include"
269                                 ;;
270                         esac
271                         ;;
272                 no)
273                         EXPAT_CFLAGS=""
274                         ;;
275                 *)
276                         EXPAT_CFLAGS="-I$expat_includes"
277                         ;;
278                 esac
279                 case "$expat_lib" in
280                 yes)
281                         case "$expat" in
282                         yes)
283                                 EXPAT_LIBS="-lexpat"
284                                 ;;
285                         *)
286                                 EXPAT_LIBS="-L$expat/lib -lexpat"
287                                 ;;
288                         esac
289                         ;;
290                 no)
291                         ;;
292                 *)
293                         EXPAT_LIBS="-L$expat_lib -lexpat"
294                         ;;
295                 esac
296
297                 expatsaved_CPPFLAGS="$CPPFLAGS"
298                 CPPFLAGS="$CPPFLAGS $EXPAT_CFLAGS"
299                 expatsaved_LIBS="$LIBS"
300                 LIBS="$LIBS $EXPAT_LIBS"
301
302                 AC_CHECK_HEADER(expat.h)
303                 case "$ac_cv_header_expat_h" in
304                 no)
305                         AC_CHECK_HEADER(xmlparse.h)
306                         case "$ac_cv_header_xmlparse_h" in
307                         no)
308                                 have_expat_header=no;
309                                 ;;
310                         yes)
311                                 HAVE_XMLPARSE_H=1
312                                 AC_SUBST(HAVE_XMLPARSE_H)
313                                 AC_DEFINE_UNQUOTED(HAVE_XMLPARSE_H,$HAVE_XMLPARSE_H,
314                                 [Use xmlparse.h instead of expat.h])
315                                 have_expat_header=yes
316                                 ;;
317                         esac
318                         ;;
319                 yes)
320                         have_expat_header=yes
321                         ;;
322                 esac
323                 case "$have_expat_header" in
324                 no)
325                         expat=no
326                         ;;
327                 yes)
328                         AC_CHECK_FUNCS(XML_SetDoctypeDeclHandler)
329                         case "$ac_cv_func_XML_SetDoctypeDeclHandler" in
330                         yes)
331                                 HAVE_EXPAT=1
332                                 AC_SUBST(HAVE_EXPAT)
333                                 AC_DEFINE_UNQUOTED(HAVE_EXPAT,$HAVE_EXPAT,
334                                 [Found a useable expat library])
335                                 ;;
336                         *)
337                                 expat=no
338                                 ;;
339                         esac
340                         ;;
341                 esac
342                 CPPFLAGS="$expatsaved_CPPFLAGS"
343                 LIBS="$expatsaved_LIBS"
344                 ;;
345         esac
346         
347         AC_SUBST(EXPAT_CFLAGS)
348         AC_SUBST(EXPAT_LIBS)
349
350         case "$expat" in
351         no)
352                 EXPAT_CFLAGS=""
353                 EXPAT_LIBS=""
354
355                 AC_MSG_WARN([Cannot find usable expat library. Trying to use libxml2 as fallback.])
356                 ;;
357         esac
358 fi
359
360 #
361 # Check libxml2 configuration
362 #
363
364 AC_ARG_ENABLE(libxml2,         [  --enable-libxml2              Use libxml2 instead of Expat])
365
366 PKG_PROG_PKG_CONFIG
367
368 if test "$enable_libxml2" = "yes" -o "$expat" = "no"; then
369     PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6])
370     AC_DEFINE_UNQUOTED(ENABLE_LIBXML2,1,[Use libxml2 instead of Expat])
371
372     AC_SUBST(LIBXML2_CFLAGS)
373     AC_SUBST(LIBXML2_LIBS)
374 fi
375
376 #
377 # Set default font directory
378 #
379
380 AC_ARG_WITH(default-fonts,     [  --with-default-fonts=DIR      Use fonts from DIR when config is busted], default_fonts="$withval", default_fonts=yes)
381
382 case "$default_fonts" in
383 yes)
384         if test "$os_win32" = "yes"; then
385                 FC_DEFAULT_FONTS="WINDOWSFONTDIR"
386                 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "WINDOWSFONTDIR", 
387                                    [Windows font directory])
388         else
389                 FC_DEFAULT_FONTS="/usr/share/fonts"
390                 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "/usr/share/fonts", 
391                                    [System font directory])
392         fi
393         ;;
394 *)
395         FC_DEFAULT_FONTS="$default_fonts"
396         AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "$default_fonts",
397                            [System font directory])
398         ;;
399 esac
400
401 AC_SUBST(FC_DEFAULT_FONTS)
402
403 #
404 # Add more fonts if available.  By default, add only the directories
405 # with outline fonts; those with bitmaps can be added as desired in
406 # local.conf or ~/.fonts.conf
407 #
408 AC_ARG_WITH(add-fonts,        [  --with-add-fonts=DIR1,DIR2,...Find additional fonts in DIR1,DIR2,... ], add_fonts="$withval", add_fonts=yes)
409
410 case "$add_fonts" in
411 yes)
412         FC_ADD_FONTS=""
413         for dir in /usr/X11R6/lib/X11 /usr/X11/lib/X11 /usr/lib/X11; do
414                 case x"$FC_ADD_FONTS" in
415                 x)
416                         sub="$dir/fonts"
417                         if test -d "$sub"; then
418                                 case x$FC_ADD_FONTS in
419                                 x)
420                                         FC_ADD_FONTS="$sub"
421                                         ;;
422                                 *)
423                                         FC_ADD_FONTS="$FC_ADD_FONTS,$sub"
424                                         ;;
425                                 esac
426                         fi
427                         ;;
428                 esac
429         done
430         AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
431         ;;
432 no)
433         FC_ADD_FONTS=""
434         ;;
435 *)
436         FC_ADD_FONTS="$add_fonts"
437         AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
438         ;;
439 esac
440
441 AC_SUBST(FC_ADD_FONTS)
442
443 FC_FONTPATH=""
444
445 case "$FC_ADD_FONTS" in
446 "")
447         ;;
448 *)
449         FC_FONTPATH=`echo $FC_ADD_FONTS | 
450                         sed -e 's/^/<dir>/' -e 's/$/<\/dir>/' -e 's/,/<\/dir> <dir>/g'`
451         ;;
452 esac
453
454 AC_SUBST(FC_FONTPATH)
455
456 #
457 # Set default cache directory path
458 #
459 AC_ARG_WITH(cache-dir,         [ --with-cache-dir=DIR           Use DIR to store cache files (default /var/cache/fontconfig)], fc_cachedir="$withval", fc_cachedir=yes)
460
461 case $fc_cachedir in
462 no|yes)
463         if test "$os_win32" = "yes"; then
464                 fc_cachedir="WINDOWSTEMPDIR_FONTCONFIG_CACHE"
465         else
466                 fc_cachedir=`eval echo "${localstatedir}/cache/"${PACKAGE}`
467         fi
468         ;;
469 *)
470         ;;
471 esac
472 AC_SUBST(fc_cachedir)
473 FC_CACHEDIR=${fc_cachedir}
474 AC_SUBST(FC_CACHEDIR)
475
476 FC_FONTDATE=`LC_ALL=C date`
477
478 AC_SUBST(FC_FONTDATE)
479
480 AC_ARG_WITH(confdir,           [  --with-confdir=DIR            Use DIR to store configuration files (default /etc/fonts)], confdir="$withval", confdir=yes)
481
482 #
483 # Set CONFDIR and FONTCONFIG_PATH
484 #
485
486 case "$confdir" in
487 no|yes)
488         confdir='${sysconfdir}'/fonts
489         ;;
490 *)
491         ;;
492 esac
493 AC_SUBST(confdir)
494 CONFDIR=${confdir}
495 AC_DEFINE_UNQUOTED(CONFDIR, "$CONFDIR",[Font configuration directory])
496 AC_SUBST(CONFDIR)
497
498 #
499 # Find out what language orthographies are included
500 #
501
502 ORTH_FILES=`cd ${srcdir}/fc-lang && echo *.orth`
503 AC_SUBST(ORTH_FILES)
504
505 #
506 # Let people not build/install docs if they don't have docbook
507 #
508
509 AC_CHECK_PROG(HASDOCBOOK, docbook2html, yes, no)
510
511 AM_CONDITIONAL(USEDOCBOOK, test "x$HASDOCBOOK" = xyes)
512
513 default_docs="yes"
514 #
515 # Check if docs exist or can be created
516 #
517 if test x$HASDOCBOOK = xno; then
518         if test -f $srcdir/doc/fonts-conf.5; then
519                 :
520         else
521                 default_docs="no"
522         fi
523 fi
524
525 AC_ARG_ENABLE(docs,           [  --disable-docs                Don't build and install documentation],,enable_docs=$default_docs)
526
527 AM_CONDITIONAL(ENABLE_DOCS, test "x$enable_docs" = xyes)
528
529 if test "x$enable_docs" = xyes; then
530         DOCSRC="doc"
531         tmp=funcs.$$
532         cat $srcdir/doc/*.fncs | awk '
533         /^@TITLE@/      { if (!done) { printf ("%s\n", $2); done = 1; } }
534         /^@FUNC@/       { if (!done) { printf ("%s\n", $2); done = 1; } }
535         /^@@/           { done = 0; }' > $tmp
536         DOCMAN3=`cat $tmp | awk '{ printf ("%s.3 ", $1); }'`
537         echo DOCMAN3 $DOCMAN3
538         rm -f $tmp
539 else
540         DOCSRC=""
541         DOCMAN3=""
542 fi
543
544 AC_SUBST(DOCSRC)
545 AC_SUBST(DOCMAN3)
546
547 #
548 # Figure out where to install documentation
549 #
550
551 AC_ARG_WITH(docdir,           [  --with-docdir=DIR             Use DIR to store documentation files (default ${datadir}/doc/fontconfig)], confdir="$withval")
552
553 if test "x$with_docdir" = "x" ; then
554   DOCDIR='${datadir}/doc/fontconfig'
555 else
556   DOCDIR=$with_docdir
557 fi
558
559 AC_SUBST(DOCDIR)
560
561
562 AC_OUTPUT([
563 Makefile 
564 fontconfig/Makefile
565 fc-lang/Makefile
566 fc-glyphname/Makefile
567 fc-case/Makefile
568 fc-arch/Makefile
569 src/Makefile
570 conf.d/Makefile
571 fc-cache/Makefile
572 fc-cat/Makefile
573 fc-list/Makefile
574 fc-match/Makefile
575 doc/Makefile
576 doc/version.sgml
577 test/Makefile
578 fontconfig.spec
579 fontconfig.pc
580 fonts.conf
581 fontconfig-zip
582 ])