From d3486f6c1aa38be431f865e406e4cddd69d88d59 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Fri, 7 Dec 2012 15:11:10 -0500 Subject: make the Makefile(s)... mortal-friendly I did this by making the assumption that the files in a directory are dividable into 2 groups: those that are executable, and those that aren't, and that all of the files in each group all go in the same folder when installed. These install directories are configurable per source directory with $(libre_execdir) and $(libre_datadir) --- Makefile | 46 +++++++++++++++------------------------------ common.mk | 37 ++++++++++++++++++++++++++++++++++++ doc/Makefile | 2 ++ src/Makefile | 3 +++ src/abslibre-tools/Makefile | 3 +++ src/chroot-tools/Makefile | 3 +++ src/fullpkg/Makefile | 3 +++ src/mips64el-tools/Makefile | 3 +++ src/pr-tools/Makefile | 3 +++ src/toru/Makefile | 3 +++ 10 files changed, 75 insertions(+), 31 deletions(-) create mode 100644 common.mk create mode 100644 doc/Makefile create mode 100644 src/Makefile create mode 100644 src/abslibre-tools/Makefile create mode 100644 src/chroot-tools/Makefile create mode 100644 src/fullpkg/Makefile create mode 100644 src/mips64el-tools/Makefile create mode 100644 src/pr-tools/Makefile create mode 100644 src/toru/Makefile diff --git a/Makefile b/Makefile index 802117a..4e255ef 100644 --- a/Makefile +++ b/Makefile @@ -15,52 +15,36 @@ docdir=$(datarootdir)/doc ################################################################################ +# these are directories pseudo-packages=abslibre-tools chroot-tools fullpkg mips64el-tools pr-tools toru -packages=libretools libretools-pr libretools-mips64el +# these are the resulting packages +packages=libretools libretools-pr libretools-mips64el +# and which directories they contains libretools=abslibre-tools chroot-tools fullpkg toru misc libretools-pr=pr-tools libretools-mips64el=mips64el-tools ################################################################################ -all: PHONY libretools +all: PHONY build +build: PHONY build-libretools build-doc install: PHONY install-libretools install-doc -install-doc: $(patsubst doc/%,$(DESTDIR)$(docdir)/libretools/%,$(wildcard doc/*)) - -$(DESTDIR)$(docdir)/libretools/%: doc/% - install -Dm644 '$<' '$@' - -$(DESTDIR)$(sysconfdir)/libretools.conf: src/libretools.conf - install -Dm644 '$<' '$@' +%-doc: PHONY doc + $(MAKE) -C doc $* +%-misc: PHONY src + $(MAKE) -C src $* -$(foreach pkg,$(pseudo-packages) ., \ -$(eval \ -$(DESTDIR)$(bindir)/%: src/$(pkg)/%; \ - install -Dm755 '$$<' '$$@' \ -) \ -$(eval \ -$(DESTDIR)$(sysconfdir)/libretools.d/%: src/$(pkg)/%; \ - install -Dm644 '$$<' '$$@' \ -)) - -################################################################################ - -progs = $(shell find src/$1 -maxdepth 1 -type f -executable -printf '%f\n') -confs = $(shell find src/$1 -maxdepth 1 -type f -not -executable -printf '%f\n') -files = $(addprefix $(DESTDIR)$2/,$(call progs,$1)) \ - $(addprefix $(DESTDIR)$3/,$(call confs,$1)) +build-%: PHONY src/% + $(MAKE) -C src/$* build +install-%: PHONY src/% + $(MAKE) -C src/$* install .SECONDEXPANSION: -$(packages): %: PHONY $$($$*) +$(addprefix build-, $(packages)): build-%: PHONY $$(addprefix build-, $$($$*)) $(addprefix install-,$(packages)): install-%: PHONY $$(addprefix install-,$$($$*)) -$(pseudo-packages) misc: %: PHONY -$(addprefix install-,$(pseudo-packages)): install-%: PHONY $$(call files,$$*,$(bindir),$(sysconfdir)/libretools.d) -# special cases -install-misc: PHONY $(call files,.,$(bindir),$(sysconfdir)) - ################################################################################ FORCE: PHONY diff --git a/common.mk b/common.mk new file mode 100644 index 0000000..6248b80 --- /dev/null +++ b/common.mk @@ -0,0 +1,37 @@ +# Configuration +DESTDIR= + +#prefix=/usr/local +prefix=/usr +exec_prefix=$(prefix) +datarootdir=$(prefix)/share + +bindir=$(exec_prefix)/bin +sbindir=$(exec_prefix)/sbin +#sysconfdir=$(prefix)/etc +sysconfdir=/etc +datadir=$(datarootdir) +docdir=$(datarootdir)/doc + +################################################################################ +progs = $(shell find . -maxdepth 1 -type f -executable -printf '%f\n') +confs = $(shell find . -maxdepth 1 -type f -not -executable -printf '%f\n'|fgrep -v Makefile) +files = $(addprefix $(DESTDIR)$(libre_execdir)/,$(progs)) \ + $(addprefix $(DESTDIR)$(libre_datadir)/,$(confs)) + +all: PHONY build + +build: PHONY + +install: PHONY $(files) + +$(DESTDIR)$(libre_execdir)/%: % + install -Dm755 '$<' '$@' +$(DESTDIR)$(libre_datadir)/%: % + install -Dm755 '$<' '$@' + +################################################################################ + +FORCE: PHONY +PHONY: +.PHONY: FORCE PHONY diff --git a/doc/Makefile b/doc/Makefile new file mode 100644 index 0000000..7af3750 --- /dev/null +++ b/doc/Makefile @@ -0,0 +1,2 @@ +libre_datadir=$(docdir)/libretools +include ../common.mk diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 0000000..ff8d399 --- /dev/null +++ b/src/Makefile @@ -0,0 +1,3 @@ +libre_execdir=$(bindir) +libre_datadir=$(sysconfdir) +include ../common.mk diff --git a/src/abslibre-tools/Makefile b/src/abslibre-tools/Makefile new file mode 100644 index 0000000..f2cec54 --- /dev/null +++ b/src/abslibre-tools/Makefile @@ -0,0 +1,3 @@ +libre_execdir=$(bindir) +libre_datadir=$(sysconfdir)/libretools.d +include ../../common.mk diff --git a/src/chroot-tools/Makefile b/src/chroot-tools/Makefile new file mode 100644 index 0000000..3ae95ea --- /dev/null +++ b/src/chroot-tools/Makefile @@ -0,0 +1,3 @@ +libre_execdir=$(sbindir) +libre_datadir=$(sysconfdir)/libretools.d +include ../../common.mk diff --git a/src/fullpkg/Makefile b/src/fullpkg/Makefile new file mode 100644 index 0000000..f2cec54 --- /dev/null +++ b/src/fullpkg/Makefile @@ -0,0 +1,3 @@ +libre_execdir=$(bindir) +libre_datadir=$(sysconfdir)/libretools.d +include ../../common.mk diff --git a/src/mips64el-tools/Makefile b/src/mips64el-tools/Makefile new file mode 100644 index 0000000..f2cec54 --- /dev/null +++ b/src/mips64el-tools/Makefile @@ -0,0 +1,3 @@ +libre_execdir=$(bindir) +libre_datadir=$(sysconfdir)/libretools.d +include ../../common.mk diff --git a/src/pr-tools/Makefile b/src/pr-tools/Makefile new file mode 100644 index 0000000..f2cec54 --- /dev/null +++ b/src/pr-tools/Makefile @@ -0,0 +1,3 @@ +libre_execdir=$(bindir) +libre_datadir=$(sysconfdir)/libretools.d +include ../../common.mk diff --git a/src/toru/Makefile b/src/toru/Makefile new file mode 100644 index 0000000..f2cec54 --- /dev/null +++ b/src/toru/Makefile @@ -0,0 +1,3 @@ +libre_execdir=$(bindir) +libre_datadir=$(sysconfdir)/libretools.d +include ../../common.mk -- cgit v1.2.3-54-g00ecf