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