parent
3d164d5883
commit
01ac32aab2
30 changed files with 1 additions and 4769 deletions
@ -1,96 +0,0 @@ |
|||||||
# Process this file with automake to produce Makefile.in
|
|
||||||
|
|
||||||
NULL =
|
|
||||||
|
|
||||||
ACLOCAL_AMFLAGS = -I m4
|
|
||||||
|
|
||||||
SUBDIRS = src util test docs
|
|
||||||
|
|
||||||
EXTRA_DIST = \
|
|
||||||
autogen.sh \
|
|
||||||
harfbuzz.doap \
|
|
||||||
README.md \
|
|
||||||
README.python.md \
|
|
||||||
BUILD.md \
|
|
||||||
CONFIG.md \
|
|
||||||
RELEASING.md \
|
|
||||||
TESTING.md \
|
|
||||||
meson.build \
|
|
||||||
meson_options.txt \
|
|
||||||
subprojects/expat.wrap \
|
|
||||||
subprojects/fontconfig.wrap \
|
|
||||||
subprojects/freetype2.wrap \
|
|
||||||
subprojects/glib.wrap \
|
|
||||||
subprojects/libffi.wrap \
|
|
||||||
subprojects/proxy-libintl.wrap \
|
|
||||||
subprojects/zlib.wrap \
|
|
||||||
subprojects/google-benchmark.wrap \
|
|
||||||
perf/meson.build \
|
|
||||||
perf/perf-draw.hh \
|
|
||||||
perf/perf-extents.hh \
|
|
||||||
perf/perf-shaping.hh \
|
|
||||||
perf/perf.cc \
|
|
||||||
perf/fonts/Amiri-Regular.ttf \
|
|
||||||
perf/fonts/NotoNastaliqUrdu-Regular.ttf \
|
|
||||||
perf/fonts/NotoSansDevanagari-Regular.ttf \
|
|
||||||
perf/fonts/Roboto-Regular.ttf \
|
|
||||||
perf/texts/en-thelittleprince.txt \
|
|
||||||
perf/texts/en-words.txt \
|
|
||||||
perf/texts/fa-monologue.txt \
|
|
||||||
perf/texts/fa-thelittleprince.txt \
|
|
||||||
meson-cc-tests/intel-atomic-primitives-test.c \
|
|
||||||
meson-cc-tests/solaris-atomic-operations.c \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
MAINTAINERCLEANFILES = \
|
|
||||||
$(GITIGNORE_MAINTAINERCLEANFILES_TOPLEVEL) \
|
|
||||||
$(GITIGNORE_MAINTAINERCLEANFILES_M4_LIBTOOL) \
|
|
||||||
$(GITIGNORE_MAINTAINERCLEANFILES_MAKEFILE_IN) \
|
|
||||||
$(srcdir)/INSTALL \
|
|
||||||
$(srcdir)/ChangeLog \
|
|
||||||
$(srcdir)/gtk-doc.make \
|
|
||||||
$(srcdir)/m4/gtk-doc.m4 \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# ChangeLog generation
|
|
||||||
#
|
|
||||||
CHANGELOG_RANGE =
|
|
||||||
ChangeLog: $(srcdir)/ChangeLog |
|
||||||
$(srcdir)/ChangeLog: |
|
||||||
$(AM_V_GEN) if test -d "$(top_srcdir)/.git"; then \
|
|
||||||
(GIT_DIR=$(top_srcdir)/.git \
|
|
||||||
$(GIT) log $(CHANGELOG_RANGE) --stat) > $@.tmp \
|
|
||||||
&& mv -f $@.tmp "$(srcdir)/ChangeLog" \
|
|
||||||
|| ($(RM) $@.tmp; \
|
|
||||||
echo Failed to generate ChangeLog, your ChangeLog may be outdated >&2; \
|
|
||||||
(test -f $@ || echo git-log is required to generate this file >> "$(srcdir)/$@")); \
|
|
||||||
else \
|
|
||||||
test -f $@ || \
|
|
||||||
(echo A git checkout and git-log is required to generate ChangeLog >&2 && \
|
|
||||||
echo A git checkout and git-log is required to generate this file >> "$(srcdir)/$@"); \
|
|
||||||
fi
|
|
||||||
.PHONY: ChangeLog $(srcdir)/ChangeLog |
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# Release engineering
|
|
||||||
#
|
|
||||||
|
|
||||||
DISTCHECK_CONFIGURE_FLAGS = \
|
|
||||||
--enable-gtk-doc \
|
|
||||||
--disable-doc-cross-references \
|
|
||||||
--with-gobject \
|
|
||||||
--enable-introspection \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
# TAR_OPTIONS is not set as env var for 'make dist'. How to fix that?
|
|
||||||
TAR_OPTIONS = --owner=0 --group=0
|
|
||||||
|
|
||||||
dist-hook: dist-clear-sticky-bits |
|
||||||
# Clean up any sticky bits we may inherit from parent dir
|
|
||||||
dist-clear-sticky-bits: |
|
||||||
chmod -R a-s $(distdir)
|
|
||||||
|
|
||||||
-include $(top_srcdir)/git.mk |
|
@ -1,15 +0,0 @@ |
|||||||
This is HarfBuzz, a text shaping library. |
|
||||||
|
|
||||||
For bug reports, mailing list, and other information please visit: |
|
||||||
|
|
||||||
http://harfbuzz.org/ |
|
||||||
|
|
||||||
For license information, see https://github.com/harfbuzz/harfbuzz/blob/master/COPYING |
|
||||||
|
|
||||||
For build information, see https://github.com/harfbuzz/harfbuzz/blob/master/BUILD.md |
|
||||||
|
|
||||||
For custom configurations, see https://github.com/harfbuzz/harfbuzz/blob/master/CONFIG.md |
|
||||||
|
|
||||||
For test execution, see https://github.com/harfbuzz/harfbuzz/blob/master/TESTING.md |
|
||||||
|
|
||||||
Documentation: https://harfbuzz.github.io |
|
@ -1,48 +0,0 @@ |
|||||||
#!/bin/sh |
|
||||||
# Run this to generate all the initial makefiles, etc. |
|
||||||
|
|
||||||
test -n "$srcdir" || srcdir=`dirname "$0"` |
|
||||||
test -n "$srcdir" || srcdir=. |
|
||||||
|
|
||||||
olddir=`pwd` |
|
||||||
cd $srcdir |
|
||||||
|
|
||||||
#printf "checking for ragel... " |
|
||||||
#which ragel || { |
|
||||||
# echo "You need to install ragel... See http://www.complang.org/ragel/" |
|
||||||
# exit 1 |
|
||||||
#} |
|
||||||
|
|
||||||
printf "checking for pkg-config... " |
|
||||||
which pkg-config || { |
|
||||||
echo "*** No pkg-config found, please install it ***" |
|
||||||
exit 1 |
|
||||||
} |
|
||||||
|
|
||||||
printf "checking for libtoolize... " |
|
||||||
which glibtoolize || which libtoolize || { |
|
||||||
echo "*** No libtoolize (libtool) found, please install it ***" |
|
||||||
exit 1 |
|
||||||
} |
|
||||||
printf "checking for gtkdocize... " |
|
||||||
if which gtkdocize ; then |
|
||||||
gtkdocize --copy || exit 1 |
|
||||||
else |
|
||||||
echo "*** No gtkdocize (gtk-doc) found, skipping documentation ***" |
|
||||||
echo "EXTRA_DIST = " > gtk-doc.make |
|
||||||
fi |
|
||||||
|
|
||||||
printf "checking for autoreconf... " |
|
||||||
which autoreconf || { |
|
||||||
echo "*** No autoreconf (autoconf) found, please install it ***" |
|
||||||
exit 1 |
|
||||||
} |
|
||||||
|
|
||||||
echo "running autoreconf --force --install --verbose" |
|
||||||
autoreconf --force --install --verbose || exit $? |
|
||||||
|
|
||||||
cd $olddir |
|
||||||
test -n "$NOCONFIGURE" || { |
|
||||||
echo "running configure $@" |
|
||||||
"$srcdir/configure" "$@" |
|
||||||
} |
|
@ -1,540 +0,0 @@ |
|||||||
AC_PREREQ([2.64]) |
|
||||||
AC_INIT([HarfBuzz], |
|
||||||
[2.7.0], |
|
||||||
[https://github.com/harfbuzz/harfbuzz/issues/new], |
|
||||||
[harfbuzz], |
|
||||||
[http://harfbuzz.org/]) |
|
||||||
|
|
||||||
AC_CONFIG_MACRO_DIR([m4]) |
|
||||||
AC_CONFIG_SRCDIR([src/harfbuzz.pc.in]) |
|
||||||
AC_CONFIG_HEADERS([config.h]) |
|
||||||
|
|
||||||
AM_INIT_AUTOMAKE([1.13.0 gnits tar-ustar dist-xz no-dist-gzip -Wall no-define color-tests -Wno-portability]) |
|
||||||
AM_SILENT_RULES([yes]) |
|
||||||
AX_CODE_COVERAGE |
|
||||||
|
|
||||||
# Initialize libtool |
|
||||||
m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) |
|
||||||
LT_PREREQ([2.2]) |
|
||||||
LT_INIT([disable-static]) |
|
||||||
|
|
||||||
# Check for programs |
|
||||||
AC_PROG_CC |
|
||||||
AC_PROG_CC_C99 |
|
||||||
AM_PROG_CC_C_O |
|
||||||
AC_PROG_CXX |
|
||||||
AX_CXX_COMPILE_STDCXX(11) |
|
||||||
AC_SYS_LARGEFILE |
|
||||||
PKG_PROG_PKG_CONFIG([0.20]) |
|
||||||
AM_MISSING_PROG([RAGEL], [ragel]) |
|
||||||
AM_MISSING_PROG([GIT], [git]) |
|
||||||
|
|
||||||
# Version |
|
||||||
m4_define(hb_version_triplet,m4_split(AC_PACKAGE_VERSION,[[.]])) |
|
||||||
m4_define(hb_version_major,m4_argn(1,hb_version_triplet)) |
|
||||||
m4_define(hb_version_minor,m4_argn(2,hb_version_triplet)) |
|
||||||
m4_define(hb_version_micro,m4_argn(3,hb_version_triplet)) |
|
||||||
HB_VERSION_MAJOR=hb_version_major |
|
||||||
HB_VERSION_MINOR=hb_version_minor |
|
||||||
HB_VERSION_MICRO=hb_version_micro |
|
||||||
HB_VERSION=AC_PACKAGE_VERSION |
|
||||||
AC_SUBST(HB_VERSION_MAJOR) |
|
||||||
AC_SUBST(HB_VERSION_MINOR) |
|
||||||
AC_SUBST(HB_VERSION_MICRO) |
|
||||||
AC_SUBST(HB_VERSION) |
|
||||||
|
|
||||||
# Libtool version |
|
||||||
m4_define([hb_version_int], |
|
||||||
m4_eval(hb_version_major*10000 + hb_version_minor*100 + hb_version_micro)) |
|
||||||
HB_LIBTOOL_VERSION_INFO=hb_version_int:0:hb_version_int |
|
||||||
AC_SUBST(HB_LIBTOOL_VERSION_INFO) |
|
||||||
|
|
||||||
AC_ARG_WITH([libstdc++], |
|
||||||
[AS_HELP_STRING([--with-libstdc++=@<:@yes/no@:>@], |
|
||||||
[Allow linking with libstdc++ @<:@default=no@:>@])], |
|
||||||
[with_libstdcxx=$withval], |
|
||||||
[with_libstdcxx=no]) |
|
||||||
AM_CONDITIONAL(WITH_LIBSTDCXX, [test "x$with_libstdcxx" = "xyes"]) |
|
||||||
|
|
||||||
# Documentation |
|
||||||
have_gtk_doc=false |
|
||||||
m4_ifdef([GTK_DOC_CHECK], [ |
|
||||||
GTK_DOC_CHECK([1.15],[--flavour no-tmpl]) |
|
||||||
if test "x$enable_gtk_doc" = xyes; then |
|
||||||
have_gtk_doc=true |
|
||||||
fi |
|
||||||
], [ |
|
||||||
AM_CONDITIONAL([ENABLE_GTK_DOC], false) |
|
||||||
]) |
|
||||||
|
|
||||||
# Functions and headers |
|
||||||
AC_CHECK_FUNCS(atexit mprotect sysconf getpagesize mmap isatty) |
|
||||||
AC_CHECK_HEADERS(unistd.h sys/mman.h stdbool.h) |
|
||||||
|
|
||||||
# Compiler flags |
|
||||||
AC_CANONICAL_HOST |
|
||||||
AC_CHECK_ALIGNOF([struct{char;}]) |
|
||||||
if test "x$GCC" = "xyes"; then |
|
||||||
|
|
||||||
# Make symbols link locally |
|
||||||
AX_CHECK_LINK_FLAG([[-Bsymbolic-functions]], [LDFLAGS="$LDFLAGS -Bsymbolic-functions"]) |
|
||||||
|
|
||||||
# Make it possible to not link to libstdc++ |
|
||||||
# No threadsafe statics in C++ as we do it ourselves. |
|
||||||
# We don't use these features, so it's safe to disable them |
|
||||||
# even in the cases where we DO link to libstdc++. |
|
||||||
# Put -fno-rtti before $CXXFLAGS such that users can re-enable it |
|
||||||
# by overriding CXXFLAGS. |
|
||||||
CXXFLAGS="-fno-rtti $CXXFLAGS -fno-exceptions -fno-threadsafe-statics" |
|
||||||
|
|
||||||
case "$host" in |
|
||||||
*-*-mingw*) |
|
||||||
;; |
|
||||||
*) |
|
||||||
# Hide inline methods |
|
||||||
CXXFLAGS="$CXXFLAGS -fvisibility-inlines-hidden" |
|
||||||
;; |
|
||||||
esac |
|
||||||
|
|
||||||
case "$host" in |
|
||||||
arm-*-*) |
|
||||||
if test "x$ac_cv_alignof_struct_char__" != x1; then |
|
||||||
# Request byte alignment |
|
||||||
CXXFLAGS="$CXXFLAGS -mstructure-size-boundary=8" |
|
||||||
fi |
|
||||||
;; |
|
||||||
esac |
|
||||||
fi |
|
||||||
|
|
||||||
AM_CONDITIONAL(HAVE_GCC, test "x$GCC" = "xyes") |
|
||||||
|
|
||||||
hb_os_win32=no |
|
||||||
AC_MSG_CHECKING([for native Win32]) |
|
||||||
case "$host" in |
|
||||||
*-*-mingw*) |
|
||||||
hb_os_win32=yes |
|
||||||
;; |
|
||||||
esac |
|
||||||
AC_MSG_RESULT([$hb_os_win32]) |
|
||||||
AM_CONDITIONAL(OS_WIN32, test "$hb_os_win32" = "yes") |
|
||||||
|
|
||||||
have_pthread=false |
|
||||||
AX_PTHREAD([have_pthread=true]) |
|
||||||
if $have_pthread; then |
|
||||||
AC_DEFINE(HAVE_PTHREAD, 1, [Have POSIX threads]) |
|
||||||
fi |
|
||||||
AM_CONDITIONAL(HAVE_PTHREAD, $have_pthread) |
|
||||||
|
|
||||||
dnl ========================================================================== |
|
||||||
|
|
||||||
AC_ARG_WITH(glib, |
|
||||||
[AS_HELP_STRING([--with-glib=@<:@yes/no/auto@:>@], |
|
||||||
[Use glib @<:@default=auto@:>@])],, |
|
||||||
[with_glib=auto]) |
|
||||||
have_glib=false |
|
||||||
GLIB_DEPS="glib-2.0 >= 2.19.1" |
|
||||||
AC_SUBST(GLIB_DEPS) |
|
||||||
if test "x$with_glib" = "xyes" -o "x$with_glib" = "xauto"; then |
|
||||||
PKG_CHECK_MODULES(GLIB, $GLIB_DEPS, have_glib=true, :) |
|
||||||
fi |
|
||||||
if test "x$with_glib" = "xyes" -a "x$have_glib" != "xtrue"; then |
|
||||||
AC_MSG_ERROR([glib support requested but glib-2.0 not found]) |
|
||||||
fi |
|
||||||
if $have_glib; then |
|
||||||
AC_DEFINE(HAVE_GLIB, 1, [Have glib2 library]) |
|
||||||
fi |
|
||||||
AM_CONDITIONAL(HAVE_GLIB, $have_glib) |
|
||||||
|
|
||||||
dnl =========================================================================== |
|
||||||
|
|
||||||
AC_ARG_WITH(gobject, |
|
||||||
[AS_HELP_STRING([--with-gobject=@<:@yes/no/auto@:>@], |
|
||||||
[Use gobject @<:@default=no@:>@])],, |
|
||||||
[with_gobject=no]) |
|
||||||
have_gobject=false |
|
||||||
if test "x$with_gobject" = "xyes" -o "x$with_gobject" = "xauto"; then |
|
||||||
PKG_CHECK_MODULES(GOBJECT, gobject-2.0 glib-2.0, have_gobject=true, :) |
|
||||||
fi |
|
||||||
if test "x$with_gobject" = "xyes" -a "x$have_gobject" != "xtrue"; then |
|
||||||
AC_MSG_ERROR([gobject support requested but gobject-2.0 / glib-2.0 not found]) |
|
||||||
fi |
|
||||||
if $have_gobject; then |
|
||||||
AC_DEFINE(HAVE_GOBJECT, 1, [Have gobject2 library]) |
|
||||||
GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0` |
|
||||||
AC_SUBST(GLIB_MKENUMS) |
|
||||||
fi |
|
||||||
AM_CONDITIONAL(HAVE_GOBJECT, $have_gobject) |
|
||||||
AC_SUBST(have_gobject) |
|
||||||
|
|
||||||
dnl =========================================================================== |
|
||||||
|
|
||||||
|
|
||||||
dnl =========================================================================== |
|
||||||
# Gobject-Introspection |
|
||||||
have_introspection=false |
|
||||||
m4_ifdef([GOBJECT_INTROSPECTION_CHECK], [ |
|
||||||
if $have_gobject; then |
|
||||||
GOBJECT_INTROSPECTION_CHECK([1.34.0]) |
|
||||||
if test "x$found_introspection" = xyes; then |
|
||||||
have_introspection=true |
|
||||||
fi |
|
||||||
else |
|
||||||
AM_CONDITIONAL([HAVE_INTROSPECTION], false) |
|
||||||
fi |
|
||||||
], [ |
|
||||||
AM_CONDITIONAL([HAVE_INTROSPECTION], false) |
|
||||||
]) |
|
||||||
|
|
||||||
dnl ========================================================================== |
|
||||||
|
|
||||||
AC_ARG_WITH(cairo, |
|
||||||
[AS_HELP_STRING([--with-cairo=@<:@yes/no/auto@:>@], |
|
||||||
[Use cairo @<:@default=auto@:>@])],, |
|
||||||
[with_cairo=auto]) |
|
||||||
have_cairo=false |
|
||||||
if test "x$with_cairo" = "xyes" -o "x$with_cairo" = "xauto"; then |
|
||||||
PKG_CHECK_MODULES(CAIRO, cairo >= 1.8.0, have_cairo=true, :) |
|
||||||
fi |
|
||||||
if test "x$with_cairo" = "xyes" -a "x$have_cairo" != "xtrue"; then |
|
||||||
AC_MSG_ERROR([cairo support requested but not found]) |
|
||||||
fi |
|
||||||
if $have_cairo; then |
|
||||||
AC_DEFINE(HAVE_CAIRO, 1, [Have cairo graphics library]) |
|
||||||
fi |
|
||||||
AM_CONDITIONAL(HAVE_CAIRO, $have_cairo) |
|
||||||
|
|
||||||
have_cairo_ft=false |
|
||||||
if $have_cairo; then |
|
||||||
PKG_CHECK_MODULES(CAIRO_FT, cairo-ft, have_cairo_ft=true, :) |
|
||||||
fi |
|
||||||
if $have_cairo_ft; then |
|
||||||
AC_DEFINE(HAVE_CAIRO_FT, 1, [Have cairo-ft support in cairo graphics library]) |
|
||||||
fi |
|
||||||
AM_CONDITIONAL(HAVE_CAIRO_FT, $have_cairo_ft) |
|
||||||
|
|
||||||
dnl ========================================================================== |
|
||||||
|
|
||||||
AC_ARG_WITH(fontconfig, |
|
||||||
[AS_HELP_STRING([--with-fontconfig=@<:@yes/no/auto@:>@], |
|
||||||
[Use fontconfig @<:@default=auto@:>@])],, |
|
||||||
[with_fontconfig=auto]) |
|
||||||
have_fontconfig=false |
|
||||||
if test "x$with_fontconfig" = "xyes" -o "x$with_fontconfig" = "xauto"; then |
|
||||||
PKG_CHECK_MODULES(FONTCONFIG, fontconfig, have_fontconfig=true, :) |
|
||||||
fi |
|
||||||
if test "x$with_fontconfig" = "xyes" -a "x$have_fontconfig" != "xtrue"; then |
|
||||||
AC_MSG_ERROR([fontconfig support requested but not found]) |
|
||||||
fi |
|
||||||
if $have_fontconfig; then |
|
||||||
AC_DEFINE(HAVE_FONTCONFIG, 1, [Have fontconfig library]) |
|
||||||
fi |
|
||||||
AM_CONDITIONAL(HAVE_FONTCONFIG, $have_fontconfig) |
|
||||||
|
|
||||||
dnl ========================================================================== |
|
||||||
|
|
||||||
AC_ARG_WITH(icu, |
|
||||||
[AS_HELP_STRING([--with-icu=@<:@yes/no/builtin/auto@:>@], |
|
||||||
[Use ICU @<:@default=auto@:>@])],, |
|
||||||
[with_icu=auto]) |
|
||||||
have_icu=false |
|
||||||
if test "x$with_icu" = "xyes" -o "x$with_icu" = "xbuiltin" -o "x$with_icu" = "xauto"; then |
|
||||||
PKG_CHECK_MODULES(ICU, icu-uc, have_icu=true, :) |
|
||||||
|
|
||||||
dnl Fallback to icu-config if ICU pkg-config files could not be found |
|
||||||
if test "$have_icu" != "true"; then |
|
||||||
AC_CHECK_TOOL(ICU_CONFIG, icu-config, no) |
|
||||||
AC_MSG_CHECKING([for ICU by using icu-config fallback]) |
|
||||||
if test "$ICU_CONFIG" != "no" && "$ICU_CONFIG" --version >/dev/null; then |
|
||||||
have_icu=true |
|
||||||
# We don't use --cflags as this gives us a lot of things that we don't |
|
||||||
# necessarily want, like debugging and optimization flags |
|
||||||
# See man (1) icu-config for more info. |
|
||||||
ICU_CFLAGS=`$ICU_CONFIG --cppflags` |
|
||||||
ICU_LIBS=`$ICU_CONFIG --ldflags-searchpath --ldflags-libsonly` |
|
||||||
AC_SUBST(ICU_CFLAGS) |
|
||||||
AC_SUBST(ICU_LIBS) |
|
||||||
AC_MSG_RESULT([yes]) |
|
||||||
else |
|
||||||
AC_MSG_RESULT([no]) |
|
||||||
fi |
|
||||||
fi |
|
||||||
fi |
|
||||||
if test \( "x$with_icu" = "xyes" -o "x$with_icu" = "xbuiltin" \) -a "x$have_icu" != "xtrue"; then |
|
||||||
AC_MSG_ERROR([icu support requested but icu-uc not found]) |
|
||||||
fi |
|
||||||
|
|
||||||
if $have_icu; then |
|
||||||
CXXFLAGS="$CXXFLAGS `$PKG_CONFIG --variable=CXXFLAGS icu-uc`" |
|
||||||
AC_DEFINE(HAVE_ICU, 1, [Have ICU library]) |
|
||||||
if test "x$with_icu" = "xbuiltin"; then |
|
||||||
AC_DEFINE(HAVE_ICU_BUILTIN, 1, [Use hb-icu Unicode callbacks]) |
|
||||||
fi |
|
||||||
fi |
|
||||||
AM_CONDITIONAL(HAVE_ICU, $have_icu) |
|
||||||
AM_CONDITIONAL(HAVE_ICU_BUILTIN, $have_icu && test "x$with_icu" = "xbuiltin") |
|
||||||
|
|
||||||
dnl =========================================================================== |
|
||||||
|
|
||||||
AC_ARG_WITH(graphite2, |
|
||||||
[AS_HELP_STRING([--with-graphite2=@<:@yes/no/auto@:>@], |
|
||||||
[Use the graphite2 library @<:@default=no@:>@])],, |
|
||||||
[with_graphite2=no]) |
|
||||||
have_graphite2=false |
|
||||||
GRAPHITE2_DEPS="graphite2 >= 1.2.0" |
|
||||||
AC_SUBST(GRAPHITE2_DEPS) |
|
||||||
if test "x$with_graphite2" = "xyes" -o "x$with_graphite2" = "xauto"; then |
|
||||||
PKG_CHECK_MODULES(GRAPHITE2, $GRAPHITE2_DEPS, have_graphite2=true, :) |
|
||||||
if test "x$have_graphite2" != "xtrue"; then |
|
||||||
# If pkg-config is not available, graphite2 can still be there |
|
||||||
ac_save_CFLAGS="$CFLAGS" |
|
||||||
ac_save_CPPFLAGS="$CPPFLAGS" |
|
||||||
CFLAGS="$CFLAGS $GRAPHITE2_CFLAGS" |
|
||||||
CPPFLAGS="$CPPFLAGS $GRAPHITE2_CFLAGS" |
|
||||||
AC_CHECK_HEADER(graphite2/Segment.h, have_graphite2=true, :) |
|
||||||
CPPFLAGS="$ac_save_CPPFLAGS" |
|
||||||
CFLAGS="$ac_save_CFLAGS" |
|
||||||
fi |
|
||||||
fi |
|
||||||
if test "x$with_graphite2" = "xyes" -a "x$have_graphite2" != "xtrue"; then |
|
||||||
AC_MSG_ERROR([graphite2 support requested but libgraphite2 not found]) |
|
||||||
fi |
|
||||||
if $have_graphite2; then |
|
||||||
AC_DEFINE(HAVE_GRAPHITE2, 1, [Have Graphite2 library]) |
|
||||||
fi |
|
||||||
AM_CONDITIONAL(HAVE_GRAPHITE2, $have_graphite2) |
|
||||||
|
|
||||||
dnl ========================================================================== |
|
||||||
|
|
||||||
AC_ARG_WITH(freetype, |
|
||||||
[AS_HELP_STRING([--with-freetype=@<:@yes/no/auto@:>@], |
|
||||||
[Use the FreeType library @<:@default=auto@:>@])],, |
|
||||||
[with_freetype=auto]) |
|
||||||
have_freetype=false |
|
||||||
FREETYPE_DEPS="freetype2 >= 12.0.6" |
|
||||||
AC_SUBST(FREETYPE_DEPS) |
|
||||||
if test "x$with_freetype" = "xyes" -o "x$with_freetype" = "xauto"; then |
|
||||||
# See freetype/docs/VERSION.DLL; 12.0.6 means freetype-2.4.2 |
|
||||||
PKG_CHECK_MODULES(FREETYPE, $FREETYPE_DEPS, have_freetype=true, :) |
|
||||||
fi |
|
||||||
if test "x$with_freetype" = "xyes" -a "x$have_freetype" != "xtrue"; then |
|
||||||
AC_MSG_ERROR([FreeType support requested but libfreetype2 not found]) |
|
||||||
fi |
|
||||||
if $have_freetype; then |
|
||||||
AC_DEFINE(HAVE_FREETYPE, 1, [Have FreeType 2 library]) |
|
||||||
save_libs=$LIBS |
|
||||||
LIBS="$LIBS $FREETYPE_LIBS" |
|
||||||
AC_CHECK_FUNCS(FT_Get_Var_Blend_Coordinates FT_Set_Var_Blend_Coordinates FT_Done_MM_Var) |
|
||||||
LIBS=$save_libs |
|
||||||
fi |
|
||||||
AM_CONDITIONAL(HAVE_FREETYPE, $have_freetype) |
|
||||||
|
|
||||||
dnl =========================================================================== |
|
||||||
|
|
||||||
AC_ARG_WITH(uniscribe, |
|
||||||
[AS_HELP_STRING([--with-uniscribe=@<:@yes/no/auto@:>@], |
|
||||||
[Use the Uniscribe library @<:@default=no@:>@])],, |
|
||||||
[with_uniscribe=no]) |
|
||||||
have_uniscribe=false |
|
||||||
if test "x$with_uniscribe" = "xyes" -o "x$with_uniscribe" = "xauto"; then |
|
||||||
AC_CHECK_HEADERS(usp10.h windows.h, have_uniscribe=true) |
|
||||||
fi |
|
||||||
if test "x$with_uniscribe" = "xyes" -a "x$have_uniscribe" != "xtrue"; then |
|
||||||
AC_MSG_ERROR([uniscribe support requested but not found]) |
|
||||||
fi |
|
||||||
if $have_uniscribe; then |
|
||||||
UNISCRIBE_CFLAGS= |
|
||||||
UNISCRIBE_LIBS="-lusp10 -lgdi32 -lrpcrt4" |
|
||||||
AC_SUBST(UNISCRIBE_CFLAGS) |
|
||||||
AC_SUBST(UNISCRIBE_LIBS) |
|
||||||
AC_DEFINE(HAVE_UNISCRIBE, 1, [Have Uniscribe library]) |
|
||||||
fi |
|
||||||
AM_CONDITIONAL(HAVE_UNISCRIBE, $have_uniscribe) |
|
||||||
|
|
||||||
dnl =========================================================================== |
|
||||||
|
|
||||||
AC_ARG_WITH(gdi, |
|
||||||
[AS_HELP_STRING([--with-gdi=@<:@yes/no/auto@:>@], |
|
||||||
[Provide GDI integration helpers @<:@default=no@:>@])],, |
|
||||||
[with_gdi=no]) |
|
||||||
have_gdi=false |
|
||||||
if test "x$with_gdi" = "xyes" -o "x$with_gdi" = "xauto"; then |
|
||||||
AC_CHECK_HEADERS(windows.h, have_gdi=true) |
|
||||||
fi |
|
||||||
if test "x$with_gdi" = "xyes" -a "x$have_gdi" != "xtrue"; then |
|
||||||
AC_MSG_ERROR([gdi support requested but not found]) |
|
||||||
fi |
|
||||||
if $have_gdi; then |
|
||||||
GDI_CFLAGS= |
|
||||||
GDI_LIBS="-lgdi32" |
|
||||||
AC_SUBST(GDI_CFLAGS) |
|
||||||
AC_SUBST(GDI_LIBS) |
|
||||||
AC_DEFINE(HAVE_GDI, 1, [Have GDI library]) |
|
||||||
fi |
|
||||||
AM_CONDITIONAL(HAVE_GDI, $have_gdi) |
|
||||||
|
|
||||||
dnl =========================================================================== |
|
||||||
|
|
||||||
AC_ARG_WITH(directwrite, |
|
||||||
[AS_HELP_STRING([--with-directwrite=@<:@yes/no/auto@:>@], |
|
||||||
[Use the DirectWrite library (experimental) @<:@default=no@:>@])],, |
|
||||||
[with_directwrite=no]) |
|
||||||
have_directwrite=false |
|
||||||
AC_LANG_PUSH([C++]) |
|
||||||
if test "x$with_directwrite" = "xyes" -o "x$with_directwrite" = "xauto"; then |
|
||||||
AC_CHECK_HEADERS(dwrite.h, have_directwrite=true) |
|
||||||
fi |
|
||||||
AC_LANG_POP([C++]) |
|
||||||
if test "x$with_directwrite" = "xyes" -a "x$have_directwrite" != "xtrue"; then |
|
||||||
AC_MSG_ERROR([directwrite support requested but not found]) |
|
||||||
fi |
|
||||||
if $have_directwrite; then |
|
||||||
DIRECTWRITE_CXXFLAGS= |
|
||||||
DIRECTWRITE_LIBS= |
|
||||||
AC_SUBST(DIRECTWRITE_CXXFLAGS) |
|
||||||
AC_SUBST(DIRECTWRITE_LIBS) |
|
||||||
AC_DEFINE(HAVE_DIRECTWRITE, 1, [Have DirectWrite library]) |
|
||||||
fi |
|
||||||
AM_CONDITIONAL(HAVE_DIRECTWRITE, $have_directwrite) |
|
||||||
|
|
||||||
dnl =========================================================================== |
|
||||||
|
|
||||||
AC_ARG_WITH(coretext, |
|
||||||
[AS_HELP_STRING([--with-coretext=@<:@yes/no/auto@:>@], |
|
||||||
[Use CoreText @<:@default=no@:>@])],, |
|
||||||
[with_coretext=no]) |
|
||||||
have_coretext=false |
|
||||||
if test "x$with_coretext" = "xyes" -o "x$with_coretext" = "xauto"; then |
|
||||||
AC_CHECK_TYPE(CTFontRef, have_coretext=true,, [#include <ApplicationServices/ApplicationServices.h>]) |
|
||||||
|
|
||||||
if $have_coretext; then |
|
||||||
CORETEXT_CFLAGS= |
|
||||||
CORETEXT_LIBS="-framework ApplicationServices" |
|
||||||
AC_SUBST(CORETEXT_CFLAGS) |
|
||||||
AC_SUBST(CORETEXT_LIBS) |
|
||||||
else |
|
||||||
# On iOS CoreText and CoreGraphics are stand-alone frameworks |
|
||||||
if test "x$have_coretext" != "xtrue"; then |
|
||||||
# Check for a different symbol to avoid getting cached result. |
|
||||||
AC_CHECK_TYPE(CTRunRef, have_coretext=true,, [#include <CoreText/CoreText.h>]) |
|
||||||
fi |
|
||||||
|
|
||||||
if $have_coretext; then |
|
||||||
CORETEXT_CFLAGS= |
|
||||||
CORETEXT_LIBS="-framework CoreText -framework CoreGraphics -framework CoreFoundation" |
|
||||||
AC_SUBST(CORETEXT_CFLAGS) |
|
||||||
AC_SUBST(CORETEXT_LIBS) |
|
||||||
fi |
|
||||||
fi |
|
||||||
fi |
|
||||||
if test "x$with_coretext" = "xyes" -a "x$have_coretext" != "xtrue"; then |
|
||||||
AC_MSG_ERROR([CoreText support requested but libcoretext not found]) |
|
||||||
fi |
|
||||||
if $have_coretext; then |
|
||||||
AC_DEFINE(HAVE_CORETEXT, 1, [Have Core Text backend]) |
|
||||||
fi |
|
||||||
AM_CONDITIONAL(HAVE_CORETEXT, $have_coretext) |
|
||||||
|
|
||||||
dnl =========================================================================== |
|
||||||
|
|
||||||
AC_CACHE_CHECK([for Intel atomic primitives], hb_cv_have_intel_atomic_primitives, [ |
|
||||||
hb_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); } |
|
||||||
], [], hb_cv_have_intel_atomic_primitives=true |
|
||||||
) |
|
||||||
]) |
|
||||||
if $hb_cv_have_intel_atomic_primitives; then |
|
||||||
AC_DEFINE(HAVE_INTEL_ATOMIC_PRIMITIVES, 1, [Have Intel __sync_* atomic primitives]) |
|
||||||
fi |
|
||||||
|
|
||||||
dnl =========================================================================== |
|
||||||
|
|
||||||
AC_CACHE_CHECK([for Solaris atomic operations], hb_cv_have_solaris_atomic_ops, [ |
|
||||||
hb_cv_have_solaris_atomic_ops=false |
|
||||||
AC_TRY_LINK([ |
|
||||||
#include <atomic.h> |
|
||||||
/* This requires Solaris Studio 12.2 or newer: */ |
|
||||||
#include <mbarrier.h> |
|
||||||
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); } |
|
||||||
], [], hb_cv_have_solaris_atomic_ops=true |
|
||||||
) |
|
||||||
]) |
|
||||||
if $hb_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 |
|
||||||
|
|
||||||
dnl =========================================================================== |
|
||||||
|
|
||||||
AC_CONFIG_FILES([ |
|
||||||
Makefile |
|
||||||
src/Makefile |
|
||||||
util/Makefile |
|
||||||
test/Makefile |
|
||||||
test/api/Makefile |
|
||||||
test/fuzzing/Makefile |
|
||||||
test/shaping/Makefile |
|
||||||
test/shaping/data/Makefile |
|
||||||
test/shaping/data/aots/Makefile |
|
||||||
test/shaping/data/in-house/Makefile |
|
||||||
test/shaping/data/text-rendering-tests/Makefile |
|
||||||
test/subset/Makefile |
|
||||||
test/subset/data/Makefile |
|
||||||
docs/Makefile |
|
||||||
docs/version.xml |
|
||||||
]) |
|
||||||
|
|
||||||
AC_OUTPUT |
|
||||||
|
|
||||||
echo |
|
||||||
echo "C++ compiler version:" |
|
||||||
$CXX --version |
|
||||||
echo |
|
||||||
|
|
||||||
AC_MSG_NOTICE([ |
|
||||||
|
|
||||||
Autotools is no longer our supported build system for building the library |
|
||||||
for *nix distributions, please migrate to meson. |
|
||||||
|
|
||||||
]) |
|
||||||
|
|
||||||
|
|
||||||
AC_MSG_NOTICE([ |
|
||||||
|
|
||||||
Build configuration: |
|
||||||
|
|
||||||
Unicode callbacks (you want at least one): |
|
||||||
Builtin true |
|
||||||
Glib: ${have_glib} |
|
||||||
ICU: ${have_icu} |
|
||||||
|
|
||||||
Font callbacks (the more the merrier): |
|
||||||
FreeType: ${have_freetype} |
|
||||||
|
|
||||||
Tools used for command-line utilities: |
|
||||||
Cairo: ${have_cairo} |
|
||||||
Fontconfig: ${have_fontconfig} |
|
||||||
|
|
||||||
Additional shapers: |
|
||||||
Graphite2: ${have_graphite2} |
|
||||||
|
|
||||||
Platform shapers (not normally needed): |
|
||||||
CoreText: ${have_coretext} |
|
||||||
DirectWrite: ${have_directwrite} |
|
||||||
GDI: ${have_gdi} |
|
||||||
Uniscribe: ${have_uniscribe} |
|
||||||
|
|
||||||
Other features: |
|
||||||
Documentation: ${enable_gtk_doc} |
|
||||||
GObject bindings: ${have_gobject} |
|
||||||
Introspection: ${have_introspection} |
|
||||||
]) |
|
@ -1,126 +0,0 @@ |
|||||||
# Process this file with automake to produce Makefile.in
|
|
||||||
|
|
||||||
# We require automake 1.6 at least.
|
|
||||||
AUTOMAKE_OPTIONS = 1.6
|
|
||||||
|
|
||||||
# This is a blank Makefile.am for using gtk-doc.
|
|
||||||
# Copy this to your project's API docs directory and modify the variables to
|
|
||||||
# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
|
|
||||||
# of using the various options.
|
|
||||||
|
|
||||||
# The name of the module, e.g. 'glib'.
|
|
||||||
DOC_MODULE=harfbuzz
|
|
||||||
|
|
||||||
# Uncomment for versioned docs and specify the version of the module, e.g. '2'.
|
|
||||||
#DOC_MODULE_VERSION=$(HB_VERSION_MAJOR)
|
|
||||||
|
|
||||||
# The top-level SGML file. You can change this if you want to.
|
|
||||||
DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.xml
|
|
||||||
|
|
||||||
# Directories containing the source code.
|
|
||||||
# gtk-doc will search all .c and .h files beneath these paths
|
|
||||||
# for inline comments documenting functions and macros.
|
|
||||||
# e.g. DOC_SOURCE_DIR=$(top_srcdir)/gtk $(top_srcdir)/gdk
|
|
||||||
DOC_SOURCE_DIR=$(top_srcdir)/src $(top_builddir)/src
|
|
||||||
|
|
||||||
# Extra options to pass to gtkdoc-scangobj. Not normally needed.
|
|
||||||
SCANGOBJ_OPTIONS=
|
|
||||||
|
|
||||||
# Extra options to supply to gtkdoc-scan.
|
|
||||||
# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
|
|
||||||
SCAN_OPTIONS=--rebuild-types --deprecated-guards="HB_DISABLE_DEPRECATED" \
|
|
||||||
--ignore-decorators="HB_EXTERN"
|
|
||||||
|
|
||||||
# Header files or dirs to ignore when scanning. Use base file/dir names
|
|
||||||
# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code
|
|
||||||
IGNORE_HFILES=`cd $(top_srcdir)/src; find . -path './*/*.h' | sed 's@^.*/@@'`
|
|
||||||
if HAVE_GOBJECT |
|
||||||
else |
|
||||||
IGNORE_HFILES+=hb-gobject.h hb-gobject-enums.h hb-gobject-structs.h
|
|
||||||
endif |
|
||||||
|
|
||||||
# Extra options to supply to gtkdoc-mkdb.
|
|
||||||
# e.g. MKDB_OPTIONS=--xml-mode --output-format=xml
|
|
||||||
MKDB_OPTIONS=--source-suffixes=h,cc --xml-mode --output-format=xml --ignore-files="$(IGNORE_HFILES)"
|
|
||||||
|
|
||||||
# Extra options to supply to gtkdoc-mktmpl
|
|
||||||
# e.g. MKTMPL_OPTIONS=--only-section-tmpl
|
|
||||||
MKTMPL_OPTIONS=
|
|
||||||
|
|
||||||
# Extra options to supply to gtkdoc-mkhtml
|
|
||||||
MKHTML_OPTIONS=
|
|
||||||
|
|
||||||
# Extra options to supply to gtkdoc-fixref. Not normally needed.
|
|
||||||
# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
|
|
||||||
FIXXREF_OPTIONS=
|
|
||||||
|
|
||||||
# Used for dependencies. The docs will be rebuilt if any of these change.
|
|
||||||
# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
|
|
||||||
# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
|
|
||||||
HFILE_GLOB=$(top_srcdir)/src/hb.h $(top_srcdir)/src/hb-*.h
|
|
||||||
CFILE_GLOB=$(top_srcdir)/src/hb-*.cc
|
|
||||||
|
|
||||||
# Extra header to include when scanning, which are not under DOC_SOURCE_DIR
|
|
||||||
# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h
|
|
||||||
|
|
||||||
# Images to copy into HTML directory.
|
|
||||||
# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
|
|
||||||
HTML_IMAGES= \
|
|
||||||
HarfBuzz.png \
|
|
||||||
HarfBuzz.svg
|
|
||||||
|
|
||||||
# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
|
|
||||||
# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
|
|
||||||
content_files= \
|
|
||||||
usermanual-what-is-harfbuzz.xml \
|
|
||||||
usermanual-install-harfbuzz.xml \
|
|
||||||
usermanual-getting-started.xml \
|
|
||||||
usermanual-glyph-information.xml \
|
|
||||||
usermanual-shaping-concepts.xml \
|
|
||||||
usermanual-object-model.xml \
|
|
||||||
usermanual-buffers-language-script-and-direction.xml \
|
|
||||||
usermanual-fonts-and-faces.xml \
|
|
||||||
usermanual-opentype-features.xml \
|
|
||||||
usermanual-clusters.xml \
|
|
||||||
usermanual-utilities.xml \
|
|
||||||
usermanual-integration.xml \
|
|
||||||
version.xml
|
|
||||||
|
|
||||||
# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
|
|
||||||
# These files must be listed here *and* in content_files
|
|
||||||
# e.g. expand_content_files=running.sgml
|
|
||||||
expand_content_files=
|
|
||||||
|
|
||||||
# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
|
|
||||||
# Only needed if you are using gtkdoc-scangobj to dynamically query widget
|
|
||||||
# signals and properties.
|
|
||||||
# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
|
|
||||||
# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
|
|
||||||
GTKDOC_CFLAGS=
|
|
||||||
GTKDOC_LIBS=$(top_builddir)/src/libharfbuzz.la
|
|
||||||
if HAVE_GOBJECT |
|
||||||
GTKDOC_LIBS+=$(top_builddir)/src/libharfbuzz-gobject.la
|
|
||||||
endif |
|
||||||
|
|
||||||
# This includes the standard gtk-doc make rules, copied by gtkdocize.
|
|
||||||
include $(top_srcdir)/gtk-doc.make |
|
||||||
|
|
||||||
# Other files to distribute
|
|
||||||
# e.g. EXTRA_DIST += version.xml.in
|
|
||||||
EXTRA_DIST += version.xml.in meson.build
|
|
||||||
|
|
||||||
# Files not to distribute
|
|
||||||
# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
|
|
||||||
# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
|
|
||||||
#DISTCLEANFILES +=
|
|
||||||
|
|
||||||
# Comment this out if you don't want 'make check' to test you doc status
|
|
||||||
# and run some sanity checks
|
|
||||||
if ENABLE_GTK_DOC |
|
||||||
TESTS_ENVIRONMENT = cd $(srcdir) && \
|
|
||||||
DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \
|
|
||||||
SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir)
|
|
||||||
#TESTS = $(GTKDOC_CHECK)
|
|
||||||
endif |
|
||||||
|
|
||||||
-include $(top_srcdir)/git.mk |
|
@ -1,400 +0,0 @@ |
|||||||
# git.mk, a small Makefile to autogenerate .gitignore files
|
|
||||||
# for autotools-based projects.
|
|
||||||
#
|
|
||||||
# Copyright 2009, Red Hat, Inc.
|
|
||||||
# Copyright 2010,2011,2012,2013 Behdad Esfahbod
|
|
||||||
# Written by Behdad Esfahbod
|
|
||||||
#
|
|
||||||
# Copying and distribution of this file, with or without modification,
|
|
||||||
# is permitted in any medium without royalty provided the copyright
|
|
||||||
# notice and this notice are preserved.
|
|
||||||
#
|
|
||||||
# The latest version of this file can be downloaded from:
|
|
||||||
GIT_MK_URL = https://raw.githubusercontent.com/behdad/git.mk/master/git.mk
|
|
||||||
#
|
|
||||||
# Bugs, etc, should be reported upstream at:
|
|
||||||
# https://github.com/behdad/git.mk
|
|
||||||
#
|
|
||||||
# To use in your project, import this file in your git repo's toplevel,
|
|
||||||
# then do "make -f git.mk". This modifies all Makefile.am files in
|
|
||||||
# your project to -include git.mk. Remember to add that line to new
|
|
||||||
# Makefile.am files you create in your project, or just rerun the
|
|
||||||
# "make -f git.mk".
|
|
||||||
#
|
|
||||||
# This enables automatic .gitignore generation. If you need to ignore
|
|
||||||
# more files, add them to the GITIGNOREFILES variable in your Makefile.am.
|
|
||||||
# But think twice before doing that. If a file has to be in .gitignore,
|
|
||||||
# chances are very high that it's a generated file and should be in one
|
|
||||||
# of MOSTLYCLEANFILES, CLEANFILES, DISTCLEANFILES, or MAINTAINERCLEANFILES.
|
|
||||||
#
|
|
||||||
# The only case that you need to manually add a file to GITIGNOREFILES is
|
|
||||||
# when remove files in one of mostlyclean-local, clean-local, distclean-local,
|
|
||||||
# or maintainer-clean-local make targets.
|
|
||||||
#
|
|
||||||
# Note that for files like editor backup, etc, there are better places to
|
|
||||||
# ignore them. See "man gitignore".
|
|
||||||
#
|
|
||||||
# If "make maintainer-clean" removes the files but they are not recognized
|
|
||||||
# by this script (that is, if "git status" shows untracked files still), send
|
|
||||||
# me the output of "git status" as well as your Makefile.am and Makefile for
|
|
||||||
# the directories involved and I'll diagnose.
|
|
||||||
#
|
|
||||||
# For a list of toplevel files that should be in MAINTAINERCLEANFILES, see
|
|
||||||
# Makefile.am.sample in the git.mk git repo.
|
|
||||||
#
|
|
||||||
# Don't EXTRA_DIST this file. It is supposed to only live in git clones,
|
|
||||||
# not tarballs. It serves no useful purpose in tarballs and clutters the
|
|
||||||
# build dir.
|
|
||||||
#
|
|
||||||
# This file knows how to handle autoconf, automake, libtool, gtk-doc,
|
|
||||||
# gnome-doc-utils, yelp.m4, mallard, intltool, gsettings, dejagnu, appdata,
|
|
||||||
# appstream, hotdoc.
|
|
||||||
#
|
|
||||||
# This makefile provides the following targets:
|
|
||||||
#
|
|
||||||
# - all: "make all" will build all gitignore files.
|
|
||||||
# - gitignore: makes all gitignore files in the current dir and subdirs.
|
|
||||||
# - .gitignore: make gitignore file for the current dir.
|
|
||||||
# - gitignore-recurse: makes all gitignore files in the subdirs.
|
|
||||||
#
|
|
||||||
# KNOWN ISSUES:
|
|
||||||
#
|
|
||||||
# - Recursive configure doesn't work as $(top_srcdir)/git.mk inside the
|
|
||||||
# submodule doesn't find us. If you have configure.{in,ac} files in
|
|
||||||
# subdirs, add a proxy git.mk file in those dirs that simply does:
|
|
||||||
# "include $(top_srcdir)/../git.mk". Add more ..'s to your taste.
|
|
||||||
# And add those files to git. See vte/gnome-pty-helper/git.mk for
|
|
||||||
# example.
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# Variables user modules may want to add to toplevel MAINTAINERCLEANFILES:
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
#
|
|
||||||
# Most autotools-using modules should be fine including this variable in their
|
|
||||||
# toplevel MAINTAINERCLEANFILES:
|
|
||||||
GITIGNORE_MAINTAINERCLEANFILES_TOPLEVEL = \
|
|
||||||
$(srcdir)/aclocal.m4 \
|
|
||||||
$(srcdir)/autoscan.log \
|
|
||||||
$(srcdir)/configure.scan \
|
|
||||||
`AUX_DIR=$(srcdir)/$$(cd $(top_srcdir); $(AUTOCONF) --trace 'AC_CONFIG_AUX_DIR:$$1' ./configure.ac); \
|
|
||||||
test "x$$AUX_DIR" = "x$(srcdir)/" && AUX_DIR=$(srcdir); \
|
|
||||||
for x in \
|
|
||||||
ar-lib \
|
|
||||||
compile \
|
|
||||||
config.guess \
|
|
||||||
config.rpath \
|
|
||||||
config.sub \
|
|
||||||
depcomp \
|
|
||||||
install-sh \
|
|
||||||
ltmain.sh \
|
|
||||||
missing \
|
|
||||||
mkinstalldirs \
|
|
||||||
test-driver \
|
|
||||||
ylwrap \
|
|
||||||
; do echo "$$AUX_DIR/$$x"; done` \
|
|
||||||
`cd $(top_srcdir); $(AUTOCONF) --trace 'AC_CONFIG_HEADERS:$$1' ./configure.ac | \
|
|
||||||
head -n 1 | while read f; do echo "$(srcdir)/$$f.in"; done`
|
|
||||||
#
|
|
||||||
# All modules should also be fine including the following variable, which
|
|
||||||
# removes automake-generated Makefile.in files:
|
|
||||||
GITIGNORE_MAINTAINERCLEANFILES_MAKEFILE_IN = \
|
|
||||||
`cd $(top_srcdir); $(AUTOCONF) --trace 'AC_CONFIG_FILES:$$1' ./configure.ac | \
|
|
||||||
while read f; do \
|
|
||||||
case $$f in Makefile|*/Makefile) \
|
|
||||||
test -f "$(srcdir)/$$f.am" && echo "$(srcdir)/$$f.in";; esac; \
|
|
||||||
done`
|
|
||||||
#
|
|
||||||
# Modules that use libtool and use AC_CONFIG_MACRO_DIR() may also include this,
|
|
||||||
# though it's harmless to include regardless.
|
|
||||||
GITIGNORE_MAINTAINERCLEANFILES_M4_LIBTOOL = \
|
|
||||||
`MACRO_DIR=$(srcdir)/$$(cd $(top_srcdir); $(AUTOCONF) --trace 'AC_CONFIG_MACRO_DIR:$$1' ./configure.ac); \
|
|
||||||
if test "x$$MACRO_DIR" != "x$(srcdir)/"; then \
|
|
||||||
for x in \
|
|
||||||
libtool.m4 \
|
|
||||||
ltoptions.m4 \
|
|
||||||
ltsugar.m4 \
|
|
||||||
ltversion.m4 \
|
|
||||||
lt~obsolete.m4 \
|
|
||||||
; do echo "$$MACRO_DIR/$$x"; done; \
|
|
||||||
fi`
|
|
||||||
#
|
|
||||||
# Modules that use gettext and use AC_CONFIG_MACRO_DIR() may also include this,
|
|
||||||
# though it's harmless to include regardless.
|
|
||||||
GITIGNORE_MAINTAINERCLEANFILES_M4_GETTEXT = \
|
|
||||||
`MACRO_DIR=$(srcdir)/$$(cd $(top_srcdir); $(AUTOCONF) --trace 'AC_CONFIG_MACRO_DIR:$$1' ./configure.ac); \
|
|
||||||
if test "x$$MACRO_DIR" != "x$(srcdir)/"; then \
|
|
||||||
for x in \
|
|
||||||
codeset.m4 \
|
|
||||||
extern-inline.m4 \
|
|
||||||
fcntl-o.m4 \
|
|
||||||
gettext.m4 \
|
|
||||||
glibc2.m4 \
|
|
||||||
glibc21.m4 \
|
|
||||||
iconv.m4 \
|
|
||||||
intdiv0.m4 \
|
|
||||||
intl.m4 \
|
|
||||||
intldir.m4 \
|
|
||||||
intlmacosx.m4 \
|
|
||||||
intmax.m4 \
|
|
||||||
inttypes-pri.m4 \
|
|
||||||
inttypes_h.m4 \
|
|
||||||
lcmessage.m4 \
|
|
||||||
lib-ld.m4 \
|
|
||||||
lib-link.m4 \
|
|
||||||
lib-prefix.m4 \
|
|
||||||
lock.m4 \
|
|
||||||
longlong.m4 \
|
|
||||||
nls.m4 \
|
|
||||||
po.m4 \
|
|
||||||
printf-posix.m4 \
|
|
||||||
progtest.m4 \
|
|
||||||
size_max.m4 \
|
|
||||||
stdint_h.m4 \
|
|
||||||
threadlib.m4 \
|
|
||||||
uintmax_t.m4 \
|
|
||||||
visibility.m4 \
|
|
||||||
wchar_t.m4 \
|
|
||||||
wint_t.m4 \
|
|
||||||
xsize.m4 \
|
|
||||||
; do echo "$$MACRO_DIR/$$x"; done; \
|
|
||||||
fi`
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# Default rule is to install ourselves in all Makefile.am files:
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
git-all: git-mk-install |
|
||||||
|
|
||||||
git-mk-install: |
|
||||||
@echo "Installing git makefile"
|
|
||||||
@any_failed=; \
|
|
||||||
find "`test -z "$(top_srcdir)" && echo . || echo "$(top_srcdir)"`" -name Makefile.am | while read x; do \
|
|
||||||
if grep 'include .*/git.mk' $$x >/dev/null; then \
|
|
||||||
echo "$$x already includes git.mk"; \
|
|
||||||
else \
|
|
||||||
failed=; \
|
|
||||||
echo "Updating $$x"; \
|
|
||||||
{ cat $$x; \
|
|
||||||
echo ''; \
|
|
||||||
echo '-include $$(top_srcdir)/git.mk'; \
|
|
||||||
} > $$x.tmp || failed=1; \
|
|
||||||
if test x$$failed = x; then \
|
|
||||||
mv $$x.tmp $$x || failed=1; \
|
|
||||||
fi; \
|
|
||||||
if test x$$failed = x; then : else \
|
|
||||||
echo "Failed updating $$x"; >&2 \
|
|
||||||
any_failed=1; \
|
|
||||||
fi; \
|
|
||||||
fi; done; test -z "$$any_failed"
|
|
||||||
|
|
||||||
git-mk-update: |
|
||||||
wget $(GIT_MK_URL) -O $(top_srcdir)/git.mk
|
|
||||||
|
|
||||||
.PHONY: git-all git-mk-install git-mk-update |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# Actual .gitignore generation:
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
$(srcdir)/.gitignore: Makefile.am $(top_srcdir)/git.mk |
|
||||||
@echo "git.mk: Generating $@"
|
|
||||||
@{ \
|
|
||||||
if test "x$(DOC_MODULE)" = x -o "x$(DOC_MAIN_SGML_FILE)" = x; then :; else \
|
|
||||||
for x in \
|
|
||||||
$(DOC_MODULE)-decl-list.txt \
|
|
||||||
$(DOC_MODULE)-decl.txt \
|
|
||||||
tmpl/$(DOC_MODULE)-unused.sgml \
|
|
||||||
"tmpl/*.bak" \
|
|
||||||
$(REPORT_FILES) \
|
|
||||||
$(DOC_MODULE).pdf \
|
|
||||||
xml html \
|
|
||||||
; do echo "/$$x"; done; \
|
|
||||||
FLAVOR=$$(cd $(top_srcdir); $(AUTOCONF) --trace 'GTK_DOC_CHECK:$$2' ./configure.ac); \
|
|
||||||
case $$FLAVOR in *no-tmpl*) echo /tmpl;; esac; \
|
|
||||||
if echo "$(SCAN_OPTIONS)" | grep -q "\-\-rebuild-types"; then \
|
|
||||||
echo "/$(DOC_MODULE).types"; \
|
|
||||||
fi; \
|
|
||||||
if echo "$(SCAN_OPTIONS)" | grep -q "\-\-rebuild-sections"; then \
|
|
||||||
echo "/$(DOC_MODULE)-sections.txt"; \
|
|
||||||
fi; \
|
|
||||||
if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
|
|
||||||
for x in \
|
|
||||||
$(SETUP_FILES) \
|
|
||||||
$(DOC_MODULE).types \
|
|
||||||
; do echo "/$$x"; done; \
|
|
||||||
fi; \
|
|
||||||
fi; \
|
|
||||||
if test "x$(DOC_MODULE)$(DOC_ID)" = x -o "x$(DOC_LINGUAS)" = x; then :; else \
|
|
||||||
for lc in $(DOC_LINGUAS); do \
|
|
||||||
for x in \
|
|
||||||
$(if $(DOC_MODULE),$(DOC_MODULE).xml) \
|
|
||||||
$(DOC_PAGES) \
|
|
||||||
$(DOC_INCLUDES) \
|
|
||||||
; do echo "/$$lc/$$x"; done; \
|
|
||||||
done; \
|
|
||||||
for x in \
|
|
||||||
$(_DOC_OMF_ALL) \
|
|
||||||
$(_DOC_DSK_ALL) \
|
|
||||||
$(_DOC_HTML_ALL) \
|
|
||||||
$(_DOC_MOFILES) \
|
|
||||||
$(DOC_H_FILE) \
|
|
||||||
"*/.xml2po.mo" \
|
|
||||||
"*/*.omf.out" \
|
|
||||||
; do echo /$$x; done; \
|
|
||||||
fi; \
|
|
||||||
if test "x$(HOTDOC)" = x; then :; else \
|
|
||||||
$(foreach project, $(HOTDOC_PROJECTS),echo "/$(call HOTDOC_TARGET,$(project))"; \
|
|
||||||
echo "/$(shell $(call HOTDOC_PROJECT_COMMAND,$(project)) --get-conf-path output)" ; \
|
|
||||||
echo "/$(shell $(call HOTDOC_PROJECT_COMMAND,$(project)) --get-private-folder)" ; \
|
|
||||||
) \
|
|
||||||
for x in \
|
|
||||||
.hotdoc.d \
|
|
||||||
; do echo "/$$x"; done; \
|
|
||||||
fi; \
|
|
||||||
if test "x$(HELP_ID)" = x -o "x$(HELP_LINGUAS)" = x; then :; else \
|
|
||||||
for lc in $(HELP_LINGUAS); do \
|
|
||||||
for x in \
|
|
||||||
$(HELP_FILES) \
|
|
||||||
"$$lc.stamp" \
|
|
||||||
"$$lc.mo" \
|
|
||||||
; do echo "/$$lc/$$x"; done; \
|
|
||||||
done; \
|
|
||||||
fi; \
|
|
||||||
if test "x$(gsettings_SCHEMAS)" = x; then :; else \
|
|
||||||
for x in \
|
|
||||||
$(gsettings_SCHEMAS:.xml=.valid) \
|
|
||||||
$(gsettings__enum_file) \
|
|
||||||
; do echo "/$$x"; done; \
|
|
||||||
fi; \
|
|
||||||
if test "x$(appdata_XML)" = x; then :; else \
|
|
||||||
for x in \
|
|
||||||
$(appdata_XML:.xml=.valid) \
|
|
||||||
; do echo "/$$x"; done; \
|
|
||||||
fi; \
|
|
||||||
if test "x$(appstream_XML)" = x; then :; else \
|
|
||||||
for x in \
|
|
||||||
$(appstream_XML:.xml=.valid) \
|
|
||||||
; do echo "/$$x"; done; \
|
|
||||||
fi; \
|
|
||||||
if test -f $(srcdir)/po/Makefile.in.in; then \
|
|
||||||
for x in \
|
|
||||||
ABOUT-NLS \
|
|
||||||
po/Makefile.in.in \
|
|
||||||
po/Makefile.in.in~ \
|
|
||||||
po/Makefile.in \
|
|
||||||
po/Makefile \
|
|
||||||
po/Makevars.template \
|
|
||||||
po/POTFILES \
|
|
||||||
po/Rules-quot \
|
|
||||||
po/stamp-it \
|
|
||||||
po/stamp-po \
|
|
||||||
po/.intltool-merge-cache \
|
|
||||||
"po/*.gmo" \
|
|
||||||
"po/*.header" \
|
|
||||||
"po/*.mo" \
|
|
||||||
"po/*.sed" \
|
|
||||||
"po/*.sin" \
|
|
||||||
po/$(GETTEXT_PACKAGE).pot \
|
|
||||||
intltool-extract.in \
|
|
||||||
intltool-merge.in \
|
|
||||||
intltool-update.in \
|
|
||||||
; do echo "/$$x"; done; \
|
|
||||||
fi; \
|
|
||||||
if test -f $(srcdir)/configure; then \
|
|
||||||
for x in \
|
|
||||||
autom4te.cache \
|
|
||||||
configure \
|
|
||||||
config.h \
|
|
||||||
stamp-h1 \
|
|
||||||
libtool \
|
|
||||||
config.lt \
|
|
||||||
; do echo "/$$x"; done; \
|
|
||||||
fi; \
|
|
||||||
if test "x$(DEJATOOL)" = x; then :; else \
|
|
||||||
for x in \
|
|
||||||
$(DEJATOOL) \
|
|
||||||
; do echo "/$$x.sum"; echo "/$$x.log"; done; \
|
|
||||||
echo /site.exp; \
|
|
||||||
fi; \
|
|
||||||
if test "x$(am__dirstamp)" = x; then :; else \
|
|
||||||
echo "$(am__dirstamp)"; \
|
|
||||||
fi; \
|
|
||||||
if test "x$(findstring libtool,$(LTCOMPILE))" = x -a "x$(findstring libtool,$(LTCXXCOMPILE))" = x -a "x$(GTKDOC_RUN)" = x; then :; else \
|
|
||||||
for x in \
|
|
||||||
"*.lo" \
|
|
||||||
".libs" "_libs" \
|
|
||||||
; do echo "$$x"; done; \
|
|
||||||
fi; \
|
|
||||||
for x in \
|
|
||||||
.gitignore \
|
|
||||||
$(GITIGNOREFILES) \
|
|
||||||
$(CLEANFILES) \
|
|
||||||
$(PROGRAMS) $(check_PROGRAMS) $(EXTRA_PROGRAMS) \
|
|
||||||
$(LIBRARIES) $(check_LIBRARIES) $(EXTRA_LIBRARIES) \
|
|
||||||
$(LTLIBRARIES) $(check_LTLIBRARIES) $(EXTRA_LTLIBRARIES) \
|
|
||||||
so_locations \
|
|
||||||
$(MOSTLYCLEANFILES) \
|
|
||||||
$(TEST_LOGS) \
|
|
||||||
$(TEST_LOGS:.log=.trs) \
|
|
||||||
$(TEST_SUITE_LOG) \
|
|
||||||
$(TESTS:=.test) \
|
|
||||||
"*.gcda" \
|
|
||||||
"*.gcno" \
|
|
||||||
$(DISTCLEANFILES) \
|
|
||||||
$(am__CONFIG_DISTCLEAN_FILES) \
|
|
||||||
$(CONFIG_CLEAN_FILES) \
|
|
||||||
TAGS ID GTAGS GRTAGS GSYMS GPATH tags \
|
|
||||||
"*.tab.c" \
|
|
||||||
$(MAINTAINERCLEANFILES) \
|
|
||||||
$(BUILT_SOURCES) \
|
|
||||||
$(patsubst %.vala,%.c,$(filter %.vala,$(SOURCES))) \
|
|
||||||
$(filter %_vala.stamp,$(DIST_COMMON)) \
|
|
||||||
$(filter %.vapi,$(DIST_COMMON)) \
|
|
||||||
$(filter $(addprefix %,$(notdir $(patsubst %.vapi,%.h,$(filter %.vapi,$(DIST_COMMON))))),$(DIST_COMMON)) \
|
|
||||||
Makefile \
|
|
||||||
Makefile.in \
|
|
||||||
"*.orig" \
|
|
||||||
"*.rej" \
|
|
||||||
"*.bak" \
|
|
||||||
"*~" \
|
|
||||||
".*.sw[nop]" \
|
|
||||||
".dirstamp" \
|
|
||||||
; do echo "/$$x"; done; \
|
|
||||||
for x in \
|
|
||||||
"*.$(OBJEXT)" \
|
|
||||||
$(DEPDIR) \
|
|
||||||
; do echo "$$x"; done; \
|
|
||||||
} | \
|
|
||||||
sed "s@^/`echo "$(srcdir)" | sed 's/\(.\)/[\1]/g'`/@/@" | \
|
|
||||||
sed 's@/[.]/@/@g' | \
|
|
||||||
LC_ALL=C sort | uniq > $@.tmp && \
|
|
||||||
mv $@.tmp $@;
|
|
||||||
|
|
||||||
all: $(srcdir)/.gitignore gitignore-recurse-maybe |
|
||||||
gitignore: $(srcdir)/.gitignore gitignore-recurse |
|
||||||
|
|
||||||
gitignore-recurse-maybe: |
|
||||||
@for subdir in $(DIST_SUBDIRS); do \
|
|
||||||
case " $(SUBDIRS) " in \
|
|
||||||
*" $$subdir "*) :;; \
|
|
||||||
*) test "$$subdir" = . -o -e "$$subdir/.git" || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) gitignore || echo "Skipping $$subdir");; \
|
|
||||||
esac; \
|
|
||||||
done
|
|
||||||
gitignore-recurse: |
|
||||||
@for subdir in $(DIST_SUBDIRS); do \
|
|
||||||
test "$$subdir" = . -o -e "$$subdir/.git" || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) gitignore || echo "Skipping $$subdir"); \
|
|
||||||
done
|
|
||||||
|
|
||||||
maintainer-clean: gitignore-clean |
|
||||||
gitignore-clean: |
|
||||||
-rm -f $(srcdir)/.gitignore
|
|
||||||
|
|
||||||
.PHONY: gitignore-clean gitignore gitignore-recurse gitignore-recurse-maybe |
|
@ -1,74 +0,0 @@ |
|||||||
# =========================================================================== |
|
||||||
# https://www.gnu.org/software/autoconf-archive/ax_check_link_flag.html |
|
||||||
# =========================================================================== |
|
||||||
# |
|
||||||
# SYNOPSIS |
|
||||||
# |
|
||||||
# AX_CHECK_LINK_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT]) |
|
||||||
# |
|
||||||
# DESCRIPTION |
|
||||||
# |
|
||||||
# Check whether the given FLAG works with the linker or gives an error. |
|
||||||
# (Warnings, however, are ignored) |
|
||||||
# |
|
||||||
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on |
|
||||||
# success/failure. |
|
||||||
# |
|
||||||
# If EXTRA-FLAGS is defined, it is added to the linker's default flags |
|
||||||
# when the check is done. The check is thus made with the flags: "LDFLAGS |
|
||||||
# EXTRA-FLAGS FLAG". This can for example be used to force the linker to |
|
||||||
# issue an error when a bad flag is given. |
|
||||||
# |
|
||||||
# INPUT gives an alternative input source to AC_LINK_IFELSE. |
|
||||||
# |
|
||||||
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this |
|
||||||
# macro in sync with AX_CHECK_{PREPROC,COMPILE}_FLAG. |
|
||||||
# |
|
||||||
# LICENSE |
|
||||||
# |
|
||||||
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de> |
|
||||||
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com> |
|
||||||
# |
|
||||||
# This program is free software: you can redistribute it and/or modify it |
|
||||||
# under the terms of the GNU General Public License as published by the |
|
||||||
# Free Software Foundation, either version 3 of the License, or (at your |
|
||||||
# option) any later version. |
|
||||||
# |
|
||||||
# This program is distributed in the hope that it will be useful, but |
|
||||||
# WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
|
||||||
# Public License for more details. |
|
||||||
# |
|
||||||
# You should have received a copy of the GNU General Public License along |
|
||||||
# with this program. If not, see <https://www.gnu.org/licenses/>. |
|
||||||
# |
|
||||||
# As a special exception, the respective Autoconf Macro's copyright owner |
|
||||||
# gives unlimited permission to copy, distribute and modify the configure |
|
||||||
# scripts that are the output of Autoconf when processing the Macro. You |
|
||||||
# need not follow the terms of the GNU General Public License when using |
|
||||||
# or distributing such scripts, even though portions of the text of the |
|
||||||
# Macro appear in them. The GNU General Public License (GPL) does govern |
|
||||||
# all other use of the material that constitutes the Autoconf Macro. |
|
||||||
# |
|
||||||
# This special exception to the GPL applies to versions of the Autoconf |
|
||||||
# Macro released by the Autoconf Archive. When you make and distribute a |
|
||||||
# modified version of the Autoconf Macro, you may extend this special |
|
||||||
# exception to the GPL to apply to your modified version as well. |
|
||||||
|
|
||||||
#serial 5 |
|
||||||
|
|
||||||
AC_DEFUN([AX_CHECK_LINK_FLAG], |
|
||||||
[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF |
|
||||||
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_ldflags_$4_$1])dnl |
|
||||||
AC_CACHE_CHECK([whether the linker accepts $1], CACHEVAR, [ |
|
||||||
ax_check_save_flags=$LDFLAGS |
|
||||||
LDFLAGS="$LDFLAGS $4 $1" |
|
||||||
AC_LINK_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])], |
|
||||||
[AS_VAR_SET(CACHEVAR,[yes])], |
|
||||||
[AS_VAR_SET(CACHEVAR,[no])]) |
|
||||||
LDFLAGS=$ax_check_save_flags]) |
|
||||||
AS_VAR_IF(CACHEVAR,yes, |
|
||||||
[m4_default([$2], :)], |
|
||||||
[m4_default([$3], :)]) |
|
||||||
AS_VAR_POPDEF([CACHEVAR])dnl |
|
||||||
])dnl AX_CHECK_LINK_FLAGS |
|
@ -1,264 +0,0 @@ |
|||||||
# =========================================================================== |
|
||||||
# https://www.gnu.org/software/autoconf-archive/ax_code_coverage.html |
|
||||||
# =========================================================================== |
|
||||||
# |
|
||||||
# SYNOPSIS |
|
||||||
# |
|
||||||
# AX_CODE_COVERAGE() |
|
||||||
# |
|
||||||
# DESCRIPTION |
|
||||||
# |
|
||||||
# Defines CODE_COVERAGE_CPPFLAGS, CODE_COVERAGE_CFLAGS, |
|
||||||
# CODE_COVERAGE_CXXFLAGS and CODE_COVERAGE_LIBS which should be included |
|
||||||
# in the CPPFLAGS, CFLAGS CXXFLAGS and LIBS/LIBADD variables of every |
|
||||||
# build target (program or library) which should be built with code |
|
||||||
# coverage support. Also defines CODE_COVERAGE_RULES which should be |
|
||||||
# substituted in your Makefile; and $enable_code_coverage which can be |
|
||||||
# used in subsequent configure output. CODE_COVERAGE_ENABLED is defined |
|
||||||
# and substituted, and corresponds to the value of the |
|
||||||
# --enable-code-coverage option, which defaults to being disabled. |
|
||||||
# |
|
||||||
# Test also for gcov program and create GCOV variable that could be |
|
||||||
# substituted. |
|
||||||
# |
|
||||||
# Note that all optimization flags in CFLAGS must be disabled when code |
|
||||||
# coverage is enabled. |
|
||||||
# |
|
||||||
# Usage example: |
|
||||||
# |
|
||||||
# configure.ac: |
|
||||||
# |
|
||||||
# AX_CODE_COVERAGE |
|
||||||
# |
|
||||||
# Makefile.am: |
|
||||||
# |
|
||||||
# @CODE_COVERAGE_RULES@ |
|
||||||
# my_program_LIBS = ... $(CODE_COVERAGE_LIBS) ... |
|
||||||
# my_program_CPPFLAGS = ... $(CODE_COVERAGE_CPPFLAGS) ... |
|
||||||
# my_program_CFLAGS = ... $(CODE_COVERAGE_CFLAGS) ... |
|
||||||
# my_program_CXXFLAGS = ... $(CODE_COVERAGE_CXXFLAGS) ... |
|
||||||
# |
|
||||||
# This results in a "check-code-coverage" rule being added to any |
|
||||||
# Makefile.am which includes "@CODE_COVERAGE_RULES@" (assuming the module |
|
||||||
# has been configured with --enable-code-coverage). Running `make |
|
||||||
# check-code-coverage` in that directory will run the module's test suite |
|
||||||
# (`make check`) and build a code coverage report detailing the code which |
|
||||||
# was touched, then print the URI for the report. |
|
||||||
# |
|
||||||
# In earlier versions of this macro, CODE_COVERAGE_LDFLAGS was defined |
|
||||||
# instead of CODE_COVERAGE_LIBS. They are both still defined, but use of |
|
||||||
# CODE_COVERAGE_LIBS is preferred for clarity; CODE_COVERAGE_LDFLAGS is |
|
||||||
# deprecated. They have the same value. |
|
||||||
# |
|
||||||
# This code was derived from Makefile.decl in GLib, originally licenced |
|
||||||
# under LGPLv2.1+. |
|
||||||
# |
|
||||||
# LICENSE |
|
||||||
# |
|
||||||
# Copyright (c) 2012, 2016 Philip Withnall |
|
||||||
# Copyright (c) 2012 Xan Lopez |
|
||||||
# Copyright (c) 2012 Christian Persch |
|
||||||
# Copyright (c) 2012 Paolo Borelli |
|
||||||
# Copyright (c) 2012 Dan Winship |
|
||||||
# Copyright (c) 2015 Bastien ROUCARIES |
|
||||||
# |
|
||||||
# This library is free software; you can redistribute it and/or modify it |
|
||||||
# under the terms of the GNU Lesser General Public License as published by |
|
||||||
# the Free Software Foundation; either version 2.1 of the License, or (at |
|
||||||
# your option) any later version. |
|
||||||
# |
|
||||||
# This library is distributed in the hope that it will be useful, but |
|
||||||
# WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser |
|
||||||
# General Public License for more details. |
|
||||||
# |
|
||||||
# You should have received a copy of the GNU Lesser General Public License |
|
||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>. |
|
||||||
|
|
||||||
#serial 25 |
|
||||||
|
|
||||||
AC_DEFUN([AX_CODE_COVERAGE],[ |
|
||||||
dnl Check for --enable-code-coverage |
|
||||||
AC_REQUIRE([AC_PROG_SED]) |
|
||||||
|
|
||||||
# allow to override gcov location |
|
||||||
AC_ARG_WITH([gcov], |
|
||||||
[AS_HELP_STRING([--with-gcov[=GCOV]], [use given GCOV for coverage (GCOV=gcov).])], |
|
||||||
[_AX_CODE_COVERAGE_GCOV_PROG_WITH=$with_gcov], |
|
||||||
[_AX_CODE_COVERAGE_GCOV_PROG_WITH=gcov]) |
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether to build with code coverage support]) |
|
||||||
AC_ARG_ENABLE([code-coverage], |
|
||||||
AS_HELP_STRING([--enable-code-coverage], |
|
||||||
[Whether to enable code coverage support]),, |
|
||||||
enable_code_coverage=no) |
|
||||||
|
|
||||||
AM_CONDITIONAL([CODE_COVERAGE_ENABLED], [test x$enable_code_coverage = xyes]) |
|
||||||
AC_SUBST([CODE_COVERAGE_ENABLED], [$enable_code_coverage]) |
|
||||||
AC_MSG_RESULT($enable_code_coverage) |
|
||||||
|
|
||||||
AS_IF([ test "$enable_code_coverage" = "yes" ], [ |
|
||||||
# check for gcov |
|
||||||
AC_CHECK_TOOL([GCOV], |
|
||||||
[$_AX_CODE_COVERAGE_GCOV_PROG_WITH], |
|
||||||
[:]) |
|
||||||
AS_IF([test "X$GCOV" = "X:"], |
|
||||||
[AC_MSG_ERROR([gcov is needed to do coverage])]) |
|
||||||
AC_SUBST([GCOV]) |
|
||||||
|
|
||||||
dnl Check if gcc is being used |
|
||||||
AS_IF([ test "$GCC" = "no" ], [ |
|
||||||
AC_MSG_ERROR([not compiling with gcc, which is required for gcov code coverage]) |
|
||||||
]) |
|
||||||
|
|
||||||
AC_CHECK_PROG([LCOV], [lcov], [lcov]) |
|
||||||
AC_CHECK_PROG([GENHTML], [genhtml], [genhtml]) |
|
||||||
|
|
||||||
AS_IF([ test -z "$LCOV" ], [ |
|
||||||
AC_MSG_ERROR([To enable code coverage reporting you must have lcov installed]) |
|
||||||
]) |
|
||||||
|
|
||||||
AS_IF([ test -z "$GENHTML" ], [ |
|
||||||
AC_MSG_ERROR([Could not find genhtml from the lcov package]) |
|
||||||
]) |
|
||||||
|
|
||||||
dnl Build the code coverage flags |
|
||||||
dnl Define CODE_COVERAGE_LDFLAGS for backwards compatibility |
|
||||||
CODE_COVERAGE_CPPFLAGS="-DNDEBUG" |
|
||||||
CODE_COVERAGE_CFLAGS="-O0 -g -fprofile-arcs -ftest-coverage" |
|
||||||
CODE_COVERAGE_CXXFLAGS="-O0 -g -fprofile-arcs -ftest-coverage" |
|
||||||
CODE_COVERAGE_LIBS="-lgcov" |
|
||||||
CODE_COVERAGE_LDFLAGS="$CODE_COVERAGE_LIBS" |
|
||||||
|
|
||||||
AC_SUBST([CODE_COVERAGE_CPPFLAGS]) |
|
||||||
AC_SUBST([CODE_COVERAGE_CFLAGS]) |
|
||||||
AC_SUBST([CODE_COVERAGE_CXXFLAGS]) |
|
||||||
AC_SUBST([CODE_COVERAGE_LIBS]) |
|
||||||
AC_SUBST([CODE_COVERAGE_LDFLAGS]) |
|
||||||
|
|
||||||
[CODE_COVERAGE_RULES_CHECK=' |
|
||||||
-$(A''M_V_at)$(MAKE) $(AM_MAKEFLAGS) -k check |
|
||||||
$(A''M_V_at)$(MAKE) $(AM_MAKEFLAGS) code-coverage-capture |
|
||||||
'] |
|
||||||
[CODE_COVERAGE_RULES_CAPTURE=' |
|
||||||
$(code_coverage_v_lcov_cap)$(LCOV) $(code_coverage_quiet) $(addprefix --directory ,$(CODE_COVERAGE_DIRECTORY)) --capture --output-file "$(CODE_COVERAGE_OUTPUT_FILE).tmp" --test-name "$(call code_coverage_sanitize,$(PACKAGE_NAME)-$(PACKAGE_VERSION))" --no-checksum --compat-libtool $(CODE_COVERAGE_LCOV_SHOPTS) $(CODE_COVERAGE_LCOV_OPTIONS) |
|
||||||
$(code_coverage_v_lcov_ign)$(LCOV) $(code_coverage_quiet) $(addprefix --directory ,$(CODE_COVERAGE_DIRECTORY)) --remove "$(CODE_COVERAGE_OUTPUT_FILE).tmp" "/tmp/*" $(CODE_COVERAGE_IGNORE_PATTERN) --output-file "$(CODE_COVERAGE_OUTPUT_FILE)" $(CODE_COVERAGE_LCOV_SHOPTS) $(CODE_COVERAGE_LCOV_RMOPTS) |
|
||||||
-@rm -f $(CODE_COVERAGE_OUTPUT_FILE).tmp |
|
||||||
$(code_coverage_v_genhtml)LANG=C $(GENHTML) $(code_coverage_quiet) $(addprefix --prefix ,$(CODE_COVERAGE_DIRECTORY)) --output-directory "$(CODE_COVERAGE_OUTPUT_DIRECTORY)" --title "$(PACKAGE_NAME)-$(PACKAGE_VERSION) Code Coverage" --legend --show-details "$(CODE_COVERAGE_OUTPUT_FILE)" $(CODE_COVERAGE_GENHTML_OPTIONS) |
|
||||||
@echo "file://$(abs_builddir)/$(CODE_COVERAGE_OUTPUT_DIRECTORY)/index.html" |
|
||||||
'] |
|
||||||
[CODE_COVERAGE_RULES_CLEAN=' |
|
||||||
clean: code-coverage-clean |
|
||||||
distclean: code-coverage-clean |
|
||||||
code-coverage-clean: |
|
||||||
-$(LCOV) --directory $(top_builddir) -z |
|
||||||
-rm -rf $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_FILE).tmp $(CODE_COVERAGE_OUTPUT_DIRECTORY) |
|
||||||
-find . \( -name "*.gcda" -o -name "*.gcno" -o -name "*.gcov" \) -delete |
|
||||||
'] |
|
||||||
], [ |
|
||||||
[CODE_COVERAGE_RULES_CHECK=' |
|
||||||
@echo "Need to reconfigure with --enable-code-coverage" |
|
||||||
'] |
|
||||||
CODE_COVERAGE_RULES_CAPTURE="$CODE_COVERAGE_RULES_CHECK" |
|
||||||
CODE_COVERAGE_RULES_CLEAN='' |
|
||||||
]) |
|
||||||
|
|
||||||
[CODE_COVERAGE_RULES=' |
|
||||||
# Code coverage |
|
||||||
# |
|
||||||
# Optional: |
|
||||||
# - CODE_COVERAGE_DIRECTORY: Top-level directory for code coverage reporting. |
|
||||||
# Multiple directories may be specified, separated by whitespace. |
|
||||||
# (Default: $(top_builddir)) |
|
||||||
# - CODE_COVERAGE_OUTPUT_FILE: Filename and path for the .info file generated |
|
||||||
# by lcov for code coverage. (Default: |
|
||||||
# $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage.info) |
|
||||||
# - CODE_COVERAGE_OUTPUT_DIRECTORY: Directory for generated code coverage |
|
||||||
# reports to be created. (Default: |
|
||||||
# $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage) |
|
||||||
# - CODE_COVERAGE_BRANCH_COVERAGE: Set to 1 to enforce branch coverage, |
|
||||||
# set to 0 to disable it and leave empty to stay with the default. |
|
||||||
# (Default: empty) |
|
||||||
# - CODE_COVERAGE_LCOV_SHOPTS_DEFAULT: Extra options shared between both lcov |
|
||||||
# instances. (Default: based on $CODE_COVERAGE_BRANCH_COVERAGE) |
|
||||||
# - CODE_COVERAGE_LCOV_SHOPTS: Extra options to shared between both lcov |
|
||||||
# instances. (Default: $CODE_COVERAGE_LCOV_SHOPTS_DEFAULT) |
|
||||||
# - CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH: --gcov-tool pathtogcov |
|
||||||
# - CODE_COVERAGE_LCOV_OPTIONS_DEFAULT: Extra options to pass to the |
|
||||||
# collecting lcov instance. (Default: $CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH) |
|
||||||
# - CODE_COVERAGE_LCOV_OPTIONS: Extra options to pass to the collecting lcov |
|
||||||
# instance. (Default: $CODE_COVERAGE_LCOV_OPTIONS_DEFAULT) |
|
||||||
# - CODE_COVERAGE_LCOV_RMOPTS_DEFAULT: Extra options to pass to the filtering |
|
||||||
# lcov instance. (Default: empty) |
|
||||||
# - CODE_COVERAGE_LCOV_RMOPTS: Extra options to pass to the filtering lcov |
|
||||||
# instance. (Default: $CODE_COVERAGE_LCOV_RMOPTS_DEFAULT) |
|
||||||
# - CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT: Extra options to pass to the |
|
||||||
# genhtml instance. (Default: based on $CODE_COVERAGE_BRANCH_COVERAGE) |
|
||||||
# - CODE_COVERAGE_GENHTML_OPTIONS: Extra options to pass to the genhtml |
|
||||||
# instance. (Default: $CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT) |
|
||||||
# - CODE_COVERAGE_IGNORE_PATTERN: Extra glob pattern of files to ignore |
|
||||||
# |
|
||||||
# The generated report will be titled using the $(PACKAGE_NAME) and |
|
||||||
# $(PACKAGE_VERSION). In order to add the current git hash to the title, |
|
||||||
# use the git-version-gen script, available online. |
|
||||||
|
|
||||||
# Optional variables |
|
||||||
CODE_COVERAGE_DIRECTORY ?= $(top_builddir) |
|
||||||
CODE_COVERAGE_OUTPUT_FILE ?= $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage.info |
|
||||||
CODE_COVERAGE_OUTPUT_DIRECTORY ?= $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage |
|
||||||
CODE_COVERAGE_BRANCH_COVERAGE ?= |
|
||||||
CODE_COVERAGE_LCOV_SHOPTS_DEFAULT ?= $(if $(CODE_COVERAGE_BRANCH_COVERAGE),\ |
|
||||||
--rc lcov_branch_coverage=$(CODE_COVERAGE_BRANCH_COVERAGE)) |
|
||||||
CODE_COVERAGE_LCOV_SHOPTS ?= $(CODE_COVERAGE_LCOV_SHOPTS_DEFAULT) |
|
||||||
CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH ?= --gcov-tool "$(GCOV)" |
|
||||||
CODE_COVERAGE_LCOV_OPTIONS_DEFAULT ?= $(CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH) |
|
||||||
CODE_COVERAGE_LCOV_OPTIONS ?= $(CODE_COVERAGE_LCOV_OPTIONS_DEFAULT) |
|
||||||
CODE_COVERAGE_LCOV_RMOPTS_DEFAULT ?= |
|
||||||
CODE_COVERAGE_LCOV_RMOPTS ?= $(CODE_COVERAGE_LCOV_RMOPTS_DEFAULT) |
|
||||||
CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT ?=\ |
|
||||||
$(if $(CODE_COVERAGE_BRANCH_COVERAGE),\ |
|
||||||
--rc genhtml_branch_coverage=$(CODE_COVERAGE_BRANCH_COVERAGE)) |
|
||||||
CODE_COVERAGE_GENHTML_OPTIONS ?= $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT) |
|
||||||
CODE_COVERAGE_IGNORE_PATTERN ?= |
|
||||||
|
|
||||||
GITIGNOREFILES ?= |
|
||||||
GITIGNOREFILES += $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_DIRECTORY) |
|
||||||
|
|
||||||
code_coverage_v_lcov_cap = $(code_coverage_v_lcov_cap_$(V)) |
|
||||||
code_coverage_v_lcov_cap_ = $(code_coverage_v_lcov_cap_$(AM_DEFAULT_VERBOSITY)) |
|
||||||
code_coverage_v_lcov_cap_0 = @echo " LCOV --capture"\ |
|
||||||
$(CODE_COVERAGE_OUTPUT_FILE); |
|
||||||
code_coverage_v_lcov_ign = $(code_coverage_v_lcov_ign_$(V)) |
|
||||||
code_coverage_v_lcov_ign_ = $(code_coverage_v_lcov_ign_$(AM_DEFAULT_VERBOSITY)) |
|
||||||
code_coverage_v_lcov_ign_0 = @echo " LCOV --remove /tmp/*"\ |
|
||||||
$(CODE_COVERAGE_IGNORE_PATTERN); |
|
||||||
code_coverage_v_genhtml = $(code_coverage_v_genhtml_$(V)) |
|
||||||
code_coverage_v_genhtml_ = $(code_coverage_v_genhtml_$(AM_DEFAULT_VERBOSITY)) |
|
||||||
code_coverage_v_genhtml_0 = @echo " GEN " $(CODE_COVERAGE_OUTPUT_DIRECTORY); |
|
||||||
code_coverage_quiet = $(code_coverage_quiet_$(V)) |
|
||||||
code_coverage_quiet_ = $(code_coverage_quiet_$(AM_DEFAULT_VERBOSITY)) |
|
||||||
code_coverage_quiet_0 = --quiet |
|
||||||
|
|
||||||
# sanitizes the test-name: replaces with underscores: dashes and dots |
|
||||||
code_coverage_sanitize = $(subst -,_,$(subst .,_,$(1))) |
|
||||||
|
|
||||||
# Use recursive makes in order to ignore errors during check |
|
||||||
check-code-coverage:'"$CODE_COVERAGE_RULES_CHECK"' |
|
||||||
|
|
||||||
# Capture code coverage data |
|
||||||
code-coverage-capture: code-coverage-capture-hook'"$CODE_COVERAGE_RULES_CAPTURE"' |
|
||||||
|
|
||||||
# Hook rule executed before code-coverage-capture, overridable by the user |
|
||||||
code-coverage-capture-hook: |
|
||||||
|
|
||||||
'"$CODE_COVERAGE_RULES_CLEAN"' |
|
||||||
|
|
||||||
A''M_DISTCHECK_CONFIGURE_FLAGS ?= |
|
||||||
A''M_DISTCHECK_CONFIGURE_FLAGS += --disable-code-coverage |
|
||||||
|
|
||||||
.PHONY: check-code-coverage code-coverage-capture code-coverage-capture-hook code-coverage-clean |
|
||||||
'] |
|
||||||
|
|
||||||
AC_SUBST([CODE_COVERAGE_RULES]) |
|
||||||
m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([CODE_COVERAGE_RULES])]) |
|
||||||
]) |
|
@ -1,982 +0,0 @@ |
|||||||
# =========================================================================== |
|
||||||
# https://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html |
|
||||||
# =========================================================================== |
|
||||||
# |
|
||||||
# SYNOPSIS |
|
||||||
# |
|
||||||
# AX_CXX_COMPILE_STDCXX(VERSION, [ext|noext], [mandatory|optional]) |
|
||||||
# |
|
||||||
# DESCRIPTION |
|
||||||
# |
|
||||||
# Check for baseline language coverage in the compiler for the specified |
|
||||||
# version of the C++ standard. If necessary, add switches to CXX and |
|
||||||
# CXXCPP to enable support. VERSION may be '11' (for the C++11 standard) |
|
||||||
# or '14' (for the C++14 standard). |
|
||||||
# |
|
||||||
# The second argument, if specified, indicates whether you insist on an |
|
||||||
# extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g. |
|
||||||
# -std=c++11). If neither is specified, you get whatever works, with |
|
||||||
# preference for an extended mode. |
|
||||||
# |
|
||||||
# The third argument, if specified 'mandatory' or if left unspecified, |
|
||||||
# indicates that baseline support for the specified C++ standard is |
|
||||||
# required and that the macro should error out if no mode with that |
|
||||||
# support is found. If specified 'optional', then configuration proceeds |
|
||||||
# regardless, after defining HAVE_CXX${VERSION} if and only if a |
|
||||||
# supporting mode is found. |
|
||||||
# |
|
||||||
# LICENSE |
|
||||||
# |
|
||||||
# Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com> |
|
||||||
# Copyright (c) 2012 Zack Weinberg <zackw@panix.com> |
|
||||||
# Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu> |
|
||||||
# Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov@google.com> |
|
||||||
# Copyright (c) 2015 Paul Norman <penorman@mac.com> |
|
||||||
# Copyright (c) 2015 Moritz Klammler <moritz@klammler.eu> |
|
||||||
# Copyright (c) 2016 Krzesimir Nowak <qdlacz@gmail.com> |
|
||||||
# |
|
||||||
# Copying and distribution of this file, with or without modification, are |
|
||||||
# permitted in any medium without royalty provided the copyright notice |
|
||||||
# and this notice are preserved. This file is offered as-is, without any |
|
||||||
# warranty. |
|
||||||
|
|
||||||
#serial 7 |
|
||||||
|
|
||||||
dnl This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro |
|
||||||
dnl (serial version number 13). |
|
||||||
|
|
||||||
AX_REQUIRE_DEFINED([AC_MSG_WARN]) |
|
||||||
AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl |
|
||||||
m4_if([$1], [11], [ax_cxx_compile_alternatives="11 0x"], |
|
||||||
[$1], [14], [ax_cxx_compile_alternatives="14 1y"], |
|
||||||
[$1], [17], [ax_cxx_compile_alternatives="17 1z"], |
|
||||||
[m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl |
|
||||||
m4_if([$2], [], [], |
|
||||||
[$2], [ext], [], |
|
||||||
[$2], [noext], [], |
|
||||||
[m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX])])dnl |
|
||||||
m4_if([$3], [], [ax_cxx_compile_cxx$1_required=true], |
|
||||||
[$3], [mandatory], [ax_cxx_compile_cxx$1_required=true], |
|
||||||
[$3], [optional], [ax_cxx_compile_cxx$1_required=false], |
|
||||||
[m4_fatal([invalid third argument `$3' to AX_CXX_COMPILE_STDCXX])]) |
|
||||||
AC_LANG_PUSH([C++])dnl |
|
||||||
ac_success=no |
|
||||||
AC_CACHE_CHECK(whether $CXX supports C++$1 features by default, |
|
||||||
ax_cv_cxx_compile_cxx$1, |
|
||||||
[AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])], |
|
||||||
[ax_cv_cxx_compile_cxx$1=yes], |
|
||||||
[ax_cv_cxx_compile_cxx$1=no])]) |
|
||||||
if test x$ax_cv_cxx_compile_cxx$1 = xyes; then |
|
||||||
ac_success=yes |
|
||||||
fi |
|
||||||
|
|
||||||
m4_if([$2], [noext], [], [dnl |
|
||||||
if test x$ac_success = xno; then |
|
||||||
for alternative in ${ax_cxx_compile_alternatives}; do |
|
||||||
switch="-std=gnu++${alternative}" |
|
||||||
cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch]) |
|
||||||
AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch, |
|
||||||
$cachevar, |
|
||||||
[ac_save_CXX="$CXX" |
|
||||||
CXX="$CXX $switch" |
|
||||||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])], |
|
||||||
[eval $cachevar=yes], |
|
||||||
[eval $cachevar=no]) |
|
||||||
CXX="$ac_save_CXX"]) |
|
||||||
if eval test x\$$cachevar = xyes; then |
|
||||||
CXX="$CXX $switch" |
|
||||||
if test -n "$CXXCPP" ; then |
|
||||||
CXXCPP="$CXXCPP $switch" |
|
||||||
fi |
|
||||||
ac_success=yes |
|
||||||
break |
|
||||||
fi |
|
||||||
done |
|
||||||
fi]) |
|
||||||
|
|
||||||
m4_if([$2], [ext], [], [dnl |
|
||||||
if test x$ac_success = xno; then |
|
||||||
dnl HP's aCC needs +std=c++11 according to: |
|
||||||
dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf |
|
||||||
dnl Cray's crayCC needs "-h std=c++11" |
|
||||||
for alternative in ${ax_cxx_compile_alternatives}; do |
|
||||||
for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do |
|
||||||
cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch]) |
|
||||||
AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch, |
|
||||||
$cachevar, |
|
||||||
[ac_save_CXX="$CXX" |
|
||||||
CXX="$CXX $switch" |
|
||||||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])], |
|
||||||
[eval $cachevar=yes], |
|
||||||
[eval $cachevar=no]) |
|
||||||
CXX="$ac_save_CXX"]) |
|
||||||
if eval test x\$$cachevar = xyes; then |
|
||||||
CXX="$CXX $switch" |
|
||||||
if test -n "$CXXCPP" ; then |
|
||||||
CXXCPP="$CXXCPP $switch" |
|
||||||
fi |
|
||||||
ac_success=yes |
|
||||||
break |
|
||||||
fi |
|
||||||
done |
|
||||||
if test x$ac_success = xyes; then |
|
||||||
break |
|
||||||
fi |
|
||||||
done |
|
||||||
fi]) |
|
||||||
AC_LANG_POP([C++]) |
|
||||||
if test x$ax_cxx_compile_cxx$1_required = xtrue; then |
|
||||||
if test x$ac_success = xno; then |
|
||||||
AC_MSG_ERROR([*** A compiler with support for C++$1 language features is required.]) |
|
||||||
fi |
|
||||||
fi |
|
||||||
if test x$ac_success = xno; then |
|
||||||
HAVE_CXX$1=0 |
|
||||||
AC_MSG_NOTICE([No compiler with C++$1 support was found]) |
|
||||||
else |
|
||||||
HAVE_CXX$1=1 |
|
||||||
AC_DEFINE(HAVE_CXX$1,1, |
|
||||||
[define if the compiler supports basic C++$1 syntax]) |
|
||||||
fi |
|
||||||
AC_SUBST(HAVE_CXX$1) |
|
||||||
m4_if([$1], [17], [AC_MSG_WARN([C++17 is not yet standardized, so the checks may change in incompatible ways anytime])]) |
|
||||||
]) |
|
||||||
|
|
||||||
|
|
||||||
dnl Test body for checking C++11 support |
|
||||||
|
|
||||||
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11], |
|
||||||
_AX_CXX_COMPILE_STDCXX_testbody_new_in_11 |
|
||||||
) |
|
||||||
|
|
||||||
|
|
||||||
dnl Test body for checking C++14 support |
|
||||||
|
|
||||||
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14], |
|
||||||
_AX_CXX_COMPILE_STDCXX_testbody_new_in_11 |
|
||||||
_AX_CXX_COMPILE_STDCXX_testbody_new_in_14 |
|
||||||
) |
|
||||||
|
|
||||||
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_17], |
|
||||||
_AX_CXX_COMPILE_STDCXX_testbody_new_in_11 |
|
||||||
_AX_CXX_COMPILE_STDCXX_testbody_new_in_14 |
|
||||||
_AX_CXX_COMPILE_STDCXX_testbody_new_in_17 |
|
||||||
) |
|
||||||
|
|
||||||
dnl Tests for new features in C++11 |
|
||||||
|
|
||||||
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[ |
|
||||||
|
|
||||||
// If the compiler admits that it is not ready for C++11, why torture it? |
|
||||||
// Hopefully, this will speed up the test. |
|
||||||
|
|
||||||
#ifndef __cplusplus |
|
||||||
|
|
||||||
#error "This is not a C++ compiler" |
|
||||||
|
|
||||||
#elif __cplusplus < 201103L |
|
||||||
|
|
||||||
#error "This is not a C++11 compiler" |
|
||||||
|
|
||||||
#else |
|
||||||
|
|
||||||
namespace cxx11 |
|
||||||
{ |
|
||||||
|
|
||||||
namespace test_static_assert |
|
||||||
{ |
|
||||||
|
|
||||||
template <typename T> |
|
||||||
struct check |
|
||||||
{ |
|
||||||
static_assert(sizeof(int) <= sizeof(T), "not big enough"); |
|
||||||
}; |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
namespace test_final_override |
|
||||||
{ |
|
||||||
|
|
||||||
struct Base |
|
||||||
{ |
|
||||||
virtual void f() {} |
|
||||||
}; |
|
||||||
|
|
||||||
struct Derived : public Base |
|
||||||
{ |
|
||||||
virtual void f() override {} |
|
||||||
}; |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
namespace test_double_right_angle_brackets |
|
||||||
{ |
|
||||||
|
|
||||||
template < typename T > |
|
||||||
struct check {}; |
|
||||||
|
|
||||||
typedef check<void> single_type; |
|
||||||
typedef check<check<void>> double_type; |
|
||||||
typedef check<check<check<void>>> triple_type; |
|
||||||
typedef check<check<check<check<void>>>> quadruple_type; |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
namespace test_decltype |
|
||||||
{ |
|
||||||
|
|
||||||
int |
|
||||||
f() |
|
||||||
{ |
|
||||||
int a = 1; |
|
||||||
decltype(a) b = 2; |
|
||||||
return a + b; |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
namespace test_type_deduction |
|
||||||
{ |
|
||||||
|
|
||||||
template < typename T1, typename T2 > |
|
||||||
struct is_same |
|
||||||
{ |
|
||||||
static const bool value = false; |
|
||||||
}; |
|
||||||
|
|
||||||
template < typename T > |
|
||||||
struct is_same<T, T> |
|
||||||
{ |
|
||||||
static const bool value = true; |
|
||||||
}; |
|
||||||
|
|
||||||
template < typename T1, typename T2 > |
|
||||||
auto |
|
||||||
add(T1 a1, T2 a2) -> decltype(a1 + a2) |
|
||||||
{ |
|
||||||
return a1 + a2; |
|
||||||
} |
|
||||||
|
|
||||||
int |
|
||||||
test(const int c, volatile int v) |
|
||||||
{ |
|
||||||
static_assert(is_same<int, decltype(0)>::value == true, ""); |
|
||||||
static_assert(is_same<int, decltype(c)>::value == false, ""); |
|
||||||
static_assert(is_same<int, decltype(v)>::value == false, ""); |
|
||||||
auto ac = c; |
|
||||||
auto av = v; |
|
||||||
auto sumi = ac + av + 'x'; |
|
||||||
auto sumf = ac + av + 1.0; |
|
||||||
static_assert(is_same<int, decltype(ac)>::value == true, ""); |
|
||||||
static_assert(is_same<int, decltype(av)>::value == true, ""); |
|
||||||
static_assert(is_same<int, decltype(sumi)>::value == true, ""); |
|
||||||
static_assert(is_same<int, decltype(sumf)>::value == false, ""); |
|
||||||
static_assert(is_same<int, decltype(add(c, v))>::value == true, ""); |
|
||||||
return (sumf > 0.0) ? sumi : add(c, v); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
namespace test_noexcept |
|
||||||
{ |
|
||||||
|
|
||||||
int f() { return 0; } |
|
||||||
int g() noexcept { return 0; } |
|
||||||
|
|
||||||
static_assert(noexcept(f()) == false, ""); |
|
||||||
static_assert(noexcept(g()) == true, ""); |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
namespace test_constexpr |
|
||||||
{ |
|
||||||
|
|
||||||
template < typename CharT > |
|
||||||
unsigned long constexpr |
|
||||||
strlen_c_r(const CharT *const s, const unsigned long acc) noexcept |
|
||||||
{ |
|
||||||
return *s ? strlen_c_r(s + 1, acc + 1) : acc; |
|
||||||
} |
|
||||||
|
|
||||||
template < typename CharT > |
|
||||||
unsigned long constexpr |
|
||||||
strlen_c(const CharT *const s) noexcept |
|
||||||
{ |
|
||||||
return strlen_c_r(s, 0UL); |
|
||||||
} |
|
||||||
|
|
||||||
static_assert(strlen_c("") == 0UL, ""); |
|
||||||
static_assert(strlen_c("1") == 1UL, ""); |
|
||||||
static_assert(strlen_c("example") == 7UL, ""); |
|
||||||
static_assert(strlen_c("another\0example") == 7UL, ""); |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
namespace test_rvalue_references |
|
||||||
{ |
|
||||||
|
|
||||||
template < int N > |
|
||||||
struct answer |
|
||||||
{ |
|
||||||
static constexpr int value = N; |
|
||||||
}; |
|
||||||
|
|
||||||
answer<1> f(int&) { return answer<1>(); } |
|
||||||
answer<2> f(const int&) { return answer<2>(); } |
|
||||||
answer<3> f(int&&) { return answer<3>(); } |
|
||||||
|
|
||||||
void |
|
||||||
test() |
|
||||||
{ |
|
||||||
int i = 0; |
|
||||||
const int c = 0; |
|
||||||
static_assert(decltype(f(i))::value == 1, ""); |
|
||||||
static_assert(decltype(f(c))::value == 2, ""); |
|
||||||
static_assert(decltype(f(0))::value == 3, ""); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
namespace test_uniform_initialization |
|
||||||
{ |
|
||||||
|
|
||||||
struct test |
|
||||||
{ |
|
||||||
static const int zero {}; |
|
||||||
static const int one {1}; |
|
||||||
}; |
|
||||||
|
|
||||||
static_assert(test::zero == 0, ""); |
|
||||||
static_assert(test::one == 1, ""); |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
namespace test_lambdas |
|
||||||
{ |
|
||||||
|
|
||||||
void |
|
||||||
test1() |
|
||||||
{ |
|
||||||
auto lambda1 = [](){}; |
|
||||||
auto lambda2 = lambda1; |
|
||||||
lambda1(); |
|
||||||
lambda2(); |
|
||||||
} |
|
||||||
|
|
||||||
int |
|
||||||
test2() |
|
||||||
{ |
|
||||||
auto a = [](int i, int j){ return i + j; }(1, 2); |
|
||||||
auto b = []() -> int { return '0'; }(); |
|
||||||
auto c = [=](){ return a + b; }(); |
|
||||||
auto d = [&](){ return c; }(); |
|
||||||
auto e = [a, &b](int x) mutable { |
|
||||||
const auto identity = [](int y){ return y; }; |
|
||||||
for (auto i = 0; i < a; ++i) |
|
||||||
a += b--; |
|
||||||
return x + identity(a + b); |
|
||||||
}(0); |
|
||||||
return a + b + c + d + e; |
|
||||||
} |
|
||||||
|
|
||||||
int |
|
||||||
test3() |
|
||||||
{ |
|
||||||
const auto nullary = [](){ return 0; }; |
|
||||||
const auto unary = [](int x){ return x; }; |
|
||||||
using nullary_t = decltype(nullary); |
|
||||||
using unary_t = decltype(unary); |
|
||||||
const auto higher1st = [](nullary_t f){ return f(); }; |
|
||||||
const auto higher2nd = [unary](nullary_t f1){ |
|
||||||
return [unary, f1](unary_t f2){ return f2(unary(f1())); }; |
|
||||||
}; |
|
||||||
return higher1st(nullary) + higher2nd(nullary)(unary); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
namespace test_variadic_templates |
|
||||||
{ |
|
||||||
|
|
||||||
template <int...> |
|
||||||
struct sum; |
|
||||||
|
|
||||||
template <int N0, int... N1toN> |
|
||||||
struct sum<N0, N1toN...> |
|
||||||
{ |
|
||||||
static constexpr auto value = N0 + sum<N1toN...>::value; |
|
||||||
}; |
|
||||||
|
|
||||||
template <> |
|
||||||
struct sum<> |
|
||||||
{ |
|
||||||
static constexpr auto value = 0; |
|
||||||
}; |
|
||||||
|
|
||||||
static_assert(sum<>::value == 0, ""); |
|
||||||
static_assert(sum<1>::value == 1, ""); |
|
||||||
static_assert(sum<23>::value == 23, ""); |
|
||||||
static_assert(sum<1, 2>::value == 3, ""); |
|
||||||
static_assert(sum<5, 5, 11>::value == 21, ""); |
|
||||||
static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
// https://stackoverflow.com/questions/13728184/template-aliases-and-sfinae |
|
||||||
// Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function |
|
||||||
// because of this. |
|
||||||
namespace test_template_alias_sfinae |
|
||||||
{ |
|
||||||
|
|
||||||
struct foo {}; |
|
||||||
|
|
||||||
template<typename T> |
|
||||||
using member = typename T::member_type; |
|
||||||
|
|
||||||
template<typename T> |
|
||||||
void func(...) {} |
|
||||||
|
|
||||||
template<typename T> |
|
||||||
void func(member<T>*) {} |
|
||||||
|
|
||||||
void test(); |
|
||||||
|
|
||||||
void test() { func<foo>(0); } |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
} // namespace cxx11 |
|
||||||
|
|
||||||
#endif // __cplusplus >= 201103L |
|
||||||
|
|
||||||
]]) |
|
||||||
|
|
||||||
|
|
||||||
dnl Tests for new features in C++14 |
|
||||||
|
|
||||||
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_14], [[ |
|
||||||
|
|
||||||
// If the compiler admits that it is not ready for C++14, why torture it? |
|
||||||
// Hopefully, this will speed up the test. |
|
||||||
|
|
||||||
#ifndef __cplusplus |
|
||||||
|
|
||||||
#error "This is not a C++ compiler" |
|
||||||
|
|
||||||
#elif __cplusplus < 201402L |
|
||||||
|
|
||||||
#error "This is not a C++14 compiler" |
|
||||||
|
|
||||||
#else |
|
||||||
|
|
||||||
namespace cxx14 |
|
||||||
{ |
|
||||||
|
|
||||||
namespace test_polymorphic_lambdas |
|
||||||
{ |
|
||||||
|
|
||||||
int |
|
||||||
test() |
|
||||||
{ |
|
||||||
const auto lambda = [](auto&&... args){ |
|
||||||
const auto istiny = [](auto x){ |
|
||||||
return (sizeof(x) == 1UL) ? 1 : 0; |
|
||||||
}; |
|
||||||
const int aretiny[] = { istiny(args)... }; |
|
||||||
return aretiny[0]; |
|
||||||
}; |
|
||||||
return lambda(1, 1L, 1.0f, '1'); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
namespace test_binary_literals |
|
||||||
{ |
|
||||||
|
|
||||||
constexpr auto ivii = 0b0000000000101010; |
|
||||||
static_assert(ivii == 42, "wrong value"); |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
namespace test_generalized_constexpr |
|
||||||
{ |
|
||||||
|
|
||||||
template < typename CharT > |
|
||||||
constexpr unsigned long |
|
||||||
strlen_c(const CharT *const s) noexcept |
|
||||||
{ |
|
||||||
auto length = 0UL; |
|
||||||
for (auto p = s; *p; ++p) |
|
||||||
++length; |
|
||||||
return length; |
|
||||||
} |
|
||||||
|
|
||||||
static_assert(strlen_c("") == 0UL, ""); |
|
||||||
static_assert(strlen_c("x") == 1UL, ""); |
|
||||||
static_assert(strlen_c("test") == 4UL, ""); |
|
||||||
static_assert(strlen_c("another\0test") == 7UL, ""); |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
namespace test_lambda_init_capture |
|
||||||
{ |
|
||||||
|
|
||||||
int |
|
||||||
test() |
|
||||||
{ |
|
||||||
auto x = 0; |
|
||||||
const auto lambda1 = [a = x](int b){ return a + b; }; |
|
||||||
const auto lambda2 = [a = lambda1(x)](){ return a; }; |
|
||||||
return lambda2(); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
namespace test_digit_separators |
|
||||||
{ |
|
||||||
|
|
||||||
constexpr auto ten_million = 100'000'000; |
|
||||||
static_assert(ten_million == 100000000, ""); |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
namespace test_return_type_deduction |
|
||||||
{ |
|
||||||
|
|
||||||
auto f(int& x) { return x; } |
|
||||||
decltype(auto) g(int& x) { return x; } |
|
||||||
|
|
||||||
template < typename T1, typename T2 > |
|
||||||
struct is_same |
|
||||||
{ |
|
||||||
static constexpr auto value = false; |
|
||||||
}; |
|
||||||
|
|
||||||
template < typename T > |
|
||||||
struct is_same<T, T> |
|
||||||
{ |
|
||||||
static constexpr auto value = true; |
|
||||||
}; |
|
||||||
|
|
||||||
int |
|
||||||
test() |
|
||||||
{ |
|
||||||
auto x = 0; |
|
||||||
static_assert(is_same<int, decltype(f(x))>::value, ""); |
|
||||||
static_assert(is_same<int&, decltype(g(x))>::value, ""); |
|
||||||
return x; |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
} // namespace cxx14 |
|
||||||
|
|
||||||
#endif // __cplusplus >= 201402L |
|
||||||
|
|
||||||
]]) |
|
||||||
|
|
||||||
|
|
||||||
dnl Tests for new features in C++17 |
|
||||||
|
|
||||||
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_17], [[ |
|
||||||
|
|
||||||
// If the compiler admits that it is not ready for C++17, why torture it? |
|
||||||
// Hopefully, this will speed up the test. |
|
||||||
|
|
||||||
#ifndef __cplusplus |
|
||||||
|
|
||||||
#error "This is not a C++ compiler" |
|
||||||
|
|
||||||
#elif __cplusplus <= 201402L |
|
||||||
|
|
||||||
#error "This is not a C++17 compiler" |
|
||||||
|
|
||||||
#else |
|
||||||
|
|
||||||
#if defined(__clang__) |
|
||||||
#define REALLY_CLANG |
|
||||||
#else |
|
||||||
#if defined(__GNUC__) |
|
||||||
#define REALLY_GCC |
|
||||||
#endif |
|
||||||
#endif |
|
||||||
|
|
||||||
#include <initializer_list> |
|
||||||
#include <utility> |
|
||||||
#include <type_traits> |
|
||||||
|
|
||||||
namespace cxx17 |
|
||||||
{ |
|
||||||
|
|
||||||
#if !defined(REALLY_CLANG) |
|
||||||
namespace test_constexpr_lambdas |
|
||||||
{ |
|
||||||
|
|
||||||
// TODO: test it with clang++ from git |
|
||||||
|
|
||||||
constexpr int foo = [](){return 42;}(); |
|
||||||
|
|
||||||
} |
|
||||||
#endif // !defined(REALLY_CLANG) |
|
||||||
|
|
||||||
namespace test::nested_namespace::definitions |
|
||||||
{ |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
namespace test_fold_expression |
|
||||||
{ |
|
||||||
|
|
||||||
template<typename... Args> |
|
||||||
int multiply(Args... args) |
|
||||||
{ |
|
||||||
return (args * ... * 1); |
|
||||||
} |
|
||||||
|
|
||||||
template<typename... Args> |
|
||||||
bool all(Args... args) |
|
||||||
{ |
|
||||||
return (args && ...); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
namespace test_extended_static_assert |
|
||||||
{ |
|
||||||
|
|
||||||
static_assert (true); |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
namespace test_auto_brace_init_list |
|
||||||
{ |
|
||||||
|
|
||||||
auto foo = {5}; |
|
||||||
auto bar {5}; |
|
||||||
|
|
||||||
static_assert(std::is_same<std::initializer_list<int>, decltype(foo)>::value); |
|
||||||
static_assert(std::is_same<int, decltype(bar)>::value); |
|
||||||
} |
|
||||||
|
|
||||||
namespace test_typename_in_template_template_parameter |
|
||||||
{ |
|
||||||
|
|
||||||
template<template<typename> typename X> struct D; |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
namespace test_fallthrough_nodiscard_maybe_unused_attributes |
|
||||||
{ |
|
||||||
|
|
||||||
int f1() |
|
||||||
{ |
|
||||||
return 42; |
|
||||||
} |
|
||||||
|
|
||||||
[[nodiscard]] int f2() |
|
||||||
{ |
|
||||||
[[maybe_unused]] auto unused = f1(); |
|
||||||
|
|
||||||
switch (f1()) |
|
||||||
{ |
|
||||||
case 17: |
|
||||||
f1(); |
|
||||||
[[fallthrough]]; |
|
||||||
case 42: |
|
||||||
f1(); |
|
||||||
} |
|
||||||
return f1(); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
namespace test_extended_aggregate_initialization |
|
||||||
{ |
|
||||||
|
|
||||||
struct base1 |
|
||||||
{ |
|
||||||
int b1, b2 = 42; |
|
||||||
}; |
|
||||||
|
|
||||||
struct base2 |
|
||||||
{ |
|
||||||
base2() { |
|
||||||
b3 = 42; |
|
||||||
} |
|
||||||
int b3; |
|
||||||
}; |
|
||||||
|
|
||||||
struct derived : base1, base2 |
|
||||||
{ |
|
||||||
int d; |
|
||||||
}; |
|
||||||
|
|
||||||
derived d1 {{1, 2}, {}, 4}; // full initialization |
|
||||||
derived d2 {{}, {}, 4}; // value-initialized bases |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
namespace test_general_range_based_for_loop |
|
||||||
{ |
|
||||||
|
|
||||||
struct iter |
|
||||||
{ |
|
||||||
int i; |
|
||||||
|
|
||||||
int& operator* () |
|
||||||
{ |
|
||||||
return i; |
|
||||||
} |
|
||||||
|
|
||||||
const int& operator* () const |
|
||||||
{ |
|
||||||
return i; |
|
||||||
} |
|
||||||
|
|
||||||
iter& operator++() |
|
||||||
{ |
|
||||||
++i; |
|
||||||
return *this; |
|
||||||
} |
|
||||||
}; |
|
||||||
|
|
||||||
struct sentinel |
|
||||||
{ |
|
||||||
int i; |
|
||||||
}; |
|
||||||
|
|
||||||
bool operator== (const iter& i, const sentinel& s) |
|
||||||
{ |
|
||||||
return i.i == s.i; |
|
||||||
} |
|
||||||
|
|
||||||
bool operator!= (const iter& i, const sentinel& s) |
|
||||||
{ |
|
||||||
return !(i == s); |
|
||||||
} |
|
||||||
|
|
||||||
struct range |
|
||||||
{ |
|
||||||
iter begin() const |
|
||||||
{ |
|
||||||
return {0}; |
|
||||||
} |
|
||||||
|
|
||||||
sentinel end() const |
|
||||||
{ |
|
||||||
return {5}; |
|
||||||
} |
|
||||||
}; |
|
||||||
|
|
||||||
void f() |
|
||||||
{ |
|
||||||
range r {}; |
|
||||||
|
|
||||||
for (auto i : r) |
|
||||||
{ |
|
||||||
[[maybe_unused]] auto v = i; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
namespace test_lambda_capture_asterisk_this_by_value |
|
||||||
{ |
|
||||||
|
|
||||||
struct t |
|
||||||
{ |
|
||||||
int i; |
|
||||||
int foo() |
|
||||||
{ |
|
||||||
return [*this]() |
|
||||||
{ |
|
||||||
return i; |
|
||||||
}(); |
|
||||||
} |
|
||||||
}; |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
namespace test_enum_class_construction |
|
||||||
{ |
|
||||||
|
|
||||||
enum class byte : unsigned char |
|
||||||
{}; |
|
||||||
|
|
||||||
byte foo {42}; |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
namespace test_constexpr_if |
|
||||||
{ |
|
||||||
|
|
||||||
template <bool cond> |
|
||||||
int f () |
|
||||||
{ |
|
||||||
if constexpr(cond) |
|
||||||
{ |
|
||||||
return 13; |
|
||||||
} |
|
||||||
else |
|
||||||
{ |
|
||||||
return 42; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
namespace test_selection_statement_with_initializer |
|
||||||
{ |
|
||||||
|
|
||||||
int f() |
|
||||||
{ |
|
||||||
return 13; |
|
||||||
} |
|
||||||
|
|
||||||
int f2() |
|
||||||
{ |
|
||||||
if (auto i = f(); i > 0) |
|
||||||
{ |
|
||||||
return 3; |
|
||||||
} |
|
||||||
|
|
||||||
switch (auto i = f(); i + 4) |
|
||||||
{ |
|
||||||
case 17: |
|
||||||
return 2; |
|
||||||
|
|
||||||
default: |
|
||||||
return 1; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
#if !defined(REALLY_CLANG) |
|
||||||
namespace test_template_argument_deduction_for_class_templates |
|
||||||
{ |
|
||||||
|
|
||||||
// TODO: test it with clang++ from git |
|
||||||
|
|
||||||
template <typename T1, typename T2> |
|
||||||
struct pair |
|
||||||
{ |
|
||||||
pair (T1 p1, T2 p2) |
|
||||||
: m1 {p1}, |
|
||||||
m2 {p2} |
|
||||||
{} |
|
||||||
|
|
||||||
T1 m1; |
|
||||||
T2 m2; |
|
||||||
}; |
|
||||||
|
|
||||||
void f() |
|
||||||
{ |
|
||||||
[[maybe_unused]] auto p = pair{13, 42u}; |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
#endif // !defined(REALLY_CLANG) |
|
||||||
|
|
||||||
namespace test_non_type_auto_template_parameters |
|
||||||
{ |
|
||||||
|
|
||||||
template <auto n> |
|
||||||
struct B |
|
||||||
{}; |
|
||||||
|
|
||||||
B<5> b1; |
|
||||||
B<'a'> b2; |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
#if !defined(REALLY_CLANG) |
|
||||||
namespace test_structured_bindings |
|
||||||
{ |
|
||||||
|
|
||||||
// TODO: test it with clang++ from git |
|
||||||
|
|
||||||
int arr[2] = { 1, 2 }; |
|
||||||
std::pair<int, int> pr = { 1, 2 }; |
|
||||||
|
|
||||||
auto f1() -> int(&)[2] |
|
||||||
{ |
|
||||||
return arr; |
|
||||||
} |
|
||||||
|
|
||||||
auto f2() -> std::pair<int, int>& |
|
||||||
{ |
|
||||||
return pr; |
|
||||||
} |
|
||||||
|
|
||||||
struct S |
|
||||||
{ |
|
||||||
int x1 : 2; |
|
||||||
volatile double y1; |
|
||||||
}; |
|
||||||
|
|
||||||
S f3() |
|
||||||
{ |
|
||||||
return {}; |
|
||||||
} |
|
||||||
|
|
||||||
auto [ x1, y1 ] = f1(); |
|
||||||
auto& [ xr1, yr1 ] = f1(); |
|
||||||
auto [ x2, y2 ] = f2(); |
|
||||||
auto& [ xr2, yr2 ] = f2(); |
|
||||||
const auto [ x3, y3 ] = f3(); |
|
||||||
|
|
||||||
} |
|
||||||
#endif // !defined(REALLY_CLANG) |
|
||||||
|
|
||||||
#if !defined(REALLY_CLANG) |
|
||||||
namespace test_exception_spec_type_system |
|
||||||
{ |
|
||||||
|
|
||||||
// TODO: test it with clang++ from git |
|
||||||
|
|
||||||
struct Good {}; |
|
||||||
struct Bad {}; |
|
||||||
|
|
||||||
void g1() noexcept; |
|
||||||
void g2(); |
|
||||||
|
|
||||||
template<typename T> |
|
||||||
Bad |
|
||||||
f(T*, T*); |
|
||||||
|
|
||||||
template<typename T1, typename T2> |
|
||||||
Good |
|
||||||
f(T1*, T2*); |
|
||||||
|
|
||||||
static_assert (std::is_same_v<Good, decltype(f(g1, g2))>); |
|
||||||
|
|
||||||
} |
|
||||||
#endif // !defined(REALLY_CLANG) |
|
||||||
|
|
||||||
namespace test_inline_variables |
|
||||||
{ |
|
||||||
|
|
||||||
template<class T> void f(T) |
|
||||||
{} |
|
||||||
|
|
||||||
template<class T> inline T g(T) |
|
||||||
{ |
|
||||||
return T{}; |
|
||||||
} |
|
||||||
|
|
||||||
template<> inline void f<>(int) |
|
||||||
{} |
|
||||||
|
|
||||||
template<> int g<>(int) |
|
||||||
{ |
|
||||||
return 5; |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
} // namespace cxx17 |
|
||||||
|
|
||||||
#endif // __cplusplus <= 201402L |
|
||||||
|
|
||||||
]]) |
|
@ -1,485 +0,0 @@ |
|||||||
# =========================================================================== |
|
||||||
# https://www.gnu.org/software/autoconf-archive/ax_pthread.html |
|
||||||
# =========================================================================== |
|
||||||
# |
|
||||||
# SYNOPSIS |
|
||||||
# |
|
||||||
# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) |
|
||||||
# |
|
||||||
# DESCRIPTION |
|
||||||
# |
|
||||||
# This macro figures out how to build C programs using POSIX threads. It |
|
||||||
# sets the PTHREAD_LIBS output variable to the threads library and linker |
|
||||||
# flags, and the PTHREAD_CFLAGS output variable to any special C compiler |
|
||||||
# flags that are needed. (The user can also force certain compiler |
|
||||||
# flags/libs to be tested by setting these environment variables.) |
|
||||||
# |
|
||||||
# Also sets PTHREAD_CC to any special C compiler that is needed for |
|
||||||
# multi-threaded programs (defaults to the value of CC otherwise). (This |
|
||||||
# is necessary on AIX to use the special cc_r compiler alias.) |
|
||||||
# |
|
||||||
# NOTE: You are assumed to not only compile your program with these flags, |
|
||||||
# but also to link with them as well. For example, you might link with |
|
||||||
# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS |
|
||||||
# |
|
||||||
# If you are only building threaded programs, you may wish to use these |
|
||||||
# variables in your default LIBS, CFLAGS, and CC: |
|
||||||
# |
|
||||||
# LIBS="$PTHREAD_LIBS $LIBS" |
|
||||||
# CFLAGS="$CFLAGS $PTHREAD_CFLAGS" |
|
||||||
# CC="$PTHREAD_CC" |
|
||||||
# |
|
||||||
# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant |
|
||||||
# has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to |
|
||||||
# that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX). |
|
||||||
# |
|
||||||
# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the |
|
||||||
# PTHREAD_PRIO_INHERIT symbol is defined when compiling with |
|
||||||
# PTHREAD_CFLAGS. |
|
||||||
# |
|
||||||
# ACTION-IF-FOUND is a list of shell commands to run if a threads library |
|
||||||
# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it |
|
||||||
# is not found. If ACTION-IF-FOUND is not specified, the default action |
|
||||||
# will define HAVE_PTHREAD. |
|
||||||
# |
|
||||||
# Please let the authors know if this macro fails on any platform, or if |
|
||||||
# you have any other suggestions or comments. This macro was based on work |
|
||||||
# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help |
|
||||||
# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by |
|
||||||
# Alejandro Forero Cuervo to the autoconf macro repository. We are also |
|
||||||
# grateful for the helpful feedback of numerous users. |
|
||||||
# |
|
||||||
# Updated for Autoconf 2.68 by Daniel Richard G. |
|
||||||
# |
|
||||||
# LICENSE |
|
||||||
# |
|
||||||
# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu> |
|
||||||
# Copyright (c) 2011 Daniel Richard G. <skunk@iSKUNK.ORG> |
|
||||||
# |
|
||||||
# This program is free software: you can redistribute it and/or modify it |
|
||||||
# under the terms of the GNU General Public License as published by the |
|
||||||
# Free Software Foundation, either version 3 of the License, or (at your |
|
||||||
# option) any later version. |
|
||||||
# |
|
||||||
# This program is distributed in the hope that it will be useful, but |
|
||||||
# WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
|
||||||
# Public License for more details. |
|
||||||
# |
|
||||||
# You should have received a copy of the GNU General Public License along |
|
||||||
# with this program. If not, see <https://www.gnu.org/licenses/>. |
|
||||||
# |
|
||||||
# As a special exception, the respective Autoconf Macro's copyright owner |
|
||||||
# gives unlimited permission to copy, distribute and modify the configure |
|
||||||
# scripts that are the output of Autoconf when processing the Macro. You |
|
||||||
# need not follow the terms of the GNU General Public License when using |
|
||||||
# or distributing such scripts, even though portions of the text of the |
|
||||||
# Macro appear in them. The GNU General Public License (GPL) does govern |
|
||||||
# all other use of the material that constitutes the Autoconf Macro. |
|
||||||
# |
|
||||||
# This special exception to the GPL applies to versions of the Autoconf |
|
||||||
# Macro released by the Autoconf Archive. When you make and distribute a |
|
||||||
# modified version of the Autoconf Macro, you may extend this special |
|
||||||
# exception to the GPL to apply to your modified version as well. |
|
||||||
|
|
||||||
#serial 24 |
|
||||||
|
|
||||||
AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) |
|
||||||
AC_DEFUN([AX_PTHREAD], [ |
|
||||||
AC_REQUIRE([AC_CANONICAL_HOST]) |
|
||||||
AC_REQUIRE([AC_PROG_CC]) |
|
||||||
AC_REQUIRE([AC_PROG_SED]) |
|
||||||
AC_LANG_PUSH([C]) |
|
||||||
ax_pthread_ok=no |
|
||||||
|
|
||||||
# We used to check for pthread.h first, but this fails if pthread.h |
|
||||||
# requires special compiler flags (e.g. on Tru64 or Sequent). |
|
||||||
# It gets checked for in the link test anyway. |
|
||||||
|
|
||||||
# First of all, check if the user has set any of the PTHREAD_LIBS, |
|
||||||
# etcetera environment variables, and if threads linking works using |
|
||||||
# them: |
|
||||||
if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then |
|
||||||
ax_pthread_save_CC="$CC" |
|
||||||
ax_pthread_save_CFLAGS="$CFLAGS" |
|
||||||
ax_pthread_save_LIBS="$LIBS" |
|
||||||
AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"]) |
|
||||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS" |
|
||||||
LIBS="$PTHREAD_LIBS $LIBS" |
|
||||||
AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS]) |
|
||||||
AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes]) |
|
||||||
AC_MSG_RESULT([$ax_pthread_ok]) |
|
||||||
if test "x$ax_pthread_ok" = "xno"; then |
|
||||||
PTHREAD_LIBS="" |
|
||||||
PTHREAD_CFLAGS="" |
|
||||||
fi |
|
||||||
CC="$ax_pthread_save_CC" |
|
||||||
CFLAGS="$ax_pthread_save_CFLAGS" |
|
||||||
LIBS="$ax_pthread_save_LIBS" |
|
||||||
fi |
|
||||||
|
|
||||||
# We must check for the threads library under a number of different |
|
||||||
# names; the ordering is very important because some systems |
|
||||||
# (e.g. DEC) have both -lpthread and -lpthreads, where one of the |
|
||||||
# libraries is broken (non-POSIX). |
|
||||||
|
|
||||||
# Create a list of thread flags to try. Items starting with a "-" are |
|
||||||
# C compiler flags, and other items are library names, except for "none" |
|
||||||
# which indicates that we try without any flags at all, and "pthread-config" |
|
||||||
# which is a program returning the flags for the Pth emulation library. |
|
||||||
|
|
||||||
ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" |
|
||||||
|
|
||||||
# The ordering *is* (sometimes) important. Some notes on the |
|
||||||
# individual items follow: |
|
||||||
|
|
||||||
# pthreads: AIX (must check this before -lpthread) |
|
||||||
# none: in case threads are in libc; should be tried before -Kthread and |
|
||||||
# other compiler flags to prevent continual compiler warnings |
|
||||||
# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) |
|
||||||
# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64 |
|
||||||
# (Note: HP C rejects this with "bad form for `-t' option") |
|
||||||
# -pthreads: Solaris/gcc (Note: HP C also rejects) |
|
||||||
# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it |
|
||||||
# doesn't hurt to check since this sometimes defines pthreads and |
|
||||||
# -D_REENTRANT too), HP C (must be checked before -lpthread, which |
|
||||||
# is present but should not be used directly; and before -mthreads, |
|
||||||
# because the compiler interprets this as "-mt" + "-hreads") |
|
||||||
# -mthreads: Mingw32/gcc, Lynx/gcc |
|
||||||
# pthread: Linux, etcetera |
|
||||||
# --thread-safe: KAI C++ |
|
||||||
# pthread-config: use pthread-config program (for GNU Pth library) |
|
||||||
|
|
||||||
case $host_os in |
|
||||||
|
|
||||||
freebsd*) |
|
||||||
|
|
||||||
# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) |
|
||||||
# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) |
|
||||||
|
|
||||||
ax_pthread_flags="-kthread lthread $ax_pthread_flags" |
|
||||||
;; |
|
||||||
|
|
||||||
hpux*) |
|
||||||
|
|
||||||
# From the cc(1) man page: "[-mt] Sets various -D flags to enable |
|
||||||
# multi-threading and also sets -lpthread." |
|
||||||
|
|
||||||
ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags" |
|
||||||
;; |
|
||||||
|
|
||||||
openedition*) |
|
||||||
|
|
||||||
# IBM z/OS requires a feature-test macro to be defined in order to |
|
||||||
# enable POSIX threads at all, so give the user a hint if this is |
|
||||||
# not set. (We don't define these ourselves, as they can affect |
|
||||||
# other portions of the system API in unpredictable ways.) |
|
||||||
|
|
||||||
AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING], |
|
||||||
[ |
|
||||||
# if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS) |
|
||||||
AX_PTHREAD_ZOS_MISSING |
|
||||||
# endif |
|
||||||
], |
|
||||||
[AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])]) |
|
||||||
;; |
|
||||||
|
|
||||||
solaris*) |
|
||||||
|
|
||||||
# On Solaris (at least, for some versions), libc contains stubbed |
|
||||||
# (non-functional) versions of the pthreads routines, so link-based |
|
||||||
# tests will erroneously succeed. (N.B.: The stubs are missing |
|
||||||
# pthread_cleanup_push, or rather a function called by this macro, |
|
||||||
# so we could check for that, but who knows whether they'll stub |
|
||||||
# that too in a future libc.) So we'll check first for the |
|
||||||
# standard Solaris way of linking pthreads (-mt -lpthread). |
|
||||||
|
|
||||||
ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags" |
|
||||||
;; |
|
||||||
esac |
|
||||||
|
|
||||||
# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC) |
|
||||||
|
|
||||||
AS_IF([test "x$GCC" = "xyes"], |
|
||||||
[ax_pthread_flags="-pthread -pthreads $ax_pthread_flags"]) |
|
||||||
|
|
||||||
# The presence of a feature test macro requesting re-entrant function |
|
||||||
# definitions is, on some systems, a strong hint that pthreads support is |
|
||||||
# correctly enabled |
|
||||||
|
|
||||||
case $host_os in |
|
||||||
darwin* | hpux* | linux* | osf* | solaris*) |
|
||||||
ax_pthread_check_macro="_REENTRANT" |
|
||||||
;; |
|
||||||
|
|
||||||
aix*) |
|
||||||
ax_pthread_check_macro="_THREAD_SAFE" |
|
||||||
;; |
|
||||||
|
|
||||||
*) |
|
||||||
ax_pthread_check_macro="--" |
|
||||||
;; |
|
||||||
esac |
|
||||||
AS_IF([test "x$ax_pthread_check_macro" = "x--"], |
|
||||||
[ax_pthread_check_cond=0], |
|
||||||
[ax_pthread_check_cond="!defined($ax_pthread_check_macro)"]) |
|
||||||
|
|
||||||
# Are we compiling with Clang? |
|
||||||
|
|
||||||
AC_CACHE_CHECK([whether $CC is Clang], |
|
||||||
[ax_cv_PTHREAD_CLANG], |
|
||||||
[ax_cv_PTHREAD_CLANG=no |
|
||||||
# Note that Autoconf sets GCC=yes for Clang as well as GCC |
|
||||||
if test "x$GCC" = "xyes"; then |
|
||||||
AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG], |
|
||||||
[/* Note: Clang 2.7 lacks __clang_[a-z]+__ */ |
|
||||||
# if defined(__clang__) && defined(__llvm__) |
|
||||||
AX_PTHREAD_CC_IS_CLANG |
|
||||||
# endif |
|
||||||
], |
|
||||||
[ax_cv_PTHREAD_CLANG=yes]) |
|
||||||
fi |
|
||||||
]) |
|
||||||
ax_pthread_clang="$ax_cv_PTHREAD_CLANG" |
|
||||||
|
|
||||||
ax_pthread_clang_warning=no |
|
||||||
|
|
||||||
# Clang needs special handling, because older versions handle the -pthread |
|
||||||
# option in a rather... idiosyncratic way |
|
||||||
|
|
||||||
if test "x$ax_pthread_clang" = "xyes"; then |
|
||||||
|
|
||||||
# Clang takes -pthread; it has never supported any other flag |
|
||||||
|
|
||||||
# (Note 1: This will need to be revisited if a system that Clang |
|
||||||
# supports has POSIX threads in a separate library. This tends not |
|
||||||
# to be the way of modern systems, but it's conceivable.) |
|
||||||
|
|
||||||
# (Note 2: On some systems, notably Darwin, -pthread is not needed |
|
||||||
# to get POSIX threads support; the API is always present and |
|
||||||
# active. We could reasonably leave PTHREAD_CFLAGS empty. But |
|
||||||
# -pthread does define _REENTRANT, and while the Darwin headers |
|
||||||
# ignore this macro, third-party headers might not.) |
|
||||||
|
|
||||||
PTHREAD_CFLAGS="-pthread" |
|
||||||
PTHREAD_LIBS= |
|
||||||
|
|
||||||
ax_pthread_ok=yes |
|
||||||
|
|
||||||
# However, older versions of Clang make a point of warning the user |
|
||||||
# that, in an invocation where only linking and no compilation is |
|
||||||
# taking place, the -pthread option has no effect ("argument unused |
|
||||||
# during compilation"). They expect -pthread to be passed in only |
|
||||||
# when source code is being compiled. |
|
||||||
# |
|
||||||
# Problem is, this is at odds with the way Automake and most other |
|
||||||
# C build frameworks function, which is that the same flags used in |
|
||||||
# compilation (CFLAGS) are also used in linking. Many systems |
|
||||||
# supported by AX_PTHREAD require exactly this for POSIX threads |
|
||||||
# support, and in fact it is often not straightforward to specify a |
|
||||||
# flag that is used only in the compilation phase and not in |
|
||||||
# linking. Such a scenario is extremely rare in practice. |
|
||||||
# |
|
||||||
# Even though use of the -pthread flag in linking would only print |
|
||||||
# a warning, this can be a nuisance for well-run software projects |
|
||||||
# that build with -Werror. So if the active version of Clang has |
|
||||||
# this misfeature, we search for an option to squash it. |
|
||||||
|
|
||||||
AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread], |
|
||||||
[ax_cv_PTHREAD_CLANG_NO_WARN_FLAG], |
|
||||||
[ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown |
|
||||||
# Create an alternate version of $ac_link that compiles and |
|
||||||
# links in two steps (.c -> .o, .o -> exe) instead of one |
|
||||||
# (.c -> exe), because the warning occurs only in the second |
|
||||||
# step |
|
||||||
ax_pthread_save_ac_link="$ac_link" |
|
||||||
ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g' |
|
||||||
ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"` |
|
||||||
ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)" |
|
||||||
ax_pthread_save_CFLAGS="$CFLAGS" |
|
||||||
for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do |
|
||||||
AS_IF([test "x$ax_pthread_try" = "xunknown"], [break]) |
|
||||||
CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS" |
|
||||||
ac_link="$ax_pthread_save_ac_link" |
|
||||||
AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], |
|
||||||
[ac_link="$ax_pthread_2step_ac_link" |
|
||||||
AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], |
|
||||||
[break]) |
|
||||||
]) |
|
||||||
done |
|
||||||
ac_link="$ax_pthread_save_ac_link" |
|
||||||
CFLAGS="$ax_pthread_save_CFLAGS" |
|
||||||
AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no]) |
|
||||||
ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" |
|
||||||
]) |
|
||||||
|
|
||||||
case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in |
|
||||||
no | unknown) ;; |
|
||||||
*) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;; |
|
||||||
esac |
|
||||||
|
|
||||||
fi # $ax_pthread_clang = yes |
|
||||||
|
|
||||||
if test "x$ax_pthread_ok" = "xno"; then |
|
||||||
for ax_pthread_try_flag in $ax_pthread_flags; do |
|
||||||
|
|
||||||
case $ax_pthread_try_flag in |
|
||||||
none) |
|
||||||
AC_MSG_CHECKING([whether pthreads work without any flags]) |
|
||||||
;; |
|
||||||
|
|
||||||
-mt,pthread) |
|
||||||
AC_MSG_CHECKING([whether pthreads work with -mt -lpthread]) |
|
||||||
PTHREAD_CFLAGS="-mt" |
|
||||||
PTHREAD_LIBS="-lpthread" |
|
||||||
;; |
|
||||||
|
|
||||||
-*) |
|
||||||
AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag]) |
|
||||||
PTHREAD_CFLAGS="$ax_pthread_try_flag" |
|
||||||
;; |
|
||||||
|
|
||||||
pthread-config) |
|
||||||
AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no]) |
|
||||||
AS_IF([test "x$ax_pthread_config" = "xno"], [continue]) |
|
||||||
PTHREAD_CFLAGS="`pthread-config --cflags`" |
|
||||||
PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" |
|
||||||
;; |
|
||||||
|
|
||||||
*) |
|
||||||
AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag]) |
|
||||||
PTHREAD_LIBS="-l$ax_pthread_try_flag" |
|
||||||
;; |
|
||||||
esac |
|
||||||
|
|
||||||
ax_pthread_save_CFLAGS="$CFLAGS" |
|
||||||
ax_pthread_save_LIBS="$LIBS" |
|
||||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS" |
|
||||||
LIBS="$PTHREAD_LIBS $LIBS" |
|
||||||
|
|
||||||
# Check for various functions. We must include pthread.h, |
|
||||||
# since some functions may be macros. (On the Sequent, we |
|
||||||
# need a special flag -Kthread to make this header compile.) |
|
||||||
# We check for pthread_join because it is in -lpthread on IRIX |
|
||||||
# while pthread_create is in libc. We check for pthread_attr_init |
|
||||||
# due to DEC craziness with -lpthreads. We check for |
|
||||||
# pthread_cleanup_push because it is one of the few pthread |
|
||||||
# functions on Solaris that doesn't have a non-functional libc stub. |
|
||||||
# We try pthread_create on general principles. |
|
||||||
|
|
||||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h> |
|
||||||
# if $ax_pthread_check_cond |
|
||||||
# error "$ax_pthread_check_macro must be defined" |
|
||||||
# endif |
|
||||||
static void routine(void *a) { a = 0; } |
|
||||||
static void *start_routine(void *a) { return a; }], |
|
||||||
[pthread_t th; pthread_attr_t attr; |
|
||||||
pthread_create(&th, 0, start_routine, 0); |
|
||||||
pthread_join(th, 0); |
|
||||||
pthread_attr_init(&attr); |
|
||||||
pthread_cleanup_push(routine, 0); |
|
||||||
pthread_cleanup_pop(0) /* ; */])], |
|
||||||
[ax_pthread_ok=yes], |
|
||||||
[]) |
|
||||||
|
|
||||||
CFLAGS="$ax_pthread_save_CFLAGS" |
|
||||||
LIBS="$ax_pthread_save_LIBS" |
|
||||||
|
|
||||||
AC_MSG_RESULT([$ax_pthread_ok]) |
|
||||||
AS_IF([test "x$ax_pthread_ok" = "xyes"], [break]) |
|
||||||
|
|
||||||
PTHREAD_LIBS="" |
|
||||||
PTHREAD_CFLAGS="" |
|
||||||
done |
|
||||||
fi |
|
||||||
|
|
||||||
# Various other checks: |
|
||||||
if test "x$ax_pthread_ok" = "xyes"; then |
|
||||||
ax_pthread_save_CFLAGS="$CFLAGS" |
|
||||||
ax_pthread_save_LIBS="$LIBS" |
|
||||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS" |
|
||||||
LIBS="$PTHREAD_LIBS $LIBS" |
|
||||||
|
|
||||||
# Detect AIX lossage: JOINABLE attribute is called UNDETACHED. |
|
||||||
AC_CACHE_CHECK([for joinable pthread attribute], |
|
||||||
[ax_cv_PTHREAD_JOINABLE_ATTR], |
|
||||||
[ax_cv_PTHREAD_JOINABLE_ATTR=unknown |
|
||||||
for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do |
|
||||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>], |
|
||||||
[int attr = $ax_pthread_attr; return attr /* ; */])], |
|
||||||
[ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break], |
|
||||||
[]) |
|
||||||
done |
|
||||||
]) |
|
||||||
AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \ |
|
||||||
test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \ |
|
||||||
test "x$ax_pthread_joinable_attr_defined" != "xyes"], |
|
||||||
[AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], |
|
||||||
[$ax_cv_PTHREAD_JOINABLE_ATTR], |
|
||||||
[Define to necessary symbol if this constant |
|
||||||
uses a non-standard name on your system.]) |
|
||||||
ax_pthread_joinable_attr_defined=yes |
|
||||||
]) |
|
||||||
|
|
||||||
AC_CACHE_CHECK([whether more special flags are required for pthreads], |
|
||||||
[ax_cv_PTHREAD_SPECIAL_FLAGS], |
|
||||||
[ax_cv_PTHREAD_SPECIAL_FLAGS=no |
|
||||||
case $host_os in |
|
||||||
solaris*) |
|
||||||
ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS" |
|
||||||
;; |
|
||||||
esac |
|
||||||
]) |
|
||||||
AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \ |
|
||||||
test "x$ax_pthread_special_flags_added" != "xyes"], |
|
||||||
[PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS" |
|
||||||
ax_pthread_special_flags_added=yes]) |
|
||||||
|
|
||||||
AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT], |
|
||||||
[ax_cv_PTHREAD_PRIO_INHERIT], |
|
||||||
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]], |
|
||||||
[[int i = PTHREAD_PRIO_INHERIT;]])], |
|
||||||
[ax_cv_PTHREAD_PRIO_INHERIT=yes], |
|
||||||
[ax_cv_PTHREAD_PRIO_INHERIT=no]) |
|
||||||
]) |
|
||||||
AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \ |
|
||||||
test "x$ax_pthread_prio_inherit_defined" != "xyes"], |
|
||||||
[AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.]) |
|
||||||
ax_pthread_prio_inherit_defined=yes |
|
||||||
]) |
|
||||||
|
|
||||||
CFLAGS="$ax_pthread_save_CFLAGS" |
|
||||||
LIBS="$ax_pthread_save_LIBS" |
|
||||||
|
|
||||||
# More AIX lossage: compile with *_r variant |
|
||||||
if test "x$GCC" != "xyes"; then |
|
||||||
case $host_os in |
|
||||||
aix*) |
|
||||||
AS_CASE(["x/$CC"], |
|
||||||
[x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6], |
|
||||||
[#handle absolute path differently from PATH based program lookup |
|
||||||
AS_CASE(["x$CC"], |
|
||||||
[x/*], |
|
||||||
[AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])], |
|
||||||
[AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])]) |
|
||||||
;; |
|
||||||
esac |
|
||||||
fi |
|
||||||
fi |
|
||||||
|
|
||||||
test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" |
|
||||||
|
|
||||||
AC_SUBST([PTHREAD_LIBS]) |
|
||||||
AC_SUBST([PTHREAD_CFLAGS]) |
|
||||||
AC_SUBST([PTHREAD_CC]) |
|
||||||
|
|
||||||
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: |
|
||||||
if test "x$ax_pthread_ok" = "xyes"; then |
|
||||||
ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1]) |
|
||||||
: |
|
||||||
else |
|
||||||
ax_pthread_ok=no |
|
||||||
$2 |
|
||||||
fi |
|
||||||
AC_LANG_POP |
|
||||||
])dnl AX_PTHREAD |
|
@ -1,476 +0,0 @@ |
|||||||
# Process this file with automake to produce Makefile.in
|
|
||||||
|
|
||||||
NULL =
|
|
||||||
SUBDIRS =
|
|
||||||
DIST_SUBDIRS =
|
|
||||||
BUILT_SOURCES =
|
|
||||||
EXTRA_DIST =
|
|
||||||
CLEANFILES =
|
|
||||||
DISTCLEANFILES =
|
|
||||||
MAINTAINERCLEANFILES =
|
|
||||||
DISTCHECK_CONFIGURE_FLAGS = --enable-introspection
|
|
||||||
TESTS =
|
|
||||||
check_PROGRAMS =
|
|
||||||
|
|
||||||
EXTRA_DIST += harfbuzz.cc
|
|
||||||
EXTRA_DIST += meson.build
|
|
||||||
EXTRA_DIST += fix_get_types.py
|
|
||||||
|
|
||||||
# Convenience targets:
|
|
||||||
lib: $(BUILT_SOURCES) libharfbuzz.la |
|
||||||
libs: $(BUILT_SOURCES) $(lib_LTLIBRARIES) |
|
||||||
tiny: |
|
||||||
$(MAKE) $(AM_MAKEFLAGS) CPPFLAGS="-Os -DHB_TINY $(CPPFLAGS)" libs
|
|
||||||
tinyz: |
|
||||||
$(MAKE) $(AM_MAKEFLAGS) CPPFLAGS="-Oz -DHB_TINY $(CPPFLAGS)" libs
|
|
||||||
|
|
||||||
lib_LTLIBRARIES = libharfbuzz.la
|
|
||||||
|
|
||||||
include Makefile.sources |
|
||||||
|
|
||||||
HBCFLAGS =
|
|
||||||
HBLIBS =
|
|
||||||
HBNONPCLIBS =
|
|
||||||
HBDEPS =
|
|
||||||
HBSOURCES = $(HB_BASE_sources)
|
|
||||||
HBSOURCES += $(HB_BASE_RAGEL_GENERATED_sources)
|
|
||||||
HBHEADERS = $(HB_BASE_headers)
|
|
||||||
|
|
||||||
if HAVE_PTHREAD |
|
||||||
HBCFLAGS += $(PTHREAD_CFLAGS)
|
|
||||||
HBNONPCLIBS += $(PTHREAD_LIBS)
|
|
||||||
endif |
|
||||||
|
|
||||||
if HAVE_GLIB |
|
||||||
HBCFLAGS += $(GLIB_CFLAGS)
|
|
||||||
HBLIBS += $(GLIB_LIBS)
|
|
||||||
HBDEPS += $(GLIB_DEPS)
|
|
||||||
HBSOURCES += $(HB_GLIB_sources)
|
|
||||||
HBHEADERS += $(HB_GLIB_headers)
|
|
||||||
endif |
|
||||||
|
|
||||||
if HAVE_FREETYPE |
|
||||||
HBCFLAGS += $(FREETYPE_CFLAGS)
|
|
||||||
HBLIBS += $(FREETYPE_LIBS)
|
|
||||||
HBDEPS += $(FREETYPE_DEPS)
|
|
||||||
HBSOURCES += $(HB_FT_sources)
|
|
||||||
HBHEADERS += $(HB_FT_headers)
|
|
||||||
endif |
|
||||||
|
|
||||||
if HAVE_GRAPHITE2 |
|
||||||
HBCFLAGS += $(GRAPHITE2_CFLAGS)
|
|
||||||
HBLIBS += $(GRAPHITE2_LIBS)
|
|
||||||
HBDEPS += $(GRAPHITE2_DEPS)
|
|
||||||
HBSOURCES += $(HB_GRAPHITE2_sources)
|
|
||||||
HBHEADERS += $(HB_GRAPHITE2_headers)
|
|
||||||
endif |
|
||||||
|
|
||||||
if HAVE_UNISCRIBE |
|
||||||
HBCFLAGS += $(UNISCRIBE_CFLAGS)
|
|
||||||
HBNONPCLIBS += $(UNISCRIBE_LIBS)
|
|
||||||
HBSOURCES += $(HB_UNISCRIBE_sources)
|
|
||||||
HBHEADERS += $(HB_UNISCRIBE_headers)
|
|
||||||
endif |
|
||||||
|
|
||||||
if HAVE_DIRECTWRITE |
|
||||||
HBCFLAGS += $(DIRECTWRITE_CXXFLAGS)
|
|
||||||
HBNONPCLIBS += $(DIRECTWRITE_LIBS)
|
|
||||||
HBSOURCES += $(HB_DIRECTWRITE_sources)
|
|
||||||
HBHEADERS += $(HB_DIRECTWRITE_headers)
|
|
||||||
endif |
|
||||||
|
|
||||||
if HAVE_GDI |
|
||||||
HBCFLAGS += $(GDI_CXXFLAGS)
|
|
||||||
HBNONPCLIBS += $(GDI_LIBS)
|
|
||||||
HBSOURCES += $(HB_GDI_sources)
|
|
||||||
HBHEADERS += $(HB_GDI_headers)
|
|
||||||
endif |
|
||||||
|
|
||||||
if HAVE_CORETEXT |
|
||||||
HBCFLAGS += $(CORETEXT_CFLAGS)
|
|
||||||
HBNONPCLIBS += $(CORETEXT_LIBS)
|
|
||||||
HBSOURCES += $(HB_CORETEXT_sources)
|
|
||||||
HBHEADERS += $(HB_CORETEXT_headers)
|
|
||||||
endif |
|
||||||
|
|
||||||
|
|
||||||
BUILT_SOURCES += \
|
|
||||||
hb-version.h
|
|
||||||
|
|
||||||
$(srcdir)/hb-version.h: hb-version.h.in $(top_srcdir)/configure.ac |
|
||||||
$(AM_V_GEN) $(SED) \
|
|
||||||
-e 's/[@]HB_VERSION_MAJOR@/$(HB_VERSION_MAJOR)/' \
|
|
||||||
-e 's/[@]HB_VERSION_MINOR@/$(HB_VERSION_MINOR)/' \
|
|
||||||
-e 's/[@]HB_VERSION_MICRO@/$(HB_VERSION_MICRO)/' \
|
|
||||||
-e 's/[@]HB_VERSION@/$(HB_VERSION)/' \
|
|
||||||
"$<" > "$@" || ($(RM) "$@"; false)
|
|
||||||
|
|
||||||
# Put the library together
|
|
||||||
|
|
||||||
HBLIBS += $(HBNONPCLIBS)
|
|
||||||
|
|
||||||
if OS_WIN32 |
|
||||||
export_symbols = -export-symbols harfbuzz.def
|
|
||||||
harfbuzz_def_dependency = harfbuzz.def
|
|
||||||
export_symbols_subset = -export-symbols harfbuzz-subset.def
|
|
||||||
harfbuzz_subset_def_dependency = harfbuzz-subset.def
|
|
||||||
export_symbols_icu = -export-symbols harfbuzz-icu.def
|
|
||||||
harfbuzz_icu_def_dependency = harfbuzz-icu.def
|
|
||||||
export_symbols_gobject = -export-symbols harfbuzz-gobject.def
|
|
||||||
harfbuzz_gobject_def_dependency = harfbuzz-gobject.def
|
|
||||||
chosen_linker = $(CXXLINK)
|
|
||||||
else |
|
||||||
if WITH_LIBSTDCXX |
|
||||||
chosen_linker = $(CXXLINK)
|
|
||||||
else |
|
||||||
if HAVE_GCC |
|
||||||
# Use a C linker for GCC, not C++; Don't link to libstdc++
|
|
||||||
chosen_linker = $(LINK)
|
|
||||||
else |
|
||||||
chosen_linker = $(CXXLINK)
|
|
||||||
endif |
|
||||||
endif |
|
||||||
endif |
|
||||||
|
|
||||||
@CODE_COVERAGE_RULES@ |
|
||||||
|
|
||||||
base_link_flags = $(AM_LDFLAGS) -lm -version-info $(HB_LIBTOOL_VERSION_INFO) -no-undefined
|
|
||||||
libharfbuzz_la_LINK = $(chosen_linker) $(libharfbuzz_la_LDFLAGS)
|
|
||||||
libharfbuzz_la_SOURCES = $(HBSOURCES) $(HBHEADERS)
|
|
||||||
libharfbuzz_la_CPPFLAGS = $(HBCFLAGS) $(CODE_COVERAGE_CFLAGS)
|
|
||||||
libharfbuzz_la_LDFLAGS = $(base_link_flags) $(export_symbols) $(CODE_COVERAGE_LDFLAGS)
|
|
||||||
libharfbuzz_la_LIBADD = $(HBLIBS)
|
|
||||||
EXTRA_libharfbuzz_la_DEPENDENCIES = $(harfbuzz_def_dependency)
|
|
||||||
pkginclude_HEADERS = $(HBHEADERS)
|
|
||||||
nodist_pkginclude_HEADERS =
|
|
||||||
pkgconfigdir = $(libdir)/pkgconfig
|
|
||||||
pkgconfig_DATA = harfbuzz.pc
|
|
||||||
EXTRA_DIST += hb-version.h.in harfbuzz.pc.in
|
|
||||||
|
|
||||||
lib_LTLIBRARIES += libharfbuzz-subset.la
|
|
||||||
libharfbuzz_subset_la_LINK = $(chosen_linker) $(libharfbuzz_subset_la_LDFLAGS)
|
|
||||||
libharfbuzz_subset_la_SOURCES = $(HB_SUBSET_sources)
|
|
||||||
libharfbuzz_subset_la_CPPFLAGS = $(HBCFLAGS) $(CODE_COVERAGE_CFLAGS)
|
|
||||||
libharfbuzz_subset_la_LDFLAGS = $(base_link_flags) $(export_symbols_subset) $(CODE_COVERAGE_LDFLAGS)
|
|
||||||
libharfbuzz_subset_la_LIBADD = libharfbuzz.la
|
|
||||||
EXTRA_libharfbuzz_subset_la_DEPENDENCIES = $(harfbuzz_subset_def_dependency)
|
|
||||||
pkginclude_HEADERS += $(HB_SUBSET_headers)
|
|
||||||
pkgconfig_DATA += harfbuzz-subset.pc
|
|
||||||
EXTRA_DIST += harfbuzz-subset.pc.in
|
|
||||||
|
|
||||||
if HAVE_ICU |
|
||||||
if HAVE_ICU_BUILTIN |
|
||||||
HBCFLAGS += $(ICU_CFLAGS)
|
|
||||||
HBLIBS += $(ICU_LIBS)
|
|
||||||
HBSOURCES += $(HB_ICU_sources)
|
|
||||||
HBHEADERS += $(HB_ICU_headers)
|
|
||||||
else |
|
||||||
lib_LTLIBRARIES += libharfbuzz-icu.la
|
|
||||||
libharfbuzz_icu_la_SOURCES = $(HB_ICU_sources)
|
|
||||||
libharfbuzz_icu_la_CPPFLAGS = $(HBCFLAGS) $(ICU_CFLAGS) $(CODE_COVERAGE_CFLAGS)
|
|
||||||
libharfbuzz_icu_la_LDFLAGS = $(base_link_flags) $(export_symbols_icu) $(CODE_COVERAGE_LDFLAGS)
|
|
||||||
libharfbuzz_icu_la_LIBADD = $(ICU_LIBS) libharfbuzz.la
|
|
||||||
EXTRA_libharfbuzz_icu_la_DEPENDENCIES = $(harfbuzz_icu_def_dependency)
|
|
||||||
pkginclude_HEADERS += $(HB_ICU_headers)
|
|
||||||
pkgconfig_DATA += harfbuzz-icu.pc
|
|
||||||
endif |
|
||||||
endif |
|
||||||
EXTRA_DIST += harfbuzz-icu.pc.in
|
|
||||||
|
|
||||||
if HAVE_GOBJECT |
|
||||||
lib_LTLIBRARIES += libharfbuzz-gobject.la
|
|
||||||
libharfbuzz_gobject_la_LINK = $(chosen_linker) $(libharfbuzz_gobject_la_LDFLAGS)
|
|
||||||
libharfbuzz_gobject_la_SOURCES = $(HB_GOBJECT_DIST_sources)
|
|
||||||
nodist_libharfbuzz_gobject_la_SOURCES = $(HB_GOBJECT_NODIST_sources)
|
|
||||||
libharfbuzz_gobject_la_CPPFLAGS = $(HBCFLAGS) $(GOBJECT_CFLAGS) $(CODE_COVERAGE_CFLAGS)
|
|
||||||
libharfbuzz_gobject_la_LDFLAGS = $(base_link_flags) $(CODE_COVERAGE_LDFLAGS)
|
|
||||||
libharfbuzz_gobject_la_LIBADD = $(GOBJECT_LIBS) libharfbuzz.la
|
|
||||||
EXTRA_libharfbuzz_gobject_la_DEPENDENCIES = $(harfbuzz_gobject_def_dependency)
|
|
||||||
pkginclude_HEADERS += $(HB_GOBJECT_DIST_headers)
|
|
||||||
nodist_pkginclude_HEADERS += $(HB_GOBJECT_NODIST_headers)
|
|
||||||
pkgconfig_DATA += harfbuzz-gobject.pc
|
|
||||||
|
|
||||||
BUILT_SOURCES += \
|
|
||||||
$(HB_GOBJECT_ENUM_sources) \
|
|
||||||
$(HB_GOBJECT_ENUM_headers) \
|
|
||||||
$(NULL)
|
|
||||||
DISTCLEANFILES += \
|
|
||||||
$(HB_GOBJECT_ENUM_sources) \
|
|
||||||
$(HB_GOBJECT_ENUM_headers) \
|
|
||||||
$(NULL)
|
|
||||||
hb-gobject-enums.%: hb-gobject-enums.%.tmpl $(HBHEADERS) |
|
||||||
$(AM_V_GEN) PYTHONIOENCODING=UTF-8 $(GLIB_MKENUMS) \
|
|
||||||
--identifier-prefix hb_ --symbol-prefix hb_gobject \
|
|
||||||
--template $^ | \
|
|
||||||
sed 's/_t_get_type/_get_type/g; s/_T (/ (/g' > "$@" \
|
|
||||||
|| ($(RM) "$@"; false)
|
|
||||||
endif |
|
||||||
EXTRA_DIST += \
|
|
||||||
harfbuzz-gobject.pc.in \
|
|
||||||
hb-gobject-enums.cc.tmpl \
|
|
||||||
hb-gobject-enums.h.tmpl \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
|
|
||||||
%.pc: %.pc.in $(top_builddir)/config.status |
|
||||||
$(AM_V_GEN) \
|
|
||||||
$(SED) -e 's@%prefix%@$(prefix)@g' \
|
|
||||||
-e 's@%exec_prefix%@$(exec_prefix)@g' \
|
|
||||||
-e 's@%libdir%@$(libdir)@g' \
|
|
||||||
-e 's@%includedir%@$(includedir)@g' \
|
|
||||||
-e 's@%libs_private%@$(HBNONPCLIBS)@g' \
|
|
||||||
-e 's@%requires_private%@$(HBDEPS)@g' \
|
|
||||||
-e 's@%VERSION%@$(VERSION)@g' \
|
|
||||||
"$<" > "$@" \
|
|
||||||
|| ($(RM) "$@"; false)
|
|
||||||
|
|
||||||
CLEANFILES += $(pkgconfig_DATA)
|
|
||||||
|
|
||||||
|
|
||||||
DEF_FILES = harfbuzz.def harfbuzz-subset.def harfbuzz-icu.def harfbuzz-deprecated-symbols.txt
|
|
||||||
if HAVE_GOBJECT |
|
||||||
DEF_FILES += harfbuzz-gobject.def
|
|
||||||
endif |
|
||||||
check: $(DEF_FILES) # For check-symbols.sh
|
|
||||||
CLEANFILES += $(DEF_FILES)
|
|
||||||
harfbuzz.def: $(HBHEADERS) $(HBNODISTHEADERS) |
|
||||||
$(AM_V_GEN) $(srcdir)/gen-def.py "$@" $^
|
|
||||||
harfbuzz-subset.def: $(HB_SUBSET_headers) |
|
||||||
$(AM_V_GEN) $(srcdir)/gen-def.py "$@" $^
|
|
||||||
harfbuzz-icu.def: $(HB_ICU_headers) |
|
||||||
$(AM_V_GEN) $(srcdir)/gen-def.py "$@" $^
|
|
||||||
harfbuzz-gobject.def: $(HB_GOBJECT_headers) |
|
||||||
$(AM_V_GEN) $(srcdir)/gen-def.py "$@" $^
|
|
||||||
harfbuzz-deprecated-symbols.txt: $(srcdir)/hb-deprecated.h |
|
||||||
$(AM_V_GEN) PLAIN_LIST=1 $(srcdir)/gen-def.py "$@" $^
|
|
||||||
|
|
||||||
|
|
||||||
GENERATORS = \
|
|
||||||
gen-arabic-table.py \
|
|
||||||
gen-def.py \
|
|
||||||
gen-emoji-table.py \
|
|
||||||
gen-harfbuzzcc.py \
|
|
||||||
gen-hb-version.py \
|
|
||||||
gen-indic-table.py \
|
|
||||||
gen-os2-unicode-ranges.py \
|
|
||||||
gen-ragel-artifacts.py \
|
|
||||||
gen-tag-table.py \
|
|
||||||
gen-ucd-table.py \
|
|
||||||
gen-use-table.py \
|
|
||||||
gen-vowel-constraints.py \
|
|
||||||
$(NULL)
|
|
||||||
EXTRA_DIST += $(GENERATORS)
|
|
||||||
|
|
||||||
built-sources: $(BUILT_SOURCES) |
|
||||||
|
|
||||||
.PHONY: built-sources |
|
||||||
|
|
||||||
RAGEL_GENERATED = \
|
|
||||||
$(patsubst %,$(srcdir)/%,$(HB_BASE_RAGEL_GENERATED_sources)) \
|
|
||||||
$(NULL)
|
|
||||||
BUILT_SOURCES += $(RAGEL_GENERATED)
|
|
||||||
EXTRA_DIST += \
|
|
||||||
$(HB_BASE_RAGEL_sources) \
|
|
||||||
$(NULL)
|
|
||||||
# We decided to add ragel-generated files to git...
|
|
||||||
#MAINTAINERCLEANFILES += $(RAGEL_GENERATED)
|
|
||||||
$(srcdir)/%.hh: $(srcdir)/%.rl |
|
||||||
$(AM_V_GEN)(cd $(srcdir) && $(RAGEL) -e -F1 -o "$*.hh" "$*.rl") \
|
|
||||||
|| ($(RM) "$@"; false)
|
|
||||||
|
|
||||||
harfbuzz.cc: Makefile.sources |
|
||||||
$(AM_V_GEN) \
|
|
||||||
for f in \
|
|
||||||
$(HB_BASE_sources) \
|
|
||||||
$(HB_GLIB_sources) \
|
|
||||||
$(HB_FT_sources) \
|
|
||||||
$(HB_GRAPHITE2_sources) \
|
|
||||||
$(HB_UNISCRIBE_sources) \
|
|
||||||
$(HB_GDI_sources) \
|
|
||||||
$(HB_DIRECTWRITE_sources) \
|
|
||||||
$(HB_CORETEXT_sources) \
|
|
||||||
; do echo '#include "'$$f'"'; done | \
|
|
||||||
grep '[.]cc"' > $(srcdir)/harfbuzz.cc \
|
|
||||||
|| ($(RM) $(srcdir)/harfbuzz.cc; false)
|
|
||||||
BUILT_SOURCES += harfbuzz.cc
|
|
||||||
|
|
||||||
noinst_PROGRAMS = \
|
|
||||||
main \
|
|
||||||
test \
|
|
||||||
test-buffer-serialize \
|
|
||||||
test-ot-meta \
|
|
||||||
test-ot-name \
|
|
||||||
test-ot-glyphname \
|
|
||||||
test-gpos-size-params \
|
|
||||||
test-gsub-would-substitute \
|
|
||||||
$(NULL)
|
|
||||||
bin_PROGRAMS =
|
|
||||||
|
|
||||||
main_SOURCES = main.cc
|
|
||||||
main_CPPFLAGS = $(HBCFLAGS)
|
|
||||||
main_LDADD = libharfbuzz.la $(HBLIBS)
|
|
||||||
|
|
||||||
test_SOURCES = test.cc
|
|
||||||
test_CPPFLAGS = $(HBCFLAGS) $(FREETYPE_CFLAGS)
|
|
||||||
test_LDADD = libharfbuzz.la $(HBLIBS) $(FREETYPE_LIBS)
|
|
||||||
|
|
||||||
test_buffer_serialize_SOURCES = test-buffer-serialize.cc
|
|
||||||
test_buffer_serialize_CPPFLAGS = $(HBCFLAGS)
|
|
||||||
test_buffer_serialize_LDADD = libharfbuzz.la $(HBLIBS)
|
|
||||||
|
|
||||||
test_ot_meta_SOURCES = test-ot-meta.cc
|
|
||||||
test_ot_meta_CPPFLAGS = $(HBCFLAGS)
|
|
||||||
test_ot_meta_LDADD = libharfbuzz.la $(HBLIBS)
|
|
||||||
|
|
||||||
test_ot_name_SOURCES = test-ot-name.cc
|
|
||||||
test_ot_name_CPPFLAGS = $(HBCFLAGS)
|
|
||||||
test_ot_name_LDADD = libharfbuzz.la $(HBLIBS)
|
|
||||||
|
|
||||||
test_ot_glyphname_SOURCES = test-ot-glyphname.cc
|
|
||||||
test_ot_glyphname_CPPFLAGS = $(HBCFLAGS)
|
|
||||||
test_ot_glyphname_LDADD = libharfbuzz.la $(HBLIBS)
|
|
||||||
|
|
||||||
test_gpos_size_params_SOURCES = test-gpos-size-params.cc
|
|
||||||
test_gpos_size_params_CPPFLAGS = $(HBCFLAGS)
|
|
||||||
test_gpos_size_params_LDADD = libharfbuzz.la $(HBLIBS)
|
|
||||||
|
|
||||||
test_gsub_would_substitute_SOURCES = test-gsub-would-substitute.cc
|
|
||||||
test_gsub_would_substitute_CPPFLAGS = $(HBCFLAGS) $(FREETYPE_CFLAGS)
|
|
||||||
test_gsub_would_substitute_LDADD = libharfbuzz.la $(HBLIBS) $(FREETYPE_LIBS)
|
|
||||||
|
|
||||||
check_PROGRAMS += \
|
|
||||||
dump-indic-data \
|
|
||||||
dump-khmer-data \
|
|
||||||
dump-myanmar-data \
|
|
||||||
dump-use-data \
|
|
||||||
$(NULL)
|
|
||||||
dump_indic_data_SOURCES = dump-indic-data.cc hb-ot-shape-complex-indic-table.cc
|
|
||||||
dump_indic_data_CPPFLAGS = $(HBCFLAGS)
|
|
||||||
dump_indic_data_LDADD = libharfbuzz.la $(HBLIBS)
|
|
||||||
dump_khmer_data_SOURCES = dump-khmer-data.cc hb-ot-shape-complex-indic-table.cc
|
|
||||||
dump_khmer_data_CPPFLAGS = $(HBCFLAGS)
|
|
||||||
dump_khmer_data_LDADD = libharfbuzz.la $(HBLIBS)
|
|
||||||
dump_myanmar_data_SOURCES = dump-myanmar-data.cc hb-ot-shape-complex-indic-table.cc
|
|
||||||
dump_myanmar_data_CPPFLAGS = $(HBCFLAGS)
|
|
||||||
dump_myanmar_data_LDADD = libharfbuzz.la $(HBLIBS)
|
|
||||||
dump_use_data_SOURCES = dump-use-data.cc hb-ot-shape-complex-use-table.cc
|
|
||||||
dump_use_data_CPPFLAGS = $(HBCFLAGS)
|
|
||||||
dump_use_data_LDADD = libharfbuzz.la $(HBLIBS)
|
|
||||||
|
|
||||||
COMPILED_TESTS = test-algs test-array test-iter test-meta test-number test-ot-tag test-unicode-ranges test-bimap
|
|
||||||
COMPILED_TESTS_CPPFLAGS = $(HBCFLAGS) -DMAIN -UNDEBUG
|
|
||||||
COMPILED_TESTS_LDADD = libharfbuzz.la $(HBLIBS)
|
|
||||||
check_PROGRAMS += $(COMPILED_TESTS)
|
|
||||||
TESTS += $(COMPILED_TESTS)
|
|
||||||
|
|
||||||
test_algs_SOURCES = test-algs.cc hb-static.cc
|
|
||||||
test_algs_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS)
|
|
||||||
test_algs_LDADD = $(COMPILED_TESTS_LDADD)
|
|
||||||
|
|
||||||
test_array_SOURCES = test-array.cc
|
|
||||||
test_array_CPPFLAGS = $(HBCFLAGS)
|
|
||||||
test_array_LDADD = libharfbuzz.la $(HBLIBS)
|
|
||||||
|
|
||||||
test_iter_SOURCES = test-iter.cc hb-static.cc
|
|
||||||
test_iter_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS)
|
|
||||||
test_iter_LDADD = $(COMPILED_TESTS_LDADD)
|
|
||||||
|
|
||||||
test_meta_SOURCES = test-meta.cc hb-static.cc
|
|
||||||
test_meta_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS)
|
|
||||||
test_meta_LDADD = $(COMPILED_TESTS_LDADD)
|
|
||||||
|
|
||||||
test_number_SOURCES = test-number.cc hb-number.cc
|
|
||||||
test_number_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS)
|
|
||||||
test_number_LDADD = $(COMPILED_TESTS_LDADD)
|
|
||||||
|
|
||||||
test_ot_tag_SOURCES = hb-ot-tag.cc
|
|
||||||
test_ot_tag_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS)
|
|
||||||
test_ot_tag_LDADD = $(COMPILED_TESTS_LDADD)
|
|
||||||
|
|
||||||
test_unicode_ranges_SOURCES = test-unicode-ranges.cc
|
|
||||||
test_unicode_ranges_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS)
|
|
||||||
test_unicode_ranges_LDADD = $(COMPILED_TESTS_LDADD)
|
|
||||||
|
|
||||||
test_bimap_SOURCES = test-bimap.cc hb-static.cc
|
|
||||||
test_bimap_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS)
|
|
||||||
test_bimap_LDADD = $(COMPILED_TESTS_LDADD)
|
|
||||||
|
|
||||||
dist_check_SCRIPTS = \
|
|
||||||
check-c-linkage-decls.py \
|
|
||||||
check-externs.py \
|
|
||||||
check-header-guards.py \
|
|
||||||
check-includes.py \
|
|
||||||
check-static-inits.py \
|
|
||||||
check-symbols.py \
|
|
||||||
$(NULL)
|
|
||||||
TESTS += $(dist_check_SCRIPTS)
|
|
||||||
|
|
||||||
if !WITH_LIBSTDCXX |
|
||||||
dist_check_SCRIPTS += \
|
|
||||||
check-libstdc++.py \
|
|
||||||
$(NULL)
|
|
||||||
endif |
|
||||||
|
|
||||||
TESTS_ENVIRONMENT = \
|
|
||||||
srcdir="$(srcdir)" \
|
|
||||||
builddir="$(builddir)" \
|
|
||||||
MAKE="$(MAKE) $(AM_MAKEFLAGS)" \
|
|
||||||
HBSOURCES="$(HBSOURCES)" \
|
|
||||||
HBHEADERS="$(HBHEADERS)" \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
if HAVE_INTROSPECTION |
|
||||||
|
|
||||||
-include $(INTROSPECTION_MAKEFILE) |
|
||||||
INTROSPECTION_GIRS = HarfBuzz-0.0.gir # What does the 0 mean anyway?!
|
|
||||||
INTROSPECTION_SCANNER_ARGS = \
|
|
||||||
-I$(srcdir) \
|
|
||||||
--warn-all --verbose \
|
|
||||||
--namespace=HarfBuzz \
|
|
||||||
--nsversion=0.0 \
|
|
||||||
--symbol-prefix=hb \
|
|
||||||
--symbol-prefix=hb_gobject \
|
|
||||||
--identifier-prefix=hb_ \
|
|
||||||
--pkg-export=harfbuzz-gobject \
|
|
||||||
--c-include=hb-gobject.h
|
|
||||||
INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
|
|
||||||
INTROSPECTION_SCANNER_ENV = CC="$(CC)"
|
|
||||||
|
|
||||||
HarfBuzz-0.0.gir: libharfbuzz.la libharfbuzz-gobject.la |
|
||||||
HarfBuzz_0_0_gir_INCLUDES = GObject-2.0
|
|
||||||
HarfBuzz_0_0_gir_CFLAGS = \
|
|
||||||
$(INCLUDES) \
|
|
||||||
$(HBCFLAGS) \
|
|
||||||
-DHB_H \
|
|
||||||
-DHB_H_IN \
|
|
||||||
-DHB_OT_H \
|
|
||||||
-DHB_OT_H_IN \
|
|
||||||
-DHB_AAT_H \
|
|
||||||
-DHB_AAT_H_IN \
|
|
||||||
-DHB_GOBJECT_H \
|
|
||||||
-DHB_GOBJECT_H_IN \
|
|
||||||
-DHAVE_GOBJECT \
|
|
||||||
-DHB_EXTERN= \
|
|
||||||
$(NULL)
|
|
||||||
HarfBuzz_0_0_gir_LIBS = \
|
|
||||||
libharfbuzz.la \
|
|
||||||
libharfbuzz-gobject.la \
|
|
||||||
$(NULL)
|
|
||||||
HarfBuzz_0_0_gir_FILES = \
|
|
||||||
$(HBHEADERS) \
|
|
||||||
$(HBSOURCES) \
|
|
||||||
$(HB_GOBJECT_sources) \
|
|
||||||
$(HB_GOBJECT_headers) \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
girdir = $(datadir)/gir-1.0
|
|
||||||
gir_DATA = $(INTROSPECTION_GIRS)
|
|
||||||
|
|
||||||
typelibdir = $(libdir)/girepository-1.0
|
|
||||||
typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
|
|
||||||
|
|
||||||
CLEANFILES += $(gir_DATA) $(typelib_DATA)
|
|
||||||
|
|
||||||
endif |
|
||||||
|
|
||||||
-include $(top_srcdir)/git.mk |
|
@ -1,284 +0,0 @@ |
|||||||
# Base and default-included sources and headers
|
|
||||||
|
|
||||||
HB_BASE_sources = \
|
|
||||||
hb-aat-layout-ankr-table.hh \
|
|
||||||
hb-aat-layout-bsln-table.hh \
|
|
||||||
hb-aat-layout-common.hh \
|
|
||||||
hb-aat-layout-feat-table.hh \
|
|
||||||
hb-aat-layout-just-table.hh \
|
|
||||||
hb-aat-layout-kerx-table.hh \
|
|
||||||
hb-aat-layout-morx-table.hh \
|
|
||||||
hb-aat-layout-opbd-table.hh \
|
|
||||||
hb-aat-layout-trak-table.hh \
|
|
||||||
hb-aat-layout.cc \
|
|
||||||
hb-aat-layout.hh \
|
|
||||||
hb-aat-ltag-table.hh \
|
|
||||||
hb-aat-map.cc \
|
|
||||||
hb-aat-map.hh \
|
|
||||||
hb-algs.hh \
|
|
||||||
hb-array.hh \
|
|
||||||
hb-atomic.hh \
|
|
||||||
hb-bimap.hh \
|
|
||||||
hb-blob.cc \
|
|
||||||
hb-blob.hh \
|
|
||||||
hb-buffer-serialize.cc \
|
|
||||||
hb-buffer.cc \
|
|
||||||
hb-buffer.hh \
|
|
||||||
hb-cache.hh \
|
|
||||||
hb-cff-interp-common.hh \
|
|
||||||
hb-cff-interp-cs-common.hh \
|
|
||||||
hb-cff-interp-dict-common.hh \
|
|
||||||
hb-cff1-interp-cs.hh \
|
|
||||||
hb-cff2-interp-cs.hh \
|
|
||||||
hb-common.cc \
|
|
||||||
hb-config.hh \
|
|
||||||
hb-debug.hh \
|
|
||||||
hb-dispatch.hh \
|
|
||||||
hb-draw.cc \
|
|
||||||
hb-draw.hh \
|
|
||||||
hb-face.cc \
|
|
||||||
hb-face.hh \
|
|
||||||
hb-fallback-shape.cc \
|
|
||||||
hb-font.cc \
|
|
||||||
hb-font.hh \
|
|
||||||
hb-iter.hh \
|
|
||||||
hb-kern.hh \
|
|
||||||
hb-machinery.hh \
|
|
||||||
hb-map.cc \
|
|
||||||
hb-map.hh \
|
|
||||||
hb-meta.hh \
|
|
||||||
hb-mutex.hh \
|
|
||||||
hb-null.hh \
|
|
||||||
hb-number.cc \
|
|
||||||
hb-number.hh \
|
|
||||||
hb-object.hh \
|
|
||||||
hb-open-file.hh \
|
|
||||||
hb-open-type.hh \
|
|
||||||
hb-ot-cff-common.hh \
|
|
||||||
hb-ot-cff1-std-str.hh \
|
|
||||||
hb-ot-cff1-table.cc \
|
|
||||||
hb-ot-cff1-table.hh \
|
|
||||||
hb-ot-cff2-table.cc \
|
|
||||||
hb-ot-cff2-table.hh \
|
|
||||||
hb-ot-cmap-table.hh \
|
|
||||||
hb-ot-color-cbdt-table.hh \
|
|
||||||
hb-ot-color-colr-table.hh \
|
|
||||||
hb-ot-color-cpal-table.hh \
|
|
||||||
hb-ot-color-sbix-table.hh \
|
|
||||||
hb-ot-color-svg-table.hh \
|
|
||||||
hb-ot-color.cc \
|
|
||||||
hb-ot-face-table-list.hh \
|
|
||||||
hb-ot-face.cc \
|
|
||||||
hb-ot-face.hh \
|
|
||||||
hb-ot-font.cc \
|
|
||||||
hb-ot-gasp-table.hh \
|
|
||||||
hb-ot-glyf-table.hh \
|
|
||||||
hb-ot-hdmx-table.hh \
|
|
||||||
hb-ot-head-table.hh \
|
|
||||||
hb-ot-hhea-table.hh \
|
|
||||||
hb-ot-hmtx-table.hh \
|
|
||||||
hb-ot-kern-table.hh \
|
|
||||||
hb-ot-layout-base-table.hh \
|
|
||||||
hb-ot-layout-common.hh \
|
|
||||||
hb-ot-layout-gdef-table.hh \
|
|
||||||
hb-ot-layout-gpos-table.hh \
|
|
||||||
hb-ot-layout-gsub-table.hh \
|
|
||||||
hb-ot-layout-gsubgpos.hh \
|
|
||||||
hb-ot-layout-jstf-table.hh \
|
|
||||||
hb-ot-layout.cc \
|
|
||||||
hb-ot-layout.hh \
|
|
||||||
hb-ot-map.cc \
|
|
||||||
hb-ot-map.hh \
|
|
||||||
hb-ot-math-table.hh \
|
|
||||||
hb-ot-math.cc \
|
|
||||||
hb-ot-maxp-table.hh \
|
|
||||||
hb-ot-meta-table.hh \
|
|
||||||
hb-ot-meta.cc \
|
|
||||||
hb-ot-metrics.cc \
|
|
||||||
hb-ot-metrics.hh \
|
|
||||||
hb-ot-name-language-static.hh \
|
|
||||||
hb-ot-name-language.hh \
|
|
||||||
hb-ot-name-table.hh \
|
|
||||||
hb-ot-name.cc \
|
|
||||||
hb-ot-os2-table.hh \
|
|
||||||
hb-ot-os2-unicode-ranges.hh \
|
|
||||||
hb-ot-post-macroman.hh \
|
|
||||||
hb-ot-post-table.hh \
|
|
||||||
hb-ot-shape-complex-arabic-fallback.hh \
|
|
||||||
hb-ot-shape-complex-arabic-table.hh \
|
|
||||||
hb-ot-shape-complex-arabic-win1256.hh \
|
|
||||||
hb-ot-shape-complex-arabic.cc \
|
|
||||||
hb-ot-shape-complex-arabic.hh \
|
|
||||||
hb-ot-shape-complex-default.cc \
|
|
||||||
hb-ot-shape-complex-hangul.cc \
|
|
||||||
hb-ot-shape-complex-hebrew.cc \
|
|
||||||
hb-ot-shape-complex-indic-table.cc \
|
|
||||||
hb-ot-shape-complex-indic.cc \
|
|
||||||
hb-ot-shape-complex-indic.hh \
|
|
||||||
hb-ot-shape-complex-khmer.cc \
|
|
||||||
hb-ot-shape-complex-khmer.hh \
|
|
||||||
hb-ot-shape-complex-myanmar.cc \
|
|
||||||
hb-ot-shape-complex-myanmar.hh \
|
|
||||||
hb-ot-shape-complex-thai.cc \
|
|
||||||
hb-ot-shape-complex-use-table.cc \
|
|
||||||
hb-ot-shape-complex-use.cc \
|
|
||||||
hb-ot-shape-complex-use.hh \
|
|
||||||
hb-ot-shape-complex-vowel-constraints.cc \
|
|
||||||
hb-ot-shape-complex-vowel-constraints.hh \
|
|
||||||
hb-ot-shape-complex.hh \
|
|
||||||
hb-ot-shape-fallback.cc \
|
|
||||||
hb-ot-shape-fallback.hh \
|
|
||||||
hb-ot-shape-normalize.cc \
|
|
||||||
hb-ot-shape-normalize.hh \
|
|
||||||
hb-ot-shape.cc \
|
|
||||||
hb-ot-shape.hh \
|
|
||||||
hb-ot-stat-table.hh \
|
|
||||||
hb-ot-tag-table.hh \
|
|
||||||
hb-ot-tag.cc \
|
|
||||||
hb-ot-var-avar-table.hh \
|
|
||||||
hb-ot-var-fvar-table.hh \
|
|
||||||
hb-ot-var-gvar-table.hh \
|
|
||||||
hb-ot-var-hvar-table.hh \
|
|
||||||
hb-ot-var-mvar-table.hh \
|
|
||||||
hb-ot-var.cc \
|
|
||||||
hb-ot-vorg-table.hh \
|
|
||||||
hb-pool.hh \
|
|
||||||
hb-sanitize.hh \
|
|
||||||
hb-serialize.hh \
|
|
||||||
hb-set-digest.hh \
|
|
||||||
hb-set.cc \
|
|
||||||
hb-set.hh \
|
|
||||||
hb-shape-plan.cc \
|
|
||||||
hb-shape-plan.hh \
|
|
||||||
hb-shape.cc \
|
|
||||||
hb-shaper-impl.hh \
|
|
||||||
hb-shaper-list.hh \
|
|
||||||
hb-shaper.cc \
|
|
||||||
hb-shaper.hh \
|
|
||||||
hb-static.cc \
|
|
||||||
hb-string-array.hh \
|
|
||||||
hb-style.cc \
|
|
||||||
hb-ucd-table.hh \
|
|
||||||
hb-ucd.cc \
|
|
||||||
hb-unicode-emoji-table.hh \
|
|
||||||
hb-unicode.cc \
|
|
||||||
hb-unicode.hh \
|
|
||||||
hb-utf.hh \
|
|
||||||
hb-vector.hh \
|
|
||||||
hb.hh \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
HB_BASE_RAGEL_GENERATED_sources = \
|
|
||||||
hb-buffer-deserialize-json.hh \
|
|
||||||
hb-buffer-deserialize-text.hh \
|
|
||||||
hb-number-parser.hh \
|
|
||||||
hb-ot-shape-complex-indic-machine.hh \
|
|
||||||
hb-ot-shape-complex-khmer-machine.hh \
|
|
||||||
hb-ot-shape-complex-myanmar-machine.hh \
|
|
||||||
hb-ot-shape-complex-use-machine.hh \
|
|
||||||
$(NULL)
|
|
||||||
HB_BASE_RAGEL_sources = \
|
|
||||||
hb-buffer-deserialize-json.rl \
|
|
||||||
hb-buffer-deserialize-text.rl \
|
|
||||||
hb-number-parser.rl \
|
|
||||||
hb-ot-shape-complex-indic-machine.rl \
|
|
||||||
hb-ot-shape-complex-khmer-machine.rl \
|
|
||||||
hb-ot-shape-complex-myanmar-machine.rl \
|
|
||||||
hb-ot-shape-complex-use-machine.rl \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
HB_BASE_headers = \
|
|
||||||
hb-aat-layout.h \
|
|
||||||
hb-aat.h \
|
|
||||||
hb-blob.h \
|
|
||||||
hb-buffer.h \
|
|
||||||
hb-common.h \
|
|
||||||
hb-deprecated.h \
|
|
||||||
hb-draw.h \
|
|
||||||
hb-face.h \
|
|
||||||
hb-font.h \
|
|
||||||
hb-map.h \
|
|
||||||
hb-ot-color.h \
|
|
||||||
hb-ot-deprecated.h \
|
|
||||||
hb-ot-font.h \
|
|
||||||
hb-ot-layout.h \
|
|
||||||
hb-ot-math.h \
|
|
||||||
hb-ot-meta.h \
|
|
||||||
hb-ot-metrics.h \
|
|
||||||
hb-ot-name.h \
|
|
||||||
hb-ot-shape.h \
|
|
||||||
hb-ot-var.h \
|
|
||||||
hb-ot.h \
|
|
||||||
hb-set.h \
|
|
||||||
hb-shape-plan.h \
|
|
||||||
hb-shape.h \
|
|
||||||
hb-style.h \
|
|
||||||
hb-unicode.h \
|
|
||||||
hb-version.h \
|
|
||||||
hb.h \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
# Optional Sources and Headers with external deps
|
|
||||||
|
|
||||||
HB_FT_sources = hb-ft.cc
|
|
||||||
HB_FT_headers = hb-ft.h
|
|
||||||
|
|
||||||
HB_GLIB_sources = hb-glib.cc
|
|
||||||
HB_GLIB_headers = hb-glib.h
|
|
||||||
|
|
||||||
HB_GRAPHITE2_sources = hb-graphite2.cc
|
|
||||||
HB_GRAPHITE2_headers = hb-graphite2.h
|
|
||||||
|
|
||||||
# System-dependent sources and headers
|
|
||||||
|
|
||||||
HB_CORETEXT_sources = hb-coretext.cc
|
|
||||||
HB_CORETEXT_headers = hb-coretext.h
|
|
||||||
|
|
||||||
HB_DIRECTWRITE_sources = hb-directwrite.cc
|
|
||||||
HB_DIRECTWRITE_headers = hb-directwrite.h
|
|
||||||
|
|
||||||
HB_GDI_sources = hb-gdi.cc
|
|
||||||
HB_GDI_headers = hb-gdi.h
|
|
||||||
|
|
||||||
HB_UNISCRIBE_sources = hb-uniscribe.cc
|
|
||||||
HB_UNISCRIBE_headers = hb-uniscribe.h
|
|
||||||
|
|
||||||
# Sources for libharfbuzz-gobject and libharfbuzz-icu
|
|
||||||
HB_ICU_sources = hb-icu.cc
|
|
||||||
HB_ICU_headers = hb-icu.h
|
|
||||||
|
|
||||||
# Sources for libharfbuzz-subset
|
|
||||||
HB_SUBSET_sources = \
|
|
||||||
hb-number.cc \
|
|
||||||
hb-number.hh \
|
|
||||||
hb-ot-cff1-table.cc \
|
|
||||||
hb-ot-cff2-table.cc \
|
|
||||||
hb-static.cc \
|
|
||||||
hb-subset-cff-common.cc \
|
|
||||||
hb-subset-cff-common.hh \
|
|
||||||
hb-subset-cff1.cc \
|
|
||||||
hb-subset-cff1.hh \
|
|
||||||
hb-subset-cff2.cc \
|
|
||||||
hb-subset-cff2.hh \
|
|
||||||
hb-subset-input.cc \
|
|
||||||
hb-subset-input.hh \
|
|
||||||
hb-subset-plan.cc \
|
|
||||||
hb-subset-plan.hh \
|
|
||||||
hb-subset-plan.hh \
|
|
||||||
hb-subset.cc \
|
|
||||||
hb-subset.hh \
|
|
||||||
hb-subset.hh \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
HB_SUBSET_headers = \
|
|
||||||
hb-subset.h \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
HB_GOBJECT_DIST_sources = hb-gobject-structs.cc
|
|
||||||
HB_GOBJECT_DIST_headers = hb-gobject.h hb-gobject-structs.h
|
|
||||||
HB_GOBJECT_ENUM_sources = hb-gobject-enums.cc
|
|
||||||
HB_GOBJECT_ENUM_headers = hb-gobject-enums.h
|
|
||||||
HB_GOBJECT_NODIST_sources = $(HB_GOBJECT_ENUM_sources)
|
|
||||||
HB_GOBJECT_NODIST_headers = $(HB_GOBJECT_ENUM_headers)
|
|
||||||
HB_GOBJECT_sources = $(HB_GOBJECT_DIST_sources) $(HB_GOBJECT_NODIST_sources)
|
|
||||||
HB_GOBJECT_headers = $(HB_GOBJECT_DIST_headers) $(HB_GOBJECT_NODIST_headers)
|
|
@ -1,15 +0,0 @@ |
|||||||
# Process this file with automake to produce Makefile.in
|
|
||||||
|
|
||||||
NULL =
|
|
||||||
EXTRA_DIST =
|
|
||||||
SUBDIRS = api shaping fuzzing subset
|
|
||||||
|
|
||||||
EXTRA_DIST += \
|
|
||||||
meson.build \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
# Convenience targets:
|
|
||||||
lib: |
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src lib
|
|
||||||
|
|
||||||
-include $(top_srcdir)/git.mk |
|
@ -1,222 +0,0 @@ |
|||||||
# Process this file with automake to produce Makefile.in
|
|
||||||
|
|
||||||
NULL =
|
|
||||||
EXTRA_DIST =
|
|
||||||
CLEANFILES =
|
|
||||||
DISTCLEANFILES =
|
|
||||||
MAINTAINERCLEANFILES =
|
|
||||||
|
|
||||||
# Convenience targets:
|
|
||||||
lib: |
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src lib
|
|
||||||
libs: |
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src libs
|
|
||||||
|
|
||||||
EXTRA_DIST += meson.build
|
|
||||||
|
|
||||||
EXTRA_DIST += fonts
|
|
||||||
|
|
||||||
LINK = $(CXXLINK)
|
|
||||||
|
|
||||||
if HAVE_GLIB |
|
||||||
AM_CPPFLAGS = -DSRCDIR="\"$(srcdir)\"" -I$(top_srcdir)/src/ -I$(top_builddir)/src/ $(GLIB_CFLAGS)
|
|
||||||
LDADD = $(top_builddir)/src/libharfbuzz.la $(GLIB_LIBS)
|
|
||||||
|
|
||||||
EXTRA_DIST += hb-test.h hb-subset-test.h
|
|
||||||
|
|
||||||
check_PROGRAMS = $(TEST_PROGS)
|
|
||||||
noinst_PROGRAMS = $(TEST_PROGS)
|
|
||||||
|
|
||||||
TEST_PROGS = \
|
|
||||||
test-aat-layout \
|
|
||||||
test-baseline \
|
|
||||||
test-blob \
|
|
||||||
test-buffer \
|
|
||||||
test-c \
|
|
||||||
test-collect-unicodes \
|
|
||||||
test-cplusplus \
|
|
||||||
test-common \
|
|
||||||
test-draw \
|
|
||||||
test-font \
|
|
||||||
test-map \
|
|
||||||
test-object \
|
|
||||||
test-ot-alternates \
|
|
||||||
test-ot-color \
|
|
||||||
test-ot-face \
|
|
||||||
test-ot-glyphname \
|
|
||||||
test-ot-ligature-carets \
|
|
||||||
test-ot-name \
|
|
||||||
test-ot-meta \
|
|
||||||
test-ot-metrics \
|
|
||||||
test-ot-tag \
|
|
||||||
test-ot-extents-cff \
|
|
||||||
test-ot-metrics-tt-var \
|
|
||||||
test-set \
|
|
||||||
test-shape \
|
|
||||||
test-style \
|
|
||||||
test-subset \
|
|
||||||
test-subset-cmap \
|
|
||||||
test-subset-drop-tables \
|
|
||||||
test-subset-glyf \
|
|
||||||
test-subset-hdmx \
|
|
||||||
test-subset-hmtx \
|
|
||||||
test-subset-nameids \
|
|
||||||
test-subset-os2 \
|
|
||||||
test-subset-post \
|
|
||||||
test-subset-vmtx \
|
|
||||||
test-subset-cff1 \
|
|
||||||
test-subset-cff2 \
|
|
||||||
test-subset-gvar \
|
|
||||||
test-subset-hvar \
|
|
||||||
test-subset-vvar \
|
|
||||||
test-subset-sbix \
|
|
||||||
test-subset-gpos \
|
|
||||||
test-subset-colr \
|
|
||||||
test-subset-cbdt \
|
|
||||||
test-unicode \
|
|
||||||
test-var-coords \
|
|
||||||
test-version \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
test_subset_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
|
|
||||||
test_subset_cmap_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
|
|
||||||
test_subset_drop_tables_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
|
|
||||||
test_subset_glyf_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
|
|
||||||
test_subset_hdmx_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
|
|
||||||
test_subset_hmtx_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
|
|
||||||
test_subset_os2_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
|
|
||||||
test_subset_post_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
|
|
||||||
test_subset_vmtx_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
|
|
||||||
test_subset_cff1_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
|
|
||||||
test_subset_cff2_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
|
|
||||||
test_subset_gvar_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
|
|
||||||
test_subset_hvar_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
|
|
||||||
test_subset_vvar_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
|
|
||||||
test_subset_sbix_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
|
|
||||||
test_subset_cbdt_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
|
|
||||||
test_subset_nameids_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
|
|
||||||
test_subset_gpos_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
|
|
||||||
test_subset_colr_LDADD = $(LDADD) $(top_builddir)/src/libharfbuzz-subset.la
|
|
||||||
|
|
||||||
test_unicode_CPPFLAGS = \
|
|
||||||
$(AM_CPPFLAGS) \
|
|
||||||
$(GLIB_CFLAGS) \
|
|
||||||
$(NULL)
|
|
||||||
test_unicode_LDADD = $(LDADD)
|
|
||||||
if HAVE_ICU |
|
||||||
test_unicode_CPPFLAGS += $(ICU_CFLAGS)
|
|
||||||
test_unicode_LDADD += $(top_builddir)/src/libharfbuzz-icu.la $(ICU_LIBS)
|
|
||||||
endif |
|
||||||
|
|
||||||
if HAVE_PTHREAD |
|
||||||
if HAVE_FREETYPE |
|
||||||
TEST_PROGS += test-multithread
|
|
||||||
test_multithread_CFLAGS = $(CFLAGS) $(PTHREAD_CFLAGS) $(FREETYPE_CFLAGS)
|
|
||||||
test_multithread_LDADD = $(LDADD) $(PTHREAD_LIBS) $(FREETYPE_LIBS)
|
|
||||||
# The auto-generated link rule somehow includes CFLAGS as well. Without
|
|
||||||
# it, pthread link fails, because, who knows why, $PTHREAD_LIBS is empty.
|
|
||||||
test_multithread_LINK = $(LINK) $(PTHREAD_CFLAGS)
|
|
||||||
endif |
|
||||||
endif |
|
||||||
|
|
||||||
if HAVE_FREETYPE |
|
||||||
TEST_PROGS += \
|
|
||||||
test-ot-math \
|
|
||||||
$(NULL)
|
|
||||||
test_ot_math_LDADD = $(LDADD) $(FREETYPE_LIBS)
|
|
||||||
test_ot_math_CPPFLAGS = $(AM_CPPFLAGS) $(FREETYPE_CFLAGS)
|
|
||||||
endif # HAVE_FREETYPE
|
|
||||||
|
|
||||||
# Tests for header compilation
|
|
||||||
test_cplusplus_SOURCES = test-cplusplus.cc
|
|
||||||
test_c_CPPFLAGS = $(AM_CPPFLAGS)
|
|
||||||
test_cplusplus_CPPFLAGS = $(AM_CPPFLAGS)
|
|
||||||
if HAVE_ICU |
|
||||||
test_c_CPPFLAGS += $(ICU_CFLAGS)
|
|
||||||
test_cplusplus_CPPFLAGS += $(ICU_CFLAGS)
|
|
||||||
endif |
|
||||||
if HAVE_FREETYPE |
|
||||||
test_c_CPPFLAGS += $(FREETYPE_CFLAGS)
|
|
||||||
test_cplusplus_CPPFLAGS += $(FREETYPE_CFLAGS)
|
|
||||||
endif |
|
||||||
|
|
||||||
# Default test running environment
|
|
||||||
TESTS = $(TEST_PROGS)
|
|
||||||
TESTS_ENVIRONMENT = \
|
|
||||||
MALLOC_CHECK_=2 \
|
|
||||||
MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) \
|
|
||||||
G_DEBUG=gc-friendly \
|
|
||||||
G_SLICE=always-malloc \
|
|
||||||
srcdir=$(srcdir) \
|
|
||||||
G_TEST_SRCDIR=$(abs_srcdir) \
|
|
||||||
G_TEST_BUILDDIR=$(abs_builddir) \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
|
|
||||||
# check-tool: Run tests under $(TOOL)
|
|
||||||
check-tool: |
|
||||||
$(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) check \
|
|
||||||
TESTS_ENVIRONMENT='$(TESTS_ENVIRONMENT) $(top_builddir)/libtool --mode=execute \
|
|
||||||
env $(TOOL)'
|
|
||||||
# check-tool-raw: Run tests under $(TOOL), but don't run under libtool
|
|
||||||
check-tool-raw: |
|
||||||
$(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) check \
|
|
||||||
TESTS_ENVIRONMENT='$(TESTS_ENVIRONMENT) \
|
|
||||||
env $(TOOL)'
|
|
||||||
|
|
||||||
# check-gtester: Run tests under gtester
|
|
||||||
GTESTER = gtester
|
|
||||||
check-gtester: |
|
||||||
$(AM_V_at)$(MAKE) $(AM_MAKEFLGS) check-tool-raw TOOL="$(GTESTER) --verbose --keep-going"
|
|
||||||
|
|
||||||
|
|
||||||
# Check tests under valgrind. Saves log to log-valgrind.txt
|
|
||||||
VALGRIND_FLAGS = \
|
|
||||||
--tool=memcheck \
|
|
||||||
--track-origins=yes \
|
|
||||||
--leak-check=yes \
|
|
||||||
$(EXTRA_VALGRIND_FLAGS)
|
|
||||||
# Can't do for now: --show-reachable=yes
|
|
||||||
CLEANFILES += log-valgrind.txt
|
|
||||||
valgrind_verbose = $(valgrind_verbose_@AM_V@)
|
|
||||||
valgrind_verbose_ = $(valgrind_verbose_@AM_DEFAULT_V@)
|
|
||||||
valgrind_verbose_0 = | \
|
|
||||||
grep '\(^[^=]\|ERROR SUMMARY\|definitely lost\|indirectly lost\)' | grep -v ': 0'
|
|
||||||
# TODO: The following check does not fail if valgrind finds error. It should.
|
|
||||||
check-valgrind: |
|
||||||
$(AM_V_at)$(MAKE) $(AM_MAKEFLGS) check-tool TOOL="valgrind $(VALGRIND_FLAGS)" \
|
|
||||||
2>&1 | tee log-valgrind.txt $(valgrind_verbose)
|
|
||||||
|
|
||||||
|
|
||||||
# check-symbols: Finds untested API symbols
|
|
||||||
symbols-tested.txt: $(TEST_PROGS) |
|
||||||
$(AM_V_GEN)$(top_builddir)/libtool --mode=execute nm $^ \
|
|
||||||
| grep ' U hb_' | sed 's/.* U hb_/hb_/' \
|
|
||||||
| sort | uniq > $@.tmp && mv $@.tmp $@
|
|
||||||
symbols-tested-or-deprecated.txt: symbols-tested.txt $(top_builddir)/src/harfbuzz-deprecated-symbols.txt |
|
||||||
$(AM_V_GEN)cat $^ | sort | uniq > $@.tmp; mv $@.tmp $@
|
|
||||||
symbols-exported.txt: $(top_builddir)/src/.libs/libharfbuzz.so |
|
||||||
$(AM_V_GEN)$(top_builddir)/libtool --mode=execute nm $^ \
|
|
||||||
| grep ' T ' | sed 's/.* T //' | grep -v '^\(_init\|_fini\)$$' \
|
|
||||||
| sort | uniq > $@.tmp && mv $@.tmp $@
|
|
||||||
symbols-untested.txt: symbols-tested-or-deprecated.txt symbols-exported.txt |
|
||||||
$(AM_V_GEN)diff $^ > $@.tmp; mv $@.tmp $@
|
|
||||||
CLEANFILES += symbols-tested.txt \
|
|
||||||
symbols-exported.txt \
|
|
||||||
symbols-untested.txt \
|
|
||||||
symbols-tested-or-deprecated.txt
|
|
||||||
check-symbols: symbols-untested.txt |
|
||||||
@! cat $^ | grep .
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
else # !HAVE_GLIB
|
|
||||||
check-am: err-glib |
|
||||||
err-glib: |
|
||||||
@echo "You need to have glib support enabled to run the tests"
|
|
||||||
@exit 77
|
|
||||||
endif # HAVE_GLIB
|
|
||||||
|
|
||||||
.PHONY: check-symbols check-tool check-valgrind |
|
||||||
|
|
||||||
-include $(top_srcdir)/git.mk |
|
@ -1,86 +0,0 @@ |
|||||||
# Process this file with automake to produce Makefile.in
|
|
||||||
|
|
||||||
NULL =
|
|
||||||
EXTRA_DIST =
|
|
||||||
CLEANFILES =
|
|
||||||
DISTCLEANFILES =
|
|
||||||
MAINTAINERCLEANFILES =
|
|
||||||
|
|
||||||
# Convenience targets:
|
|
||||||
lib: |
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src lib
|
|
||||||
libs: |
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src libs
|
|
||||||
|
|
||||||
$(top_builddir)/src/libharfbuzz.la: lib |
|
||||||
$(top_builddir)/src/libharfbuzz-subset.la: libs |
|
||||||
|
|
||||||
EXTRA_DIST += \
|
|
||||||
README \
|
|
||||||
run-shape-fuzzer-tests.py \
|
|
||||||
run-subset-fuzzer-tests.py \
|
|
||||||
run-draw-fuzzer-tests.py \
|
|
||||||
meson.build \
|
|
||||||
fonts \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
check_PROGRAMS = \
|
|
||||||
hb-shape-fuzzer \
|
|
||||||
hb-subset-fuzzer \
|
|
||||||
hb-set-fuzzer \
|
|
||||||
hb-draw-fuzzer \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
AM_CPPFLAGS = \
|
|
||||||
-DHB_DISABLE_DEPRECATED \
|
|
||||||
-I$(top_srcdir)/src/ \
|
|
||||||
-I$(top_builddir)/src/ \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
hb_shape_fuzzer_SOURCES = \
|
|
||||||
hb-fuzzer.hh \
|
|
||||||
hb-shape-fuzzer.cc \
|
|
||||||
main.cc \
|
|
||||||
$(NULL)
|
|
||||||
hb_shape_fuzzer_LDADD = $(top_builddir)/src/libharfbuzz.la
|
|
||||||
hb_shape_fuzzer_CPPFLAGS = $(AM_CPPFLAGS)
|
|
||||||
hb_shape_fuzzer_DEPENDENCIES = $(top_builddir)/src/libharfbuzz.la
|
|
||||||
|
|
||||||
hb_subset_fuzzer_SOURCES = \
|
|
||||||
hb-fuzzer.hh \
|
|
||||||
hb-subset-fuzzer.cc \
|
|
||||||
main.cc \
|
|
||||||
$(NULL)
|
|
||||||
hb_subset_fuzzer_LDADD = \
|
|
||||||
$(top_builddir)/src/libharfbuzz.la \
|
|
||||||
$(top_builddir)/src/libharfbuzz-subset.la
|
|
||||||
hb_subset_fuzzer_CPPFLAGS = $(AM_CPPFLAGS)
|
|
||||||
hb_subset_fuzzer_DEPENDENCIES = $(top_builddir)/src/libharfbuzz-subset.la
|
|
||||||
|
|
||||||
hb_set_fuzzer_SOURCES = \
|
|
||||||
hb-fuzzer.hh \
|
|
||||||
hb-set-fuzzer.cc \
|
|
||||||
main.cc \
|
|
||||||
$(NULL)
|
|
||||||
hb_set_fuzzer_LDADD = $(top_builddir)/src/libharfbuzz.la
|
|
||||||
hb_set_fuzzer_CPPFLAGS = $(AM_CPPFLAGS)
|
|
||||||
hb_set_fuzzer_DEPENDENCIES = $(top_builddir)/src/libharfbuzz.la
|
|
||||||
|
|
||||||
hb_draw_fuzzer_SOURCES = \
|
|
||||||
hb-fuzzer.hh \
|
|
||||||
hb-draw-fuzzer.cc \
|
|
||||||
main.cc \
|
|
||||||
$(NULL)
|
|
||||||
hb_draw_fuzzer_LDADD = $(top_builddir)/src/libharfbuzz.la
|
|
||||||
hb_draw_fuzzer_CPPFLAGS = $(AM_CPPFLAGS)
|
|
||||||
hb_draw_fuzzer_DEPENDENCIES = $(top_builddir)/src/libharfbuzz.la
|
|
||||||
|
|
||||||
|
|
||||||
check: |
|
||||||
EXEEXT="$(EXEEXT)" srcdir="$(srcdir)" builddir="$(builddir)" LIBTOOL="$(LIBTOOL)" $(srcdir)/run-shape-fuzzer-tests.py
|
|
||||||
EXEEXT="$(EXEEXT)" srcdir="$(srcdir)" builddir="$(builddir)" LIBTOOL="$(LIBTOOL)" $(srcdir)/run-subset-fuzzer-tests.py
|
|
||||||
EXEEXT="$(EXEEXT)" srcdir="$(srcdir)" builddir="$(builddir)" LIBTOOL="$(LIBTOOL)" $(srcdir)/run-draw-fuzzer-tests.py
|
|
||||||
check-valgrind: |
|
||||||
$(AM_V_at)RUN_VALGRIND=1 $(MAKE) $(AM_MAKEFLGS) check
|
|
||||||
|
|
||||||
-include $(top_srcdir)/git.mk |
|
@ -1,39 +0,0 @@ |
|||||||
# Process this file with automake to produce Makefile.in
|
|
||||||
|
|
||||||
NULL =
|
|
||||||
EXTRA_DIST =
|
|
||||||
CLEANFILES =
|
|
||||||
DISTCLEANFILES =
|
|
||||||
MAINTAINERCLEANFILES =
|
|
||||||
SUBDIRS = data
|
|
||||||
|
|
||||||
# Convenience targets:
|
|
||||||
lib: |
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src lib
|
|
||||||
libs: |
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src libs
|
|
||||||
|
|
||||||
EXTRA_DIST += \
|
|
||||||
README.md \
|
|
||||||
meson.build \
|
|
||||||
hb-diff \
|
|
||||||
hb-diff-colorize \
|
|
||||||
hb-diff-filter-failures \
|
|
||||||
hb-diff-stat \
|
|
||||||
hb-unicode-decode \
|
|
||||||
hb-unicode-encode \
|
|
||||||
hb-unicode-prettyname \
|
|
||||||
record-test.sh \
|
|
||||||
run-tests.py \
|
|
||||||
texts/in-house \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
# TODO Figure out Python stuff
|
|
||||||
EXTRA_DIST += \
|
|
||||||
hb_test_tools.py \
|
|
||||||
$(NULL)
|
|
||||||
CLEANFILES += \
|
|
||||||
hb_test_tools.py[co] \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
-include $(top_srcdir)/git.mk |
|
@ -1,14 +0,0 @@ |
|||||||
# Process this file with automake to produce Makefile.in
|
|
||||||
|
|
||||||
NULL =
|
|
||||||
SUBDIRS = \
|
|
||||||
in-house \
|
|
||||||
text-rendering-tests \
|
|
||||||
aots \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
# Convenience targets:
|
|
||||||
lib: |
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src lib
|
|
||||||
|
|
||||||
-include $(top_srcdir)/git.mk |
|
@ -1,27 +0,0 @@ |
|||||||
# Process this file with automake to produce Makefile.in
|
|
||||||
|
|
||||||
NULL =
|
|
||||||
|
|
||||||
# Convenience targets:
|
|
||||||
lib: |
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src lib
|
|
||||||
|
|
||||||
EXTRA_DIST = \
|
|
||||||
COPYING \
|
|
||||||
fonts \
|
|
||||||
update.py \
|
|
||||||
meson.build \
|
|
||||||
$(TESTS) \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
TEST_EXTENSIONS = .tests
|
|
||||||
if HAVE_FREETYPE |
|
||||||
TESTS_ENVIRONMENT = HAVE_FREETYPE=1
|
|
||||||
else |
|
||||||
TESTS_ENVIRONMENT = HAVE_FREETYPE=0
|
|
||||||
endif |
|
||||||
TESTS_LOG_COMPILER = $(srcdir)/../../run-tests.py $(top_builddir)/util/hb-shape$(EXEEXT)
|
|
||||||
|
|
||||||
include Makefile.sources |
|
||||||
|
|
||||||
-include $(top_srcdir)/git.mk |
|
@ -1,126 +0,0 @@ |
|||||||
TESTS = \
|
|
||||||
tests/classdef1_empty.tests \
|
|
||||||
tests/classdef1_multiple.tests \
|
|
||||||
tests/classdef1_single.tests \
|
|
||||||
tests/classdef1.tests \
|
|
||||||
tests/classdef2_empty.tests \
|
|
||||||
tests/classdef2_multiple.tests \
|
|
||||||
tests/classdef2_single.tests \
|
|
||||||
tests/classdef2.tests \
|
|
||||||
tests/gpos_chaining1_boundary.tests \
|
|
||||||
tests/gpos_chaining1_lookupflag.tests \
|
|
||||||
tests/gpos_chaining1_multiple_subrules.tests \
|
|
||||||
tests/gpos_chaining1_next_glyph.tests \
|
|
||||||
tests/gpos_chaining1_simple.tests \
|
|
||||||
tests/gpos_chaining1_successive.tests \
|
|
||||||
tests/gpos_chaining2_boundary.tests \
|
|
||||||
tests/gpos_chaining2_lookupflag.tests \
|
|
||||||
tests/gpos_chaining2_multiple_subrules.tests \
|
|
||||||
tests/gpos_chaining2_next_glyph.tests \
|
|
||||||
tests/gpos_chaining2_simple.tests \
|
|
||||||
tests/gpos_chaining2_successive.tests \
|
|
||||||
tests/gpos_chaining3_boundary.tests \
|
|
||||||
tests/gpos_chaining3_lookupflag.tests \
|
|
||||||
tests/gpos_chaining3_next_glyph.tests \
|
|
||||||
tests/gpos_chaining3_simple.tests \
|
|
||||||
tests/gpos_chaining3_successive.tests \
|
|
||||||
tests/gpos_context1_boundary.tests \
|
|
||||||
tests/gpos_context1_expansion.tests \
|
|
||||||
tests/gpos_context1_lookupflag.tests \
|
|
||||||
tests/gpos_context1_multiple_subrules.tests \
|
|
||||||
tests/gpos_context1_next_glyph.tests \
|
|
||||||
tests/gpos_context1_simple.tests \
|
|
||||||
tests/gpos_context1_successive.tests \
|
|
||||||
tests/gpos_context2_boundary.tests \
|
|
||||||
tests/gpos_context2_classes.tests \
|
|
||||||
tests/gpos_context2_expansion.tests \
|
|
||||||
tests/gpos_context2_lookupflag.tests \
|
|
||||||
tests/gpos_context2_multiple_subrules.tests \
|
|
||||||
tests/gpos_context2_next_glyph.tests \
|
|
||||||
tests/gpos_context2_simple.tests \
|
|
||||||
tests/gpos_context2_successive.tests \
|
|
||||||
tests/gpos_context3_boundary.tests \
|
|
||||||
tests/gpos_context3_lookupflag.tests \
|
|
||||||
tests/gpos_context3_next_glyph.tests \
|
|
||||||
tests/gpos_context3_simple.tests \
|
|
||||||
tests/gpos_context3_successive.tests \
|
|
||||||
tests/gpos1_1_lookupflag.tests \
|
|
||||||
tests/gpos1_1_simple.tests \
|
|
||||||
tests/gpos1_2_lookupflag.tests \
|
|
||||||
tests/gpos1_2.tests \
|
|
||||||
tests/gpos2_1_lookupflag.tests \
|
|
||||||
tests/gpos2_1_next_glyph.tests \
|
|
||||||
tests/gpos2_1_simple.tests \
|
|
||||||
tests/gpos2_1.tests \
|
|
||||||
tests/gpos2_2.tests \
|
|
||||||
tests/gpos3_lookupflag.tests \
|
|
||||||
tests/gpos3.tests \
|
|
||||||
tests/gpos4_lookupflag.tests \
|
|
||||||
tests/gpos4_multiple_anchors.tests \
|
|
||||||
tests/gpos4_simple.tests \
|
|
||||||
tests/gpos5.tests \
|
|
||||||
tests/gpos6.tests \
|
|
||||||
tests/gpos7_1.tests \
|
|
||||||
tests/gpos9.tests \
|
|
||||||
tests/gsub_chaining1_boundary.tests \
|
|
||||||
tests/gsub_chaining1_lookupflag.tests \
|
|
||||||
tests/gsub_chaining1_multiple_subrules.tests \
|
|
||||||
tests/gsub_chaining1_next_glyph.tests \
|
|
||||||
tests/gsub_chaining1_simple.tests \
|
|
||||||
tests/gsub_chaining1_successive.tests \
|
|
||||||
tests/gsub_chaining2_boundary.tests \
|
|
||||||
tests/gsub_chaining2_lookupflag.tests \
|
|
||||||
tests/gsub_chaining2_multiple_subrules.tests \
|
|
||||||
tests/gsub_chaining2_next_glyph.tests \
|
|
||||||
tests/gsub_chaining2_simple.tests \
|
|
||||||
tests/gsub_chaining2_successive.tests \
|
|
||||||
tests/gsub_chaining3_boundary.tests \
|
|
||||||
tests/gsub_chaining3_lookupflag.tests \
|
|
||||||
tests/gsub_chaining3_next_glyph.tests \
|
|
||||||
tests/gsub_chaining3_simple.tests \
|
|
||||||
tests/gsub_chaining3_successive.tests \
|
|
||||||
tests/gsub_context1_boundary.tests \
|
|
||||||
tests/gsub_context1_expansion.tests \
|
|
||||||
tests/gsub_context1_lookupflag.tests \
|
|
||||||
tests/gsub_context1_multiple_subrules.tests \
|
|
||||||
tests/gsub_context1_next_glyph.tests \
|
|
||||||
tests/gsub_context1_simple.tests \
|
|
||||||
tests/gsub_context1_successive.tests \
|
|
||||||
tests/gsub_context2_boundary.tests \
|
|
||||||
tests/gsub_context2_classes.tests \
|
|
||||||
tests/gsub_context2_expansion.tests \
|
|
||||||
tests/gsub_context2_lookupflag.tests \
|
|
||||||
tests/gsub_context2_multiple_subrules.tests \
|
|
||||||
tests/gsub_context2_next_glyph.tests \
|
|
||||||
tests/gsub_context2_simple.tests \
|
|
||||||
tests/gsub_context2_successive.tests \
|
|
||||||
tests/gsub_context3_boundary.tests \
|
|
||||||
tests/gsub_context3_lookupflag.tests \
|
|
||||||
tests/gsub_context3_next_glyph.tests \
|
|
||||||
tests/gsub_context3_simple.tests \
|
|
||||||
tests/gsub_context3_successive.tests \
|
|
||||||
tests/gsub1_1_lookupflag.tests \
|
|
||||||
tests/gsub1_1_modulo.tests \
|
|
||||||
tests/gsub1_1_simple.tests \
|
|
||||||
tests/gsub1_2_lookupflag.tests \
|
|
||||||
tests/gsub1_2_simple.tests \
|
|
||||||
tests/gsub2_1_lookupflag.tests \
|
|
||||||
tests/gsub2_1_multiple_sequences.tests \
|
|
||||||
tests/gsub2_1_simple.tests \
|
|
||||||
tests/gsub3_1_lookupflag.tests \
|
|
||||||
tests/gsub3_1_multiple.tests \
|
|
||||||
tests/gsub3_1_simple.tests \
|
|
||||||
tests/gsub4_1_lookupflag.tests \
|
|
||||||
tests/gsub4_1_multiple_ligatures.tests \
|
|
||||||
tests/gsub4_1_multiple_ligsets.tests \
|
|
||||||
tests/gsub4_1_simple.tests \
|
|
||||||
tests/gsub7.tests \
|
|
||||||
tests/lookupflag_ignore_attach.tests \
|
|
||||||
tests/lookupflag_ignore_base.tests \
|
|
||||||
tests/lookupflag_ignore_combination.tests \
|
|
||||||
tests/lookupflag_ignore_ligatures.tests \
|
|
||||||
tests/lookupflag_ignore_marks.tests \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
DISABLED_TESTS = \
|
|
||||||
$(NULL)
|
|
@ -1,26 +0,0 @@ |
|||||||
# Process this file with automake to produce Makefile.in
|
|
||||||
|
|
||||||
NULL =
|
|
||||||
|
|
||||||
# Convenience targets:
|
|
||||||
lib: |
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src lib
|
|
||||||
|
|
||||||
EXTRA_DIST = \
|
|
||||||
COPYING \
|
|
||||||
fonts \
|
|
||||||
meson.build \
|
|
||||||
$(TESTS) \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
TEST_EXTENSIONS = .tests
|
|
||||||
if HAVE_FREETYPE |
|
||||||
TESTS_ENVIRONMENT = HAVE_FREETYPE=1
|
|
||||||
else |
|
||||||
TESTS_ENVIRONMENT = HAVE_FREETYPE=0
|
|
||||||
endif |
|
||||||
TESTS_LOG_COMPILER = $(srcdir)/../../run-tests.py $(top_builddir)/util/hb-shape$(EXEEXT)
|
|
||||||
|
|
||||||
include Makefile.sources |
|
||||||
|
|
||||||
-include $(top_srcdir)/git.mk |
|
@ -1,66 +0,0 @@ |
|||||||
TESTS = \
|
|
||||||
tests/aat-morx.tests \
|
|
||||||
tests/aat-trak.tests \
|
|
||||||
tests/arabic-fallback-shaping.tests \
|
|
||||||
tests/arabic-feature-order.tests \
|
|
||||||
tests/arabic-like-joining.tests \
|
|
||||||
tests/arabic-mark-attach.tests \
|
|
||||||
tests/arabic-mark-order.tests \
|
|
||||||
tests/arabic-stch.tests \
|
|
||||||
tests/automatic-fractions.tests \
|
|
||||||
tests/cluster.tests \
|
|
||||||
tests/collections.tests \
|
|
||||||
tests/color-fonts.tests \
|
|
||||||
tests/context-matching.tests \
|
|
||||||
tests/cursive-positioning.tests \
|
|
||||||
tests/default-ignorables.tests \
|
|
||||||
tests/emoji.tests \
|
|
||||||
tests/fallback-positioning.tests \
|
|
||||||
tests/hangul-jamo.tests \
|
|
||||||
tests/hyphens.tests \
|
|
||||||
tests/indic-consonant-with-stacker.tests \
|
|
||||||
tests/indic-decompose.tests \
|
|
||||||
tests/indic-init.tests \
|
|
||||||
tests/indic-joiner-candrabindu.tests \
|
|
||||||
tests/indic-joiners.tests \
|
|
||||||
tests/indic-old-spec.tests \
|
|
||||||
tests/indic-pref-blocking.tests \
|
|
||||||
tests/indic-script-extensions.tests \
|
|
||||||
tests/indic-special-cases.tests \
|
|
||||||
tests/indic-syllable.tests \
|
|
||||||
tests/indic-vowel-letter-spoofing.tests \
|
|
||||||
tests/kern-format2.tests \
|
|
||||||
tests/khmer-mark-order.tests \
|
|
||||||
tests/khmer-misc.tests \
|
|
||||||
tests/language-tags.tests \
|
|
||||||
tests/ligature-id.tests \
|
|
||||||
tests/macos.tests \
|
|
||||||
tests/mark-attachment.tests \
|
|
||||||
tests/mark-filtering-sets.tests \
|
|
||||||
tests/mongolian-variation-selector.tests \
|
|
||||||
tests/myanmar-syllable.tests \
|
|
||||||
tests/myanmar-zawgyi.tests \
|
|
||||||
tests/none-directional.tests \
|
|
||||||
tests/positioning-features.tests \
|
|
||||||
tests/rand.tests \
|
|
||||||
tests/reverse-sub.tests \
|
|
||||||
tests/rotation.tests \
|
|
||||||
tests/simple.tests \
|
|
||||||
tests/sinhala.tests \
|
|
||||||
tests/spaces.tests \
|
|
||||||
tests/tibetan-contractions-1.tests \
|
|
||||||
tests/tibetan-contractions-2.tests \
|
|
||||||
tests/tibetan-vowels.tests \
|
|
||||||
tests/use-indic3.tests \
|
|
||||||
tests/use-marchen.tests \
|
|
||||||
tests/use-syllable.tests \
|
|
||||||
tests/use.tests \
|
|
||||||
tests/variations-rounding.tests \
|
|
||||||
tests/variations-rvrn.tests \
|
|
||||||
tests/variations-space.tests \
|
|
||||||
tests/vertical.tests \
|
|
||||||
tests/zero-width-marks.tests \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
DISABLED_TESTS = \
|
|
||||||
$(NULL)
|
|
@ -1,32 +0,0 @@ |
|||||||
# Process this file with automake to produce Makefile.in
|
|
||||||
|
|
||||||
NULL =
|
|
||||||
|
|
||||||
# Convenience targets:
|
|
||||||
lib: |
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src lib
|
|
||||||
|
|
||||||
update: |
|
||||||
(cd $(srcdir) && ./update.sh)
|
|
||||||
|
|
||||||
EXTRA_DIST = \
|
|
||||||
README \
|
|
||||||
COPYING \
|
|
||||||
DISABLED \
|
|
||||||
update.py \
|
|
||||||
meson.build \
|
|
||||||
fonts \
|
|
||||||
$(TESTS) \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
TEST_EXTENSIONS = .tests
|
|
||||||
if HAVE_FREETYPE |
|
||||||
TESTS_ENVIRONMENT = HAVE_FREETYPE=1
|
|
||||||
else |
|
||||||
TESTS_ENVIRONMENT = HAVE_FREETYPE=0
|
|
||||||
endif |
|
||||||
TESTS_LOG_COMPILER = $(srcdir)/../../run-tests.py $(top_builddir)/util/hb-shape$(EXEEXT)
|
|
||||||
|
|
||||||
include Makefile.sources |
|
||||||
|
|
||||||
-include $(top_srcdir)/git.mk |
|
@ -1,95 +0,0 @@ |
|||||||
TESTS = \
|
|
||||||
tests/AVAR-1.tests \
|
|
||||||
tests/CFF-1.tests \
|
|
||||||
tests/CFF-2.tests \
|
|
||||||
tests/CFF2-1.tests \
|
|
||||||
tests/CMAP-1.tests \
|
|
||||||
tests/CMAP-2.tests \
|
|
||||||
tests/CVAR-1.tests \
|
|
||||||
tests/CVAR-2.tests \
|
|
||||||
tests/GLYF-1.tests \
|
|
||||||
tests/GPOS-1.tests \
|
|
||||||
tests/GPOS-2.tests \
|
|
||||||
tests/GPOS-3.tests \
|
|
||||||
tests/GPOS-4.tests \
|
|
||||||
tests/GPOS-5.tests \
|
|
||||||
tests/GSUB-1.tests \
|
|
||||||
tests/GSUB-2.tests \
|
|
||||||
tests/GSUB-3.tests \
|
|
||||||
tests/GVAR-1.tests \
|
|
||||||
tests/GVAR-2.tests \
|
|
||||||
tests/GVAR-3.tests \
|
|
||||||
tests/GVAR-4.tests \
|
|
||||||
tests/GVAR-5.tests \
|
|
||||||
tests/GVAR-6.tests \
|
|
||||||
tests/GVAR-7.tests \
|
|
||||||
tests/GVAR-8.tests \
|
|
||||||
tests/GVAR-9.tests \
|
|
||||||
tests/HVAR-1.tests \
|
|
||||||
tests/HVAR-2.tests \
|
|
||||||
tests/KERN-1.tests \
|
|
||||||
tests/KERN-2.tests \
|
|
||||||
tests/MORX-1.tests \
|
|
||||||
tests/MORX-10.tests \
|
|
||||||
tests/MORX-11.tests \
|
|
||||||
tests/MORX-12.tests \
|
|
||||||
tests/MORX-13.tests \
|
|
||||||
tests/MORX-14.tests \
|
|
||||||
tests/MORX-16.tests \
|
|
||||||
tests/MORX-17.tests \
|
|
||||||
tests/MORX-18.tests \
|
|
||||||
tests/MORX-19.tests \
|
|
||||||
tests/MORX-2.tests \
|
|
||||||
tests/MORX-20.tests \
|
|
||||||
tests/MORX-21.tests \
|
|
||||||
tests/MORX-22.tests \
|
|
||||||
tests/MORX-23.tests \
|
|
||||||
tests/MORX-24.tests \
|
|
||||||
tests/MORX-25.tests \
|
|
||||||
tests/MORX-26.tests \
|
|
||||||
tests/MORX-27.tests \
|
|
||||||
tests/MORX-28.tests \
|
|
||||||
tests/MORX-29.tests \
|
|
||||||
tests/MORX-3.tests \
|
|
||||||
tests/MORX-30.tests \
|
|
||||||
tests/MORX-31.tests \
|
|
||||||
tests/MORX-32.tests \
|
|
||||||
tests/MORX-33.tests \
|
|
||||||
tests/MORX-34.tests \
|
|
||||||
tests/MORX-35.tests \
|
|
||||||
tests/MORX-36.tests \
|
|
||||||
tests/MORX-37.tests \
|
|
||||||
tests/MORX-38.tests \
|
|
||||||
tests/MORX-39.tests \
|
|
||||||
tests/MORX-4.tests \
|
|
||||||
tests/MORX-40.tests \
|
|
||||||
tests/MORX-41.tests \
|
|
||||||
tests/MORX-5.tests \
|
|
||||||
tests/MORX-6.tests \
|
|
||||||
tests/MORX-7.tests \
|
|
||||||
tests/MORX-8.tests \
|
|
||||||
tests/MORX-9.tests \
|
|
||||||
tests/SFNT-1.tests \
|
|
||||||
tests/SFNT-2.tests \
|
|
||||||
tests/SHBALI-3.tests \
|
|
||||||
tests/SHKNDA-1.tests \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
DISBALED_TESTS = \
|
|
||||||
tests/CMAP-3.tests \
|
|
||||||
tests/SHARAN-1.tests \
|
|
||||||
tests/SHBALI-1.tests \
|
|
||||||
tests/SHBALI-2.tests \
|
|
||||||
tests/SHKNDA-2.tests \
|
|
||||||
tests/SHKNDA-3.tests \
|
|
||||||
tests/SHLANA-1.tests \
|
|
||||||
tests/SHLANA-10.tests \
|
|
||||||
tests/SHLANA-2.tests \
|
|
||||||
tests/SHLANA-3.tests \
|
|
||||||
tests/SHLANA-4.tests \
|
|
||||||
tests/SHLANA-5.tests \
|
|
||||||
tests/SHLANA-6.tests \
|
|
||||||
tests/SHLANA-7.tests \
|
|
||||||
tests/SHLANA-8.tests \
|
|
||||||
tests/SHLANA-9.tests \
|
|
||||||
$(NULL)
|
|
@ -1,23 +0,0 @@ |
|||||||
# Process this file with automake to produce Makefile.in
|
|
||||||
|
|
||||||
NULL =
|
|
||||||
EXTRA_DIST =
|
|
||||||
CLEANFILES =
|
|
||||||
SUBDIRS = data
|
|
||||||
|
|
||||||
# Convenience targets:
|
|
||||||
lib: libs # Always build subsetter lib in this subdir
|
|
||||||
libs: |
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src libs
|
|
||||||
|
|
||||||
EXTRA_DIST += \
|
|
||||||
meson.build \
|
|
||||||
run-tests.py \
|
|
||||||
subset_test_suite.py \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
CLEANFILES += \
|
|
||||||
subset_test_suite.py[co] \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
-include $(top_srcdir)/git.mk |
|
@ -1,45 +0,0 @@ |
|||||||
# Process this file with automake to produce Makefile.in
|
|
||||||
|
|
||||||
NULL =
|
|
||||||
EXTRA_DIST =
|
|
||||||
CLEANFILES =
|
|
||||||
SUBDIRS =
|
|
||||||
|
|
||||||
EXTRA_DIST += \
|
|
||||||
$(TESTS) \
|
|
||||||
expected/basics \
|
|
||||||
expected/full-font \
|
|
||||||
expected/cff-full-font \
|
|
||||||
expected/japanese \
|
|
||||||
expected/cff-japanese \
|
|
||||||
expected/layout \
|
|
||||||
expected/layout.gpos \
|
|
||||||
expected/layout.gpos2 \
|
|
||||||
expected/layout.gpos3 \
|
|
||||||
expected/layout.gpos4 \
|
|
||||||
expected/layout.gpos6 \
|
|
||||||
expected/layout.gpos8 \
|
|
||||||
expected/layout.gsub3 \
|
|
||||||
expected/layout.gsub6 \
|
|
||||||
expected/layout.gdef \
|
|
||||||
expected/layout.context \
|
|
||||||
expected/layout.gdef-varstore \
|
|
||||||
expected/layout.gdef-attachlist \
|
|
||||||
expected/cmap \
|
|
||||||
expected/cmap14 \
|
|
||||||
expected/sbix \
|
|
||||||
expected/colr \
|
|
||||||
expected/cbdt \
|
|
||||||
fonts \
|
|
||||||
profiles \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
# Convenience targets:
|
|
||||||
lib: |
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src lib
|
|
||||||
|
|
||||||
TEST_EXTENSIONS = .tests
|
|
||||||
TESTS_LOG_COMPILER = $(srcdir)/../run-tests.py $(top_builddir)/util/hb-subset$(EXEEXT)
|
|
||||||
include Makefile.sources |
|
||||||
|
|
||||||
-include $(top_srcdir)/git.mk |
|
@ -1,31 +0,0 @@ |
|||||||
TESTS = \
|
|
||||||
tests/basics.tests \
|
|
||||||
tests/cbdt.tests \
|
|
||||||
tests/cff-full-font.tests \
|
|
||||||
tests/cff-japanese.tests \
|
|
||||||
tests/cmap.tests \
|
|
||||||
tests/cmap14.tests \
|
|
||||||
tests/colr.tests \
|
|
||||||
tests/full-font.tests \
|
|
||||||
tests/japanese.tests \
|
|
||||||
tests/layout.context.tests \
|
|
||||||
tests/layout.gdef-attachlist.tests \
|
|
||||||
tests/layout.gdef-varstore.tests \
|
|
||||||
tests/layout.gdef.tests \
|
|
||||||
tests/layout.gpos.tests \
|
|
||||||
tests/layout.gpos2.tests \
|
|
||||||
tests/layout.gpos3.tests \
|
|
||||||
tests/layout.gpos4.tests \
|
|
||||||
tests/layout.gpos6.tests \
|
|
||||||
tests/layout.gpos8.tests \
|
|
||||||
tests/layout.gsub3.tests \
|
|
||||||
tests/layout.gsub6.tests \
|
|
||||||
tests/layout.tests \
|
|
||||||
tests/sbix.tests \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
XFAIL_TESTS = \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
DISABLED_TESTS = \
|
|
||||||
$(NULL)
|
|
@ -1,78 +0,0 @@ |
|||||||
# Process this file with automake to produce Makefile.in
|
|
||||||
|
|
||||||
NULL =
|
|
||||||
EXTRA_DIST =
|
|
||||||
CLEANFILES =
|
|
||||||
DISTCLEANFILES =
|
|
||||||
MAINTAINERCLEANFILES =
|
|
||||||
|
|
||||||
EXTRA_DIST += meson.build
|
|
||||||
|
|
||||||
include Makefile.sources |
|
||||||
|
|
||||||
# Convenience targets:
|
|
||||||
lib: |
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src lib
|
|
||||||
libs: |
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) -C $(top_builddir)/src libs
|
|
||||||
|
|
||||||
bin_PROGRAMS =
|
|
||||||
|
|
||||||
AM_CPPFLAGS = \
|
|
||||||
-DHB_DISABLE_DEPRECATED \
|
|
||||||
-I$(top_srcdir)/src/ \
|
|
||||||
-I$(top_builddir)/src/ \
|
|
||||||
$(GLIB_CFLAGS) \
|
|
||||||
$(FREETYPE_CFLAGS) \
|
|
||||||
$(CAIRO_FT_CFLAGS) \
|
|
||||||
$(NULL)
|
|
||||||
LDADD = \
|
|
||||||
$(top_builddir)/src/libharfbuzz.la \
|
|
||||||
-lm \
|
|
||||||
$(GLIB_LIBS) \
|
|
||||||
$(FREETYPE_LIBS) \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
if HAVE_GLIB |
|
||||||
|
|
||||||
if HAVE_FREETYPE |
|
||||||
if HAVE_CAIRO_FT |
|
||||||
hb_view_SOURCES = $(HB_VIEW_sources)
|
|
||||||
hb_view_LDADD = \
|
|
||||||
$(LDADD) \
|
|
||||||
$(CAIRO_LIBS) \
|
|
||||||
$(CAIRO_FT_LIBS) \
|
|
||||||
$(NULL)
|
|
||||||
bin_PROGRAMS += hb-view
|
|
||||||
endif # HAVE_CAIRO_FT
|
|
||||||
endif # HAVE_FREETYPE
|
|
||||||
|
|
||||||
hb_shape_SOURCES = $(HB_SHAPE_sources)
|
|
||||||
bin_PROGRAMS += hb-shape
|
|
||||||
|
|
||||||
hb_subset_SOURCES = $(HB_SUBSET_CLI_sources)
|
|
||||||
hb_subset_LDADD = \
|
|
||||||
$(top_builddir)/src/libharfbuzz-subset.la \
|
|
||||||
$(LDADD)
|
|
||||||
|
|
||||||
bin_PROGRAMS += hb-subset
|
|
||||||
|
|
||||||
hb_ot_shape_closure_SOURCES = $(HB_OT_SHAPE_CLOSURE_sources)
|
|
||||||
bin_PROGRAMS += hb-ot-shape-closure
|
|
||||||
|
|
||||||
endif # HAVE_GLIB
|
|
||||||
|
|
||||||
#if HAVE_FONTCONFIG
|
|
||||||
#hb_fc_list_SOURCES = \
|
|
||||||
# hb-fc.cc \
|
|
||||||
# hb-fc.h \
|
|
||||||
# hb-fc-list.c \
|
|
||||||
# $(NULL)
|
|
||||||
#hb_fc_list_LDADD = \
|
|
||||||
# $(LDADD) \
|
|
||||||
# $(FONTCONFIG_LIBS) \
|
|
||||||
# $(NULL)
|
|
||||||
#bin_PROGRAMS += hb-fc-list
|
|
||||||
#endif # HAVE_FONTCONFIG
|
|
||||||
|
|
||||||
-include $(top_srcdir)/git.mk |
|
@ -1,38 +0,0 @@ |
|||||||
HB_VIEW_sources = \
|
|
||||||
hb-view.cc \
|
|
||||||
options.cc \
|
|
||||||
options.hh \
|
|
||||||
main-font-text.hh \
|
|
||||||
shape-consumer.hh \
|
|
||||||
ansi-print.cc \
|
|
||||||
ansi-print.hh \
|
|
||||||
helper-cairo.cc \
|
|
||||||
helper-cairo.hh \
|
|
||||||
helper-cairo-ansi.cc \
|
|
||||||
helper-cairo-ansi.hh \
|
|
||||||
view-cairo.cc \
|
|
||||||
view-cairo.hh \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
HB_SHAPE_sources = \
|
|
||||||
hb-shape.cc \
|
|
||||||
options.cc \
|
|
||||||
options.hh \
|
|
||||||
main-font-text.hh \
|
|
||||||
shape-consumer.hh \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
HB_OT_SHAPE_CLOSURE_sources = \
|
|
||||||
hb-ot-shape-closure.cc \
|
|
||||||
options.cc \
|
|
||||||
options.hh \
|
|
||||||
main-font-text.hh \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
HB_SUBSET_CLI_sources = \
|
|
||||||
hb-subset.cc \
|
|
||||||
options.cc \
|
|
||||||
options-subset.cc \
|
|
||||||
options.hh \
|
|
||||||
main-font-text.hh \
|
|
||||||
$(NULL)
|
|
Loading…
Reference in new issue