summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--HACKING/build-system.md16
-rw-r--r--Makefile14
-rw-r--r--build-aux/Makefile.each.head/20-libretools.mk (renamed from common.each.head.mk)4
-rw-r--r--build-aux/Makefile.each.tail/20-libretools.mk (renamed from common.each.tail.mk)34
-rw-r--r--build-aux/Makefile.once.head/20-libretools.mk (renamed from common.once.head.mk)12
-rw-r--r--build-aux/no-builtin-variables.mk11
-rw-r--r--common.once.tail.mk0
-rw-r--r--config.mk11
-rw-r--r--src/Makefile4
-rw-r--r--src/abslibre-tools/Makefile4
-rw-r--r--src/chroot-tools/Makefile10
-rw-r--r--src/devtools/Makefile6
-rw-r--r--src/gitget/Makefile4
-rw-r--r--src/lib/Makefile4
-rw-r--r--src/librefetch/Makefile4
-rw-r--r--src/toru/Makefile4
-rw-r--r--src/xbs-abs/Makefile8
-rw-r--r--src/xbs-abslibre/Makefile4
-rw-r--r--src/xbs/Makefile4
-rwxr-xr-xwrite-ifchanged11
21 files changed, 87 insertions, 85 deletions
diff --git a/.gitignore b/.gitignore
index 49ed84d..00a200a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,10 +10,11 @@
/.srcversion-devtools.mk
# The top-level distdir
-/*-*/
+/libretools-*/
# File extensions
*.ugly
+*.tar
*.tar.gz
*.pot
*.1
diff --git a/HACKING/build-system.md b/HACKING/build-system.md
index 93770cc..40abd28 100644
--- a/HACKING/build-system.md
+++ b/HACKING/build-system.md
@@ -1,12 +1,8 @@
-The build system is built around an automake-like system for GNU Make
-that I wrote. It is documented in `automake.txt`. It provides all of
-the standard targets and such; you tell it what to do by setting a
-series of `am_whatever` variables. I'm just going to call it
-"automake" here.
-
-I also hook into non-exposed parts of automake with a couple of
-`_am_whatever` variables. Hopefully I will come up with good ways to
-expose the needed functionality in the future.
+The build system is built around an Automake-replacing Makefile
+snippet system for GNU Make that I wrote, called Autothing. It is
+documented in `build-aux/Makfile.README.txt`. It provides all of the
+standard targets and such; you tell it what to do by setting a series
+of `at.whatever` or `std.whatever` variables.
There are a couple of variables that get automatically set from git.
This happens by `include`ing a hidden makefile that sets them; if
@@ -21,4 +17,4 @@ otherwise it expects the file to exist:
| DEVTOOLS_VERSION | $(topsrcdir)/.srcversion-devtools.mk |
| DEVTOOLS_COMMIT | $(topsrcdir)/.srcversion-devtools.mk |
-`srcfiles` basically becomes `am_src_files`.
+`srcfiles` basically becomes `std.src_files`.
diff --git a/Makefile b/Makefile
index 5be5195..0e9caa2 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
include $(dir $(lastword $(MAKEFILE_LIST)))/config.mk
-include $(topsrcdir)/automake.head.mk
+include $(topsrcdir)/build-aux/Makefile.head.mk
# these are the resulting packages
packages=libretools librelib gitget xbs
@@ -31,9 +31,11 @@ po/%(package).pot: $(addsuffix /everything.pot,$(%(package))); \
$(foreach package,$(packages),$(eval $(subst %(package),$(package),$(value _po_rule))))
pots =
-am_out_files += $(foreach package,$(packages),po/$(package).pot)
-am_clean_files += .var.*
-am_gen_files += .srcversion-libretools.mk .srcversion-devtools.mk
-am_subdirs = src $(foreach package,$(packages),$($(package)))
+std.out_files += $(foreach package,$(packages),po/$(package).pot)
+std.clean_files += .var.*
+std.gen_files += .srcversion-libretools.mk .srcversion-devtools.mk
+at.subdirs = src $(foreach package,$(packages),$($(package)))
+detect-ignore-md += HACKING/%
+detect-ignore-exec += build-aux/%
-include $(topsrcdir)/automake.tail.mk
+include $(topsrcdir)/build-aux/Makefile.tail.mk
diff --git a/common.each.head.mk b/build-aux/Makefile.each.head/20-libretools.mk
index e3a269e..90e9bda 100644
--- a/common.each.head.mk
+++ b/build-aux/Makefile.each.head/20-libretools.mk
@@ -4,13 +4,13 @@ pkglibexecdir = $(libexecdir)/libretools
# Detect things about the directory we're in ####################################
-srcfiles-ignore/$(srcdir) = $(addsuffix /%,$(_am_subdirs/$(@D)))
+srcfiles-ignore/$(srcdir) = $(addsuffix /%,$(at.subdirs/$(@D)))
ifeq ($(wildcard $(topsrcdir)/.git),)
include $(srcdir)/.srcfiles.mk
else
$(srcdir)/.srcfiles.mk: FORCE
- @echo srcfiles = $(filter-out $(srcfiles-ignore/$(@D)),$(shell cd $(@D) && git ls-files)) | $(write-ifchanged) $@
+ @echo srcfiles = $(filter-out $(srcfiles-ignore/$(@D)),$(shell cd $(@D) && git ls-files)) | $(WRITE_IFCHANGED) $@
-include $(srcdir)/.srcfiles.mk
endif
diff --git a/common.each.tail.mk b/build-aux/Makefile.each.tail/20-libretools.mk
index e58b5c5..0b74d41 100644
--- a/common.each.tail.mk
+++ b/build-aux/Makefile.each.tail/20-libretools.mk
@@ -19,23 +19,23 @@ $(error config.mk:devtoolsdir points to a non-existant directory: $(devtoolsdir)
endif
endif
-am_src_files += $(libretools-srcs)
-am_gen_files += .srcfiles.mk $(devtools-files)
-am_out_files += $(filter-out $(am_src_files) $(am_gen_files),$(libretools-files)) \
- $(if $(pots),everything.pot)
-am_sys_files += $(addprefix $(bindir)/,$(libretools-bins)) \
- $(addprefix $(pkgconfdir)/,$(libretools-confs)) \
- $(addprefix $(pkglibexecdir)/,$(libretools-libexecs) $(libretools-libs)) \
- $(addprefix $(pkgdocdir)/,$(libretools-docs)) \
- $(addprefix $(mandir)/man1/,$(filter %.1,$(libretools-mans))) \
- $(addprefix $(mandir)/man2/,$(filter %.2,$(libretools-mans))) \
- $(addprefix $(mandir)/man3/,$(filter %.3,$(libretools-mans))) \
- $(addprefix $(mandir)/man4/,$(filter %.4,$(libretools-mans))) \
- $(addprefix $(mandir)/man5/,$(filter %.5,$(libretools-mans))) \
- $(addprefix $(mandir)/man6/,$(filter %.6,$(libretools-mans))) \
- $(addprefix $(mandir)/man7/,$(filter %.7,$(libretools-mans))) \
- $(addprefix $(mandir)/man8/,$(filter %.8,$(libretools-mans)))
-am_clean_files += *.pot *.ugly *.rej *.orig .tmp*
+std.src_files += $(libretools-srcs)
+std.gen_files += .srcfiles.mk $(devtools-files)
+std.out_files += $(filter-out $(std.src_files) $(std.gen_files),$(libretools-files)) \
+ $(if $(pots),everything.pot)
+std.sys_files += $(addprefix $(bindir)/,$(libretools-bins)) \
+ $(addprefix $(pkgconfdir)/,$(libretools-confs)) \
+ $(addprefix $(pkglibexecdir)/,$(libretools-libexecs) $(libretools-libs)) \
+ $(addprefix $(pkgdocdir)/,$(libretools-docs)) \
+ $(addprefix $(mandir)/man1/,$(filter %.1,$(libretools-mans))) \
+ $(addprefix $(mandir)/man2/,$(filter %.2,$(libretools-mans))) \
+ $(addprefix $(mandir)/man3/,$(filter %.3,$(libretools-mans))) \
+ $(addprefix $(mandir)/man4/,$(filter %.4,$(libretools-mans))) \
+ $(addprefix $(mandir)/man5/,$(filter %.5,$(libretools-mans))) \
+ $(addprefix $(mandir)/man6/,$(filter %.6,$(libretools-mans))) \
+ $(addprefix $(mandir)/man7/,$(filter %.7,$(libretools-mans))) \
+ $(addprefix $(mandir)/man8/,$(filter %.8,$(libretools-mans)))
+std.clean_files += *.pot *.ugly *.rej *.orig .tmp*
exec_$(outdir) := $(exec_$(outdir)) $(libretools-bins) $(libretools-libexecs)
diff --git a/common.once.head.mk b/build-aux/Makefile.once.head/20-libretools.mk
index 33084fa..48964d9 100644
--- a/common.once.head.mk
+++ b/build-aux/Makefile.once.head/20-libretools.mk
@@ -20,13 +20,11 @@ MAKEFLAGS += --no-builtin-rules --no-builtin-variables
.PHONY: FORCE
-write-ifchanged = $(topsrcdir)/write-ifchanged
-
# Magic for tracking variables that affect files. If a file changes
# based on a variable, just stick $(var)VARNAME as a dependency.
-var = $(call _am_path,$(topoutdir)/.var.)
+var = $(call at.path,$(topoutdir)/.var.)
$(var)%: FORCE
- @printf '%s' '$($*)' | $(write-ifchanged) $@
+ @printf '%s' '$($*)' | $(WRITE_IFCHANGED) $@
# Usage: <INPUT $(edit) >OUTPUT
# Expand m4_include macros to use librelib
@@ -52,7 +50,7 @@ indent = emacs --batch $1 \
pofmt = msguniq -Fi --to-code=UTF-8
# It's easy to think of these as "each" variables, but because they
-# will be evaluated on demand, only am_src_files needs to be "each".
+# will be evaluated on demand, only std.src_files needs to be "each".
detect-all = $(filter-out $(detect-ignore) ,$(srcfiles))
detect-exec = $(filter-out $(detect-ignore-exec),$(patsubst $(srcdir)/%,%,$(shell find $(addprefix $(srcdir)/,$(detect-all)) -executable)))
detect-conf = $(filter-out $(detect-ignore-conf),$(filter %.conf ,$(detect-all)))
@@ -67,7 +65,7 @@ $(topsrcdir)/.srcversion-libretools.mk: FORCE
@{ \
echo LIBRETOOLS_VERSION = $(patsubst v%,%,$(shell cd $(topsrcdir) && git describe --tags)); \
echo LIBRETOOLS_COMMIT = $(shell cd $(topsrcdir) && git rev-parse HEAD); \
- :; } | $(write-ifchanged) $@
+ :; } | $(WRITE_IFCHANGED) $@
-include $(topsrcdir)/.srcversion-libretools.mk
endif
@@ -78,6 +76,6 @@ $(topsrcdir)/.srcversion-devtools.mk: FORCE
@{ \
echo DEVTOOLS_VERSION = $(patsubst libretools-%,%,$(shell cd $(devtoolsdir) && git describe --tags)); \
echo DEVTOOLS_COMMIT = $(shell cd $(devtoolsdir) && git rev-parse HEAD); \
- :; } | $(write-ifchanged) $@
+ :; } | $(WRITE_IFCHANGED) $@
-include $(topsrcdir)/.srcversion-devtools.mk
endif
diff --git a/build-aux/no-builtin-variables.mk b/build-aux/no-builtin-variables.mk
new file mode 100644
index 0000000..c236c73
--- /dev/null
+++ b/build-aux/no-builtin-variables.mk
@@ -0,0 +1,11 @@
+MAKEFLAGS += --no-builtin-variables
+
+# This version is more correct, but is slower:
+# $(foreach v,$(shell bash -c 'comm -23 <(env -i $(MAKE) -f - <<<"\$$(info \$$(.VARIABLES))all:"|sed "s/ /\n/g"|sort) <(env -i $(MAKE) -R -f - <<<"\$$(info \$$(.VARIABLES))all:"|sed "s/ /\n/g"|sort)'),
+# $(if $(filter default,$(origin $v)),$(eval undefine $v)))
+
+_default_variables = $(foreach v,$(.VARIABLES),$(if $(filter default,$(origin $v)),$v))
+$(foreach v,$(filter-out .% MAKE% SUFFIXES,$(_default_variables))\
+ $(filter .LIBPATTERNS MAKEINFO,$(_default_variables)),\
+ $(eval undefine $v))
+undefine _default_variables
diff --git a/common.once.tail.mk b/common.once.tail.mk
deleted file mode 100644
index e69de29..0000000
--- a/common.once.tail.mk
+++ /dev/null
diff --git a/config.mk b/config.mk
index 414f761..5c45630 100644
--- a/config.mk
+++ b/config.mk
@@ -3,11 +3,14 @@
# differ. We're not a GNU package.
ifeq ($(topsrcdir),)
-topsrcdir := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST))))
-endif
+
+topoutdir := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST))))
+topsrcdir := $(topoutdir)
+
+include $(topsrcdir)/build-aux/no-builtin-variables.mk
PACKAGE = libretools
-VERSION = $(LIBRETOOLS_VERSION)
+VERSION = $(firstword $(LIBRETOOLS_VERSION) 0)
DESTDIR =
@@ -28,3 +31,5 @@ mandir = $(datarootdir)/man
devtoolsdir = $(call abspath,$(topsrcdir)/../devtools-par)
RONNFLAGS = --manual='libretools Manual' --organization='Parabola'
+
+endif
diff --git a/src/Makefile b/src/Makefile
index e1e5cf4..273a34b 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1,7 +1,7 @@
include $(dir $(lastword $(MAKEFILE_LIST)))/../config.mk
-include $(topsrcdir)/automake.head.mk
+include $(topsrcdir)/build-aux/Makefile.head.mk
pkgconfdir = $(sysconfdir)
srcfiles-ignore/$(srcdir) = $(addsuffix /%,abslibre-tools chroot-tools devtools gitget lib librefetch toru xbs xbs-abs xbs-abslibre)
-include $(topsrcdir)/automake.tail.mk
+include $(topsrcdir)/build-aux/Makefile.tail.mk
diff --git a/src/abslibre-tools/Makefile b/src/abslibre-tools/Makefile
index 2903f4a..a1b7765 100644
--- a/src/abslibre-tools/Makefile
+++ b/src/abslibre-tools/Makefile
@@ -1,4 +1,4 @@
include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk
-include $(topsrcdir)/automake.head.mk
+include $(topsrcdir)/build-aux/Makefile.head.mk
-include $(topsrcdir)/automake.tail.mk
+include $(topsrcdir)/build-aux/Makefile.tail.mk
diff --git a/src/chroot-tools/Makefile b/src/chroot-tools/Makefile
index 48a1631..96fb837 100644
--- a/src/chroot-tools/Makefile
+++ b/src/chroot-tools/Makefile
@@ -1,19 +1,19 @@
include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk
-include $(topsrcdir)/automake.head.mk
+include $(topsrcdir)/build-aux/Makefile.head.mk
pkglibexecdir = $(libexecdir)/libretools/chroot
libretools-bins = chcleanup librechroot libremakepkg
libretools-libexecs += arch-nspawn chcleanup distcc-tool indent mkarchroot
libretools-libs += makechrootpkg.sh
devtools-files = makechrootpkg.sh.in mkarchroot.in arch-nspawn.in
-am_clean_files += chcleanup.lib
+std.clean_files += chcleanup.lib
$(srcdir)/makechrootpkg.sh.in: $(srcdir)/%.sh.in: $(devtoolsdir)/%.in
cp $< $@
$(outdir)/chcleanup: $(srcdir)/chcleanup.in $(outdir)/chcleanup.lib
m4 -I$(@D) -P $< | $(edit) | install -m755 /dev/stdin $@
-$(outdir)/chcleanup.lib: $(call _am_path,$(topoutdir)/src/lib/common.sh) $(outdir)/Makefile
+$(outdir)/chcleanup.lib: $(call at.path,$(topoutdir)/src/lib/common.sh) $(outdir)/Makefile
bash -c '. $<; declare -f _l plain msg msg2 error' > $@
$(outdir)/distcc-tool.pot: LIBREXGETTEXT_FLAGS+=--simple=errusage
@@ -22,6 +22,6 @@ $(DESTDIR)$(bindir)/chcleanup: $(var)bindir $(var)libexecdir
mkdir -p $(@D)
ln -srfT $(DESTDIR)$(libexecdir)/libretools/chroot/chcleanup $@
-am_depdirs = ../lib
+at.depdirs += ../lib
-include $(topsrcdir)/automake.tail.mk
+include $(topsrcdir)/build-aux/Makefile.tail.mk
diff --git a/src/devtools/Makefile b/src/devtools/Makefile
index 72907f0..6d3f88c 100644
--- a/src/devtools/Makefile
+++ b/src/devtools/Makefile
@@ -1,12 +1,12 @@
include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk
-include $(topsrcdir)/automake.head.mk
+include $(topsrcdir)/build-aux/Makefile.head.mk
libretools-bins += checkpkg find-libdeps finddeps lddd
devtools-files = $(addsuffix .in,$(libretools-bins))
-am_sys_files += $(bindir)/find-libprovides
+std.sys_files += $(bindir)/find-libprovides
$(DESTDIR)$(bindir)/find-libprovides:
install -d $(@D)
ln -sf find-libdeps $@
-include $(topsrcdir)/automake.tail.mk
+include $(topsrcdir)/build-aux/Makefile.tail.mk
diff --git a/src/gitget/Makefile b/src/gitget/Makefile
index 2903f4a..a1b7765 100644
--- a/src/gitget/Makefile
+++ b/src/gitget/Makefile
@@ -1,4 +1,4 @@
include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk
-include $(topsrcdir)/automake.head.mk
+include $(topsrcdir)/build-aux/Makefile.head.mk
-include $(topsrcdir)/automake.tail.mk
+include $(topsrcdir)/build-aux/Makefile.tail.mk
diff --git a/src/lib/Makefile b/src/lib/Makefile
index 9e9b4a8..9d52440 100644
--- a/src/lib/Makefile
+++ b/src/lib/Makefile
@@ -1,5 +1,5 @@
include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk
-include $(topsrcdir)/automake.head.mk
+include $(topsrcdir)/build-aux/Makefile.head.mk
libretools-libs += common.sh conf.sh
devtools-files = common.sh.in
@@ -42,4 +42,4 @@ $(outdir)/librexgettext.pot: LIBREXGETTEXT_FLAGS += --simple=errusage
######################################################################
-include $(topsrcdir)/automake.tail.mk
+include $(topsrcdir)/build-aux/Makefile.tail.mk
diff --git a/src/librefetch/Makefile b/src/librefetch/Makefile
index 26ee2ee..b40c15b 100644
--- a/src/librefetch/Makefile
+++ b/src/librefetch/Makefile
@@ -1,5 +1,5 @@
include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk
-include $(topsrcdir)/automake.head.mk
+include $(topsrcdir)/build-aux/Makefile.head.mk
libretools-bins = librefetch librefetch-install
libretools-confs += librefetch-makepkg.conf
@@ -10,4 +10,4 @@ pots = $(libretools-bins)
$(outdir)/librefetch-install: $(var)pkgconfdir
$(outdir)/librefetch-makepkg.conf: $(var)bindir
-include $(topsrcdir)/automake.tail.mk
+include $(topsrcdir)/build-aux/Makefile.tail.mk
diff --git a/src/toru/Makefile b/src/toru/Makefile
index 2903f4a..a1b7765 100644
--- a/src/toru/Makefile
+++ b/src/toru/Makefile
@@ -1,4 +1,4 @@
include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk
-include $(topsrcdir)/automake.head.mk
+include $(topsrcdir)/build-aux/Makefile.head.mk
-include $(topsrcdir)/automake.tail.mk
+include $(topsrcdir)/build-aux/Makefile.tail.mk
diff --git a/src/xbs-abs/Makefile b/src/xbs-abs/Makefile
index 248848f..65be914 100644
--- a/src/xbs-abs/Makefile
+++ b/src/xbs-abs/Makefile
@@ -1,5 +1,5 @@
include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk
-include $(topsrcdir)/automake.head.mk
+include $(topsrcdir)/build-aux/Makefile.head.mk
pkgconfdir = $(sysconfdir)/xbs
pkglibexecdir = $(libexecdir)/xbs
@@ -8,8 +8,8 @@ libretools-bins =
libretools-libexecs = helper-abs
pots += $(_helpers)
devtools-files += $(addsuffix .in,$(_helpers))
-am_out_files += $(_helpers)
-am_sys_files += $(addprefix $(pkglibexecdir)/helper-abs.d/,$(_helpers))
+std.out_files += $(_helpers)
+std.sys_files += $(addprefix $(pkglibexecdir)/helper-abs.d/,$(_helpers))
$(outdir)/commitpkg: $(srcdir)/commitpkg.in
@echo "OUT $@"
@@ -24,4 +24,4 @@ $(outdir)/commitpkg: $(srcdir)/commitpkg.in
$(DESTDIR)$(pkglibexecdir)/helper-abs.d/%: $(srcdir)/%
install -Dm755 '$<' '$@'
-include $(topsrcdir)/automake.tail.mk
+include $(topsrcdir)/build-aux/Makefile.tail.mk
diff --git a/src/xbs-abslibre/Makefile b/src/xbs-abslibre/Makefile
index c946d5d..71da5e7 100644
--- a/src/xbs-abslibre/Makefile
+++ b/src/xbs-abslibre/Makefile
@@ -1,8 +1,8 @@
include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk
-include $(topsrcdir)/automake.head.mk
+include $(topsrcdir)/build-aux/Makefile.head.mk
pkglibexecdir = $(libexecdir)/xbs
libretools-bins =
libretools-libexecs = helper-abslibre
-include $(topsrcdir)/automake.tail.mk
+include $(topsrcdir)/build-aux/Makefile.tail.mk
diff --git a/src/xbs/Makefile b/src/xbs/Makefile
index 974586e..24067e9 100644
--- a/src/xbs/Makefile
+++ b/src/xbs/Makefile
@@ -1,5 +1,5 @@
include $(dir $(lastword $(MAKEFILE_LIST)))/../../config.mk
-include $(topsrcdir)/automake.head.mk
+include $(topsrcdir)/build-aux/Makefile.head.mk
pkgconfdir = $(sysconfdir)/xbs
-include $(topsrcdir)/automake.tail.mk
+include $(topsrcdir)/build-aux/Makefile.tail.mk
diff --git a/write-ifchanged b/write-ifchanged
deleted file mode 100755
index c65fa16..0000000
--- a/write-ifchanged
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/env bash
-
-outfile=$1
-tmpfile="$(dirname "$outfile")/.tmp${outfile##*/}"
-
-cat > "$tmpfile" || exit $?
-if cmp -s "$tmpfile" "$outfile"; then
- rm -f "$tmpfile" || :
-else
- mv -f "$tmpfile" "$outfile"
-fi