subst_sed_cmd = \
	-e 's|@abs_top_srcdir[@]|$(abs_top_srcdir)|g' \
	-e 's|@bindir[@]|$(bindir)|g' \
	-e 's|@datadir[@]|$(datadir)|g' \
	-e 's|@initconfdir[@]|$(initconfdir)|g' \
	-e 's|@initdir[@]|$(initdir)|g' \
	-e 's|@mounthelperdir[@]|$(mounthelperdir)|g' \
	-e 's|@pammoduledir[@]|$(pammoduledir)|g' \
	-e 's|@runstatedir[@]|$(runstatedir)|g' \
	-e 's|@sbindir[@]|$(sbindir)|g' \
	-e 's|@sysconfdir[@]|$(sysconfdir)|g' \
	-e 's|@systemdgeneratordir[@]|$(systemdgeneratordir)|g' \
	-e 's|@systemdunitdir[@]|$(systemdunitdir)|g' \
	-e 's|@udevdir[@]|$(udevdir)|g' \
	-e 's|@udevruledir[@]|$(udevruledir)|g' \
	-e 's|@zfsexecdir[@]|$(zfsexecdir)|g' \
	\
	-e 's|@ASAN_ENABLED[@]|$(ASAN_ENABLED)|g' \
	-e 's|@DEFAULT_INIT_NFS_SERVER[@]|$(DEFAULT_INIT_NFS_SERVER)|g' \
	-e 's|@DEFAULT_INIT_SHELL[@]|$(DEFAULT_INIT_SHELL)|g' \
	-e 's|@LIBFETCH_DYNAMIC[@]|$(LIBFETCH_DYNAMIC)|g' \
	-e 's|@LIBFETCH_SONAME[@]|$(LIBFETCH_SONAME)|g' \
	-e 's|@PYTHON[@]|$(PYTHON)|g' \
	-e 's|@PYTHON_SHEBANG[@]|$(PYTHON_SHEBANG)|g' \
	-e 's|@UBSAN_ENABLED[@]|$(UBSAN_ENABLED)|g' \
	-e 's|@VERSION[@]|$(VERSION)|g'

define SUBST
$(1) : $(2)$(1).in Makefile;
	$$(AM_V_GEN)set -e; \
	$$(MKDIR_P) $$(@D); \
	$$(RM) $$@~; \
	$$(SED) $$(subst_sed_cmd) $$< >$$@~; \
	if grep -E '@[a-zA-Z0-9_]+@' $$@~ >&2; then \
		echo "Undefined substitution" >&2; \
		exit 1; \
	fi; \
	[ -x $$< ] && chmod +x $$@~; \
	mv -f $$@~ $$@
endef

SUBSTFILES =
CLEANFILES += $(SUBSTFILES)
dist_noinst_DATA += $(SUBSTFILES:=.in)

$(call SUBST,%,)
