1
0
mirror of https://github.com/cc65/cc65.git synced 2024-06-07 07:29:33 +00:00

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