summaryrefslogtreecommitdiff
path: root/build-aux
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@sbcglobal.net>2016-08-17 01:33:02 -0400
committerLuke Shumaker <lukeshu@sbcglobal.net>2016-08-17 01:33:02 -0400
commit610d801297fe7e46c319e6da4e6571aaded630dd (patch)
treed27f6d077694b84ed9881c99b2894701932ca6e1 /build-aux
parent7648bff2717c24e9f5c90ec9e4588eda510aba9d (diff)
more
Diffstat (limited to 'build-aux')
-rw-r--r--build-aux/Makefile.each.head/00-am.mk2
-rw-r--r--build-aux/Makefile.each.tail/00-mod.mk20
-rw-r--r--build-aux/Makefile.each.tail/50-sd.mk17
-rw-r--r--build-aux/Makefile.each.tail/60-am.mk33
-rw-r--r--build-aux/Makefile.once.head/00-quote.mk23
-rw-r--r--build-aux/Makefile.once.head/10-lt.mk19
-rw-r--r--build-aux/Makefile.once.head/30-am.mk26
-rw-r--r--build-aux/Makefile.once.head/zz-mod.mk8
8 files changed, 98 insertions, 50 deletions
diff --git a/build-aux/Makefile.each.head/00-am.mk b/build-aux/Makefile.each.head/00-am.mk
index 46cc20194d..dbd57445da 100644
--- a/build-aux/Makefile.each.head/00-am.mk
+++ b/build-aux/Makefile.each.head/00-am.mk
@@ -1,4 +1,4 @@
-$(eval $(foreach v,$(foreach p,$(am.primaries),am.inst_$p am.noinst_$p am.check_$p),$v ?=$(at.nl)))
+$(eval $(foreach v,$(foreach p,$(am.primaries),am.sys_$p am.out_$p am.check_$p),$v ?=$(at.nl)))
am.CFLAGS ?=
am.CPPFLAGS ?=
am.subdirs ?=
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.each.tail/50-sd.mk b/build-aux/Makefile.each.tail/50-sd.mk
index 511ce35be8..35b9168570 100644
--- a/build-aux/Makefile.each.tail/50-sd.mk
+++ b/build-aux/Makefile.each.tail/50-sd.mk
@@ -41,11 +41,12 @@ $(outdir)/$(DEPDIR):
$(AM_V_at)$(MKDIR_P) $@
$(outdir)/%.la:
- @if test $(words $(lt.link_files)) = 0; then echo 'Cannot link library with no dependencies: $@' >&2; exit 1; fi
- $(AM_V_CCLD)$(sd.LINK) $(if $(lt.rpath),-rpath $(lt.rpath)) $(lt.link_files)
-$(addprefix $(outdir)/,$(am.PROGRAMS)): $(outdir)/%:
- @if test $(words $(lt.link_files)) = 0; then echo 'Cannot link executable with no dependencies: $@' >&2; exit 1; fi
- $(AM_V_CCLD)$(sd.LINK) $(lt.link_files)
+ @if test $(words $(lt.lib.files.all)) = 0; then echo 'Cannot link library with no dependencies: $@' >&2; exit 1; fi
+ $(AM_V_CCLD)$(sd.LINK) $(if $(lt.lib.rpath),-rpath $(lt.lib.rpath)) $(lt.lib.files.ld)
+ $(AM_V_at)$(lt.lib.post)
+$(addprefix $(outdir)/,$(am.out_PROGRAMS)): $(outdir)/%:
+ @if test $(words $(lt.exe.files.all)) = 0; then echo 'Cannot link executable with no dependencies: $@' >&2; exit 1; fi
+ $(AM_V_CCLD)$(sd.LINK) $(lt.exe.files.ld)
# Stupid test that everything purported to be exported really is
$(outdir)/test-lib%-sym.c: $(srcdir)/lib%.sym
@@ -67,6 +68,10 @@ $(outdir)/%-from-name.gperf: $(outdir)/%-list.txt
$(outdir)/%-from-name.h: $(outdir)/%-from-name.gperf
$(AM_V_GPERF)$(GPERF) -L ANSI-C -t --ignore-case -N lookup_$(notdir $*) -H hash_$(notdir $*)_name -p -C <$< >$@
+ifeq ($(sd.sed_files),)
+EXTRA_DIST ?=
+sd.sed_files += $(notdir $(patsubst %.in,%,$(filter %.in,$(EXTRA_DIST))))
+endif
ifneq ($(sd.sed_files),)
$(addprefix $(outdir)/,$(sd.sed_files)): $(outdir)/%: $(srcdir)/%.in
$(sd.SED_PROCESS)
@@ -83,3 +88,5 @@ $(outdir)/%.c: $(outdir)/%.gperf
$(outdir)/%: $(srcdir)/%.m4 $(top_builddir)/config.status
$(AM_V_M4)$(M4) -P $(M4_DEFINES) < $< > $@
+$(outdir)/%: $(outdir)/%.m4 $(top_builddir)/config.status
+ $(AM_V_M4)$(M4) -P $(M4_DEFINES) < $< > $@
diff --git a/build-aux/Makefile.each.tail/60-am.mk b/build-aux/Makefile.each.tail/60-am.mk
index 1a59397a25..7e9b8f3800 100644
--- a/build-aux/Makefile.each.tail/60-am.mk
+++ b/build-aux/Makefile.each.tail/60-am.mk
@@ -4,37 +4,55 @@ bin_PROGRAMS ?=
bin_SCRIPTS ?=
bashcompletion_DATA ?=
zshcompletion_DATA ?=
-bashcompletion_DATA := $(sort $(bashcompletion_DATA) $(bin_PROGRAMS) $(bin_SCRIPTS))
-zshcompletion_DATA := $(sort $(zshcompletion_DATA) $(addprefix _,$(bin_PROGRAMS) $(bin_SCRIPTS)))
+dist_bashcompletion_DATA := $(sort $(bashcompletion_DATA) $(bin_PROGRAMS) $(bin_SCRIPTS))
+dist_zshcompletion_DATA := $(sort $(zshcompletion_DATA) $(addprefix _,$(bin_PROGRAMS) $(bin_SCRIPTS)))
$(eval \
$(foreach p,$(am.primaries) ,$(call _am.per_primary,$p)$(at.nl)))
$(eval \
- $(foreach f,$(am.PROGRAMS) ,$(call _am.per_PROGRAM,$f,$(call am.file2var,$f))$(at.nl))\
- $(foreach f,$(am.LTLIBRARIES),$(call _am.per_LTLIBRARY,$f,$(call am.file2var,$f))$(at.nl))\
- $(foreach d,$(am.inst2dirs) ,$(call _am.per_directory,$d)$(at.nl)))
+ $(foreach f,$(am.out_PROGRAMS) ,$(call _am.per_PROGRAM,$f,$(call am.file2var,$f))$(at.nl))\
+ $(foreach f,$(am.out_LTLIBRARIES),$(call _am.per_LTLIBRARY,$f,$(call am.file2var,$f))$(at.nl))\
+ $(foreach d,$(am.sys2dirs) ,$(call _am.per_directory,$d)$(at.nl)))
$(DESTDIR)$(includedir)/%.h: $(srcdir)/include/%.h
@$(NORMAL_INSTALL)
$(am.INSTALL)
+
$(DESTDIR)$(sysusersdir)/%.conf: $(srcdir)/%.sysusers
@$(NORMAL_INSTALL)
$(am.INSTALL)
$(DESTDIR)$(sysusersdir)/%.conf: $(outdir)/%.sysusers
@$(NORMAL_INSTALL)
$(am.INSTALL)
+
$(DESTDIR)$(sysctldir)/%.conf: $(srcdir)/%.sysctl
@$(NORMAL_INSTALL)
$(am.INSTALL)
$(DESTDIR)$(sysctldir)/%.conf: $(outdir)/%.sysctl
@$(NORMAL_INSTALL)
$(am.INSTALL)
+
+$(DESTDIR)$(tmpfilesdir)/%.conf: $(srcdir)/%.tmpfiles
+ @$(NORMAL_INSTALL)
+ $(am.INSTALL)
+$(DESTDIR)$(tmpfilesdir)/%.conf: $(outdir)/%.tmpfiles
+ @$(NORMAL_INSTALL)
+ $(am.INSTALL)
+
+$(DESTDIR)$(pamconfdir)/%: $(srcdir)/%.pam
+ @$(NORMAL_INSTALL)
+ $(am.INSTALL)
+$(DESTDIR)$(pamconfdir)/%: $(outdir)/%.pam
+ @$(NORMAL_INSTALL)
+ $(am.INSTALL)
+
$(DESTDIR)$(bashcompletiondir)/%: $(srcdir)/%.completion.bash
@$(NORMAL_INSTALL)
$(am.INSTALL)
$(DESTDIR)$(bashcompletiondir)/%: $(outdir)/%.completion.bash
@$(NORMAL_INSTALL)
$(am.INSTALL)
+
$(DESTDIR)$(zshcompletiondir)/_%: $(srcdir)/%.completion.zsh
@$(NORMAL_INSTALL)
$(am.INSTALL)
@@ -43,7 +61,6 @@ $(DESTDIR)$(zshcompletiondir)/_%: $(outdir)/%.completion.zsh
$(am.INSTALL)
at.subdirs += $(am.subdirs)
-files.sys.all += $(foreach p,$(am.primaries),$(am.inst_$p))
-files.out.all += $(foreach p,$(am.primaries),$(am.noinst_$p))
-files.out.all += $(foreach p,$(am.primaries),$(call am.inst2noinst_$p,$(am.inst_$p)))
+files.sys.all += $(foreach p,$(am.primaries),$(am.sys_$p))
+files.out.all += $(foreach p,$(am.primaries),$(am.out_$p))
files.out.check += $(foreach p,$(am.primaries),$(am.check_$p))
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/10-lt.mk b/build-aux/Makefile.once.head/10-lt.mk
index b014a0f2a4..3c6bea4222 100644
--- a/build-aux/Makefile.once.head/10-lt.mk
+++ b/build-aux/Makefile.once.head/10-lt.mk
@@ -1,12 +1,17 @@
mod.lt.description = (systemd) Easy handling of libtool dependencies
-mod.lt.deps += files
+mod.lt.deps += files quote
-_lt.dups = $(sort $(foreach l,$1,$(if $(filter-out 1,$(words $(filter $l,$1))),$l)))
_lt.patsubst-all = $(if $1,$(call _lt.patsubst-all,$(wordlist 2,$(words $1),$1),$2,$(patsubst $(firstword $1),$2,$3)),$3)
_lt.unLIBPATTERNS = $(foreach _lt.tmp,$1,$(if $(filter $(.LIBPATTERNS),$(notdir $(_lt.tmp))),$(call _lt.patsubst-all,$(.LIBPATTERNS),-l%,$(notdir $(_lt.tmp))),$(_lt.tmp)))
+_lt.rest = $(wordlist 2,$(words $1),$1)
+_lt.dedup = $(if $1,$(if $(filter $(firstword $1),$(call _lt.rest,$1)),,$(firstword $1) )$(call _lt.dedup,$(call _lt.rest,$1)))
+_lt.static_dependency_libs = $(foreach _lt.tmp,$1,$(_lt.tmp)$(if $(filter %.la,$(_lt.tmp)), $(shell . $(_lt.tmp); echo $$static_dependency_libs)))
-# The semantics for the de-dup bit are a bit weird. My head hurts thinking
-# about them. TODO: clarify/simplify/something
-lt.rpath = $(dir $(patsubst $(DESTDIR)%,%,$(filter %/$(@F),$(files.sys))))
-_lt.link_files = $(filter %.o %.lo %.la -l%,$(call _lt.unLIBPATTERNS,$^))
-lt.link_files = $(filter-out $(call _lt.dups,$(_lt.link_files)),$(_lt.link_files))
+lt.lib.rpath = $(dir $(patsubst $(DESTDIR)%,%,$(filter %/$(@F),$(files.sys))))
+lt.lib.files.all = $(call _lt.dedup,$(filter %.lo %.la -l%,$(call _lt.static_dependency_libs,$(call _lt.unLIBPATTERNS,$^))))
+lt.lib.files.ld = $(filter %.lo -l% $(if $(lt.lib.rpath),%.la),$(lt.lib.files.all))
+lt.lib.files.la = $(filter %.la,$(lt.lib.files.all))
+lt.lib.post = $(if $(lt.lib.files.la),printf '\nstatic_dependency_libs="$(lt.lib.files.la)"\ndependency_libs="$$dependency_libs $$static_dependency_libs"\n' >> $@)
+
+lt.exe.files.all = $(call _lt.dedup,$(filter %.o %.la -l%,$(call _lt.static_dependency_libs,$(call _lt.unLIBPATTERNS,$^))))
+lt.exe.files.ld = $(lt.exe.files.all)
diff --git a/build-aux/Makefile.once.head/30-am.mk b/build-aux/Makefile.once.head/30-am.mk
index 37f16f8652..dcccca6da4 100644
--- a/build-aux/Makefile.once.head/30-am.mk
+++ b/build-aux/Makefile.once.head/30-am.mk
@@ -1,16 +1,16 @@
mod.am.description = (systemd) Automake-to-Autothing magic
mod.am.depends += gnuconf
-am.inst2noinst_DATA = \
- $(patsubst %.completion.bash,$(abspath $(srcdir))/%.completion.bash,\
- $(patsubst %.completion.zsh,$(abspath $(srcdir))/%.completion.zsh,\
+am.sys2out_DATA = \
$(notdir \
+ $(patsubst $(pamconfdir)/%,%.pam,\
+ $(patsubst $(tmpfilesdir)/%.conf,%.tmpfiles,\
$(patsubst $(sysusersdir)/%.conf,%.sysusers,\
$(patsubst $(sysctldir)/%.conf,%.sysctl,\
$(patsubst $(bashcompletiondir)/%,%.completion.bash,\
$(patsubst $(zshcompletiondir)/_%,%.completion.zsh,\
$1)))))))
-am.inst2noinst_HEADERS = $(abspath $(addprefix $(srcdir)/include/,$(notdir $1)))
+am.sys2out_HEADERS = $(abspath $(addprefix $(srcdir)/include/,$(notdir $1)))
am.var_PROGRAMS = $1_SOURCES nodist_$1_SOURCES $1_CFLAGS $1_CPPFLAGS $1_LDFLAGS $1_LDADD
am.var_LTLIBRARIES = $1_SOURCES nodist_$1_SOURCES $1_CFLAGS $1_CPPFLAGS $1_LDFLAGS $1_LIBADD
@@ -26,11 +26,11 @@ am.LDFLAGS =
# this list of primaries is based on the Automake 1.15 manual
am.primaries ?= PROGRAMS LIBRARIES LTLIBRARIES LISP PYTHON JAVA SCRIPTS DATA HEADERS MANS TEXINFOS
-$(eval $(foreach p,$(am.primaries),am.inst2noinst_$p ?= $$(notdir $$1)$(at.nl)))
+$(eval $(foreach p,$(am.primaries),am.sys2out_$p ?= $$(notdir $$1)$(at.nl)))
am.primary2dirs = $(filter $(patsubst %dir,%,$(filter %dir,$(.VARIABLES))),\
- $(patsubst %_$1,%,$(filter %_$1,$(.VARIABLES))))
-am.inst2dirs = $(sort $(patsubst %/,%,$(dir $(foreach p,$(am.primaries),$(am.inst_$p)))))
+ $(patsubst nodist_%,%,$(patsubst dist_%,%,$(patsubst %_$1,%,$(filter %_$1,$(.VARIABLES))))))
+am.sys2dirs = $(sort $(patsubst %/,%,$(dir $(foreach p,$(am.primaries),$(am.sys_$p)))))
am.file2var = $(subst -,_,$(subst .,_,$1))
am.file2sources = $(addprefix $(srcdir)/,$(notdir $($(am.file2var)_SOURCES)))
@@ -41,15 +41,17 @@ am.file2lib = $(foreach l, $($(am.file2var)_$2),$(if $(filter lib%.la,$l), $($
am.file2cpp = $(foreach l,$1 $($(am.file2var)_$2),$(if $(filter lib%.la,$l), $($(l:.la=).CPPFLAGS) , ))
define _am.per_primary
+$(foreach d,$(call am.primary2dirs,$1),$d_$1 ?=$(at.nl)dist_$d_$1 ?=$(at.nl)nodist_$d_$1 ?=$(at.nl))
noinst_$1 ?=
check_$1 ?=
-am.inst_$1 := $$(foreach d,$$(call am.primary2dirs,$1),$$(addprefix $$($$ddir)/,$$(notdir $$($$d_$1))))
-am.noinst_$1 := $$(noinst_$1)
+am.sys_$1 := $(foreach d,$(call am.primary2dirs,$1),$$(addprefix $$($ddir)/,$$(notdir $$($d_$1) $$(dist_$d_$1) $$(nodist_$d_$1))))
+am.out_$1 := $$(call am.sys2out_$1,$(foreach d,$(call am.primary2dirs,$1),$$(addprefix $$($ddir)/,$$(notdir $$($d_$1) $$(nodist_$d_$1) ))) $$(noinst_$1))
am.check_$1 := $$(check_$1)
-$(foreach d,$(call am.primary2dirs,$1) noinst check,undefine $d_$1$(at.nl))
-$$(addprefix $$(DESTDIR),$$(am.inst_$1)): private am.INSTALL = $$(am.INSTALL_$1)
-am.$1 = $$(am.check_$1) $$(am.noinst_$1) $$(call am.inst2noinst_$1,$$(am.inst_$1))
+$(foreach d,$(call am.primary2dirs,$1),undefine $d_$1$(at.nl)undefine dist_$d_$1$(at.nl)undefine nodist_$d_$1$(at.nl))
+undefine noinst_$1
+undefine check_$1
+$$(addprefix $$(DESTDIR),$$(am.sys_$1)): private am.INSTALL = $$(am.INSTALL_$1)
endef
########################################################################
# TODO: I'm not in love with how _am.per_PROGRAM figures out am.subdirs
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)')