global: Makefiles now support parallel compiles.
[h316.git] / programs / punchomat / Makefile
index 4704c66a790efc65497d7043826287f5bbc9437d..ead349c2971a3d0188d051a8e760fd8730accae8 100644 (file)
@@ -1,20 +1,27 @@
-# Makefile für Apfelmännchenprogramm
+# Universal Makefile for X16 code
 
-ASM=$(H316)/bin/asm
-FRTN=$(H316)/bin/frtn
+ASM_CMD=$(H316)/bin/asm
+FRTN_CMD=$(H316)/bin/frtn
+SRC_DIR=src
+BUILD_DIR=build
 
-build/apfel2.obj : src/apfel2.f
-       @if [ ! -d build ]; then mkdir build; fi
-       $(FRTN) src/apfel2.f && mv apfel2.obj build
+PROGRAMS=$(foreach n, $(wildcard $(SRC_DIR)/*.f $(SRC_DIR)/*.asm),$(notdir $(basename $(n))))
 
-clean :
-       @rm -rf *.obj build/ *.lst *.go *.par
+default: all
+
+all: $(foreach prog, $(PROGRAMS),$(BUILD_DIR)/$(prog).obj)
 
-.PHONY: default clean
+$(BUILD_DIR)/%.obj:$(SRC_DIR)/%.f
+       @if [ ! -d $(BUILD_DIR) ]; then mkdir -p $(BUILD_DIR); fi
+       @$(FRTN_CMD) "$(subst $$,\$$,$^)" &&\
+        mv "$(notdir $(basename $(subst $$,\$$,$^))).obj" $(BUILD_DIR)
 
+$(BUILD_DIR)/%.obj:$(SRC_DIR)/%.asm
+       @if [ ! -d $(BUILD_DIR) ]; then mkdir -p $(BUILD_DIR); fi
+       @$(ASM_CMD) "$(subst $$,\$$,$^)" &&\
+        mv "$(notdir $(basename "\"$(subst $$,\$$,$^)\"")).obj" $(BUILD_DIR)
 
-%.obj:%.f
-       $(FRTN) $^
+clean :
+       @rm -rf *.obj $(BUILD_DIR)/ *.lst *.go *.par
 
-%.obj:%.asm
-       $(ASM) $^
\ No newline at end of file
+.PHONY: default clean all