diff options
-rw-r--r-- | build-aux/Makefile.each.tail/00-mod.mk | 20 | ||||
-rw-r--r-- | build-aux/Makefile.once.head/00-quote.mk | 23 | ||||
-rw-r--r-- | build-aux/Makefile.once.head/zz-mod.mk | 8 |
3 files changed, 34 insertions, 17 deletions
diff --git a/build-aux/Makefile.each.tail/00-mod.mk b/build-aux/Makefile.each.tail/00-mod.mk index 6346173b8c..dc1a2fe07c 100644 --- a/build-aux/Makefile.each.tail/00-mod.mk +++ b/build-aux/Makefile.each.tail/00-mod.mk @@ -13,27 +13,27 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -$(outdir)/at-variables $(outdir)/at-variables-local: _mod.VARIABLES := $(filter-out $(call _mod.quote-pattern,$(_at.VARIABLES)),$(.VARIABLES)) +$(outdir)/at-variables $(outdir)/at-variables-local: _mod.VARIABLES := $(filter-out $(call quote.pattern,$(_at.VARIABLES)),$(.VARIABLES)) $(outdir)/at-variables-global: - @printf '%s\n' $(call _mod.quote-shell-each,$(sort $(.VARIABLES))) + @printf '%s\n' $(call quote.shell-each,$(sort $(.VARIABLES))) $(outdir)/at-variables-local: - @printf '%s\n' $(call _mod.quote-shell-each,$(sort $(_mod.VARIABLES))) + @printf '%s\n' $(call quote.shell-each,$(sort $(_mod.VARIABLES))) $(outdir)/at-variables $(outdir)/at-values: - @printf '%s\n' $(call _mod.quote-shell-each,$(sort $(.VARIABLES),$(_mod.VARIABLES))) + @printf '%s\n' $(call quote.shell-each,$(sort $(.VARIABLES),$(_mod.VARIABLES))) $(outdir)/at-variables/%: - @printf '%s\n' $(call _mod.quote-shell,$($*)) + @printf '%s\n' $(call quote.shell,$($*)) $(outdir)/at-values/%: - @printf '%s\n' $(call _mod.quote-shell,$(value $*)) + @printf '%s\n' $(call quote.shell,$(value $*)) .PHONY: $(addprefix $(outdir)/, at-variables-global at-variables-local at-variables at-values) at.targets += $(addprefix $(outdir)/, at-variables-global at-variables-local at-variables at-values at-variables/% at-values/%) $(outdir)/at-modules: @printf 'Autothing modules used in this project:\n' - @printf ' - %s\n' $(foreach _mod.tmp,$(_mod.modules),$(call _mod.quote-shell,$(_mod.tmp) $(mod.$(_mod.tmp).description)))|column -t -s $$'\t' + @printf ' - %s\n' $(foreach _mod.tmp,$(_mod.modules),$(call quote.shell,$(_mod.tmp) $(mod.$(_mod.tmp).description)))|column -t -s $$'\t' $(addprefix $(outdir)/at-modules/,$(_mod.modules)): $(outdir)/at-modules/%: - @printf 'Name : %s\n' $(call _mod.quote-shell,$*) - @printf 'Description : %s\n' $(call _mod.quote-shell,$(mod.$*.description)) - @echo 'Contains Files :' $(call _mod.quote-shell-each,$(call at.relto,$(topsrcdir),$(sort $(mod.$*.files) $(wildcard $(topsrcdir)/build-aux/Makefile.*/??-$*.mk)))) + @printf 'Name : %s\n' $(call quote.shell,$*) + @printf 'Description : %s\n' $(call quote.shell,$(mod.$*.description)) + @echo 'Contains Files :' $(call quote.shell-each,$(call at.relto,$(topsrcdir),$(sort $(mod.$*.files) $(wildcard $(topsrcdir)/build-aux/Makefile.*/??-$*.mk)))) @echo 'Depends on :' $(mod.$*.depends) $(outdir)/at-noop: diff --git a/build-aux/Makefile.once.head/00-quote.mk b/build-aux/Makefile.once.head/00-quote.mk new file mode 100644 index 0000000000..23be6140d6 --- /dev/null +++ b/build-aux/Makefile.once.head/00-quote.mk @@ -0,0 +1,23 @@ +# Copyright (C) 2016 Luke Shumaker +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +mod.quote.description = Macros to quote tricky strings + +quote.pattern = $(subst %,\%,$(subst \,\\,$1)) +quote.shell-each = $(foreach _quote.tmp,$1,$(call quote.shell,$(_mod.tmp))) + +# I put this as the last line in the file because it confuses Emacs syntax +# highlighting and makes the remainder of the file difficult to edit. +quote.shell = $(subst $(at.nl),'$$'\n'','$(subst ','\'',$1)') diff --git a/build-aux/Makefile.once.head/zz-mod.mk b/build-aux/Makefile.once.head/zz-mod.mk index 438f01e2ae..732f1e169d 100644 --- a/build-aux/Makefile.once.head/zz-mod.mk +++ b/build-aux/Makefile.once.head/zz-mod.mk @@ -14,6 +14,7 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. mod.mod.description = Display information about Autothing modules +mod.mod.depends += quote # The trickery that is _mod.empty/_mod.space is from ยง6.2 of the GNU Make # manual, "The Two Flavors of Variables". @@ -33,10 +34,3 @@ $(eval $(foreach _mod.tmp,$(_mod.modules),\ mod.$(_mod.tmp).description ?=$(at.nl)\ mod.$(_mod.tmp).depends ?=$(at.nl)\ mod.$(_mod.tmp).files ?=$(at.nl))) - -_mod.quote-pattern = $(subst %,\%,$(subst \,\\,$1)) -_mod.quote-shell-each = $(foreach _mod.tmp,$1,$(call _mod.quote-shell,$(_mod.tmp))) - -# I put this as the last line in the file because it confuses Emacs syntax -# highlighting and makes the remainder of the file difficult to edit. -_mod.quote-shell = $(subst $(at.nl),'$$'\n'','$(subst ','\'',$1)') |