X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=configure.ac;h=fb8af4671feb1c2c7da1baf0954436e4a44b0ffc;hb=74fb2dc675f84a4137c4b69d300739495e26e764;hp=12e4d5a6c052008e4a8bc53f7d5eed52ec7e7bac;hpb=da9400212db8e5aa0a0bdd4fad21d2008b5034e2;p=platform%2Fupstream%2Ffontconfig.git diff --git a/configure.ac b/configure.ac index 12e4d5a..fb8af46 100644 --- a/configure.ac +++ b/configure.ac @@ -24,7 +24,6 @@ dnl dnl Process this file with autoconf to create configure. AC_PREREQ(2.61) -AC_INIT(fonts.dtd) dnl ========================================================================== dnl Versioning @@ -34,37 +33,26 @@ dnl This is the package version number, not the shared library dnl version. This same version number must appear in fontconfig/fontconfig.h dnl Yes, it is a pain to synchronize version numbers. Unfortunately, it's dnl not possible to extract the version number here from fontconfig.h -AM_INIT_AUTOMAKE(fontconfig, 2.9.92) +AC_INIT([fontconfig], [2.13.1], [https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/new]) +AM_INIT_AUTOMAKE([1.11 parallel-tests dist-bzip2]) m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) -dnl libtool versioning - -dnl bump revision when fixing bugs -dnl bump current and age, reset revision to zero when adding APIs -dnl bump current, leave age, reset revision to zero when changing/removing APIS -LIBT_CURRENT=7 -LIBT_REVISION=1 -AC_SUBST(LIBT_CURRENT) -AC_SUBST(LIBT_REVISION) -LIBT_AGE=6 - -LIBT_VERSION_INFO="$LIBT_CURRENT:$LIBT_REVISION:$LIBT_AGE" -AC_SUBST(LIBT_VERSION_INFO) - -LIBT_CURRENT_MINUS_AGE=`expr $LIBT_CURRENT - $LIBT_AGE` -AC_SUBST(LIBT_CURRENT_MINUS_AGE) - dnl ========================================================================== AC_CONFIG_HEADERS(config.h) +AC_CONFIG_MACRO_DIR([m4]) AC_PROG_CC +AC_USE_SYSTEM_EXTENSIONS +AC_SYS_LARGEFILE AC_PROG_INSTALL AC_PROG_LN_S -AC_LIBTOOL_WIN32_DLL -AM_PROG_LIBTOOL AC_PROG_MAKE_SET PKG_PROG_PKG_CONFIG +m4_ifdef([PKG_INSTALLDIR], [PKG_INSTALLDIR], AC_SUBST([pkgconfigdir], ${libdir}/pkgconfig)) + +AM_MISSING_PROG([GIT], [git]) +AM_MISSING_PROG([GPERF], [gperf]) AC_MSG_CHECKING([for RM macro]) _predefined_rm=`make -p -f /dev/null 2>/dev/null|grep '^RM ='|sed -e 's/^RM = //'` @@ -75,8 +63,31 @@ else AC_MSG_RESULT($_predefined_rm) fi -dnl ========================================================================== +dnl Initialize libtool +LT_PREREQ([2.2]) +LT_INIT([disable-static win32-dll]) + +dnl libtool versioning + +dnl bump revision when fixing bugs +dnl bump current and age, reset revision to zero when adding APIs +dnl bump current, leave age, reset revision to zero when changing/removing APIS +LIBT_CURRENT=13 +LIBT_REVISION=0 +AC_SUBST(LIBT_CURRENT) +AC_SUBST(LIBT_REVISION) +LIBT_AGE=12 +LIBT_VERSION_INFO="$LIBT_CURRENT:$LIBT_REVISION:$LIBT_AGE" +AC_SUBST(LIBT_VERSION_INFO) + +LIBT_CURRENT_MINUS_AGE=`expr $LIBT_CURRENT - $LIBT_AGE` +AC_SUBST(LIBT_CURRENT_MINUS_AGE) + +PKGCONFIG_REQUIRES= +PKGCONFIG_REQUIRES_PRIVATELY= + +dnl ========================================================================== case "$host" in *-*-mingw*) os_win32=yes @@ -86,16 +97,36 @@ case "$host" in esac AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes") +dnl ========================================================================== +dnl gettext stuff +dnl ========================================================================== +GETTEXT_PACKAGE=$PACKAGE +AC_SUBST(GETTEXT_PACKAGE) +AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Gettext package]) + +AM_GNU_GETTEXT_VERSION([0.19.8]) +AM_GNU_GETTEXT([external]) + +dnl ========================================================================== + if test "$os_win32" = "yes"; then AC_CHECK_PROG(ms_librarian, lib.exe, yes, no) fi AM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes) +AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"]) WARN_CFLAGS="" +WARNING_CPP_DIRECTIVE="no" if test "x$GCC" = "xyes"; then WARN_CFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes \ -Wmissing-prototypes -Wmissing-declarations \ -Wnested-externs -fno-strict-aliasing" + WARNING_CPP_DIRECTIVE="yes" +elif test "x$SUNCC" = "xyes"; then + WARN_CFLAGS="-v -fd" + WARNING_CPP_DIRECTIVE="yes" +fi +if test "x$WARNING_CPP_DIRECTIVE" = "xyes"; then AC_DEFINE_UNQUOTED(HAVE_WARNING_CPP_DIRECTIVE,1, [Can use #warning in C files]) fi @@ -104,6 +135,8 @@ AC_SUBST(WARN_CFLAGS) dnl ========================================================================== +AX_CC_FOR_BUILD() +AC_ARG_VAR(CC_FOR_BUILD, [build system C compiler]) AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes) AM_CONDITIONAL(ENABLE_SHARED, test "$enable_shared" = "yes") @@ -124,7 +157,8 @@ dnl ========================================================================== # Checks for header files. AC_HEADER_DIRENT AC_HEADER_STDC -AC_CHECK_HEADERS([fcntl.h regex.h stdlib.h string.h unistd.h sys/vfs.h sys/statfs.h sys/param.h sys/mount.h]) +AC_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]) +AX_CREATE_STDINT_H([src/fcstdint.h]) # Checks for typedefs, structures, and compiler characteristics. AC_C_CONST @@ -135,7 +169,15 @@ AC_TYPE_PID_T # Checks for library functions. AC_FUNC_VPRINTF AC_FUNC_MMAP -AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr strtol getopt getopt_long sysconf ftruncate chsize rand random lrand48 random_r rand_r regcomp regerror regexec regfree posix_fadvise fstatvfs fstatfs]) +AC_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]) + +dnl AC_CHECK_FUNCS doesn't check for header files. +dnl posix_fadvise() may be not available in older libc. +AC_CHECK_SYMBOL([posix_fadvise], [fcntl.h], [fc_func_posix_fadvise=1], [fc_func_posix_fadvise=0]) +AC_DEFINE_UNQUOTED([HAVE_POSIX_FADVISE], [$fc_func_posix_fadvise], [Define to 1 if you have the 'posix_fadvise' function.]) + +# +AC_CHECK_MEMBERS([struct stat.st_mtim],,, [#include ]) # if test "x$ac_cv_func_fstatvfs" = "xyes"; then @@ -159,12 +201,26 @@ if test "x$ac_cv_func_fstatfs" = "xyes"; then fi AC_CHECK_MEMBERS([struct dirent.d_type],,, [#include ]) -# -# regex -# -if 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 - AC_DEFINE(USE_REGEX,,[Use regex]) -fi + +# Check the argument type of the gperf hash/lookup function +AC_MSG_CHECKING([The type of len parameter of gperf hash/lookup function]) +fc_gperf_test="$(echo 'foo' | gperf -L ANSI-C)" +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include + + const char *in_word_set(register const char *, register size_t); + $fc_gperf_test + ]])], [FC_GPERF_SIZE_T=size_t], + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include + + const char *in_word_set(register const char *, register unsigned int); + $fc_gperf_test + ]])], [FC_GPERF_SIZE_T="unsigned int"], + [AC_MSG_ERROR([Unable to determine the type of the len parameter of the gperf hash/lookup function])] +)]) +AC_DEFINE_UNQUOTED(FC_GPERF_SIZE_T, $FC_GPERF_SIZE_T, [The type of len parameter of the gperf hash/lookup function]) +AC_MSG_RESULT($FC_GPERF_SIZE_T) # # Checks for iconv @@ -225,13 +281,14 @@ if test "x$enable_iconv" != "xno"; then AC_TRY_LINK([#include ], [iconv_open ("from", "to");], [iconv_type="libiconv" - use_iconv=1], + use_iconv=1 + ICONV_CFLAGS="$libiconv_cflags" + ICONV_LIBS="$libiconv_libs" + ], [use_iconv=0]) CFLAGS="$iconvsaved_CFLAGS" LIBS="$iconvsaved_LIBS" - ICONV_CFLAGS="$libiconv_cflags" - ICONV_LIBS="$libiconv_libs" fi if test "x$use_iconv" = "x0"; then AC_TRY_LINK([#include ], @@ -250,7 +307,9 @@ AC_DEFINE_UNQUOTED(USE_ICONV,$use_iconv,[Use iconv.]) # # Checks for FreeType # -PKG_CHECK_MODULES(FREETYPE, freetype2) +dnl See http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/VERSIONS.TXT for versioning in freetype +PKG_CHECK_MODULES(FREETYPE, freetype2 >= 21.0.15) +PKGCONFIG_REQUIRES="$PKGCONFIG_REQUIRES freetype2 >= 21.0.15" AC_SUBST(FREETYPE_LIBS) AC_SUBST(FREETYPE_CFLAGS) @@ -259,16 +318,52 @@ fontconfig_save_libs="$LIBS" fontconfig_save_cflags="$CFLAGS" LIBS="$LIBS $FREETYPE_LIBS" CFLAGS="$CFLAGS $FREETYPE_CFLAGS" -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 FT_Select_Size) -AC_CHECK_MEMBER(FT_Bitmap_Size.y_ppem, - HAVE_FT_BITMAP_SIZE_Y_PPEM=1, - HAVE_FT_BITMAP_SIZE_Y_PPEM=0, -[#include -#include FT_FREETYPE_H]) -AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,$HAVE_FT_BITMAP_SIZE_Y_PPEM, - [FT_Bitmap_Size structure includes y_ppem field]) -CFLAGS="$fontconfig_save_cflags" +AC_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) + +AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ + #include + #include FT_CONFIG_OPTIONS_H + #ifndef PCF_CONFIG_OPTION_LONG_FAMILY_NAMES + # error "No pcf long family names support" + #endif + ]])], [have_pcf_long_family_names=yes], [have_pcf_long_family_names=no]) +AM_CONDITIONAL(FREETYPE_PCF_LONG_FAMILY_NAMES, test "x$have_pcf_long_family_names" = xyes) + LIBS="$fontconfig_save_libs" +CFLAGS="$fontconfig_save_cflags" + +# +# Check for uuid +# +if test "$os_win32" != "yes"; then + use_pkgconfig_for_uuid=yes + if test -n "${UUID_LIBS}"; then + save_UUID_LIBS=$UUID_LIBS + fi + PKG_CHECK_MODULES([UUID], [uuid], + [use_pkgconfig_for_uuid=yes], + [use_pkgconfig_for_uuid=no]) + if test "x$use_pkgconfig_for_uuid" = "xno"; then + AC_MSG_CHECKING([where uuid functions comes from]) + AC_TRY_LINK([#include ], + [uuid_t a; uuid_generate(a);], + [AC_MSG_RESULT([builtin]) + UUID_CFLAGS="" + UUID_LIBS="" + ],[AC_MSG_ERROR([ +*** uuid is required. install util-linux. + ])]) + else + if test -z "${save_UUID_LIBS+x}" && test "x${UUID_LIBS}" != "x"; then + PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY uuid" + fi + fi +else + UUID_CFLAGS="" + UUID_LIBS="" +fi +AC_SUBST(UUID_CFLAGS) +AC_SUBST(UUID_LIBS) # # Check expat configuration @@ -310,6 +405,12 @@ if test "$enable_libxml2" != "yes"; then else EXPAT_LIBS="-lexpat" fi + PKG_EXPAT_CFLAGS=$EXPAT_CFLAGS + PKG_EXPAT_LIBS=$EXPAT_LIBS + else + PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY expat" + PKG_EXPAT_CFLAGS= + PKG_EXPAT_LIBS= fi expatsaved_CPPFLAGS="$CPPFLAGS" @@ -340,6 +441,8 @@ if test "$enable_libxml2" != "yes"; then AC_SUBST(EXPAT_CFLAGS) AC_SUBST(EXPAT_LIBS) + AC_SUBST(PKG_EXPAT_CFLAGS) + AC_SUBST(PKG_EXPAT_LIBS) fi # @@ -351,6 +454,7 @@ AC_ARG_ENABLE(libxml2, if test "$enable_libxml2" = "yes"; then PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6]) + PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY libxml-2.0 >= 2.6" AC_DEFINE_UNQUOTED(ENABLE_LIBXML2,1,[Use libxml2 instead of Expat]) AC_SUBST(LIBXML2_CFLAGS) @@ -370,6 +474,34 @@ if test "$enable_libxml2" = "yes"; then fi # +# Check json-c +# +PKG_CHECK_MODULES([JSONC], [json-c], [use_jsonc=yes], [use_jsonc=no]) + +AM_CONDITIONAL(ENABLE_JSONC, test "x$use_jsonc" = "xyes") +AC_SUBST(JSONC_CFLAGS) +AC_SUBST(JSONC_LIBS) + +# +# Set default hinting +# + +AC_ARG_WITH(default-hinting, + [AC_HELP_STRING([--with-default-hinting=NAME], + [Enable your preferred hinting configuration (none/slight/medium/full) [default=slight]])], + preferred_hinting="$withval", preferred_hinting=slight) + +case "$preferred_hinting" in +none|slight|medium|full) + PREFERRED_HINTING="$preferred_hinting" + AC_SUBST(PREFERRED_HINTING) + ;; +*) + AC_MSG_ERROR([Invalid hinting. please choose one of none, slight, medium, or full]) + ;; +esac + +# # Set default font directory # @@ -466,7 +598,7 @@ AC_ARG_WITH(cache-dir, case $fc_cachedir in no|yes) if test "$os_win32" = "yes"; then - fc_cachedir="WINDOWSTEMPDIR_FONTCONFIG_CACHE" + fc_cachedir="LOCAL_APPDATA_FONTCONFIG_CACHE" else fc_cachedir='${localstatedir}/cache/${PACKAGE}' fi @@ -523,7 +655,7 @@ no|yes) esac case "$configdir" in no|yes) - configdir='${baseconfigdir}'/conf.d + configdir='${BASECONFIGDIR}'/conf.d ;; *) ;; @@ -540,15 +672,68 @@ TEMPLATEDIR=${templatedir} BASECONFIGDIR=${baseconfigdir} CONFIGDIR=${configdir} XMLDIR=${xmldir} -AC_SUBST(templatedir) AC_SUBST(TEMPLATEDIR) -AC_SUBST(baseconfigdir) AC_SUBST(BASECONFIGDIR) -AC_SUBST(configdir) AC_SUBST(CONFIGDIR) -AC_SUBST(xmldir) AC_SUBST(XMLDIR) + +dnl =========================================================================== + +# +# Thread-safety primitives +# + +AC_CACHE_CHECK([for Intel atomic primitives], fc_cv_have_intel_atomic_primitives, [ + fc_cv_have_intel_atomic_primitives=false + AC_TRY_LINK([ + void memory_barrier (void) { __sync_synchronize (); } + int atomic_add (int *i) { return __sync_fetch_and_add (i, 1); } + int mutex_trylock (int *m) { return __sync_lock_test_and_set (m, 1); } + void mutex_unlock (int *m) { __sync_lock_release (m); } + ], [], fc_cv_have_intel_atomic_primitives=true + ) +]) +if $fc_cv_have_intel_atomic_primitives; then + AC_DEFINE(HAVE_INTEL_ATOMIC_PRIMITIVES, 1, [Have Intel __sync_* atomic primitives]) +fi + +AC_CACHE_CHECK([for Solaris atomic operations], fc_cv_have_solaris_atomic_ops, [ + fc_cv_have_solaris_atomic_ops=false + AC_TRY_LINK([ + #include + /* This requires Solaris Studio 12.2 or newer: */ + #include + void memory_barrier (void) { __machine_rw_barrier (); } + int atomic_add (volatile unsigned *i) { return atomic_add_int_nv (i, 1); } + void *atomic_ptr_cmpxchg (volatile void **target, void *cmp, void *newval) { return atomic_cas_ptr (target, cmp, newval); } + ], [], fc_cv_have_solaris_atomic_ops=true + ) +]) +if $fc_cv_have_solaris_atomic_ops; then + AC_DEFINE(HAVE_SOLARIS_ATOMIC_OPS, 1, [Have Solaris __machine_*_barrier and atomic_* operations]) +fi + +if test "$os_win32" = no && ! $have_pthread; then + AC_CHECK_HEADERS(sched.h) + AC_SEARCH_LIBS(sched_yield,rt,AC_DEFINE(HAVE_SCHED_YIELD, 1, [Have sched_yield])) +fi + +have_pthread=false +if test "$os_win32" = no; then + AX_PTHREAD([have_pthread=true]) +fi +if $have_pthread; then + LIBS="$PTHREAD_LIBS $LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + CC="$PTHREAD_CC" + AC_DEFINE(HAVE_PTHREAD, 1, [Have POSIX threads]) +fi +AM_CONDITIONAL(HAVE_PTHREAD, $have_pthread) + + +dnl =========================================================================== + # # Let people not build/install docs if they don't have docbook # @@ -578,7 +763,6 @@ AC_ARG_ENABLE(docs, AM_CONDITIONAL(ENABLE_DOCS, test "x$enable_docs" = xyes) if test "x$enable_docs" = xyes; then - DOCSRC="doc" tmp=funcs.$$ cat $srcdir/doc/*.fncs | awk ' /^@TITLE@/ { if (!done) { printf ("%s\n", $2); done = 1; } } @@ -588,11 +772,8 @@ if test "x$enable_docs" = xyes; then echo DOCMAN3 $DOCMAN3 rm -f $tmp else - DOCSRC="" DOCMAN3="" fi - -AC_SUBST(DOCSRC) AC_SUBST(DOCMAN3) @@ -600,30 +781,42 @@ dnl Figure out what cache format suffix to use for this architecture AC_C_BIGENDIAN AC_CHECK_SIZEOF([void *]) AC_CHECK_ALIGNOF([double]) +AC_CHECK_ALIGNOF([void *]) dnl include the header file for workaround of miscalculating size on autoconf dnl particularly for fat binaries AH_BOTTOM([#include "config-fixups.h"]) -AC_OUTPUT([ +dnl +dnl +AC_SUBST(PKGCONFIG_REQUIRES) +AC_SUBST(PKGCONFIG_REQUIRES_PRIVATELY) + +dnl +AC_CONFIG_FILES([ Makefile fontconfig/Makefile fc-lang/Makefile -fc-glyphname/Makefile fc-case/Makefile src/Makefile conf.d/Makefile fc-cache/Makefile fc-cat/Makefile +fc-conflist/Makefile fc-list/Makefile fc-match/Makefile fc-pattern/Makefile fc-query/Makefile fc-scan/Makefile +fc-validate/Makefile doc/Makefile doc/version.sgml +its/Makefile +po/Makefile.in +po-conf/Makefile.in test/Makefile fontconfig.spec fontconfig.pc fontconfig-zip ]) +AC_OUTPUT