configure.ac revision a32e9e42
1dnl 2dnl fontconfig/configure.in 3dnl 4dnl Copyright © 2003 Keith Packard 5dnl 6dnl Permission to use, copy, modify, distribute, and sell this software and its 7dnl documentation for any purpose is hereby granted without fee, provided that 8dnl the above copyright notice appear in all copies and that both that 9dnl copyright notice and this permission notice appear in supporting 10dnl documentation, and that the name of the author(s) not be used in 11dnl advertising or publicity pertaining to distribution of the software without 12dnl specific, written prior permission. The authors make no 13dnl representations about the suitability of this software for any purpose. It 14dnl is provided "as is" without express or implied warranty. 15dnl 16dnl THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 17dnl INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 18dnl EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR 19dnl CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 20dnl DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 21dnl TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 22dnl PERFORMANCE OF THIS SOFTWARE. 23dnl 24dnl Process this file with autoconf to create configure. 25 26AC_PREREQ(2.61) 27 28dnl ========================================================================== 29dnl Versioning 30dnl ========================================================================== 31 32dnl This is the package version number, not the shared library 33dnl version. This same version number must appear in fontconfig/fontconfig.h 34dnl Yes, it is a pain to synchronize version numbers. Unfortunately, it's 35dnl not possible to extract the version number here from fontconfig.h 36AC_INIT([fontconfig], [2.13.1], [https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/new]) 37AM_INIT_AUTOMAKE([1.11 parallel-tests dist-bzip2]) 38m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) 39 40dnl ========================================================================== 41 42AC_CONFIG_HEADERS(config.h) 43AC_CONFIG_MACRO_DIR([m4]) 44 45AC_PROG_CC 46AC_USE_SYSTEM_EXTENSIONS 47AC_SYS_LARGEFILE 48AC_PROG_INSTALL 49AC_PROG_LN_S 50AC_PROG_MAKE_SET 51PKG_PROG_PKG_CONFIG 52m4_ifdef([PKG_INSTALLDIR], [PKG_INSTALLDIR], AC_SUBST([pkgconfigdir], ${libdir}/pkgconfig)) 53 54AM_MISSING_PROG([GIT], [git]) 55AM_MISSING_PROG([GPERF], [gperf]) 56 57AC_MSG_CHECKING([for RM macro]) 58_predefined_rm=`make -p -f /dev/null 2>/dev/null|grep '^RM ='|sed -e 's/^RM = //'` 59if test "x$_predefined_rm" = "x"; then 60 AC_MSG_RESULT([no predefined RM]) 61 AC_CHECK_PROG(RM, rm, [rm -f]) 62else 63 AC_MSG_RESULT($_predefined_rm) 64fi 65 66dnl Initialize libtool 67LT_PREREQ([2.2]) 68LT_INIT([disable-static win32-dll]) 69 70dnl libtool versioning 71 72dnl bump revision when fixing bugs 73dnl bump current and age, reset revision to zero when adding APIs 74dnl bump current, leave age, reset revision to zero when changing/removing APIS 75LIBT_CURRENT=13 76LIBT_REVISION=0 77AC_SUBST(LIBT_CURRENT) 78AC_SUBST(LIBT_REVISION) 79LIBT_AGE=12 80 81LIBT_VERSION_INFO="$LIBT_CURRENT:$LIBT_REVISION:$LIBT_AGE" 82AC_SUBST(LIBT_VERSION_INFO) 83 84LIBT_CURRENT_MINUS_AGE=`expr $LIBT_CURRENT - $LIBT_AGE` 85AC_SUBST(LIBT_CURRENT_MINUS_AGE) 86 87PKGCONFIG_REQUIRES= 88PKGCONFIG_REQUIRES_PRIVATELY= 89 90dnl ========================================================================== 91case "$host" in 92 *-*-mingw*) 93 os_win32=yes 94 ;; 95 *) 96 os_win32=no 97esac 98AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes") 99 100dnl ========================================================================== 101dnl gettext stuff 102dnl ========================================================================== 103GETTEXT_PACKAGE=$PACKAGE 104AC_SUBST(GETTEXT_PACKAGE) 105AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Gettext package]) 106 107AM_GNU_GETTEXT_VERSION([0.19.8]) 108AM_GNU_GETTEXT([external]) 109 110dnl ========================================================================== 111 112if test "$os_win32" = "yes"; then 113 AC_CHECK_PROG(ms_librarian, lib.exe, yes, no) 114fi 115AM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes) 116 117AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"]) 118WARN_CFLAGS="" 119WARNING_CPP_DIRECTIVE="no" 120if test "x$GCC" = "xyes"; then 121 WARN_CFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes \ 122 -Wmissing-prototypes -Wmissing-declarations \ 123 -Wnested-externs -fno-strict-aliasing" 124 WARNING_CPP_DIRECTIVE="yes" 125elif test "x$SUNCC" = "xyes"; then 126 WARN_CFLAGS="-v -fd" 127 WARNING_CPP_DIRECTIVE="yes" 128fi 129if test "x$WARNING_CPP_DIRECTIVE" = "xyes"; then 130 AC_DEFINE_UNQUOTED(HAVE_WARNING_CPP_DIRECTIVE,1, 131 [Can use #warning in C files]) 132fi 133AC_SUBST(WARN_CFLAGS) 134 135 136dnl ========================================================================== 137 138AX_CC_FOR_BUILD() 139AC_ARG_VAR(CC_FOR_BUILD, [build system C compiler]) 140AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes) 141AM_CONDITIONAL(ENABLE_SHARED, test "$enable_shared" = "yes") 142 143dnl ========================================================================== 144 145AC_ARG_WITH(arch, 146 [AC_HELP_STRING([--with-arch=ARCH], 147 [Force architecture to ARCH])], 148 arch="$withval", arch=auto) 149 150if test "x$arch" != xauto; then 151 AC_DEFINE_UNQUOTED([FC_ARCHITECTURE], "$arch", [Architecture prefix to use for cache file names]) 152fi 153 154 155dnl ========================================================================== 156 157# Checks for header files. 158AC_HEADER_DIRENT 159AC_HEADER_STDC 160AC_CHECK_HEADERS([fcntl.h stdlib.h string.h unistd.h sys/statvfs.h sys/vfs.h sys/statfs.h sys/param.h sys/mount.h]) 161AX_CREATE_STDINT_H([src/fcstdint.h]) 162 163# Checks for typedefs, structures, and compiler characteristics. 164AC_C_CONST 165AC_C_INLINE 166AC_C_FLEXIBLE_ARRAY_MEMBER 167AC_TYPE_PID_T 168 169# Checks for library functions. 170AC_FUNC_VPRINTF 171AC_FUNC_MMAP 172AC_CHECK_FUNCS([link mkstemp mkostemp _mktemp_s mkdtemp getopt getopt_long getprogname getexecname rand random lrand48 random_r rand_r readlink fstatvfs fstatfs lstat strerror strerror_r]) 173 174dnl AC_CHECK_FUNCS doesn't check for header files. 175dnl posix_fadvise() may be not available in older libc. 176AC_CHECK_SYMBOL([posix_fadvise], [fcntl.h], [fc_func_posix_fadvise=1], [fc_func_posix_fadvise=0]) 177AC_DEFINE_UNQUOTED([HAVE_POSIX_FADVISE], [$fc_func_posix_fadvise], [Define to 1 if you have the 'posix_fadvise' function.]) 178 179# 180AC_CHECK_MEMBERS([struct stat.st_mtim],,, [#include <sys/stat.h>]) 181 182# 183if test "x$ac_cv_func_fstatvfs" = "xyes"; then 184 AC_CHECK_MEMBERS([struct statvfs.f_basetype, struct statvfs.f_fstypename],,, 185 [#include <sys/statvfs.h>]) 186fi 187if test "x$ac_cv_func_fstatfs" = "xyes"; then 188 AC_CHECK_MEMBERS([struct statfs.f_flags, struct statfs.f_fstypename],,, [ 189#ifdef HAVE_SYS_VFS_H 190#include <sys/vfs.h> 191#endif 192#ifdef HAVE_SYS_STATFS_H 193#include <sys/statfs.h> 194#endif 195#ifdef HAVE_SYS_PARAM_H 196#include <sys/param.h> 197#endif 198#ifdef HAVE_SYS_MOUNT_H 199#include <sys/mount.h> 200#endif]) 201fi 202AC_CHECK_MEMBERS([struct dirent.d_type],,, 203 [#include <dirent.h>]) 204 205# Check the argument type of the gperf hash/lookup function 206AC_MSG_CHECKING([The type of len parameter of gperf hash/lookup function]) 207fc_gperf_test="$(echo 'foo' | gperf -L ANSI-C)" 208AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 209 #include <string.h> 210 211 const char *in_word_set(register const char *, register size_t); 212 $fc_gperf_test 213 ]])], [FC_GPERF_SIZE_T=size_t], 214 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 215 #include <string.h> 216 217 const char *in_word_set(register const char *, register unsigned int); 218 $fc_gperf_test 219 ]])], [FC_GPERF_SIZE_T="unsigned int"], 220 [AC_MSG_ERROR([Unable to determine the type of the len parameter of the gperf hash/lookup function])] 221)]) 222AC_DEFINE_UNQUOTED(FC_GPERF_SIZE_T, $FC_GPERF_SIZE_T, [The type of len parameter of the gperf hash/lookup function]) 223AC_MSG_RESULT($FC_GPERF_SIZE_T) 224 225# 226# Checks for iconv 227# 228AC_ARG_ENABLE(iconv, 229 [AC_HELP_STRING([--enable-iconv], 230 [Use iconv to support non-Unicode SFNT name])], 231 ,enable_iconv=no) 232AC_ARG_WITH(libiconv, 233 [AC_HELP_STRING([--with-libiconv=DIR], 234 [Use libiconv in DIR])], 235 [if test "x$withval" = "xyes"; then 236 libiconv_prefix=$prefix 237 else 238 libiconv_prefix=$withval 239 fi], 240 [libiconv_prefix=auto]) 241AC_ARG_WITH(libiconv-includes, 242 [AC_HELP_STRING([--with-libiconv-includes=DIR], 243 [Use libiconv includes in DIR])], 244 [libiconv_includes=$withval], 245 [libiconv_includes=auto]) 246AC_ARG_WITH(libiconv-lib, 247 [AC_HELP_STRING([--with-libiconv-lib=DIR], 248 [Use libiconv library in DIR])], 249 [libiconv_lib=$withval], 250 [libiconv_lib=auto]) 251 252# if no libiconv,libiconv-includes,libiconv-lib are specified, 253# libc's iconv has a priority. 254if test "$libiconv_includes" != "auto" -a -r ${libiconv_includes}/iconv.h; then 255 libiconv_cflags="-I${libiconv_includes}" 256elif test "$libiconv_prefix" != "auto" -a -r ${libiconv_prefix}/include/iconv.h; then 257 libiconv_cflags="-I${libiconv_prefix}/include" 258else 259 libiconv_cflags="" 260fi 261libiconv_libs="" 262if test "x$libiconv_cflags" != "x"; then 263 if test "$libiconv_lib" != "auto" -a -d ${libiconv_lib}; then 264 libiconv_libs="-L${libiconv_lib} -liconv" 265 elif test "$libiconv_prefix" != "auto" -a -d ${libiconv_prefix}/lib; then 266 libiconv_libs="-L${libiconv_prefix}/lib -liconv" 267 else 268 libiconv_libs="-liconv" 269 fi 270fi 271 272use_iconv=0 273if test "x$enable_iconv" != "xno"; then 274 AC_MSG_CHECKING([for a usable iconv]) 275 if test "x$libiconv_cflags" != "x" -o "x$libiconv_libs" != "x"; then 276 iconvsaved_CFLAGS="$CFLAGS" 277 iconvsaved_LIBS="$LIBS" 278 CFLAGS="$CFLAGS $libiconv_cflags" 279 LIBS="$LIBS $libiconv_libs" 280 281 AC_TRY_LINK([#include <iconv.h>], 282 [iconv_open ("from", "to");], 283 [iconv_type="libiconv" 284 use_iconv=1 285 ICONV_CFLAGS="$libiconv_cflags" 286 ICONV_LIBS="$libiconv_libs" 287 ], 288 [use_iconv=0]) 289 290 CFLAGS="$iconvsaved_CFLAGS" 291 LIBS="$iconvsaved_LIBS" 292 fi 293 if test "x$use_iconv" = "x0"; then 294 AC_TRY_LINK([#include <iconv.h>], 295 [iconv_open ("from", "to");], 296 [iconv_type="libc" 297 use_iconv=1], 298 [iconv_type="not found" 299 use_iconv=0]) 300 fi 301 302 AC_MSG_RESULT([$iconv_type]) 303 AC_SUBST(ICONV_CFLAGS) 304 AC_SUBST(ICONV_LIBS) 305fi 306AC_DEFINE_UNQUOTED(USE_ICONV,$use_iconv,[Use iconv.]) 307# 308# Checks for FreeType 309# 310dnl See http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/VERSIONS.TXT for versioning in freetype 311PKG_CHECK_MODULES(FREETYPE, freetype2 >= 21.0.15) 312PKGCONFIG_REQUIRES="$PKGCONFIG_REQUIRES freetype2 >= 21.0.15" 313 314AC_SUBST(FREETYPE_LIBS) 315AC_SUBST(FREETYPE_CFLAGS) 316 317fontconfig_save_libs="$LIBS" 318fontconfig_save_cflags="$CFLAGS" 319LIBS="$LIBS $FREETYPE_LIBS" 320CFLAGS="$CFLAGS $FREETYPE_CFLAGS" 321AC_CHECK_FUNCS(FT_Get_BDF_Property FT_Get_PS_Font_Info FT_Has_PS_Glyph_Names FT_Get_X11_Font_Format FT_Done_MM_Var) 322 323AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ 324 #include <ft2build.h> 325 #include FT_CONFIG_OPTIONS_H 326 #ifndef PCF_CONFIG_OPTION_LONG_FAMILY_NAMES 327 # error "No pcf long family names support" 328 #endif 329 ]])], [have_pcf_long_family_names=yes], [have_pcf_long_family_names=no]) 330AM_CONDITIONAL(FREETYPE_PCF_LONG_FAMILY_NAMES, test "x$have_pcf_long_family_names" = xyes) 331 332LIBS="$fontconfig_save_libs" 333CFLAGS="$fontconfig_save_cflags" 334 335# 336# Check for uuid 337# 338if test "$os_win32" != "yes"; then 339 use_pkgconfig_for_uuid=yes 340 if test -n "${UUID_LIBS}"; then 341 save_UUID_LIBS=$UUID_LIBS 342 fi 343 PKG_CHECK_MODULES([UUID], [uuid], 344 [use_pkgconfig_for_uuid=yes], 345 [use_pkgconfig_for_uuid=no]) 346 if test "x$use_pkgconfig_for_uuid" = "xno"; then 347 AC_MSG_CHECKING([where uuid functions comes from]) 348 AC_TRY_LINK([#include <uuid/uuid.h>], 349 [uuid_t a; uuid_generate(a);], 350 [AC_MSG_RESULT([builtin]) 351 UUID_CFLAGS="" 352 UUID_LIBS="" 353 ],[AC_MSG_ERROR([ 354*** uuid is required. install util-linux. 355 ])]) 356 else 357 if test -z "${save_UUID_LIBS+x}" && test "x${UUID_LIBS}" != "x"; then 358 PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY uuid" 359 fi 360 fi 361else 362 UUID_CFLAGS="" 363 UUID_LIBS="" 364fi 365AC_SUBST(UUID_CFLAGS) 366AC_SUBST(UUID_LIBS) 367 368# 369# Check expat configuration 370# 371AC_ARG_WITH(expat, 372 [AC_HELP_STRING([--with-expat=DIR], 373 [Use Expat in DIR])], 374 [expat_prefix=$withval], 375 [expat_prefix=auto]) 376AC_ARG_WITH(expat-includes, 377 [AC_HELP_STRING([--with-expat-includes=DIR], 378 [Use Expat includes in DIR])], 379 [expat_includes=$withval], 380 [expat_includes=auto]) 381AC_ARG_WITH(expat-lib, 382 [AC_HELP_STRING([--with-expat-lib=DIR])], 383 [expat_lib=$withval], 384 [expat_lib=auto]) 385 386if test "$enable_libxml2" != "yes"; then 387 use_pkgconfig_for_expat=yes 388 if test "$expat_prefix" = "auto" -a "$expat_includes" = "auto" -a "$expat_lib" = "auto"; then 389 PKG_CHECK_MODULES(EXPAT, expat,,use_pkgconfig_for_expat=no) 390 else 391 use_pkgconfig_for_expat=no 392 fi 393 if test "x$use_pkgconfig_for_expat" = "xno"; then 394 if test "$expat_includes" != "auto" -a -r ${expat_includes}/expat.h; then 395 EXPAT_CFLAGS="-I${expat_includes}" 396 elif test "$expat_prefix" != "auto" -a -r ${expat_prefix}/include/expat.h; then 397 EXPAT_CFLAGS="-I${expat_prefix}/include" 398 else 399 EXPAT_CFLAGS="" 400 fi 401 if test "$expat_lib" != "auto"; then 402 EXPAT_LIBS="-L${expat_lib} -lexpat" 403 elif test "$expat_prefix" != "auto"; then 404 EXPAT_LIBS="-L${expat_prefix}/lib -lexpat" 405 else 406 EXPAT_LIBS="-lexpat" 407 fi 408 PKG_EXPAT_CFLAGS=$EXPAT_CFLAGS 409 PKG_EXPAT_LIBS=$EXPAT_LIBS 410 else 411 PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY expat" 412 PKG_EXPAT_CFLAGS= 413 PKG_EXPAT_LIBS= 414 fi 415 416 expatsaved_CPPFLAGS="$CPPFLAGS" 417 expatsaved_LIBS="$LIBS" 418 CPPFLAGS="$CPPFLAGS $EXPAT_CFLAGS" 419 LIBS="$LIBS $EXPAT_LIBS" 420 421 AC_CHECK_HEADER(expat.h) 422 if test "$ac_cv_header_expat_h" = "no"; then 423 AC_CHECK_HEADER(xmlparse.h) 424 if test "$ac_cv_header_xmlparse_h" = "yes"; then 425 HAVE_XMLPARSE_H=1 426 AC_SUBST(HAVE_XMLPARSE_H) 427 AC_DEFINE_UNQUOTED(HAVE_XMLPARSE_H,$HAVE_XMLPARSE_H, 428 [Use xmlparse.h instead of expat.h]) 429 else 430 AC_MSG_ERROR([ 431*** expat is required. or try to use --enable-libxml2]) 432 fi 433 fi 434 AC_CHECK_FUNCS(XML_SetDoctypeDeclHandler) 435 if test "$ac_cv_func_XML_SetDoctypeDeclHandler" = "no"; then 436 AC_MSG_ERROR([ 437*** expat is required. or try to use --enable-libxml2]) 438 fi 439 CPPFLAGS="$expatsaved_CPPFLAGS" 440 LIBS="$expatsaved_LIBS" 441 442 AC_SUBST(EXPAT_CFLAGS) 443 AC_SUBST(EXPAT_LIBS) 444 AC_SUBST(PKG_EXPAT_CFLAGS) 445 AC_SUBST(PKG_EXPAT_LIBS) 446fi 447 448# 449# Check libxml2 configuration 450# 451AC_ARG_ENABLE(libxml2, 452 [AC_HELP_STRING([--enable-libxml2], 453 [Use libxml2 instead of Expat])]) 454 455if test "$enable_libxml2" = "yes"; then 456 PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6]) 457 PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY libxml-2.0 >= 2.6" 458 AC_DEFINE_UNQUOTED(ENABLE_LIBXML2,1,[Use libxml2 instead of Expat]) 459 460 AC_SUBST(LIBXML2_CFLAGS) 461 AC_SUBST(LIBXML2_LIBS) 462 463 fc_saved_CFLAGS="$CFLAGS" 464 CFLAGS="$CFLAGS $LIBXML2_CFLAGS" 465 AC_MSG_CHECKING([SAX1 support in libxml2]) 466 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ 467 #include <libxml/xmlversion.h> 468 #if !defined(LIBXML_SAX1_ENABLED) 469 # include "error: No SAX1 support in libxml2" 470 #endif 471 ]])], [AC_MSG_RESULT([found])], [AC_MSG_ERROR([ 472*** SAX1 support in libxml2 is required. enable it or use expat instead.])]) 473 CFLAGS="$fc_saved_CFLAGS" 474fi 475 476# 477# Check json-c 478# 479PKG_CHECK_MODULES([JSONC], [json-c], [use_jsonc=yes], [use_jsonc=no]) 480 481AM_CONDITIONAL(ENABLE_JSONC, test "x$use_jsonc" = "xyes") 482AC_SUBST(JSONC_CFLAGS) 483AC_SUBST(JSONC_LIBS) 484 485# 486# Set default hinting 487# 488 489AC_ARG_WITH(default-hinting, 490 [AC_HELP_STRING([--with-default-hinting=NAME], 491 [Enable your preferred hinting configuration (none/slight/medium/full) [default=slight]])], 492 preferred_hinting="$withval", preferred_hinting=slight) 493 494case "$preferred_hinting" in 495none|slight|medium|full) 496 PREFERRED_HINTING="$preferred_hinting" 497 AC_SUBST(PREFERRED_HINTING) 498 ;; 499*) 500 AC_MSG_ERROR([Invalid hinting. please choose one of none, slight, medium, or full]) 501 ;; 502esac 503 504# 505# Set default font directory 506# 507 508AC_ARG_WITH(default-fonts, 509 [AC_HELP_STRING([--with-default-fonts=DIR], 510 [Use fonts from DIR when config is busted])], 511 default_fonts="$withval", default_fonts=yes) 512 513case "$default_fonts" in 514yes) 515 if test "$os_win32" = "yes"; then 516 FC_DEFAULT_FONTS="WINDOWSFONTDIR" 517 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "WINDOWSFONTDIR", 518 [Windows font directory]) 519 else 520 FC_DEFAULT_FONTS="/usr/share/fonts" 521 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "/usr/share/fonts", 522 [System font directory]) 523 fi 524 ;; 525*) 526 FC_DEFAULT_FONTS="$default_fonts" 527 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "$default_fonts", 528 [System font directory]) 529 ;; 530esac 531 532AC_SUBST(FC_DEFAULT_FONTS) 533 534# 535# Add more fonts if available. By default, add only the directories 536# with outline fonts; those with bitmaps can be added as desired in 537# local.conf or ~/.fonts.conf 538# 539AC_ARG_WITH(add-fonts, 540 [AC_HELP_STRING([--with-add-fonts=DIR1,DIR2,...], 541 [Find additional fonts in DIR1,DIR2,... ])], 542 add_fonts="$withval", add_fonts=yes) 543 544case "$add_fonts" in 545yes) 546 FC_ADD_FONTS="" 547 for dir in /usr/X11R6/lib/X11 /usr/X11/lib/X11 /usr/lib/X11; do 548 case x"$FC_ADD_FONTS" in 549 x) 550 sub="$dir/fonts" 551 if test -d "$sub"; then 552 case x$FC_ADD_FONTS in 553 x) 554 FC_ADD_FONTS="$sub" 555 ;; 556 *) 557 FC_ADD_FONTS="$FC_ADD_FONTS,$sub" 558 ;; 559 esac 560 fi 561 ;; 562 esac 563 done 564 AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories]) 565 ;; 566no) 567 FC_ADD_FONTS="" 568 ;; 569*) 570 FC_ADD_FONTS="$add_fonts" 571 AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories]) 572 ;; 573esac 574 575AC_SUBST(FC_ADD_FONTS) 576 577FC_FONTPATH="" 578 579case "$FC_ADD_FONTS" in 580"") 581 ;; 582*) 583 FC_FONTPATH=`echo $FC_ADD_FONTS | 584 sed -e 's/^/<dir>/' -e 's/$/<\/dir>/' -e 's/,/<\/dir> <dir>/g'` 585 ;; 586esac 587 588AC_SUBST(FC_FONTPATH) 589 590# 591# Set default cache directory path 592# 593AC_ARG_WITH(cache-dir, 594 [AC_HELP_STRING([--with-cache-dir=DIR], 595 [Use DIR to store cache files [default=LOCALSTATEDIR/cache/fontconfig]])], 596 fc_cachedir="$withval", fc_cachedir=yes) 597 598case $fc_cachedir in 599no|yes) 600 if test "$os_win32" = "yes"; then 601 fc_cachedir="LOCAL_APPDATA_FONTCONFIG_CACHE" 602 else 603 fc_cachedir='${localstatedir}/cache/${PACKAGE}' 604 fi 605 ;; 606*) 607 ;; 608esac 609AC_SUBST(fc_cachedir) 610FC_CACHEDIR=${fc_cachedir} 611AC_SUBST(FC_CACHEDIR) 612 613FC_FONTDATE=`LC_ALL=C date` 614 615AC_SUBST(FC_FONTDATE) 616 617# 618# Set configuration paths 619# 620 621AC_ARG_WITH(templatedir, 622 [AC_HELP_STRING([--with-templatedir=DIR], 623 [Use DIR to store the configuration template files [default=DATADIR/fontconfig/conf.avail]])], 624 [templatedir="$withval"], 625 [templatedir=yes]) 626AC_ARG_WITH(baseconfigdir, 627 [AC_HELP_STRING([--with-baseconfigdir=DIR], 628 [Use DIR to store the base configuration files [default=SYSCONFDIR/fonts]])], 629 [baseconfigdir="$withval"], 630 [baseconfigdir=yes]) 631AC_ARG_WITH(configdir, 632 [AC_HELP_STRING([--with-configdir=DIR], 633 [Use DIR to store active configuration files [default=BASECONFIGDIR/conf.d]])], 634 [configdir="$withval"], 635 [configdir=yes]) 636AC_ARG_WITH(xmldir, 637 [AC_HELP_STRING([--with-xmldir=DIR], 638 [Use DIR to store XML schema files [default=DATADIR/xml/fontconfig]])], 639 [xmldir="$withval"], 640 [xmldir=yes]) 641 642case "$templatedir" in 643no|yes) 644 templatedir='${datadir}'/fontconfig/conf.avail 645 ;; 646*) 647 ;; 648esac 649case "$baseconfigdir" in 650no|yes) 651 baseconfigdir='${sysconfdir}'/fonts 652 ;; 653*) 654 ;; 655esac 656case "$configdir" in 657no|yes) 658 configdir='${BASECONFIGDIR}'/conf.d 659 ;; 660*) 661 ;; 662esac 663case "$xmldir" in 664no|yes) 665 xmldir='${datadir}'/xml/fontconfig 666 ;; 667*) 668 ;; 669esac 670 671TEMPLATEDIR=${templatedir} 672BASECONFIGDIR=${baseconfigdir} 673CONFIGDIR=${configdir} 674XMLDIR=${xmldir} 675AC_SUBST(TEMPLATEDIR) 676AC_SUBST(BASECONFIGDIR) 677AC_SUBST(CONFIGDIR) 678AC_SUBST(XMLDIR) 679 680 681dnl =========================================================================== 682 683# 684# Thread-safety primitives 685# 686 687AC_CACHE_CHECK([for Intel atomic primitives], fc_cv_have_intel_atomic_primitives, [ 688 fc_cv_have_intel_atomic_primitives=false 689 AC_TRY_LINK([ 690 void memory_barrier (void) { __sync_synchronize (); } 691 int atomic_add (int *i) { return __sync_fetch_and_add (i, 1); } 692 int mutex_trylock (int *m) { return __sync_lock_test_and_set (m, 1); } 693 void mutex_unlock (int *m) { __sync_lock_release (m); } 694 ], [], fc_cv_have_intel_atomic_primitives=true 695 ) 696]) 697if $fc_cv_have_intel_atomic_primitives; then 698 AC_DEFINE(HAVE_INTEL_ATOMIC_PRIMITIVES, 1, [Have Intel __sync_* atomic primitives]) 699fi 700 701AC_CACHE_CHECK([for Solaris atomic operations], fc_cv_have_solaris_atomic_ops, [ 702 fc_cv_have_solaris_atomic_ops=false 703 AC_TRY_LINK([ 704 #include <atomic.h> 705 /* This requires Solaris Studio 12.2 or newer: */ 706 #include <mbarrier.h> 707 void memory_barrier (void) { __machine_rw_barrier (); } 708 int atomic_add (volatile unsigned *i) { return atomic_add_int_nv (i, 1); } 709 void *atomic_ptr_cmpxchg (volatile void **target, void *cmp, void *newval) { return atomic_cas_ptr (target, cmp, newval); } 710 ], [], fc_cv_have_solaris_atomic_ops=true 711 ) 712]) 713if $fc_cv_have_solaris_atomic_ops; then 714 AC_DEFINE(HAVE_SOLARIS_ATOMIC_OPS, 1, [Have Solaris __machine_*_barrier and atomic_* operations]) 715fi 716 717if test "$os_win32" = no && ! $have_pthread; then 718 AC_CHECK_HEADERS(sched.h) 719 AC_SEARCH_LIBS(sched_yield,rt,AC_DEFINE(HAVE_SCHED_YIELD, 1, [Have sched_yield])) 720fi 721 722have_pthread=false 723if test "$os_win32" = no; then 724 AX_PTHREAD([have_pthread=true]) 725fi 726if $have_pthread; then 727 LIBS="$PTHREAD_LIBS $LIBS" 728 CFLAGS="$CFLAGS $PTHREAD_CFLAGS" 729 CC="$PTHREAD_CC" 730 AC_DEFINE(HAVE_PTHREAD, 1, [Have POSIX threads]) 731fi 732AM_CONDITIONAL(HAVE_PTHREAD, $have_pthread) 733 734 735dnl =========================================================================== 736 737# 738# Let people not build/install docs if they don't have docbook 739# 740 741AC_CHECK_PROG(HASDOCBOOK, docbook2html, yes, no) 742 743AM_CONDITIONAL(USEDOCBOOK, test "x$HASDOCBOOK" = xyes) 744 745default_docs="yes" 746# 747# Check if docs exist or can be created 748# 749if test x$HASDOCBOOK = xno; then 750 if test -f $srcdir/doc/fonts-conf.5; then 751 : 752 else 753 default_docs="no" 754 fi 755fi 756 757AC_ARG_ENABLE(docs, 758 [AC_HELP_STRING([--disable-docs], 759 [Don't build and install documentation])], 760 , 761 enable_docs=$default_docs) 762 763AM_CONDITIONAL(ENABLE_DOCS, test "x$enable_docs" = xyes) 764 765if test "x$enable_docs" = xyes; then 766 tmp=funcs.$$ 767 cat $srcdir/doc/*.fncs | awk ' 768 /^@TITLE@/ { if (!done) { printf ("%s\n", $2); done = 1; } } 769 /^@FUNC@/ { if (!done) { printf ("%s\n", $2); done = 1; } } 770 /^@@/ { done = 0; }' > $tmp 771 DOCMAN3=`cat $tmp | awk '{ printf ("%s.3 ", $1); }'` 772 echo DOCMAN3 $DOCMAN3 773 rm -f $tmp 774else 775 DOCMAN3="" 776fi 777AC_SUBST(DOCMAN3) 778 779 780dnl Figure out what cache format suffix to use for this architecture 781AC_C_BIGENDIAN 782AC_CHECK_SIZEOF([void *]) 783AC_CHECK_ALIGNOF([double]) 784AC_CHECK_ALIGNOF([void *]) 785 786dnl include the header file for workaround of miscalculating size on autoconf 787dnl particularly for fat binaries 788AH_BOTTOM([#include "config-fixups.h"]) 789 790dnl 791dnl 792AC_SUBST(PKGCONFIG_REQUIRES) 793AC_SUBST(PKGCONFIG_REQUIRES_PRIVATELY) 794 795dnl 796AC_CONFIG_FILES([ 797Makefile 798fontconfig/Makefile 799fc-lang/Makefile 800fc-case/Makefile 801src/Makefile 802conf.d/Makefile 803fc-cache/Makefile 804fc-cat/Makefile 805fc-conflist/Makefile 806fc-list/Makefile 807fc-match/Makefile 808fc-pattern/Makefile 809fc-query/Makefile 810fc-scan/Makefile 811fc-validate/Makefile 812doc/Makefile 813doc/version.sgml 814its/Makefile 815po/Makefile.in 816po-conf/Makefile.in 817test/Makefile 818fontconfig.spec 819fontconfig.pc 820fontconfig-zip 821]) 822AC_OUTPUT 823