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