# 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 \
	$(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
