From 092653cb5b038e51b1b439dece01e521750810ab Mon Sep 17 00:00:00 2001 From: Oliver Schmidt Date: Thu, 9 May 2013 01:12:26 +0200 Subject: [PATCH] Added support for building targetutils. --- libsrc/Makefile | 95 +++++++++++------- libsrc/apple2/targetutil/Makefile.inc | 7 ++ .../apple2/targetutil}/loader.cfg | 0 libsrc/apple2/targetutil/loader.o | Bin 0 -> 3203 bytes .../apple2/targetutil}/loader.s | 0 .../apple2/targetutil}/loader.txt | 0 libsrc/geos-apple/targetutil/Makefile.inc | 9 ++ .../geos-apple/targetutil}/convert.c | 0 targetutil/Makefile | 32 ------ targetutil/apple2/Makefile | 47 --------- targetutil/geos-apple/Makefile | 49 --------- 11 files changed, 74 insertions(+), 165 deletions(-) create mode 100644 libsrc/apple2/targetutil/Makefile.inc rename {targetutil/apple2 => libsrc/apple2/targetutil}/loader.cfg (100%) create mode 100644 libsrc/apple2/targetutil/loader.o rename {targetutil/apple2 => libsrc/apple2/targetutil}/loader.s (100%) rename {targetutil/apple2 => libsrc/apple2/targetutil}/loader.txt (100%) create mode 100644 libsrc/geos-apple/targetutil/Makefile.inc rename {targetutil/geos-apple => libsrc/geos-apple/targetutil}/convert.c (100%) delete mode 100644 targetutil/Makefile delete mode 100644 targetutil/apple2/Makefile delete mode 100644 targetutil/geos-apple/Makefile diff --git a/libsrc/Makefile b/libsrc/Makefile index 6208d37b9..ea4864994 100644 --- a/libsrc/Makefile +++ b/libsrc/Makefile @@ -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 diff --git a/libsrc/apple2/targetutil/Makefile.inc b/libsrc/apple2/targetutil/Makefile.inc new file mode 100644 index 000000000..37fec5d39 --- /dev/null +++ b/libsrc/apple2/targetutil/Makefile.inc @@ -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 diff --git a/targetutil/apple2/loader.cfg b/libsrc/apple2/targetutil/loader.cfg similarity index 100% rename from targetutil/apple2/loader.cfg rename to libsrc/apple2/targetutil/loader.cfg diff --git a/libsrc/apple2/targetutil/loader.o b/libsrc/apple2/targetutil/loader.o new file mode 100644 index 0000000000000000000000000000000000000000..5c18e0ea0535f00b1f9364052ec88edbdf467b66 GIT binary patch literal 3203 zcmZ8jYjjjs72f;a$xLPlw1g5Wuhe`z)%s|=mRPqAfFEFp~5 z*R0xc$!MV_Hs%q>_#q}^kHL8vh|7Q*Fg1Qu81YW!ixlrt{JhwuyBajJiA|oT1>P_E z^E{?$Y2ul@hC=R8=?>mbp@G4EOIqoZz>3G?e82FSS0D+$AoE&IZEP$g4sjRkCxc;b zC1Y}upA3Tc%H6P7h(7?|DzIyHQXd0dt+bv(GK|GfFojYBiWg;e@RMwD3g;Ld<_^(kQsp?sg_ep#kl>FdnK zI%1bAF&?k2cE~Mqh4?LgTug8AE@GP<%jQEenTbh`W8v2lPjDpK$z$f2K^!4I O( zhDDe36qaRy#1zB}h%a!M_#(?dZwr`bWk1&w-_G}t@kWGiBJ;2)N#ZZ?ei`Qsaf!^6 zRfC&|&v8s=hGWDr?OaLxZ+<}LXDXiOIWflMVF`wuBk8gWofvsSj92r!FtorKo*@$- z4_B`hGw}@E%9dz)TG>Ku@q8IFT5W`5z6@FATDg0JKO?0quAAOLe?`qDFv2P6zk$LX9cldo|oWj$}`0{El;Cv;B>jjKg!@L=B z4{=z)c&V4A>{0%(xCM+RpKUUtd-xIgJzD>|#G9~DcVm2$_)S1Be@OCDd?Un%B|EBk zhL_;vM5=f)6EDHZ@o{ketN6qg&yuycd=zJ49`7Np19Wl-hi@<_u}Dh{qQo&he35D( z9h2cK-Y{Kc1Mx>?J51}9OS};kt_v#2Ls%wp9V%=KCJ`vxkiQqJcX<|jai4XUxLF$6 zu&aps*wqb_mjv-}$e71-jRiTQf#-6{n9HAHju_WygE7wVtFnSbFDw2?@fV7JfJ}1$ z+d;Pi_G{O9?b;38tAZ32UX+VoQTh+X84#A@6y^Z;A$(JF7Xl~Llt5QEU`*prDwbjB zgsLAr3F)tzdPMtwulR&wBRZSlJ*M#upubl7Tg9D790B0hMZeNI4{6sH2-g5!()jO+ z&nd2i+zxm|WBk(T8KrXU<#P|v#b~n-X2Dhf9Ka9N*$>Z8<&j17Z58GUqfw}v0NW6L zAB^@WE(dK!0UPj7O~PxQUQjA8d7{rL9YjI|@gi7X)cmUv?*L7M{aKwqR{V?Nw-kS= z=AY=qzNE_U6y;4LpSytFU>TF?wKZUX#V#U-F6IG@${tYQViSCpPpTo2nVfEK_B6`xf6o8mVWuaZ8x z3(4Qncme2Fm2O6t2j~JkrK0>HB3gxt_rm!n6~CwW4aMuxcT(wZ6n_RE-3U0OLNA0i z#CdoRsCZg238AX=sN%zl4=DDabAw!TGuR4>`M#aYxlW7k&o2!Rm-||ljg~6?eWQ1d z4wRRb}jyB)LJO-I%{ zUOt`8)Og7*rzf2A+Ik93s6AUOMAsG51;5>P-TDrv;HT2Ar&dCJKbL^zD zSi76eJ3)rJGg(Q?7BflT@w|H9Z_g$jKe0TK@bl@7j_-?9U4JDK!iI!o=ZRq8pZ2&$$t9kq_@rgM2GAJZEMOiINR zRe};Tf}7IrXuzdErfZ{OFyz#&*2%4AJwH?IZgaeuInT-GeLK_R%i>042fRWtSCjM7 znL>>k-`%)%`>?g7v}vTN(JF1O42_If!=?T{Ytv9g_EI(?>4d#3mdR|(=R+X18yzp3 pvpbwnrs%p+UBZ?`A`vjGZ&cS%wW-zQI(@0(98q-=c(c5H=|9Kd=vDv# literal 0 HcmV?d00001 diff --git a/targetutil/apple2/loader.s b/libsrc/apple2/targetutil/loader.s similarity index 100% rename from targetutil/apple2/loader.s rename to libsrc/apple2/targetutil/loader.s diff --git a/targetutil/apple2/loader.txt b/libsrc/apple2/targetutil/loader.txt similarity index 100% rename from targetutil/apple2/loader.txt rename to libsrc/apple2/targetutil/loader.txt diff --git a/libsrc/geos-apple/targetutil/Makefile.inc b/libsrc/geos-apple/targetutil/Makefile.inc new file mode 100644 index 000000000..ff9429691 --- /dev/null +++ b/libsrc/geos-apple/targetutil/Makefile.inc @@ -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 diff --git a/targetutil/geos-apple/convert.c b/libsrc/geos-apple/targetutil/convert.c similarity index 100% rename from targetutil/geos-apple/convert.c rename to libsrc/geos-apple/targetutil/convert.c diff --git a/targetutil/Makefile b/targetutil/Makefile deleted file mode 100644 index ef20b64b0..000000000 --- a/targetutil/Makefile +++ /dev/null @@ -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 - diff --git a/targetutil/apple2/Makefile b/targetutil/apple2/Makefile deleted file mode 100644 index 03596189e..000000000 --- a/targetutil/apple2/Makefile +++ /dev/null @@ -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) - - - diff --git a/targetutil/geos-apple/Makefile b/targetutil/geos-apple/Makefile deleted file mode 100644 index b2dcc967f..000000000 --- a/targetutil/geos-apple/Makefile +++ /dev/null @@ -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) - - - -- 2.39.5