Added support for building targetutils.

This commit is contained in:
Oliver Schmidt
2013-05-09 01:12:26 +02:00
parent bf59515a9e
commit 092653cb5b
11 changed files with 74 additions and 165 deletions

View File

@@ -74,6 +74,9 @@ MKINC = $(GEOS) \
atari \ atari \
nes nes
TARGETUTIL = apple2 \
geos-apple
GEOSDIRS = common \ GEOSDIRS = common \
conio \ conio \
disk \ disk \
@@ -90,21 +93,23 @@ GEOSDIRS = common \
ifeq ($(TARGET),apple2enh) ifeq ($(TARGET),apple2enh)
OBJPFX = a2 OBJPFX = a2
DRVPFX = a2e DRVPFX = a2e
DIRS = apple2 SRCDIR = apple2
else else
DIRS = $(TARGET) SRCDIR = $(TARGET)
endif endif
SRCDIRS = $(SRCDIR)
ifeq ($(TARGET),$(filter $(TARGET),$(CBMS))) ifeq ($(TARGET),$(filter $(TARGET),$(CBMS)))
DIRS += cbm SRCDIRS += cbm
endif endif
ifeq ($(TARGET),$(filter $(TARGET),$(GEOS))) ifeq ($(TARGET),$(filter $(TARGET),$(GEOS)))
DIRS += $(addprefix $(TARGET)/, $(GEOSDIRS)) SRCDIRS += $(addprefix $(TARGET)/, $(GEOSDIRS))
DIRS += $(addprefix geos-common/,$(GEOSDIRS)) SRCDIRS += $(addprefix geos-common/,$(GEOSDIRS))
endif endif
DIRS += common \ SRCDIRS += common \
conio \ conio \
dbg \ dbg \
em \ em \
@@ -115,34 +120,38 @@ DIRS += common \
tgi \ tgi \
zlib zlib
vpath %.s $(DIRS) vpath %.s $(SRCDIRS)
vpath %.c $(DIRS) vpath %.c $(SRCDIRS)
OBJS := $(patsubst %.s,%.o,$(foreach dir,$(DIRS),$(wildcard $(dir)/*.s))) OBJS := $(patsubst %.s,%.o,$(foreach dir,$(SRCDIRS),$(wildcard $(dir)/*.s)))
OBJS += $(patsubst %.c,%.o,$(foreach dir,$(DIRS),$(wildcard $(dir)/*.c))) OBJS += $(patsubst %.c,%.o,$(foreach dir,$(SRCDIRS),$(wildcard $(dir)/*.c)))
OBJS := $(addprefix ../wrk/$(TARGET)/,$(sort $(notdir $(OBJS)))) OBJS := $(addprefix ../wrk/$(TARGET)/,$(sort $(notdir $(OBJS))))
DEPS = $(OBJS:.o=.d) DEPS = $(OBJS:.o=.d)
EXTRA_SRCPAT = $(firstword $(DIRS))/extra/%.s EXTRA_SRCPAT = $(SRCDIR)/extra/%.s
EXTRA_OBJPAT = ../lib/$(TARGET)-%.o EXTRA_OBJPAT = ../lib/$(TARGET)-%.o
EXTRA_OBJS := $(patsubst $(EXTRA_SRCPAT),$(EXTRA_OBJPAT),$(wildcard $(firstword $(DIRS))/extra/*.s)) EXTRA_OBJS := $(patsubst $(EXTRA_SRCPAT),$(EXTRA_OBJPAT),$(wildcard $(SRCDIR)/extra/*.s))
ZPOBJ = ../wrk/$(TARGET)/zeropage.o ZPOBJ = ../wrk/$(TARGET)/zeropage.o
ifeq ($(TARGET),$(filter $(TARGET),$(EXTZP))) ifeq ($(TARGET),$(filter $(TARGET),$(EXTZP)))
ZPOBJ += ../wrk/$(TARGET)/extzp.o ZPOBJ += ../wrk/$(TARGET)/extzp.o
endif endif
ifeq ($(TARGET),$(filter $(TARGET),$(MKINC))) ifeq ($(SRCDIR),$(filter $(SRCDIR),$(MKINC)))
include $(TARGET)/Makefile.inc include $(SRCDIR)/Makefile.inc
endif
ifeq ($(SRCDIR),$(filter $(SRCDIR),$(TARGETUTIL)))
include $(SRCDIR)/targetutil/Makefile.inc
endif endif
########## ##########
define DRVTYPE_template define DRVTYPE_template
$1_SRCDIR = $$(firstword $$(DIRS))/$1 $1_SRCDIR = $$(SRCDIR)/$1
$1_OBJDIR = ../wrk/$$(TARGET)/$1 $1_OBJDIR = ../wrk/$$(TARGET)/$1
$1_DRVDIR = ../$1 $1_DRVDIR = ../$1
@@ -158,14 +167,11 @@ $1_STCS = $$(patsubst $$($1_DRVPAT),$$($1_STCPAT),$$($1_DRVS))
$$($1_OBJS): | $$($1_OBJDIR) $$($1_OBJS): | $$($1_OBJDIR)
$$($1_OBJDIR):
@$$(call MKDIR,$$@)
$$($1_DRVPAT): $$($1_OBJPAT) $$(ZPOBJ) | $$($1_DRVDIR) $$($1_DRVPAT): $$($1_OBJPAT) $$(ZPOBJ) | $$($1_DRVDIR)
@echo $$(TARGET) - $$(@F) @echo $$(TARGET) - $$(@F)
@$$(LD) -o $$@ -t module $$^ @$$(LD) -o $$@ -t module $$^
$$($1_DRVDIR): $$($1_OBJDIR) $$($1_DRVDIR):
@$$(call MKDIR,$$@) @$$(call MKDIR,$$@)
$(TARGET): $$($1_DRVS) $(TARGET): $$($1_DRVS)
@@ -191,17 +197,32 @@ CC = $(if $(wildcard ../bin/cc65*),../bin/cc65,cc65)
CO = $(if $(wildcard ../bin/co65*),../bin/co65,co65) CO = $(if $(wildcard ../bin/co65*),../bin/co65,co65)
LD = $(if $(wildcard ../bin/ld65*),../bin/ld65,ld65) LD = $(if $(wildcard ../bin/ld65*),../bin/ld65,ld65)
../wrk/$(TARGET)/%.o: %.s | ../wrk/$(TARGET) ##########
define ASSEMBLE_recipe
@echo $(TARGET) - $< @echo $(TARGET) - $<
@$(CA) -t $(TARGET) $(AFLAGS) --create-dep $(@:.o=.d) -o $@ $< @$(CA) -t $(TARGET) $(AFLAGS) --create-dep $(@:.o=.d) -o $@ $<
../wrk/$(TARGET)/%.o: %.c | ../wrk/$(TARGET) endef
##########
define COMPILE_recipe
@echo $(TARGET) - $< @echo $(TARGET) - $<
@$(CC) -t $(TARGET) $(CFLAGS) --create-dep $(@:.o=.d) -o $(@:.o=.s) $< @$(CC) -t $(TARGET) $(CFLAGS) --create-dep $(@:.o=.d) -o $(@:.o=.s) $<
@$(CA) -t $(TARGET) -o $@ $(@:.o=.s) @$(CA) -t $(TARGET) -o $@ $(@:.o=.s)
../wrk/$(TARGET): endef
@$(call MKDIR,$@)
##########
../wrk/$(TARGET)/%.o: %.s | ../wrk/$(TARGET)
$(ASSEMBLE_recipe)
../wrk/$(TARGET)/%.o: %.c | ../wrk/$(TARGET)
$(COMPILE_recipe)
$(EXTRA_OBJPAT): $(EXTRA_SRCPAT) | ../lib $(EXTRA_OBJPAT): $(EXTRA_SRCPAT) | ../lib
@echo $(TARGET) - $< @echo $(TARGET) - $<
@@ -210,7 +231,7 @@ $(EXTRA_OBJPAT): $(EXTRA_SRCPAT) | ../lib
../lib/$(TARGET).lib: $(OBJS) | ../lib ../lib/$(TARGET).lib: $(OBJS) | ../lib
$(AR) a $@ $? $(AR) a $@ $?
../lib: ../wrk/$(TARGET) ../lib ../targetutil:
@$(call MKDIR,$@) @$(call MKDIR,$@)
$(TARGET): $(EXTRA_OBJS) ../lib/$(TARGET).lib $(TARGET): $(EXTRA_OBJS) ../lib/$(TARGET).lib

View File

@@ -0,0 +1,7 @@
../wrk/$(TARGET)/loader.o: $(SRCDIR)/targetutil/loader.s | ../wrk/$(TARGET)
$(ASSEMBLE_recipe)
../targetutil/loader.system: ../wrk/$(TARGET)/loader.o $(SRCDIR)/targetutil/loader.cfg | ../targetutil
$(LD) -o $@ -C $(filter %.cfg,$^) $(filter-out %.cfg,$^)
$(TARGET): ../targetutil/loader.system

Binary file not shown.

View File

@@ -0,0 +1,9 @@
../wrk/$(TARGET)/convert.o: TARGET = apple2enh
../wrk/$(TARGET)/convert.o: $(SRCDIR)/targetutil/convert.c | ../wrk/$(TARGET)
$(COMPILE_recipe)
../targetutil/convert.system: ../wrk/$(TARGET)/convert.o | ../targetutil
$(LD) -o $@ -C apple2enh-system.cfg $^ apple2enh.lib
$(TARGET): ../targetutil/convert.system

View File

@@ -1,32 +0,0 @@
#
# Makefile
#
# --------------------------------------------------------------------------
# Programs
# Subdirectories
SUBDIRS = apple2 geos-apple
# --------------------------------------------------------------------------
# List of executables. This list could be made target dependent by checking
# $(SYS).
.PHONY: all
all:
@for DIR in $(SUBDIRS); do \
$(MAKE) -C $${DIR} $(MAKEOPTS); \
done
.PHONY: clean
clean:
@for DIR in $(SUBDIRS); do \
$(MAKE) -C $${DIR} $(MAKEOPTS) clean; \
done
.PHONY: zap
zap:
@for DIR in $(SUBDIRS); do \
$(MAKE) -C $${DIR} $(MAKEOPTS) zap; \
done

View File

@@ -1,47 +0,0 @@
#
# Makefile
#
# --------------------------------------------------------------------------
# Programs
CC = ../../src/cc65/cc65
AS = ../../src/ca65/ca65
LD = ../../src/ld65/ld65
# Directories
CFGDIR = ../../src/ld65/cfg
INCDIR = ../../include
LIBDIR = ../../libsrc
# --------------------------------------------------------------------------
# List of executables.
EXELIST = loader.system
# --------------------------------------------------------------------------
# Targets
.PHONY: all
all: $(EXELIST)
loader.system: loader.s Makefile
$(AS) -t apple2 --forget-inc-paths loader.s
$(LD) -o $@ -C loader.cfg loader.o $(LIBDIR)/apple2.lib
# --------------------------------------------------------------------------
# Cleanup rules
.PHONY: clean
clean:
$(RM) *~ *.map *.o *.lbl
.PHONY: zap
zap: clean
$(RM) $(EXELIST)

View File

@@ -1,49 +0,0 @@
#
# Makefile
#
# --------------------------------------------------------------------------
# Programs
CC = ../../src/cc65/cc65
AS = ../../src/ca65/ca65
LD = ../../src/ld65/ld65
# Directories
CFGDIR = ../../src/ld65/cfg
INCDIR = ../../include
LIBDIR = ../../libsrc
# --------------------------------------------------------------------------
# List of executables.
EXELIST = convert.system
# --------------------------------------------------------------------------
# Targets
.PHONY: all
all: $(EXELIST)
convert.system: convert.c Makefile
$(CC) --forget-inc-paths -I $(INCDIR) -t apple2enh -O convert.c
$(AS) --forget-inc-paths convert.s
$(LD) -o $@ -C $(CFGDIR)/apple2enh-system.cfg convert.o $(LIBDIR)/apple2enh.lib
# --------------------------------------------------------------------------
# Cleanup rules
.PHONY: clean
clean:
$(RM) *~ *.map *.o *.s *.lbl
.PHONY: zap
zap: clean
$(RM) $(EXELIST)