From: Oliver Schmidt Date: Wed, 1 Jun 2016 21:45:27 +0000 (+0200) Subject: Removed shell for-loop. X-Git-Tag: V2.16~122 X-Git-Url: https://git.sur5r.net/?p=cc65;a=commitdiff_plain;h=24256256fb772ed34c5197bcfba109278c471052 Removed shell for-loop. Just a few of the many reasons why shell for-loops have no place in (GNUmake) Makefiles: * They don't conform to https://www.gnu.org/software/make/manual/html_node/Utilities-in-Makefiles.html * They break Windows builds for sure * They don't fit to make's approach of working with sets * They break make parallelism --- diff --git a/samples/Makefile b/samples/Makefile index fa3777000..5a75c7f4b 100644 --- a/samples/Makefile +++ b/samples/Makefile @@ -35,8 +35,8 @@ ifdef CC65_HOME installdir = $(CC65_HOME) endif -MOUS = $(installdir)/target/$(SYS)/drv/mou/$(SYS)*.mou -TGI = $(installdir)/target/$(SYS)/drv/tgi/$(SYS)*.tgi +MOUS := $(wildcard $(installdir)/target/$(SYS)/drv/mou/$(SYS)*.mou) +TGI := $(wildcard $(installdir)/target/$(SYS)/drv/tgi/$(SYS)*.tgi) CLIB = --lib $(SYS).lib CL = cl65 CC = cc65 @@ -46,8 +46,8 @@ LD = ld65 else # "samples/" is a part of a complete source tree. export CC65_HOME := $(abspath ..) -MOUS = ../target/$(SYS)/drv/mou/$(SYS)*.mou -TGI = ../target/$(SYS)/drv/tgi/$(SYS)*.tgi +MOUS := $(wildcard ../target/$(SYS)/drv/mou/$(SYS)*.mou) +TGI := $(wildcard ../target/$(SYS)/drv/tgi/$(SYS)*.tgi) CLIB = ../lib/$(SYS).lib CL = ../bin/cl65 CC = ../bin/cc65 @@ -140,14 +140,16 @@ ovrldemo: overlaydemo.o d64: samples.d64 +define D64_WRITE_recipe + +$(C1541) -attach $@ -write $(file) $(notdir $(file)) >$(NULLDEV) + +endef # D64_WRITE_recipe + samples.d64: samples @$(C1541) -format samples,AA d64 $@ >$(NULLDEV) - @for exe in $(EXELIST); do\ - $(C1541) -attach $@ -write $$exe >$(NULLDEV) || exit $$?;\ - done - @for mod in $(TGI) $(MOUS); do\ - $(C1541) -attach $@ -write $$mod >$(NULLDEV) || exit $$?;\ - done + $(foreach file,$(EXELIST),$(D64_WRITE_recipe)) + $(foreach file,$(TGI) $(MOUS),$(D64_WRITE_recipe)) # -------------------------------------------------------------------------- # Installation rules