From d1bea27d1bb89d406471fc02515a1f37e13df191 Mon Sep 17 00:00:00 2001 From: Ivan Tatarinov Date: Mon, 26 Apr 2021 11:46:39 +0300 Subject: [PATCH] sdk: followed GNU standards in `src/tools/Makefile` --- sdk/src/Makefile | 57 +++++++++------------------------------- sdk/src/tools/.gitignore | 17 +----------- sdk/src/tools/Makefile | 47 ++++++++++++++++++++++++++++----- 3 files changed, 54 insertions(+), 67 deletions(-) diff --git a/sdk/src/Makefile b/sdk/src/Makefile index 6b846a7..5ef4c9a 100644 --- a/sdk/src/Makefile +++ b/sdk/src/Makefile @@ -247,61 +247,30 @@ dist-clean-zx7b: clean-zx7b # tools -INSTALLED_TOOLS:=\ - $(INSTALLDIR)/bin2hex$(EXESUFFIX)\ - $(INSTALLDIR)/fcut$(EXESUFFIX)\ - $(INSTALLDIR)/fpad$(EXESUFFIX)\ - $(INSTALLDIR)/fpoke$(EXESUFFIX)\ - $(INSTALLDIR)/rcs$(EXESUFFIX)\ - $(INSTALLDIR)/GenRom$(EXESUFFIX)\ - $(INSTALLDIR)/AddItem$(EXESUFFIX)\ - $(INSTALLDIR)/Bit2Bin$(EXESUFFIX) - -.PHONY: local-tools clean-tools - -local-tools: $(INSTALLED_TOOLS) +.PHONY: local-tools clean-tools distclean-tools ifeq ($(_DoBuild),1) -$(INSTALLDIR)/bin2hex$(EXESUFFIX): tools/bin2hex$(EXESUFFIX) - cp $< $@ - -$(INSTALLDIR)/fcut$(EXESUFFIX): tools/fcut$(EXESUFFIX) - cp $< $@ - -$(INSTALLDIR)/fpad$(EXESUFFIX): tools/fpad$(EXESUFFIX) - cp $< $@ - -$(INSTALLDIR)/fpoke$(EXESUFFIX): tools/fpoke$(EXESUFFIX) - cp $< $@ - -$(INSTALLDIR)/rcs$(EXESUFFIX): tools/rcs$(EXESUFFIX) - cp $< $@ - -$(INSTALLDIR)/GenRom$(EXESUFFIX): tools/GenRom$(EXESUFFIX) - cp $< $@ - -$(INSTALLDIR)/AddItem$(EXESUFFIX): tools/AddItem$(EXESUFFIX) - cp $< $@ - -$(INSTALLDIR)/Bit2Bin$(EXESUFFIX): tools/Bit2Bin$(EXESUFFIX) - cp $< $@ - -tools/%$(EXESUFFIX): | tools - $(MAKE) -w -C $| $(@F) +local-tools: | tools + $(MAKE) -w -C $| prefix=../.. install clean-tools: | tools $(MAKE) -w -C $| clean - rm -f $(INSTALLED_TOOLS) + $(MAKE) -w -C $| prefix=../.. uninstall + +distclean-tools: | tools + $(MAKE) -w -C $| distclean + $(MAKE) -w -C $| prefix=../.. uninstall else +local-tools:; + clean-tools:; -endif +distclean-tools:; -.PHONY: dist-clean-tools -dist-clean-tools: clean-tools +endif .PHONY: clean ifeq ($(_DoClean),1) @@ -312,7 +281,7 @@ endif .PHONY: dist-clean ifeq ($(_DoClean),1) -dist-clean: dist-clean-sjasmplus dist-clean-z88dk dist-clean-zx7b dist-clean-tools +dist-clean: dist-clean-sjasmplus dist-clean-z88dk dist-clean-zx7b distclean-tools else dist-clean: dist-clean-sjasmplus dist-clean-z88dk endif diff --git a/sdk/src/tools/.gitignore b/sdk/src/tools/.gitignore index b012b0f..82e29a6 100644 --- a/sdk/src/tools/.gitignore +++ b/sdk/src/tools/.gitignore @@ -2,19 +2,4 @@ # # SPDX-License-Identifier: CC0-1.0 -bin2hex -bin2hex.exe -fcut -fcut.exe -fpad -fpad.exe -fpoke -fpoke.exe -rcs -rcs.exe -GenRom -GenRom.exe -AddItem -AddItem.exe -Bit2Bin -Bit2Bin.exe +build diff --git a/sdk/src/tools/Makefile b/sdk/src/tools/Makefile index c168e7e..14ce252 100644 --- a/sdk/src/tools/Makefile +++ b/sdk/src/tools/Makefile @@ -7,20 +7,30 @@ # * GNU on Windows NT (using MinGW/MSYS/Cygwin/WSL) # # Build: -# make [BUILD=] [] +# make [BUILD=] [ ...] +# Install / Uninstall: +# make [BUILD=] [prefix=] install | uninstall # Clean: # make [BUILD=] clean +# make distclean # # where: # is one of: mingw32, mingw64. -# is one of values for TARGETS variable (see below). +# is one of values for `BINS' variable prefixed with "build/" +# (see target `all' below). +# is a prefix directory to install files into. # # Notes: -# BUILD variable may be set in user's environment. +# `BUILD', `prefix' variables may be set in user's environment. include ../../common.mk -TARGETS:=\ +srcdir = . +prefix ?= /usr/local +exec_prefix ?= $(prefix) +bindir ?= $(exec_prefix)/bin + +BINS:=\ bin2hex$(EXESUFFIX)\ fcut$(EXESUFFIX)\ fpad$(EXESUFFIX)\ @@ -31,11 +41,34 @@ TARGETS:=\ Bit2Bin$(EXESUFFIX) .PHONY: all -all: $(TARGETS) +all: $(foreach t,$(BINS),build/$(t)) -%$(EXESUFFIX): %.c Makefile +build\ +$(DESTDIR)$(bindir): + mkdir -p $@ + +build/%$(EXESUFFIX): $(srcdir)/%.c Makefile | build $(CC) $(CFLAGS) -o $@ $< +.PHONY: install +install: $(foreach t,$(BINS),$(DESTDIR)$(bindir)/$(t)) + +# $1 = target +define install_bin_rule = +$$(DESTDIR)$$(bindir)/$1: build/$1 | $$(DESTDIR)$$(bindir) + cp $$< $$@ +endef + +$(foreach t,$(BINS),$(eval $(call install_bin_rule,$(t)))) + +.PHONY: uninstall +uninstall: + rm -f $(foreach t,$(BINS),$(DESTDIR)$(exec_prefix)/bin/$(t)) + .PHONY: clean clean: - rm -f $(TARGETS) + rm -f $(foreach t,$(BINS),build/$(t)) + +.PHONY: distclean +distclean: + rm -rf build/*