configure.ac revision 6fc018e4
1ca08ab68Smrgdnl 2ca08ab68Smrgdnl fontconfig/configure.in 3ca08ab68Smrgdnl 4ca08ab68Smrgdnl Copyright © 2003 Keith Packard 5ca08ab68Smrgdnl 6ca08ab68Smrgdnl Permission to use, copy, modify, distribute, and sell this software and its 7ca08ab68Smrgdnl documentation for any purpose is hereby granted without fee, provided that 8ca08ab68Smrgdnl the above copyright notice appear in all copies and that both that 9ca08ab68Smrgdnl copyright notice and this permission notice appear in supporting 10ca08ab68Smrgdnl documentation, and that the name of the author(s) not be used in 11ca08ab68Smrgdnl advertising or publicity pertaining to distribution of the software without 12ca08ab68Smrgdnl specific, written prior permission. The authors make no 13ca08ab68Smrgdnl representations about the suitability of this software for any purpose. It 14ca08ab68Smrgdnl is provided "as is" without express or implied warranty. 15ca08ab68Smrgdnl 16ca08ab68Smrgdnl THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 17ca08ab68Smrgdnl INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 18ca08ab68Smrgdnl EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR 19ca08ab68Smrgdnl CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 20ca08ab68Smrgdnl DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 21ca08ab68Smrgdnl TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 22ca08ab68Smrgdnl PERFORMANCE OF THIS SOFTWARE. 23ca08ab68Smrgdnl 24ca08ab68Smrgdnl Process this file with autoconf to create configure. 25ca08ab68Smrg 26ca08ab68SmrgAC_PREREQ(2.61) 27ca08ab68Smrg 28ca08ab68Smrgdnl ========================================================================== 29ca08ab68Smrgdnl Versioning 30ca08ab68Smrgdnl ========================================================================== 31ca08ab68Smrg 32ca08ab68Smrgdnl This is the package version number, not the shared library 33ca08ab68Smrgdnl version. This same version number must appear in fontconfig/fontconfig.h 34ca08ab68Smrgdnl Yes, it is a pain to synchronize version numbers. Unfortunately, it's 35ca08ab68Smrgdnl not possible to extract the version number here from fontconfig.h 366fc018e4SmrgAC_INIT([fontconfig], [2.11.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=fontconfig]) 37c9710b42SmrgAM_INIT_AUTOMAKE([1.11 parallel-tests dist-bzip2]) 38ca08ab68Smrgm4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) 39ca08ab68Smrg 40ca08ab68Smrgdnl libtool versioning 41ca08ab68Smrg 42ca08ab68Smrgdnl bump revision when fixing bugs 43ca08ab68Smrgdnl bump current and age, reset revision to zero when adding APIs 44ca08ab68Smrgdnl bump current, leave age, reset revision to zero when changing/removing APIS 456fc018e4SmrgLIBT_CURRENT=9 46c9710b42SmrgLIBT_REVISION=0 47ca08ab68SmrgAC_SUBST(LIBT_CURRENT) 48ca08ab68SmrgAC_SUBST(LIBT_REVISION) 496fc018e4SmrgLIBT_AGE=8 50ca08ab68Smrg 51ca08ab68SmrgLIBT_VERSION_INFO="$LIBT_CURRENT:$LIBT_REVISION:$LIBT_AGE" 52ca08ab68SmrgAC_SUBST(LIBT_VERSION_INFO) 53ca08ab68Smrg 54ca08ab68SmrgLIBT_CURRENT_MINUS_AGE=`expr $LIBT_CURRENT - $LIBT_AGE` 55ca08ab68SmrgAC_SUBST(LIBT_CURRENT_MINUS_AGE) 56ca08ab68Smrg 576fc018e4SmrgPKGCONFIG_REQUIRES= 586fc018e4SmrgPKGCONFIG_REQUIRES_PRIVATELY= 596fc018e4Smrg 60ca08ab68Smrgdnl ========================================================================== 61ca08ab68Smrg 62ca08ab68SmrgAC_CONFIG_HEADERS(config.h) 63ca08ab68SmrgAC_CONFIG_MACRO_DIR([m4]) 64ca08ab68Smrg 65ca08ab68SmrgAC_PROG_CC 66c9710b42SmrgAC_USE_SYSTEM_EXTENSIONS 67c9710b42SmrgAC_SYS_LARGEFILE 68ca08ab68SmrgAC_PROG_INSTALL 69ca08ab68SmrgAC_PROG_LN_S 70ca08ab68SmrgAC_LIBTOOL_WIN32_DLL 71ca08ab68SmrgAM_PROG_LIBTOOL 72ca08ab68SmrgAC_PROG_MAKE_SET 73ca08ab68SmrgPKG_PROG_PKG_CONFIG 74c9710b42Smrgm4_ifdef([PKG_INSTALLDIR], [PKG_INSTALLDIR], AC_SUBST([pkgconfigdir], ${libdir}/pkgconfig)) 75c9710b42Smrg 76c9710b42SmrgAM_MISSING_PROG([GIT], [git]) 77c9710b42SmrgAM_MISSING_PROG([GPERF], [gperf]) 78ca08ab68Smrg 79ca08ab68SmrgAC_MSG_CHECKING([for RM macro]) 80ca08ab68Smrg_predefined_rm=`make -p -f /dev/null 2>/dev/null|grep '^RM ='|sed -e 's/^RM = //'` 81ca08ab68Smrgif test "x$_predefined_rm" = "x"; then 82ca08ab68Smrg AC_MSG_RESULT([no predefined RM]) 83ca08ab68Smrg AC_CHECK_PROG(RM, rm, [rm -f]) 84ca08ab68Smrgelse 85ca08ab68Smrg AC_MSG_RESULT($_predefined_rm) 86ca08ab68Smrgfi 87ca08ab68Smrg 88ca08ab68Smrgdnl ========================================================================== 89ca08ab68Smrg 90ca08ab68Smrgcase "$host" in 91ca08ab68Smrg *-*-mingw*) 92ca08ab68Smrg os_win32=yes 93ca08ab68Smrg ;; 94ca08ab68Smrg *) 95ca08ab68Smrg os_win32=no 96ca08ab68Smrgesac 97ca08ab68SmrgAM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes") 98ca08ab68Smrg 99ca08ab68Smrgif test "$os_win32" = "yes"; then 100ca08ab68Smrg AC_CHECK_PROG(ms_librarian, lib.exe, yes, no) 101ca08ab68Smrgfi 102ca08ab68SmrgAM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes) 103ca08ab68Smrg 104ca08ab68SmrgWARN_CFLAGS="" 105ca08ab68Smrgif test "x$GCC" = "xyes"; then 106ca08ab68Smrg WARN_CFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes \ 107ca08ab68Smrg -Wmissing-prototypes -Wmissing-declarations \ 108ca08ab68Smrg -Wnested-externs -fno-strict-aliasing" 109ca08ab68Smrg AC_DEFINE_UNQUOTED(HAVE_WARNING_CPP_DIRECTIVE,1, 110ca08ab68Smrg [Can use #warning in C files]) 111ca08ab68Smrgfi 112ca08ab68SmrgAC_SUBST(WARN_CFLAGS) 113ca08ab68Smrg 114ca08ab68Smrg 115ca08ab68Smrgdnl ========================================================================== 116ca08ab68Smrg 117c9710b42SmrgAX_CC_FOR_BUILD() 118c9710b42SmrgAC_ARG_VAR(CC_FOR_BUILD, [build system C compiler]) 119ca08ab68SmrgAM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes) 120ca08ab68SmrgAM_CONDITIONAL(ENABLE_SHARED, test "$enable_shared" = "yes") 121ca08ab68Smrg 122ca08ab68Smrgdnl ========================================================================== 123ca08ab68Smrg 124ca08ab68SmrgAC_ARG_WITH(arch, 125ca08ab68Smrg [AC_HELP_STRING([--with-arch=ARCH], 126ca08ab68Smrg [Force architecture to ARCH])], 127ca08ab68Smrg arch="$withval", arch=auto) 128ca08ab68Smrg 129ca08ab68Smrgif test "x$arch" != xauto; then 130ca08ab68Smrg AC_DEFINE_UNQUOTED([FC_ARCHITECTURE], "$arch", [Architecture prefix to use for cache file names]) 131ca08ab68Smrgfi 132ca08ab68Smrg 133ca08ab68Smrg 134ca08ab68Smrgdnl ========================================================================== 135ca08ab68Smrg 136ca08ab68Smrg# Checks for header files. 137ca08ab68SmrgAC_HEADER_DIRENT 138ca08ab68SmrgAC_HEADER_STDC 139ca08ab68SmrgAC_CHECK_HEADERS([fcntl.h regex.h stdlib.h string.h unistd.h sys/vfs.h sys/statfs.h sys/param.h sys/mount.h]) 140c9710b42SmrgAX_CREATE_STDINT_H([src/fcstdint.h]) 141ca08ab68Smrg 142ca08ab68Smrg# Checks for typedefs, structures, and compiler characteristics. 143ca08ab68SmrgAC_C_CONST 144ca08ab68SmrgAC_C_INLINE 145ca08ab68SmrgAC_C_FLEXIBLE_ARRAY_MEMBER 146ca08ab68SmrgAC_TYPE_PID_T 147ca08ab68Smrg 148ca08ab68Smrg# Checks for library functions. 149ca08ab68SmrgAC_FUNC_VPRINTF 150ca08ab68SmrgAC_FUNC_MMAP 151c9710b42SmrgAC_CHECK_FUNCS([link mkstemp mkostemp _mktemp_s getopt getopt_long getprogname getexecname rand random lrand48 random_r rand_r regcomp regerror regexec regfree fstatvfs fstatfs lstat]) 152ca08ab68Smrg 153ca08ab68Smrgdnl AC_CHECK_FUNCS doesn't check for header files. 154ca08ab68Smrgdnl posix_fadvise() may be not available in older libc. 155ca08ab68Smrgfc_saved_CFLAGS="$CFLAGS" 156ca08ab68SmrgCFLAGS="$CFLAGS $WARN_CFLAGS -Werror" 157ca08ab68SmrgAC_MSG_CHECKING([for posix_fadvise]) 158ca08ab68SmrgAC_LINK_IFELSE([AC_LANG_SOURCE([[ 159ca08ab68Smrg #include <fcntl.h> 160ca08ab68Smrg int main(void) { 161ca08ab68Smrg return posix_fadvise(0, 0, 0, 0); 162ca08ab68Smrg } 163ca08ab68Smrg ]])],[ 164ca08ab68Smrg AC_MSG_RESULT([yes]) 165c9710b42Smrg AC_DEFINE([HAVE_POSIX_FADVISE], [1], [Define to 1 if you have the 'posix_fadvise' function.]) 166ca08ab68Smrg ],[AC_MSG_RESULT([no])]) 1676fc018e4Smrgif test "$os_win32" = "no"; then 1686fc018e4Smrg AC_MSG_CHECKING([for scandir]) 1696fc018e4Smrg AC_LINK_IFELSE([AC_LANG_SOURCE([[ 1706fc018e4Smrg #include <dirent.h> 1716fc018e4Smrg int comp(const struct dirent **, const struct dirent **); 1726fc018e4Smrg int comp(const struct dirent **a, const struct dirent **b) { return 0; } 1736fc018e4Smrg int main(void) { 1746fc018e4Smrg struct dirent **d; 1756fc018e4Smrg return scandir(".", &d, 0, &comp) >= 0; 1766fc018e4Smrg } 1776fc018e4Smrg ]])],[ 1786fc018e4Smrg AC_MSG_RESULT([yes]) 1796fc018e4Smrg AC_DEFINE([HAVE_SCANDIR], [1], [Define to 1 if you have the 'scandir' function.]) 1806fc018e4Smrg ],[ 1816fc018e4Smrg AC_LINK_IFELSE([AC_LANG_SOURCE([[ 1826fc018e4Smrg #include <dirent.h> 1836fc018e4Smrg int comp(const void *, const void *); 1846fc018e4Smrg int comp(const void *a, const void *b) { return 0; } 1856fc018e4Smrg int main(void) { 1866fc018e4Smrg struct dirent **d; 1876fc018e4Smrg return scandir(".", &d, 0, &comp) >= 0; 1886fc018e4Smrg } 1896fc018e4Smrg ]])],[ 1906fc018e4Smrg AC_MSG_RESULT([yes]) 1916fc018e4Smrg AC_DEFINE([HAVE_SCANDIR_VOID_P], [1], [Define to 1 if you have the 'scandir' function with int (* compar)(const void *, const void *)]) 1926fc018e4Smrg ],[ 1936fc018e4Smrg AC_MSG_ERROR([ 1946fc018e4Smrg*** No scandir function available.]) 1956fc018e4Smrg ]) 1966fc018e4Smrg ]) 1976fc018e4Smrgfi 198ca08ab68SmrgCFLAGS="$fc_saved_CFLAGS" 199ca08ab68Smrg 200ca08ab68Smrg# 201ca08ab68Smrgif test "x$ac_cv_func_fstatvfs" = "xyes"; then 202ca08ab68Smrg AC_CHECK_MEMBERS([struct statvfs.f_basetype, struct statvfs.f_fstypename],,, 203ca08ab68Smrg [#include <sys/statvfs.h>]) 204ca08ab68Smrgfi 205ca08ab68Smrgif test "x$ac_cv_func_fstatfs" = "xyes"; then 206ca08ab68Smrg AC_CHECK_MEMBERS([struct statfs.f_flags, struct statfs.f_fstypename],,, [ 207ca08ab68Smrg#ifdef HAVE_SYS_VFS_H 208ca08ab68Smrg#include <sys/vfs.h> 209ca08ab68Smrg#endif 210ca08ab68Smrg#ifdef HAVE_SYS_STATFS_H 211ca08ab68Smrg#include <sys/statfs.h> 212ca08ab68Smrg#endif 213ca08ab68Smrg#ifdef HAVE_SYS_PARAM_H 214ca08ab68Smrg#include <sys/param.h> 215ca08ab68Smrg#endif 216ca08ab68Smrg#ifdef HAVE_SYS_MOUNT_H 217ca08ab68Smrg#include <sys/mount.h> 218ca08ab68Smrg#endif]) 219ca08ab68Smrgfi 220ca08ab68SmrgAC_CHECK_MEMBERS([struct dirent.d_type],,, 221ca08ab68Smrg [#include <dirent.h>]) 222ca08ab68Smrg# 223ca08ab68Smrg# regex 224ca08ab68Smrg# 225ca08ab68Smrgif test "x$ac_cv_func_regcomp" = "xyes" -a "x$ac_cv_func_regerror" = "xyes" -a "x$ac_cv_func_regexec" = "xyes" -a "x$ac_cv_func_regfree"; then 226ca08ab68Smrg AC_DEFINE(USE_REGEX,,[Use regex]) 227ca08ab68Smrgfi 228ca08ab68Smrg 229ca08ab68Smrg# 230ca08ab68Smrg# Checks for iconv 231ca08ab68Smrg# 232ca08ab68SmrgAC_ARG_ENABLE(iconv, 233ca08ab68Smrg [AC_HELP_STRING([--enable-iconv], 234ca08ab68Smrg [Use iconv to support non-Unicode SFNT name])], 235ca08ab68Smrg ,enable_iconv=no) 236ca08ab68SmrgAC_ARG_WITH(libiconv, 237ca08ab68Smrg [AC_HELP_STRING([--with-libiconv=DIR], 238ca08ab68Smrg [Use libiconv in DIR])], 239ca08ab68Smrg [if test "x$withval" = "xyes"; then 240ca08ab68Smrg libiconv_prefix=$prefix 241ca08ab68Smrg else 242ca08ab68Smrg libiconv_prefix=$withval 243ca08ab68Smrg fi], 244ca08ab68Smrg [libiconv_prefix=auto]) 245ca08ab68SmrgAC_ARG_WITH(libiconv-includes, 246ca08ab68Smrg [AC_HELP_STRING([--with-libiconv-includes=DIR], 247ca08ab68Smrg [Use libiconv includes in DIR])], 248ca08ab68Smrg [libiconv_includes=$withval], 249ca08ab68Smrg [libiconv_includes=auto]) 250ca08ab68SmrgAC_ARG_WITH(libiconv-lib, 251ca08ab68Smrg [AC_HELP_STRING([--with-libiconv-lib=DIR], 252ca08ab68Smrg [Use libiconv library in DIR])], 253ca08ab68Smrg [libiconv_lib=$withval], 254ca08ab68Smrg [libiconv_lib=auto]) 255ca08ab68Smrg 256ca08ab68Smrg# if no libiconv,libiconv-includes,libiconv-lib are specified, 257ca08ab68Smrg# libc's iconv has a priority. 258ca08ab68Smrgif test "$libiconv_includes" != "auto" -a -r ${libiconv_includes}/iconv.h; then 259ca08ab68Smrg libiconv_cflags="-I${libiconv_includes}" 260ca08ab68Smrgelif test "$libiconv_prefix" != "auto" -a -r ${libiconv_prefix}/include/iconv.h; then 261ca08ab68Smrg libiconv_cflags="-I${libiconv_prefix}/include" 262ca08ab68Smrgelse 263ca08ab68Smrg libiconv_cflags="" 264ca08ab68Smrgfi 265ca08ab68Smrglibiconv_libs="" 266ca08ab68Smrgif test "x$libiconv_cflags" != "x"; then 267ca08ab68Smrg if test "$libiconv_lib" != "auto" -a -d ${libiconv_lib}; then 268ca08ab68Smrg libiconv_libs="-L${libiconv_lib} -liconv" 269ca08ab68Smrg elif test "$libiconv_prefix" != "auto" -a -d ${libiconv_prefix}/lib; then 270ca08ab68Smrg libiconv_libs="-L${libiconv_prefix}/lib -liconv" 271ca08ab68Smrg else 272ca08ab68Smrg libiconv_libs="-liconv" 273ca08ab68Smrg fi 274ca08ab68Smrgfi 275ca08ab68Smrg 276ca08ab68Smrguse_iconv=0 277ca08ab68Smrgif test "x$enable_iconv" != "xno"; then 278ca08ab68Smrg AC_MSG_CHECKING([for a usable iconv]) 279ca08ab68Smrg if test "x$libiconv_cflags" != "x" -o "x$libiconv_libs" != "x"; then 280ca08ab68Smrg iconvsaved_CFLAGS="$CFLAGS" 281ca08ab68Smrg iconvsaved_LIBS="$LIBS" 282ca08ab68Smrg CFLAGS="$CFLAGS $libiconv_cflags" 283ca08ab68Smrg LIBS="$LIBS $libiconv_libs" 284ca08ab68Smrg 285ca08ab68Smrg AC_TRY_LINK([#include <iconv.h>], 286ca08ab68Smrg [iconv_open ("from", "to");], 287ca08ab68Smrg [iconv_type="libiconv" 2886fc018e4Smrg use_iconv=1 2896fc018e4Smrg ICONV_CFLAGS="$libiconv_cflags" 2906fc018e4Smrg ICONV_LIBS="$libiconv_libs" 2916fc018e4Smrg ], 292ca08ab68Smrg [use_iconv=0]) 293ca08ab68Smrg 294ca08ab68Smrg CFLAGS="$iconvsaved_CFLAGS" 295ca08ab68Smrg LIBS="$iconvsaved_LIBS" 296ca08ab68Smrg fi 297ca08ab68Smrg if test "x$use_iconv" = "x0"; then 298ca08ab68Smrg AC_TRY_LINK([#include <iconv.h>], 299ca08ab68Smrg [iconv_open ("from", "to");], 300ca08ab68Smrg [iconv_type="libc" 301ca08ab68Smrg use_iconv=1], 302ca08ab68Smrg [iconv_type="not found" 303ca08ab68Smrg use_iconv=0]) 304ca08ab68Smrg fi 305ca08ab68Smrg 306ca08ab68Smrg AC_MSG_RESULT([$iconv_type]) 307ca08ab68Smrg AC_SUBST(ICONV_CFLAGS) 308ca08ab68Smrg AC_SUBST(ICONV_LIBS) 309ca08ab68Smrgfi 310ca08ab68SmrgAC_DEFINE_UNQUOTED(USE_ICONV,$use_iconv,[Use iconv.]) 311ca08ab68Smrg# 312ca08ab68Smrg# Checks for FreeType 313ca08ab68Smrg# 314ca08ab68SmrgPKG_CHECK_MODULES(FREETYPE, freetype2) 3156fc018e4SmrgPKGCONFIG_REQUIRES="$PKGCONFIG_REQUIRES freetype2" 316ca08ab68Smrg 317ca08ab68SmrgAC_SUBST(FREETYPE_LIBS) 318ca08ab68SmrgAC_SUBST(FREETYPE_CFLAGS) 319ca08ab68Smrg 320ca08ab68Smrgfontconfig_save_libs="$LIBS" 321ca08ab68Smrgfontconfig_save_cflags="$CFLAGS" 322ca08ab68SmrgLIBS="$LIBS $FREETYPE_LIBS" 323ca08ab68SmrgCFLAGS="$CFLAGS $FREETYPE_CFLAGS" 324ca08ab68SmrgAC_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 FT_Select_Size) 325ca08ab68SmrgAC_CHECK_MEMBER(FT_Bitmap_Size.y_ppem, 326ca08ab68Smrg HAVE_FT_BITMAP_SIZE_Y_PPEM=1, 327ca08ab68Smrg HAVE_FT_BITMAP_SIZE_Y_PPEM=0, 328ca08ab68Smrg[#include <ft2build.h> 329ca08ab68Smrg#include FT_FREETYPE_H]) 330ca08ab68SmrgAC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,$HAVE_FT_BITMAP_SIZE_Y_PPEM, 331ca08ab68Smrg [FT_Bitmap_Size structure includes y_ppem field]) 332ca08ab68SmrgCFLAGS="$fontconfig_save_cflags" 333ca08ab68SmrgLIBS="$fontconfig_save_libs" 334ca08ab68Smrg 335ca08ab68Smrg# 336ca08ab68Smrg# Check expat configuration 337ca08ab68Smrg# 338ca08ab68SmrgAC_ARG_WITH(expat, 339ca08ab68Smrg [AC_HELP_STRING([--with-expat=DIR], 340ca08ab68Smrg [Use Expat in DIR])], 341ca08ab68Smrg [expat_prefix=$withval], 342ca08ab68Smrg [expat_prefix=auto]) 343ca08ab68SmrgAC_ARG_WITH(expat-includes, 344ca08ab68Smrg [AC_HELP_STRING([--with-expat-includes=DIR], 345ca08ab68Smrg [Use Expat includes in DIR])], 346ca08ab68Smrg [expat_includes=$withval], 347ca08ab68Smrg [expat_includes=auto]) 348ca08ab68SmrgAC_ARG_WITH(expat-lib, 349ca08ab68Smrg [AC_HELP_STRING([--with-expat-lib=DIR])], 350ca08ab68Smrg [expat_lib=$withval], 351ca08ab68Smrg [expat_lib=auto]) 352ca08ab68Smrg 353ca08ab68Smrgif test "$enable_libxml2" != "yes"; then 354ca08ab68Smrg use_pkgconfig_for_expat=yes 355ca08ab68Smrg if test "$expat_prefix" = "auto" -a "$expat_includes" = "auto" -a "$expat_lib" = "auto"; then 356ca08ab68Smrg PKG_CHECK_MODULES(EXPAT, expat,,use_pkgconfig_for_expat=no) 357ca08ab68Smrg else 358ca08ab68Smrg use_pkgconfig_for_expat=no 359ca08ab68Smrg fi 360ca08ab68Smrg if test "x$use_pkgconfig_for_expat" = "xno"; then 361ca08ab68Smrg if test "$expat_includes" != "auto" -a -r ${expat_includes}/expat.h; then 362ca08ab68Smrg EXPAT_CFLAGS="-I${expat_includes}" 363ca08ab68Smrg elif test "$expat_prefix" != "auto" -a -r ${expat_prefix}/include/expat.h; then 364ca08ab68Smrg EXPAT_CFLAGS="-I${expat_prefix}/include" 365ca08ab68Smrg else 366ca08ab68Smrg EXPAT_CFLAGS="" 367ca08ab68Smrg fi 368ca08ab68Smrg if test "$expat_lib" != "auto"; then 369ca08ab68Smrg EXPAT_LIBS="-L${expat_lib} -lexpat" 370ca08ab68Smrg elif test "$expat_prefix" != "auto"; then 371ca08ab68Smrg EXPAT_LIBS="-L${expat_prefix}/lib -lexpat" 372ca08ab68Smrg else 373ca08ab68Smrg EXPAT_LIBS="-lexpat" 374ca08ab68Smrg fi 3756fc018e4Smrg else 3766fc018e4Smrg PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY expat" 377ca08ab68Smrg fi 378ca08ab68Smrg 379ca08ab68Smrg expatsaved_CPPFLAGS="$CPPFLAGS" 380ca08ab68Smrg expatsaved_LIBS="$LIBS" 381ca08ab68Smrg CPPFLAGS="$CPPFLAGS $EXPAT_CFLAGS" 382ca08ab68Smrg LIBS="$LIBS $EXPAT_LIBS" 383ca08ab68Smrg 384ca08ab68Smrg AC_CHECK_HEADER(expat.h) 385ca08ab68Smrg if test "$ac_cv_header_expat_h" = "no"; then 386ca08ab68Smrg AC_CHECK_HEADER(xmlparse.h) 387ca08ab68Smrg if test "$ac_cv_header_xmlparse_h" = "yes"; then 388ca08ab68Smrg HAVE_XMLPARSE_H=1 389ca08ab68Smrg AC_SUBST(HAVE_XMLPARSE_H) 390ca08ab68Smrg AC_DEFINE_UNQUOTED(HAVE_XMLPARSE_H,$HAVE_XMLPARSE_H, 391ca08ab68Smrg [Use xmlparse.h instead of expat.h]) 392ca08ab68Smrg else 393ca08ab68Smrg AC_MSG_ERROR([ 394ca08ab68Smrg*** expat is required. or try to use --enable-libxml2]) 395ca08ab68Smrg fi 396ca08ab68Smrg fi 397ca08ab68Smrg AC_CHECK_FUNCS(XML_SetDoctypeDeclHandler) 398ca08ab68Smrg if test "$ac_cv_func_XML_SetDoctypeDeclHandler" = "no"; then 399ca08ab68Smrg AC_MSG_ERROR([ 400ca08ab68Smrg*** expat is required. or try to use --enable-libxml2]) 401ca08ab68Smrg fi 402ca08ab68Smrg CPPFLAGS="$expatsaved_CPPFLAGS" 403ca08ab68Smrg LIBS="$expatsaved_LIBS" 404ca08ab68Smrg 405ca08ab68Smrg AC_SUBST(EXPAT_CFLAGS) 406ca08ab68Smrg AC_SUBST(EXPAT_LIBS) 407ca08ab68Smrgfi 408ca08ab68Smrg 409ca08ab68Smrg# 410ca08ab68Smrg# Check libxml2 configuration 411ca08ab68Smrg# 412ca08ab68SmrgAC_ARG_ENABLE(libxml2, 413ca08ab68Smrg [AC_HELP_STRING([--enable-libxml2], 414ca08ab68Smrg [Use libxml2 instead of Expat])]) 415ca08ab68Smrg 416ca08ab68Smrgif test "$enable_libxml2" = "yes"; then 417ca08ab68Smrg PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6]) 4186fc018e4Smrg PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY libxml-2.0" 419ca08ab68Smrg AC_DEFINE_UNQUOTED(ENABLE_LIBXML2,1,[Use libxml2 instead of Expat]) 420ca08ab68Smrg 421ca08ab68Smrg AC_SUBST(LIBXML2_CFLAGS) 422ca08ab68Smrg AC_SUBST(LIBXML2_LIBS) 423ca08ab68Smrg 424ca08ab68Smrg fc_saved_CFLAGS="$CFLAGS" 425ca08ab68Smrg CFLAGS="$CFLAGS $LIBXML2_CFLAGS" 426ca08ab68Smrg AC_MSG_CHECKING([SAX1 support in libxml2]) 427ca08ab68Smrg AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ 428ca08ab68Smrg #include <libxml/xmlversion.h> 429ca08ab68Smrg #if !defined(LIBXML_SAX1_ENABLED) 430ca08ab68Smrg # include "error: No SAX1 support in libxml2" 431ca08ab68Smrg #endif 432ca08ab68Smrg ]])], [AC_MSG_RESULT([found])], [AC_MSG_ERROR([ 433ca08ab68Smrg*** SAX1 support in libxml2 is required. enable it or use expat instead.])]) 434ca08ab68Smrg CFLAGS="$fc_saved_CFLAGS" 435ca08ab68Smrgfi 436ca08ab68Smrg 437ca08ab68Smrg# 438ca08ab68Smrg# Set default font directory 439ca08ab68Smrg# 440ca08ab68Smrg 441ca08ab68SmrgAC_ARG_WITH(default-fonts, 442ca08ab68Smrg [AC_HELP_STRING([--with-default-fonts=DIR], 443ca08ab68Smrg [Use fonts from DIR when config is busted])], 444ca08ab68Smrg default_fonts="$withval", default_fonts=yes) 445ca08ab68Smrg 446ca08ab68Smrgcase "$default_fonts" in 447ca08ab68Smrgyes) 448ca08ab68Smrg if test "$os_win32" = "yes"; then 449ca08ab68Smrg FC_DEFAULT_FONTS="WINDOWSFONTDIR" 450ca08ab68Smrg AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "WINDOWSFONTDIR", 451ca08ab68Smrg [Windows font directory]) 452ca08ab68Smrg else 453ca08ab68Smrg FC_DEFAULT_FONTS="/usr/share/fonts" 454ca08ab68Smrg AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "/usr/share/fonts", 455ca08ab68Smrg [System font directory]) 456ca08ab68Smrg fi 457ca08ab68Smrg ;; 458ca08ab68Smrg*) 459ca08ab68Smrg FC_DEFAULT_FONTS="$default_fonts" 460ca08ab68Smrg AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "$default_fonts", 461ca08ab68Smrg [System font directory]) 462ca08ab68Smrg ;; 463ca08ab68Smrgesac 464ca08ab68Smrg 465ca08ab68SmrgAC_SUBST(FC_DEFAULT_FONTS) 466ca08ab68Smrg 467ca08ab68Smrg# 468ca08ab68Smrg# Add more fonts if available. By default, add only the directories 469ca08ab68Smrg# with outline fonts; those with bitmaps can be added as desired in 470ca08ab68Smrg# local.conf or ~/.fonts.conf 471ca08ab68Smrg# 472ca08ab68SmrgAC_ARG_WITH(add-fonts, 473ca08ab68Smrg [AC_HELP_STRING([--with-add-fonts=DIR1,DIR2,...], 474ca08ab68Smrg [Find additional fonts in DIR1,DIR2,... ])], 475ca08ab68Smrg add_fonts="$withval", add_fonts=yes) 476ca08ab68Smrg 477ca08ab68Smrgcase "$add_fonts" in 478ca08ab68Smrgyes) 479ca08ab68Smrg FC_ADD_FONTS="" 480ca08ab68Smrg for dir in /usr/X11R6/lib/X11 /usr/X11/lib/X11 /usr/lib/X11; do 481ca08ab68Smrg case x"$FC_ADD_FONTS" in 482ca08ab68Smrg x) 483ca08ab68Smrg sub="$dir/fonts" 484ca08ab68Smrg if test -d "$sub"; then 485ca08ab68Smrg case x$FC_ADD_FONTS in 486ca08ab68Smrg x) 487ca08ab68Smrg FC_ADD_FONTS="$sub" 488ca08ab68Smrg ;; 489ca08ab68Smrg *) 490ca08ab68Smrg FC_ADD_FONTS="$FC_ADD_FONTS,$sub" 491ca08ab68Smrg ;; 492ca08ab68Smrg esac 493ca08ab68Smrg fi 494ca08ab68Smrg ;; 495ca08ab68Smrg esac 496ca08ab68Smrg done 497ca08ab68Smrg AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories]) 498ca08ab68Smrg ;; 499ca08ab68Smrgno) 500ca08ab68Smrg FC_ADD_FONTS="" 501ca08ab68Smrg ;; 502ca08ab68Smrg*) 503ca08ab68Smrg FC_ADD_FONTS="$add_fonts" 504ca08ab68Smrg AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories]) 505ca08ab68Smrg ;; 506ca08ab68Smrgesac 507ca08ab68Smrg 508ca08ab68SmrgAC_SUBST(FC_ADD_FONTS) 509ca08ab68Smrg 510ca08ab68SmrgFC_FONTPATH="" 511ca08ab68Smrg 512ca08ab68Smrgcase "$FC_ADD_FONTS" in 513ca08ab68Smrg"") 514ca08ab68Smrg ;; 515ca08ab68Smrg*) 516ca08ab68Smrg FC_FONTPATH=`echo $FC_ADD_FONTS | 517ca08ab68Smrg sed -e 's/^/<dir>/' -e 's/$/<\/dir>/' -e 's/,/<\/dir> <dir>/g'` 518ca08ab68Smrg ;; 519ca08ab68Smrgesac 520ca08ab68Smrg 521ca08ab68SmrgAC_SUBST(FC_FONTPATH) 522ca08ab68Smrg 523ca08ab68Smrg# 524ca08ab68Smrg# Set default cache directory path 525ca08ab68Smrg# 526ca08ab68SmrgAC_ARG_WITH(cache-dir, 527ca08ab68Smrg [AC_HELP_STRING([--with-cache-dir=DIR], 528ca08ab68Smrg [Use DIR to store cache files [default=LOCALSTATEDIR/cache/fontconfig]])], 529ca08ab68Smrg fc_cachedir="$withval", fc_cachedir=yes) 530ca08ab68Smrg 531ca08ab68Smrgcase $fc_cachedir in 532ca08ab68Smrgno|yes) 533ca08ab68Smrg if test "$os_win32" = "yes"; then 534ca08ab68Smrg fc_cachedir="WINDOWSTEMPDIR_FONTCONFIG_CACHE" 535ca08ab68Smrg else 536ca08ab68Smrg fc_cachedir='${localstatedir}/cache/${PACKAGE}' 537ca08ab68Smrg fi 538ca08ab68Smrg ;; 539ca08ab68Smrg*) 540ca08ab68Smrg ;; 541ca08ab68Smrgesac 542ca08ab68SmrgAC_SUBST(fc_cachedir) 543ca08ab68SmrgFC_CACHEDIR=${fc_cachedir} 544ca08ab68SmrgAC_SUBST(FC_CACHEDIR) 545ca08ab68Smrg 546ca08ab68SmrgFC_FONTDATE=`LC_ALL=C date` 547ca08ab68Smrg 548ca08ab68SmrgAC_SUBST(FC_FONTDATE) 549ca08ab68Smrg 550ca08ab68Smrg# 551ca08ab68Smrg# Set configuration paths 552ca08ab68Smrg# 553ca08ab68Smrg 554ca08ab68SmrgAC_ARG_WITH(templatedir, 555ca08ab68Smrg [AC_HELP_STRING([--with-templatedir=DIR], 556ca08ab68Smrg [Use DIR to store the configuration template files [default=DATADIR/fontconfig/conf.avail]])], 557ca08ab68Smrg [templatedir="$withval"], 558ca08ab68Smrg [templatedir=yes]) 559ca08ab68SmrgAC_ARG_WITH(baseconfigdir, 560ca08ab68Smrg [AC_HELP_STRING([--with-baseconfigdir=DIR], 561ca08ab68Smrg [Use DIR to store the base configuration files [default=SYSCONFDIR/fonts]])], 562ca08ab68Smrg [baseconfigdir="$withval"], 563ca08ab68Smrg [baseconfigdir=yes]) 564ca08ab68SmrgAC_ARG_WITH(configdir, 565ca08ab68Smrg [AC_HELP_STRING([--with-configdir=DIR], 566ca08ab68Smrg [Use DIR to store active configuration files [default=BASECONFIGDIR/conf.d]])], 567ca08ab68Smrg [configdir="$withval"], 568ca08ab68Smrg [configdir=yes]) 569ca08ab68SmrgAC_ARG_WITH(xmldir, 570ca08ab68Smrg [AC_HELP_STRING([--with-xmldir=DIR], 571ca08ab68Smrg [Use DIR to store XML schema files [default=DATADIR/xml/fontconfig]])], 572ca08ab68Smrg [xmldir="$withval"], 573ca08ab68Smrg [xmldir=yes]) 574ca08ab68Smrg 575ca08ab68Smrgcase "$templatedir" in 576ca08ab68Smrgno|yes) 577ca08ab68Smrg templatedir='${datadir}'/fontconfig/conf.avail 578ca08ab68Smrg ;; 579ca08ab68Smrg*) 580ca08ab68Smrg ;; 581ca08ab68Smrgesac 582ca08ab68Smrgcase "$baseconfigdir" in 583ca08ab68Smrgno|yes) 584ca08ab68Smrg baseconfigdir='${sysconfdir}'/fonts 585ca08ab68Smrg ;; 586ca08ab68Smrg*) 587ca08ab68Smrg ;; 588ca08ab68Smrgesac 589ca08ab68Smrgcase "$configdir" in 590ca08ab68Smrgno|yes) 5916fc018e4Smrg configdir='${BASECONFIGDIR}'/conf.d 592ca08ab68Smrg ;; 593ca08ab68Smrg*) 594ca08ab68Smrg ;; 595ca08ab68Smrgesac 596ca08ab68Smrgcase "$xmldir" in 597ca08ab68Smrgno|yes) 598ca08ab68Smrg xmldir='${datadir}'/xml/fontconfig 599ca08ab68Smrg ;; 600ca08ab68Smrg*) 601ca08ab68Smrg ;; 602ca08ab68Smrgesac 603ca08ab68Smrg 604ca08ab68SmrgTEMPLATEDIR=${templatedir} 605ca08ab68SmrgBASECONFIGDIR=${baseconfigdir} 606ca08ab68SmrgCONFIGDIR=${configdir} 607ca08ab68SmrgXMLDIR=${xmldir} 608ca08ab68SmrgAC_SUBST(TEMPLATEDIR) 609ca08ab68SmrgAC_SUBST(BASECONFIGDIR) 610ca08ab68SmrgAC_SUBST(CONFIGDIR) 611ca08ab68SmrgAC_SUBST(XMLDIR) 612ca08ab68Smrg 613c9710b42Smrg 614c9710b42Smrgdnl =========================================================================== 615c9710b42Smrg 616c9710b42Smrg# 617c9710b42Smrg# Thread-safety primitives 618c9710b42Smrg# 619c9710b42Smrg 620c9710b42SmrgAC_CACHE_CHECK([for Intel atomic primitives], fc_cv_have_intel_atomic_primitives, [ 621c9710b42Smrg fc_cv_have_intel_atomic_primitives=false 622c9710b42Smrg AC_TRY_LINK([ 623c9710b42Smrg void memory_barrier (void) { __sync_synchronize (); } 624c9710b42Smrg int atomic_add (int *i) { return __sync_fetch_and_add (i, 1); } 625c9710b42Smrg int mutex_trylock (int *m) { return __sync_lock_test_and_set (m, 1); } 626c9710b42Smrg void mutex_unlock (int *m) { __sync_lock_release (m); } 627c9710b42Smrg ], [], fc_cv_have_intel_atomic_primitives=true 628c9710b42Smrg ) 629c9710b42Smrg]) 630c9710b42Smrgif $fc_cv_have_intel_atomic_primitives; then 631c9710b42Smrg AC_DEFINE(HAVE_INTEL_ATOMIC_PRIMITIVES, 1, [Have Intel __sync_* atomic primitives]) 632c9710b42Smrgfi 633c9710b42Smrg 634c9710b42SmrgAC_CACHE_CHECK([for Solaris atomic operations], fc_cv_have_solaris_atomic_ops, [ 635c9710b42Smrg fc_cv_have_solaris_atomic_ops=false 636c9710b42Smrg AC_TRY_LINK([ 637c9710b42Smrg #include <atomic.h> 638c9710b42Smrg /* This requires Solaris Studio 12.2 or newer: */ 639c9710b42Smrg #include <mbarrier.h> 640c9710b42Smrg void memory_barrier (void) { __machine_rw_barrier (); } 641c9710b42Smrg int atomic_add (volatile unsigned *i) { return atomic_add_int_nv (i, 1); } 642c9710b42Smrg void *atomic_ptr_cmpxchg (volatile void **target, void *cmp, void *newval) { return atomic_cas_ptr (target, cmp, newval); } 643c9710b42Smrg ], [], fc_cv_have_solaris_atomic_ops=true 644c9710b42Smrg ) 645c9710b42Smrg]) 646c9710b42Smrgif $fc_cv_have_solaris_atomic_ops; then 647c9710b42Smrg AC_DEFINE(HAVE_SOLARIS_ATOMIC_OPS, 1, [Have Solaris __machine_*_barrier and atomic_* operations]) 648c9710b42Smrgfi 649c9710b42Smrg 650c9710b42Smrgif test "$os_win32" = no && ! $have_pthread; then 651c9710b42Smrg AC_CHECK_HEADERS(sched.h) 652c9710b42Smrg AC_SEARCH_LIBS(sched_yield,rt,AC_DEFINE(HAVE_SCHED_YIELD, 1, [Have sched_yield])) 653c9710b42Smrgfi 654c9710b42Smrg 655c9710b42Smrghave_pthread=false 656c9710b42Smrgif test "$os_win32" = no; then 657c9710b42Smrg AX_PTHREAD([have_pthread=true]) 658c9710b42Smrgfi 659c9710b42Smrgif $have_pthread; then 660c9710b42Smrg LIBS="$PTHREAD_LIBS $LIBS" 661c9710b42Smrg CFLAGS="$CFLAGS $PTHREAD_CFLAGS" 662c9710b42Smrg CC="$PTHREAD_CC" 663c9710b42Smrg AC_DEFINE(HAVE_PTHREAD, 1, [Have POSIX threads]) 664c9710b42Smrgfi 665c9710b42SmrgAM_CONDITIONAL(HAVE_PTHREAD, $have_pthread) 666c9710b42Smrg 667c9710b42Smrg 668c9710b42Smrgdnl =========================================================================== 669c9710b42Smrg 670ca08ab68Smrg# 671ca08ab68Smrg# Let people not build/install docs if they don't have docbook 672ca08ab68Smrg# 673ca08ab68Smrg 674ca08ab68SmrgAC_CHECK_PROG(HASDOCBOOK, docbook2html, yes, no) 675ca08ab68Smrg 676ca08ab68SmrgAM_CONDITIONAL(USEDOCBOOK, test "x$HASDOCBOOK" = xyes) 677ca08ab68Smrg 678ca08ab68Smrgdefault_docs="yes" 679ca08ab68Smrg# 680ca08ab68Smrg# Check if docs exist or can be created 681ca08ab68Smrg# 682ca08ab68Smrgif test x$HASDOCBOOK = xno; then 683ca08ab68Smrg if test -f $srcdir/doc/fonts-conf.5; then 684ca08ab68Smrg : 685ca08ab68Smrg else 686ca08ab68Smrg default_docs="no" 687ca08ab68Smrg fi 688ca08ab68Smrgfi 689ca08ab68Smrg 690ca08ab68SmrgAC_ARG_ENABLE(docs, 691ca08ab68Smrg [AC_HELP_STRING([--disable-docs], 692ca08ab68Smrg [Don't build and install documentation])], 693ca08ab68Smrg , 694ca08ab68Smrg enable_docs=$default_docs) 695ca08ab68Smrg 696ca08ab68SmrgAM_CONDITIONAL(ENABLE_DOCS, test "x$enable_docs" = xyes) 697ca08ab68Smrg 698ca08ab68Smrgif test "x$enable_docs" = xyes; then 699ca08ab68Smrg tmp=funcs.$$ 700ca08ab68Smrg cat $srcdir/doc/*.fncs | awk ' 701ca08ab68Smrg /^@TITLE@/ { if (!done) { printf ("%s\n", $2); done = 1; } } 702ca08ab68Smrg /^@FUNC@/ { if (!done) { printf ("%s\n", $2); done = 1; } } 703ca08ab68Smrg /^@@/ { done = 0; }' > $tmp 704ca08ab68Smrg DOCMAN3=`cat $tmp | awk '{ printf ("%s.3 ", $1); }'` 705ca08ab68Smrg echo DOCMAN3 $DOCMAN3 706ca08ab68Smrg rm -f $tmp 707ca08ab68Smrgelse 708ca08ab68Smrg DOCMAN3="" 709ca08ab68Smrgfi 710ca08ab68SmrgAC_SUBST(DOCMAN3) 711ca08ab68Smrg 712ca08ab68Smrg 713ca08ab68Smrgdnl Figure out what cache format suffix to use for this architecture 714ca08ab68SmrgAC_C_BIGENDIAN 715ca08ab68SmrgAC_CHECK_SIZEOF([void *]) 716ca08ab68SmrgAC_CHECK_ALIGNOF([double]) 717ca08ab68Smrg 718ca08ab68Smrgdnl include the header file for workaround of miscalculating size on autoconf 719ca08ab68Smrgdnl particularly for fat binaries 720ca08ab68SmrgAH_BOTTOM([#include "config-fixups.h"]) 721ca08ab68Smrg 7226fc018e4Smrgdnl 7236fc018e4Smrgdnl 7246fc018e4SmrgAC_SUBST(PKGCONFIG_REQUIRES) 7256fc018e4SmrgAC_SUBST(PKGCONFIG_REQUIRES_PRIVATELY) 7266fc018e4Smrg 7276fc018e4Smrgdnl 728c9710b42SmrgAC_CONFIG_FILES([ 729ca08ab68SmrgMakefile 730ca08ab68Smrgfontconfig/Makefile 731ca08ab68Smrgfc-lang/Makefile 732ca08ab68Smrgfc-glyphname/Makefile 733ca08ab68Smrgfc-case/Makefile 734ca08ab68Smrgsrc/Makefile 735ca08ab68Smrgconf.d/Makefile 736ca08ab68Smrgfc-cache/Makefile 737ca08ab68Smrgfc-cat/Makefile 738ca08ab68Smrgfc-list/Makefile 739ca08ab68Smrgfc-match/Makefile 740ca08ab68Smrgfc-pattern/Makefile 741ca08ab68Smrgfc-query/Makefile 742ca08ab68Smrgfc-scan/Makefile 743c9710b42Smrgfc-validate/Makefile 744ca08ab68Smrgdoc/Makefile 745ca08ab68Smrgdoc/version.sgml 746ca08ab68Smrgtest/Makefile 747ca08ab68Smrgfontconfig.spec 748ca08ab68Smrgfontconfig.pc 749ca08ab68Smrgfontconfig-zip 750ca08ab68Smrg]) 751c9710b42SmrgAC_OUTPUT 752