global: Makefiles now support parallel compiles.
[h316.git] / programs / tools / Makefile
index 436f1d57917f8ecaeaededf88c480175440adb2e..ead349c2971a3d0188d051a8e760fd8730accae8 100644 (file)
@@ -1,32 +1,27 @@
-# Makefile for assembler sources
+# Universal Makefile for X16 code
 
-SRC_DIR = src
-OBJ_DIR = build
-LIB_DIR = lib
+ASM_CMD=$(H316)/bin/asm
+FRTN_CMD=$(H316)/bin/frtn
+SRC_DIR=src
+BUILD_DIR=build
 
-MODULES = binal cleanup cleanup2
+PROGRAMS=$(foreach n, $(wildcard $(SRC_DIR)/*.f $(SRC_DIR)/*.asm),$(notdir $(basename $(n))))
 
-FRTN_COMMAND = frtn
-ASM_COMMAND  = asm
+default: all
 
-SRC_FILES = $(foreach obj, $(MODULES),$(obj).asm)
-OBJ_FILES = $(SRC_FILES:.asm=.obj)
-OBJ_FILES_FULL = $(foreach file, $(OBJ_FILES),$(OBJ_DIR)/$(file))
+all: $(foreach prog, $(PROGRAMS),$(BUILD_DIR)/$(prog).obj)
 
-##########################################
+$(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)
 
-obj : $(OBJ_FILES_FULL)
+$(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_FILES_FULL):$(OBJ_DIR)/%.obj:$(SRC_DIR)/%.asm
-       @echo Building: $(subst $$,\$$,$@)
-       @if [ ! -d $(OBJ_DIR) ]; then mkdir $(OBJ_DIR); fi
-       @ rm -f $@
-       @ cd $(OBJ_DIR) && $(ASM_COMMAND) ../$(subst $$,\$$,$^)
-#      @ cd $(OBJ_DIR) && ldc -s -l $(notdir $(subst $$,\$$,$@))
-
-clean:
-       @echo Cleaning up.
-       @rm -rf $(OBJ_DIR) $(LIB_DIR)  *.lst *.go 
-
-.PHONY: clean all org obj libs
+clean :
+       @rm -rf *.obj $(BUILD_DIR)/ *.lst *.go *.par
 
+.PHONY: default clean all