From 24256256fb772ed34c5197bcfba109278c471052 Mon Sep 17 00:00:00 2001
From: Oliver Schmidt
Date: Wed, 1 Jun 2016 23:45:27 +0200
Subject: [PATCH] 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
---
samples/Makefile | 22 ++++++++++++----------
1 file changed, 12 insertions(+), 10 deletions(-)
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
--
2.39.5