80 lines
1.9 KiB
Makefile
80 lines
1.9 KiB
Makefile
# Settings
|
|
PROGRAM := MMINER
|
|
SRCDIR := src
|
|
TARGETOBJDIR := obj
|
|
TEMPLATE := apple2/template.po
|
|
DISK := mminer.po
|
|
VOLUME := MANIC
|
|
CADIUS := $(CADIUS)
|
|
ORCA := $(ORACInclude)
|
|
SED := $(SED)
|
|
AWK := $(AWK)
|
|
EMUDIR := $(APPLEWIN_HOME)
|
|
EMU := applewin.exe -d1 $(DISK)
|
|
|
|
|
|
all: $(PROGRAM)
|
|
|
|
ifeq ($(shell echo),)
|
|
MKDIR = mkdir -p $1
|
|
RMDIR = rmdir $1
|
|
RMFILES = $(RM) $1
|
|
CP = cp $1
|
|
else
|
|
MKDIR = mkdir $(subst /,\,$1)
|
|
RMDIR = rmdir /S /Q $(subst /,\,$1)
|
|
RMFILES = $(if $1,del /f /q $(subst /,\,$1))
|
|
CP = copy $(subst /,\,$1)
|
|
endif
|
|
|
|
define NEWLINE
|
|
|
|
|
|
endef
|
|
|
|
SOURCES += $(wildcard $(SRCDIR)/*.asm)
|
|
SOURCES := $(filter-out $(SRCDIR)/mminer.asm,$(SOURCES))
|
|
SOURCES := $(SRCDIR)/mminer.asm $(SOURCES)
|
|
OBJECTS += $(subst .asm,.ROOT,$(subst $(SRCDIR),$(TARGETOBJDIR),$(SOURCES)))
|
|
|
|
vpath %.asm $(SRCDIR)
|
|
|
|
$(TARGETOBJDIR):
|
|
$(call MKDIR,$@)
|
|
|
|
$(TARGETOBJDIR)/%.ROOT: %.asm $(wildcard $(SRCDIR)/*.s) $(wildcard $(SRCDIR)/*.mac) | $(TARGETOBJDIR)
|
|
iix assemble $< keep=$(subst /,:,$(basename $@))
|
|
|
|
$(PROGRAM): $(OBJECTS)
|
|
-$(call RMFILES,$(PROGRAM))
|
|
iix link +S $(OBJECTS) keep=$@ > debug0.map
|
|
iix makebin $@
|
|
|
|
.PHONY: all dsk test macros
|
|
|
|
all: $(PROGRAM)
|
|
|
|
dsk: $(PROGRAM)
|
|
$(call CP,$(TEMPLATE) $(DISK))
|
|
$(CADIUS) ADDFILE $(DISK) /$(VOLUME) ./$(PROGRAM)
|
|
|
|
test: dsk
|
|
$(SED) '9{:a;N;$$!ba;s/\n/ /g; s/\(\w\+\) . .. .. \(\w\+\)\s*/0x\1 \2\n/g;}' debug0.map > temp.map
|
|
$(AWK) --non-decimal-data 'NR>8 {$$1 += 0x4000; printf "%x %s\n", $$1, $$2}' temp.map > debug.map
|
|
$(call RMFILES,temp.map)
|
|
$(call CP,debug.map $(EMUDIR)/A2_USER1.SYM)
|
|
$(EMUDIR)/$(EMU)
|
|
|
|
macros:
|
|
$(foreach FILE, $(SOURCES), iix macgen $(FILE) $(subst .asm,.mac,$(FILE)) $(ORACInclude)/m16= src/Macros/macros.s ${NEWLINE})
|
|
|
|
clean:
|
|
-$(call RMFILES,$(OBJECTS))
|
|
-$(call RMFILES,$(addsuffix .A,$(basename $(OBJECTS))))
|
|
-$(call RMFILES,debug*.map)
|
|
-$(call RMFILES,$(PROGRAM))
|
|
-$(call RMFILES,$(DISK))
|
|
|
|
zap: clean
|
|
-$(call RMDIR,$(TARGETOBJDIR))
|