# 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 \
	CMakeLists.txt \
	replace-enum-strings.cmake \
	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 \
	mingw-configure.sh \
	$(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
