mirror of
https://github.com/cc65/cc65.git
synced 2025-04-01 02:31:56 +00:00
Added support for building targetutils.
This commit is contained in:
parent
bf59515a9e
commit
092653cb5b
@ -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
|
||||
|
7
libsrc/apple2/targetutil/Makefile.inc
Normal file
7
libsrc/apple2/targetutil/Makefile.inc
Normal 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
|
BIN
libsrc/apple2/targetutil/loader.o
Normal file
BIN
libsrc/apple2/targetutil/loader.o
Normal file
Binary file not shown.
9
libsrc/geos-apple/targetutil/Makefile.inc
Normal file
9
libsrc/geos-apple/targetutil/Makefile.inc
Normal 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
|
@ -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
|
||||
|
@ -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)
|
||||
|
||||
|
||||
|
@ -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)
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user