-# 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 $(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 $(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