# 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/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 \
	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
