# 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/cairo.wrap \
	subprojects/freetype2.wrap \
	subprojects/glib.wrap \
	subprojects/google-benchmark.wrap \
	subprojects/ragel.wrap \
	subprojects/packagefiles/ragel/meson.build \
	subprojects/ttf-parser.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 \
	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
