From 8a578abf0809b89ff1a4d664dbdd3c5fba767705 Mon Sep 17 00:00:00 2001 From: Jeremy Rand Date: Thu, 4 Jul 2019 22:31:11 -0400 Subject: [PATCH 01/13] Ensure that the include path for the old and new version of the cc65 package is correct so auto-complete in C works in both cases. --- .../Apple II Basic Project.xctemplate/TemplateInfo.plist | 2 +- .../Apple II Merlin Project.xctemplate/TemplateInfo.plist | 2 +- .../Apple II ca65 Project.xctemplate/TemplateInfo.plist | 2 +- .../Apple II cc65 Project.xctemplate/TemplateInfo.plist | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/TemplateInfo.plist b/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/TemplateInfo.plist index a160fc1..5bcac7a 100644 --- a/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/TemplateInfo.plist +++ b/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/TemplateInfo.plist @@ -179,7 +179,7 @@ GCC_PREPROCESSOR_DEFINITIONS __fastcall__="" HEADER_SEARCH_PATHS - /usr/local/lib/cc65/include + /usr/local/lib/cc65/include /usr/local/share/cc65/include BuildPhases diff --git a/pkg/Templates/Apple II/Apple II Merlin Project.xctemplate/TemplateInfo.plist b/pkg/Templates/Apple II/Apple II Merlin Project.xctemplate/TemplateInfo.plist index f1772d1..09b664a 100644 --- a/pkg/Templates/Apple II/Apple II Merlin Project.xctemplate/TemplateInfo.plist +++ b/pkg/Templates/Apple II/Apple II Merlin Project.xctemplate/TemplateInfo.plist @@ -185,7 +185,7 @@ GCC_PREPROCESSOR_DEFINITIONS __fastcall__="" HEADER_SEARCH_PATHS - /usr/local/lib/cc65/include + /usr/local/lib/cc65/include /usr/local/share/cc65/include BuildPhases diff --git a/pkg/Templates/Apple II/Apple II ca65 Project.xctemplate/TemplateInfo.plist b/pkg/Templates/Apple II/Apple II ca65 Project.xctemplate/TemplateInfo.plist index 86cc3d3..8b7cb12 100644 --- a/pkg/Templates/Apple II/Apple II ca65 Project.xctemplate/TemplateInfo.plist +++ b/pkg/Templates/Apple II/Apple II ca65 Project.xctemplate/TemplateInfo.plist @@ -179,7 +179,7 @@ GCC_PREPROCESSOR_DEFINITIONS __fastcall__="" HEADER_SEARCH_PATHS - /usr/local/lib/cc65/include + /usr/local/lib/cc65/include /usr/local/share/cc65/include BuildPhases diff --git a/pkg/Templates/Apple II/Apple II cc65 Project.xctemplate/TemplateInfo.plist b/pkg/Templates/Apple II/Apple II cc65 Project.xctemplate/TemplateInfo.plist index 51d616d..ef0379c 100644 --- a/pkg/Templates/Apple II/Apple II cc65 Project.xctemplate/TemplateInfo.plist +++ b/pkg/Templates/Apple II/Apple II cc65 Project.xctemplate/TemplateInfo.plist @@ -179,7 +179,7 @@ GCC_PREPROCESSOR_DEFINITIONS __fastcall__="" HEADER_SEARCH_PATHS - /usr/local/lib/cc65/include + /usr/local/lib/cc65/include /usr/local/share/cc65/include BuildPhases From 05c15ce006536592562d01cfde410df63c483c3a Mon Sep 17 00:00:00 2001 From: Jeremy Rand Date: Fri, 19 Jul 2019 15:31:57 -0500 Subject: [PATCH 02/13] Fix the error message format so they work again with the latest Xcode. --- make/errorFilter.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/make/errorFilter.sh b/make/errorFilter.sh index 30259c1..b041ac2 100755 --- a/make/errorFilter.sh +++ b/make/errorFilter.sh @@ -35,7 +35,7 @@ while () { $file =~ s/\.s$/.c/; } - $_ = "$pwd/$file:$lineno:0: Error: $unresolvedRefError"; + $_ = "$pwd/$file:$lineno:0: error: $unresolvedRefError"; } else { $unresolvedRefError = undef; } @@ -49,7 +49,7 @@ while () { my $lineno = $2; my $error = $3; - $_ = "$pwd/$file:$lineno:0:$error"; + $_ = "$pwd/$file:$lineno:0: error: $error"; } print STDERR "$_\n"; } From eca46476a1e14534a35807e749fad525aebf4961 Mon Sep 17 00:00:00 2001 From: Jeremy Rand Date: Sat, 20 Jul 2019 10:46:32 -0500 Subject: [PATCH 03/13] Move all build products to the standard Xcode directories. Eliminate support for the old version of cc65 because I don't want to test it --- make/createDiskImage | 4 +- make/head.mk | 33 +++++- make/merlin-asm | 38 ++++++ make/tail.mk | 110 +++++++++--------- .../TemplateInfo.plist | 2 +- .../___PACKAGENAME___.xcscheme | 12 ++ .../TemplateInfo.plist | 10 +- .../___PACKAGENAME___.xcscheme | 12 ++ .../TemplateInfo.plist | 2 +- .../___PACKAGENAME___.xcscheme | 12 ++ .../TemplateInfo.plist | 2 +- .../___PACKAGENAME___.xcscheme | 12 ++ 12 files changed, 187 insertions(+), 62 deletions(-) create mode 100755 make/merlin-asm diff --git a/make/createDiskImage b/make/createDiskImage index 55e428a..daec8e9 100755 --- a/make/createDiskImage +++ b/make/createDiskImage @@ -7,7 +7,7 @@ merlinStartAddr() { if [ $# -lt 5 ] then - echo USAGE: $0 ' ' + echo USAGE: $0 ' ' exit 1 fi @@ -318,7 +318,7 @@ do # to copy to the disk image. if [ -f "$ITEM" ] && echo "$ITEM" | grep '\.tok$' > /dev/null then - DESTFILE=`echo "$ITEM" | sed 's/\.tok$//'` + DESTFILE=`basename "$ITEM" | sed 's/\.tok$//'` "$JAVA" -jar "$APPLECOMMANDER" -p "$DISKIMAGE" "$DESTFILE" "$BASICFILETYPE" 0x801 < "$ITEM" continue fi diff --git a/make/head.mk b/make/head.mk index 28ebc58..4fcc688 100644 --- a/make/head.mk +++ b/make/head.mk @@ -24,20 +24,47 @@ CC65=$(CC65_BIN)/cc65 CO65=$(CC65_BIN)/co65 MERLIN_DIR=/usr/local -MERLIN_BIN=$(MERLIN_DIR)/bin/Merlin32 -MERLIN_LIB=$(MERLIN_DIR)/lib/Merlin +export MERLIN_BIN=$(MERLIN_DIR)/bin/Merlin32 +export MERLIN_LIB=$(MERLIN_DIR)/lib/Merlin +MERLIN_ASM=make/merlin-asm AC=make/AppleCommander.jar SRCDIRS=. +# Check for Xcode build variables for the locations of build outputs and fall back +# to the current directory if not set. +ifeq ($(OBJECT_FILE_DIR),) + OBJDIR=. +else + export OBJECT_FILE_DIR + OBJDIR=$(OBJECT_FILE_DIR) +endif + +ifeq ($(DERIVED_SOURCES_DIR),) + GENDIR=. +else + export DERIVED_SOURCES_DIR + GENDIR=$(DERIVED_SOURCES_DIR) +endif + +ifeq ($(TARGET_BUILD_DIR),) + TARGETDIR=. +else + export TARGET_BUILD_DIR + TARGETDIR=$(TARGET_BUILD_DIR) +endif + + MACHINE=apple2 CPU=6502 CFLAGS= ASMFLAGS= LDFLAGS= DRIVERS= -DRVDIR=drivers +DRVDIR=$(GENDIR)/drivers + +MKDIR=mkdir -p XCODE_PATH=/Applications/Xcode.app XCODE_INFO=$(XCODE_PATH)/Contents/Info.plist diff --git a/make/merlin-asm b/make/merlin-asm new file mode 100755 index 0000000..9bed373 --- /dev/null +++ b/make/merlin-asm @@ -0,0 +1,38 @@ +#!/bin/bash + +ERROUTPUT=/tmp/merlin-err.$$ + +LINKSCRIPT="$1" +shift + +OUTFILE="$1" +shift + +TARGETOUTPUT="$1" +shift + +cleanup() +{ + rm -r error_output.txt + rm -f _FileInformation.txt + rm -f _Output.txt + rm -f "$ERROUTPUT" +} + +"$MERLIN_BIN" -V "$MERLIN_LIB" "$LINKSCRIPT" 2>&1 | tee "$ERROUTPUT" +if [ ! -f "$OUTFILE" ] +then + cat error_output.txt + tr "'" '"' < "$ERROUTPUT" | + grep '\[Error\]' | + sed 's!^.*\[Error\] \(.*file "\([^"]*\.s\)".*line \([1-9][0-9]*\).*\)$!'`pwd`'/\2:\3:0: error: \1!' | + sed 's!^.*\[Error\] \(.*line \([1-9][0-9]*\).*file "\([^"]*\.s\)".*\)$!'`pwd`'/\3:\2:0: error: \1!' + cleanup + exit 1 +fi + +mv "$OUTFILE" "$TARGETOUTPUT" + +cleanup + +exit 0 diff --git a/make/tail.mk b/make/tail.mk index fd961e5..3d6256c 100644 --- a/make/tail.mk +++ b/make/tail.mk @@ -14,12 +14,14 @@ BUILD_TYPE := $(shell if echo $(MACHINE) | grep -q -- -basic; then echo basic; e CWD=$(shell pwd) -DISKIMAGE=$(PGM).dsk +DISKIMAGE=$(TARGETDIR)/$(PGM).dsk EXECCMD= -BASIC_SRCS=$(patsubst ./%, %, $(wildcard $(addsuffix /*.bas, $(SRCDIRS)))) -BASIC_OBJS=$(BASIC_SRCS:.bas=.tok) +vpath $(GENDIR) + +BASIC_SRCS=$(patsubst $(GENDIR)/%, %, $(patsubst ./%, %, $(wildcard $(addsuffix /*.bas, $(SRCDIRS))))) +BASIC_OBJS=$(patsubst %.bas, $(TARGETDIR)/%.tok, $(BASIC_SRCS)) ifeq ($(BUILD_TYPE),cc65) export PATH := $(PATH):$(CC65_BIN) @@ -33,50 +35,37 @@ ifeq ($(BUILD_TYPE),cc65) BASE_MACHINE = apple2enh endif - CC65_VERSION := $(shell $(CC65) --version 2>&1 | grep '^cc65 V') + export CC65_SUPPORTS_APPLE_SINGLE=1 + CC65_CREATE_DEP_ARG=--create-dep $(@:.o=.u) + CC65_LIST_ARG=-l $(@:.o=.lst) + CC65_DRV_DIR=$(CC65_HOME)/target/$(BASE_MACHINE)/drv - ifeq ($(CC65_VERSION),cc65 V2.13.3) - export CC65_SUPPORTS_APPLE_SINGLE=0 - CC65_CREATE_DEP_ARG=--create-dep - CC65_LIST_ARG=-l - CC65_DRV_DIR=$(CC65_HOME) - - MACHCONFIG= -t $(BASE_MACHINE) - ifeq ($(filter $(MACHINE), apple2 apple2enh),) - MACHCONFIG += -C $(MACHINE).cfg - endif + MACHCONFIG= -t $(BASE_MACHINE) + ifneq ($(filter $(MACHINE), apple2-system apple2enh-system),) + MACHCONFIG += -C $(BASE_MACHINE)-system.cfg else - export CC65_SUPPORTS_APPLE_SINGLE=1 - CC65_CREATE_DEP_ARG=--create-dep $(@:.o=.u) - CC65_LIST_ARG=-l $(@:.o=.lst) - CC65_DRV_DIR=$(CC65_HOME)/target/$(BASE_MACHINE)/drv - - MACHCONFIG= -t $(BASE_MACHINE) - ifneq ($(filter $(MACHINE), apple2-system apple2enh-system),) - MACHCONFIG += -C $(BASE_MACHINE)-system.cfg + ifeq ($(PROJECT_TYPE),ca65) + MACHCONFIG += -C $(BASE_MACHINE)-asm.cfg + LDFLAGS += -u __EXEHDR__ else - ifeq ($(PROJECT_TYPE),ca65) - MACHCONFIG += -C $(BASE_MACHINE)-asm.cfg - LDFLAGS += -u __EXEHDR__ - else - MACHCONFIG += -C $(BASE_MACHINE).cfg - endif - endif + MACHCONFIG += -C $(BASE_MACHINE).cfg + endif endif + CFLAGS+=-I $(GENDIR) ifneq ($(DRIVERS),) SRCDIRS+=$(DRVDIR) endif - C_SRCS=$(patsubst ./%, %, $(wildcard $(addsuffix /*.c, $(SRCDIRS)))) - C_OBJS=$(C_SRCS:.c=.o) - C_DEPS=$(C_SRCS:.c=.u) + C_SRCS=$(patsubst $(GENDIR)/%, %, $(patsubst ./%, %, $(wildcard $(addsuffix /*.c, $(SRCDIRS))))) + C_OBJS=$(patsubst %.c, $(OBJDIR)/%.o, $(C_SRCS)) + C_DEPS=$(patsubst %.c, $(OBJDIR)/%.u, $(C_SRCS)) - ASM_SRCS=$(patsubst ./%, %, $(wildcard $(addsuffix /*.s, $(SRCDIRS)))) - ASM_OBJS=$(ASM_SRCS:.s=.o) - ASM_LSTS=$(ASM_SRCS:.s=.lst) + ASM_SRCS=$(patsubst $(GENDIR)/%, %, $(patsubst ./%, %, $(wildcard $(addsuffix /*.s, $(SRCDIRS))))) + ASM_OBJS=$(patsubst %.s, $(OBJDIR)/%.o, $(ASM_SRCS)) + ASM_LSTS=$(patsubst %.s, $(OBJDIR)/%.lst, $(ASM_SRCS)) - MAPFILE=$(PGM).map + MAPFILE=$(TARGETDIR)/$(PGM).map ifneq ($(START_ADDR),) # If the MACHINE is set to an option which does not support a variable @@ -113,7 +102,7 @@ endif ifeq ($(BUILD_TYPE),merlin) ASM_SRCS=$(patsubst ./%, %, $(wildcard $(addsuffix /*.s, $(SRCDIRS)))) - MAPFILE=_Output.txt + MAPFILE=$(TARGETDIR)/_Output.txt EXECCMD=$(shell echo brun $(PGM) | tr '[a-z]' '[A-Z]') endif @@ -122,7 +111,7 @@ ifeq ($(BUILD_TYPE),basic) EXECCMD=$(shell echo run $(PGM) | tr '[a-z]' '[A-Z]') endif -OBJS=$(C_OBJS) $(ASM_OBJS) $(BASIC_OBJS) +OBJS=$(C_OBJS) $(ASM_OBJS) ALLTARGET=$(DISKIMAGE) @@ -131,13 +120,14 @@ ALLTARGET=$(DISKIMAGE) build: $(ALLTARGET) -$(DISKIMAGE): $(PGM) - make/createDiskImage $(AC) $(MACHINE) "$(DISKIMAGE)" "$(PGM)" "$(START_ADDR)" $(BASIC_OBJS) $(COPYDIRS) +$(DISKIMAGE): $(TARGETDIR)/$(PGM) $(BASIC_OBJS) + make/createDiskImage $(AC) $(MACHINE) "$(DISKIMAGE)" "$(TARGETDIR)/$(PGM)" "$(START_ADDR)" $(BASIC_OBJS) $(COPYDIRS) execute: $(DISKIMAGE) - osascript make/V2Make.scpt "$(CWD)" "$(PGM)" "$(CWD)/make/DevApple.vii" "$(EXECCMD)" + osascript make/V2Make.scpt "$(TARGETDIR)" "$(PGM)" "$(CWD)/make/DevApple.vii" "$(EXECCMD)" -%.tok: %.bas +$(TARGETDIR)/%.tok: %.bas + $(MKDIR) `dirname $@` make/bt $< $(BASICFLAGS) -o $@ ifneq ($(DRIVERS),) @@ -150,7 +140,7 @@ cleandrivers: endif clean: genclean cleandrivers - rm -f "$(PGM)" $(OBJS) $(C_DEPS) $(MAPFILE) $(ASM_LSTS) "$(DISKIMAGE)" + rm -f "$(TARGETDIR)/$(PGM)" $(OBJS) $(BASIC_OBJS) $(C_DEPS) $(MAPFILE) $(ASM_LSTS) "$(DISKIMAGE)" cleanMacCruft: rm -rf pkg @@ -165,10 +155,10 @@ xcodefix: ifeq ($(BUILD_TYPE),basic) # Build rules for BASIC projects -$(PGM): $(OBJS) - cp $(PGM).tok $(PGM) +$(TARGETDIR)/$(PGM): $(BASIC_OBJS) + cp $(TARGETDIR)/$(PGM).tok $(TARGETDIR)/$(PGM) -$(OBJS): Makefile +$(BASIC_OBJS): Makefile endif @@ -177,9 +167,10 @@ endif ifeq ($(BUILD_TYPE),merlin) # Build rules for Merlin projects -$(PGM): $(ASM_SRCS) Makefile - $(MERLIN_BIN) -V $(MERLIN_LIB) linkscript.s - rm -f _FileInformation.txt +$(TARGETDIR)/$(PGM): $(ASM_SRCS) Makefile + $(MKDIR) $(TARGETDIR) + rm -f $(TARGETDIR)/$(PGM) + $(MERLIN_ASM) linkscript.s $(PGM) $(TARGETDIR)/$(PGM) endif @@ -187,17 +178,30 @@ endif ifeq ($(BUILD_TYPE),cc65) # Build rules for cc65 projects -$(PGM): $(OBJS) - make/errorFilter.sh $(CL65) $(MACHCONFIG) --mapfile $(MAPFILE) $(LDFLAGS) -o "$(PGM)" $(OBJS) +$(TARGETDIR)/$(PGM): $(OBJS) + $(MKDIR) `dirname $@` + make/errorFilter.sh $(CL65) $(MACHCONFIG) --mapfile $(MAPFILE) $(LDFLAGS) -o "$(TARGETDIR)/$(PGM)" $(OBJS) $(OBJS): Makefile -%.o: %.c +$(OBJDIR)/%.o: %.c + $(MKDIR) `dirname $@` make/errorFilter.sh $(CL65) $(MACHCONFIG) $(CFLAGS) $(CC65_CREATE_DEP_ARG) -c -o $@ $< sed -i .bak 's/\.s:/.o:/' $(@:.o=.u) rm -f $(@:.o=.u).bak -%.o: %.s +$(OBJDIR)/%.o: $(GENDIR)/%.c + $(MKDIR) `dirname $@` + make/errorFilter.sh $(CL65) $(MACHCONFIG) $(CFLAGS) $(CC65_CREATE_DEP_ARG) -c -o $@ $< + sed -i .bak 's/\.s:/.o:/' $(@:.o=.u) + rm -f $(@:.o=.u).bak + +$(OBJDIR)/%.o: %.s + $(MKDIR) `dirname $@` + make/errorFilter.sh $(CL65) $(MACHCONFIG) --cpu $(CPU) $(ASMFLAGS) $(CC65_LIST_ARG) -c -o $@ $< + +$(OBJDIR)/%.o: $(GENDIR)/%.s + $(MKDIR) `dirname $@` make/errorFilter.sh $(CL65) $(MACHCONFIG) --cpu $(CPU) $(ASMFLAGS) $(CC65_LIST_ARG) -c -o $@ $< diff --git a/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/TemplateInfo.plist b/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/TemplateInfo.plist index 5bcac7a..76f1065 100644 --- a/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/TemplateInfo.plist +++ b/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/TemplateInfo.plist @@ -179,7 +179,7 @@ GCC_PREPROCESSOR_DEFINITIONS __fastcall__="" HEADER_SEARCH_PATHS - /usr/local/lib/cc65/include /usr/local/share/cc65/include + $TEMP_ROOT/___PACKAGENAME___.build/$CONFIGURATION/___PACKAGENAME___.build/DerivedSources /usr/local/share/cc65/include BuildPhases diff --git a/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/___PACKAGENAME___.xcscheme b/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/___PACKAGENAME___.xcscheme index 61815a2..1debce6 100644 --- a/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/___PACKAGENAME___.xcscheme +++ b/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/___PACKAGENAME___.xcscheme @@ -64,6 +64,18 @@ argument = "$PROJECT_DIR/___PACKAGENAME___" isEnabled = "YES"> + + + + + + diff --git a/pkg/Templates/Apple II/Apple II Merlin Project.xctemplate/TemplateInfo.plist b/pkg/Templates/Apple II/Apple II Merlin Project.xctemplate/TemplateInfo.plist index 09b664a..89abc6d 100644 --- a/pkg/Templates/Apple II/Apple II Merlin Project.xctemplate/TemplateInfo.plist +++ b/pkg/Templates/Apple II/Apple II Merlin Project.xctemplate/TemplateInfo.plist @@ -15,6 +15,7 @@ make/dos33_template.dsk make/errorFilter.sh make/head.mk + make/merlin-asm make/prodos_template.dsk make/tail.mk make/V2Make.scpt @@ -46,6 +47,13 @@ Path make/errorFilter.sh + make/merlin-asm + + Group + make + Path + make/merlin-asm + make/tail.mk Group @@ -185,7 +193,7 @@ GCC_PREPROCESSOR_DEFINITIONS __fastcall__="" HEADER_SEARCH_PATHS - /usr/local/lib/cc65/include /usr/local/share/cc65/include + $TEMP_ROOT/___PACKAGENAME___.build/$CONFIGURATION/___PACKAGENAME___.build/DerivedSources /usr/local/share/cc65/include BuildPhases diff --git a/pkg/Templates/Apple II/Apple II Merlin Project.xctemplate/___PACKAGENAME___.xcscheme b/pkg/Templates/Apple II/Apple II Merlin Project.xctemplate/___PACKAGENAME___.xcscheme index 61815a2..1debce6 100644 --- a/pkg/Templates/Apple II/Apple II Merlin Project.xctemplate/___PACKAGENAME___.xcscheme +++ b/pkg/Templates/Apple II/Apple II Merlin Project.xctemplate/___PACKAGENAME___.xcscheme @@ -64,6 +64,18 @@ argument = "$PROJECT_DIR/___PACKAGENAME___" isEnabled = "YES"> + + + + + + diff --git a/pkg/Templates/Apple II/Apple II ca65 Project.xctemplate/TemplateInfo.plist b/pkg/Templates/Apple II/Apple II ca65 Project.xctemplate/TemplateInfo.plist index 8b7cb12..2a3c554 100644 --- a/pkg/Templates/Apple II/Apple II ca65 Project.xctemplate/TemplateInfo.plist +++ b/pkg/Templates/Apple II/Apple II ca65 Project.xctemplate/TemplateInfo.plist @@ -179,7 +179,7 @@ GCC_PREPROCESSOR_DEFINITIONS __fastcall__="" HEADER_SEARCH_PATHS - /usr/local/lib/cc65/include /usr/local/share/cc65/include + $TEMP_ROOT/___PACKAGENAME___.build/$CONFIGURATION/___PACKAGENAME___.build/DerivedSources /usr/local/share/cc65/include BuildPhases diff --git a/pkg/Templates/Apple II/Apple II ca65 Project.xctemplate/___PACKAGENAME___.xcscheme b/pkg/Templates/Apple II/Apple II ca65 Project.xctemplate/___PACKAGENAME___.xcscheme index 61815a2..1debce6 100644 --- a/pkg/Templates/Apple II/Apple II ca65 Project.xctemplate/___PACKAGENAME___.xcscheme +++ b/pkg/Templates/Apple II/Apple II ca65 Project.xctemplate/___PACKAGENAME___.xcscheme @@ -64,6 +64,18 @@ argument = "$PROJECT_DIR/___PACKAGENAME___" isEnabled = "YES"> + + + + + + diff --git a/pkg/Templates/Apple II/Apple II cc65 Project.xctemplate/TemplateInfo.plist b/pkg/Templates/Apple II/Apple II cc65 Project.xctemplate/TemplateInfo.plist index ef0379c..a67906a 100644 --- a/pkg/Templates/Apple II/Apple II cc65 Project.xctemplate/TemplateInfo.plist +++ b/pkg/Templates/Apple II/Apple II cc65 Project.xctemplate/TemplateInfo.plist @@ -179,7 +179,7 @@ GCC_PREPROCESSOR_DEFINITIONS __fastcall__="" HEADER_SEARCH_PATHS - /usr/local/lib/cc65/include /usr/local/share/cc65/include + $TEMP_ROOT/___PACKAGENAME___.build/$CONFIGURATION/___PACKAGENAME___.build/DerivedSources /usr/local/share/cc65/include BuildPhases diff --git a/pkg/Templates/Apple II/Apple II cc65 Project.xctemplate/___PACKAGENAME___.xcscheme b/pkg/Templates/Apple II/Apple II cc65 Project.xctemplate/___PACKAGENAME___.xcscheme index 61815a2..1debce6 100644 --- a/pkg/Templates/Apple II/Apple II cc65 Project.xctemplate/___PACKAGENAME___.xcscheme +++ b/pkg/Templates/Apple II/Apple II cc65 Project.xctemplate/___PACKAGENAME___.xcscheme @@ -64,6 +64,18 @@ argument = "$PROJECT_DIR/___PACKAGENAME___" isEnabled = "YES"> + + + + + + From d685336160bb6c367d8da3a63668318dd0db7298 Mon Sep 17 00:00:00 2001 From: Jeremy Rand Date: Sat, 20 Jul 2019 10:52:08 -0500 Subject: [PATCH 04/13] Bump the version number --- pkg/createPackage | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/createPackage b/pkg/createPackage index 4a0d462..dd06df5 100755 --- a/pkg/createPackage +++ b/pkg/createPackage @@ -18,7 +18,7 @@ cp -R make $TMPDIR/Templates/'Apple II/Apple II Basic Project.xctemplate/' cp -R make $TMPDIR/Templates/'Apple II/Apple II Merlin Project.xctemplate/' -pkgbuild --root $TMPDIR --version 2.6 --identifier com.halcyontouch.Apple2Template.pkg --install-location /Library/Developer/Xcode/ --scripts pkg/scripts/ AppleXcodeTemplate.pkg +pkgbuild --root $TMPDIR --version 2.7 --identifier com.halcyontouch.Apple2Template.pkg --install-location /Library/Developer/Xcode/ --scripts pkg/scripts/ AppleXcodeTemplate.pkg productbuild --distribution pkg/Distribution.xml --resource ./pkg temp.pkg rm AppleXcodeTemplate.pkg productsign --sign "Developer ID Installer" temp.pkg AppleXcodeTemplate.pkg From e5e042f0a41aba4b0e482f04849ff3b3ad91acf6 Mon Sep 17 00:00:00 2001 From: Jeremy Rand Date: Sat, 20 Jul 2019 11:05:26 -0500 Subject: [PATCH 05/13] Update README.md --- README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index a0fe935..fcd4296 100644 --- a/README.md +++ b/README.md @@ -30,9 +30,9 @@ Mac OS X Installation: In order to use this infrastructure from Mac OS X, follow these instructions: 1. Install [Xcode from Apple](https://itunes.apple.com/us/app/xcode/id497799835?mt=12&uo=4). Xcode is generally the most popular app in the Mac App Store in the "Developer Tools" category. Xcode is free and you do not need to be a registered Apple developer to download and use it, especially if you are building Apple II programs. I am generally running the latest version of Xcode so if you are trying to use these templates with an old version, you may run into problems. - 2. Install the [Apple II project templates](https://github.com/jeremysrand/Apple2BuildPipeline/releases/download/2.6/AppleXcodeTemplate.pkg). + 2. Install the [Apple II project templates](https://github.com/jeremysrand/Apple2BuildPipeline/releases/download/2.7/AppleXcodeTemplate.pkg). 3. Install and setup [Virtual II](http://www.virtualii.com). - 4. If you plan to use cc65 based projects, install the [cc65 v2.17 package](https://github.com/jeremysrand/Apple2BuildPipeline/releases/download/2.6/cc65-2.17.pkg) or the older [cc65 v2.13.3 package](https://github.com/jeremysrand/Apple2BuildPipeline/releases/download/1.0/cc65.2.13.3.pkg). Both versions should work with the latest project templates but all of my testing from now on will be with the newer version. I haven't tested without cc65 installed but in theory, if you only plan to use Applesoft or Merlin32 based projects, you don't need to install cc65. + 4. If you plan to use cc65 based projects, install the [cc65 v2.17 package](https://github.com/jeremysrand/Apple2BuildPipeline/releases/download/2.6/cc65-2.17.pkg). Both versions should work with the latest project templates but all of my testing from now on will be with the newer version. I haven't tested without cc65 installed but in theory, if you only plan to use Applesoft or Merlin32 based projects, you don't need to install cc65. 5. If you plan to use Merlin32 based projects, install the [Merlin32 binaries and libraries](https://www.brutaldeluxe.fr/products/crossdevtools/merlin/). By default, the build system assumes you have installed the Merlin32 binary in /usr/local/bin and put the library macro files in /usr/local/lib/Merlin. If you installed them somewhere else, you can override these location in your projects. Note that on your first launch of Xcode after installing the project templates, you may be asked if it is OK to load a cc65 plug-in bundle. You should allow this to load. If you do not do this, syntax highlighting and code completion will not work in assembly or Applesoft files. @@ -91,9 +91,7 @@ Common Problems: ---------------- There are some known issues which can crop up: - * If you are using Xcode 10, you may have problems with its new build system. Common problems are errors not propagating from the build back to the appropriate line of code and issues trying to clean your build. For now, I recomment everyone using Xcode 10 select File->Project Settings... and under "Shared Project Settings", set the "Build System" to "Legacy Build System". I will try to figure out what the problems are with the new build system so this isn't required in the future. If you have any information about what the issue may be, please contact me. * If you aren't seeing the "ca65 Assembly" option under Editor->Syntax Coloring, you may be having an Xcode compatibility problem. These syntax colouring files are provided as part of an Xcode plugin and plugins must advertize their compatibility. During install, the plugin is set to be compatible with the version of Xcode you have. If you upgrade Xcode, the plugin will be assumed to be incompatible and will not be loaded. To workaround this, we force the plugin to be marked as compatible on every build of a Apple II target. So, you should do a build and then quit and re-launch Xcode. You should see a warning asking if you want to load the plugin and if you allow the plugin to load, you should see the ca65 syntax colouring option. - * If you see permissions problems when you do a build, chances are good that the permissions on the Xcode plugin directory is wrong. The best way to fix this is to run "sudo chmod -R a+rwx ~/Library/Developer/Xcode/Plug-ins". You will need to provide a password when you run this command. I am unsure why some people seem to have bad permissions on this directory and I cannot reproduce the problem, even with a clean install of MacOS. If you have any information on why this is happening, please let me know. Thanks. If these suggestions do not help or you are having some other problem, please contact me and I will try to help you out. From 8dbbb22624d9b087e9ebc02d397835492398deff Mon Sep 17 00:00:00 2001 From: Jeremy Rand Date: Sat, 20 Jul 2019 11:27:59 -0500 Subject: [PATCH 06/13] Update Makefile comments to describe the new GENDIR variable --- Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Makefile b/Makefile index 7844064..d01e74d 100644 --- a/Makefile +++ b/Makefile @@ -236,6 +236,9 @@ COPYDIRS= # files for example. You can generate data files. Whatever you # might need. # +# You should generate these files in the $(GENDIR) directory or +# within a subdirectory under $(GENDIR) which you create yourself. +# # All of your commands associated with a rule _must_ start with a tab # character. Xcode makes it a bit tough to type a tab character by # default. Press option-tab within Xcode to insert a tab character. From 24422041e03fcb4a2adccf8fe9d828a2283c8864 Mon Sep 17 00:00:00 2001 From: Jeremy Rand Date: Sat, 20 Jul 2019 11:52:12 -0500 Subject: [PATCH 07/13] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fcd4296..4762c43 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ Mac OS X Installation: In order to use this infrastructure from Mac OS X, follow these instructions: 1. Install [Xcode from Apple](https://itunes.apple.com/us/app/xcode/id497799835?mt=12&uo=4). Xcode is generally the most popular app in the Mac App Store in the "Developer Tools" category. Xcode is free and you do not need to be a registered Apple developer to download and use it, especially if you are building Apple II programs. I am generally running the latest version of Xcode so if you are trying to use these templates with an old version, you may run into problems. - 2. Install the [Apple II project templates](https://github.com/jeremysrand/Apple2BuildPipeline/releases/download/2.7/AppleXcodeTemplate.pkg). + 2. Install the [Apple II project templates](https://github.com/jeremysrand/Apple2BuildPipeline/releases/download/2.7.1/AppleXcodeTemplate.pkg). 3. Install and setup [Virtual II](http://www.virtualii.com). 4. If you plan to use cc65 based projects, install the [cc65 v2.17 package](https://github.com/jeremysrand/Apple2BuildPipeline/releases/download/2.6/cc65-2.17.pkg). Both versions should work with the latest project templates but all of my testing from now on will be with the newer version. I haven't tested without cc65 installed but in theory, if you only plan to use Applesoft or Merlin32 based projects, you don't need to install cc65. 5. If you plan to use Merlin32 based projects, install the [Merlin32 binaries and libraries](https://www.brutaldeluxe.fr/products/crossdevtools/merlin/). By default, the build system assumes you have installed the Merlin32 binary in /usr/local/bin and put the library macro files in /usr/local/lib/Merlin. If you installed them somewhere else, you can override these location in your projects. From ff3fa53d26d0e4b30ab0c67c8f1ce76e3faa85ed Mon Sep 17 00:00:00 2001 From: Jeremy Rand Date: Sat, 20 Jul 2019 13:29:19 -0500 Subject: [PATCH 08/13] More cleanup of the Makefile to make things clearer for generated files --- Makefile | 3 ++- .../Apple II Basic Project.xctemplate/Makefile | 10 +++++++++- .../Apple II Merlin Project.xctemplate/Makefile | 10 +++++++++- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index d01e74d..4763917 100644 --- a/Makefile +++ b/Makefile @@ -52,7 +52,8 @@ PGM=___PACKAGENAME___ # will only produce 8-bit code. # Add any other directories where you are putting C or assembly source -# files to this list: +# files to this list. Note that if you are generating source files into +# $(GENDIR), you should add $(GENDIR) to SRCDIRS here: SRCDIRS+= # If you have a non-standard cc65 install, you may need to change diff --git a/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/Makefile b/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/Makefile index 879a895..219aaad 100644 --- a/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/Makefile +++ b/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/Makefile @@ -24,7 +24,8 @@ MACHINE = apple2-basic # MACHINE = apple2-dos33-basic # Add any other directories where you are putting other BASIC files -# to this list: +# to this list. Note that if you are generating source files into +# $(GENDIR), you should add $(GENDIR) to SRCDIRS here: SRCDIRS+= # If you want to add arguments to the BASIC tokenizer commandline, @@ -70,6 +71,13 @@ COPYDIRS= # commands are called here, if any. You can generate .c, .s or .h # files for example. You can generate data files. Whatever you # might need. +# +# You should generate these files in the $(GENDIR) directory or +# within a subdirectory under $(GENDIR) which you create yourself. +# +# All of your commands associated with a rule _must_ start with a tab +# character. Xcode makes it a bit tough to type a tab character by +# default. Press option-tab within Xcode to insert a tab character. gen: # For any files you generated in the gen target above, you should diff --git a/pkg/Templates/Apple II/Apple II Merlin Project.xctemplate/Makefile b/pkg/Templates/Apple II/Apple II Merlin Project.xctemplate/Makefile index de7af12..951481d 100644 --- a/pkg/Templates/Apple II/Apple II Merlin Project.xctemplate/Makefile +++ b/pkg/Templates/Apple II/Apple II Merlin Project.xctemplate/Makefile @@ -41,7 +41,8 @@ MACHINE = apple2-merlin # files to this list. Note that you must manually add all source files # to the linkscript.s file. All this does is help the build system # see what files it should consider important to deciding whether to do -# a re-build. +# a re-build. Note that if you are generating source files into +# $(GENDIR), you should add $(GENDIR) to SRCDIRS here: SRCDIRS+= # If you want to add arguments to the BASIC tokenizer commandline, @@ -87,6 +88,13 @@ COPYDIRS= # commands are called here, if any. You can generate .c, .s or .h # files for example. You can generate data files. Whatever you # might need. +# +# You should generate these files in the $(GENDIR) directory or +# within a subdirectory under $(GENDIR) which you create yourself. +# +# All of your commands associated with a rule _must_ start with a tab +# character. Xcode makes it a bit tough to type a tab character by +# default. Press option-tab within Xcode to insert a tab character. gen: # For any files you generated in the gen target above, you should From a0128269483cc6eb2220242b52b88fdf2ed3b52c Mon Sep 17 00:00:00 2001 From: Jeremy Rand Date: Sat, 20 Jul 2019 13:45:50 -0500 Subject: [PATCH 09/13] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4762c43..3580392 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ Mac OS X Installation: In order to use this infrastructure from Mac OS X, follow these instructions: 1. Install [Xcode from Apple](https://itunes.apple.com/us/app/xcode/id497799835?mt=12&uo=4). Xcode is generally the most popular app in the Mac App Store in the "Developer Tools" category. Xcode is free and you do not need to be a registered Apple developer to download and use it, especially if you are building Apple II programs. I am generally running the latest version of Xcode so if you are trying to use these templates with an old version, you may run into problems. - 2. Install the [Apple II project templates](https://github.com/jeremysrand/Apple2BuildPipeline/releases/download/2.7.1/AppleXcodeTemplate.pkg). + 2. Install the [Apple II project templates](https://github.com/jeremysrand/Apple2BuildPipeline/releases/download/2.7.2/AppleXcodeTemplate.pkg). 3. Install and setup [Virtual II](http://www.virtualii.com). 4. If you plan to use cc65 based projects, install the [cc65 v2.17 package](https://github.com/jeremysrand/Apple2BuildPipeline/releases/download/2.6/cc65-2.17.pkg). Both versions should work with the latest project templates but all of my testing from now on will be with the newer version. I haven't tested without cc65 installed but in theory, if you only plan to use Applesoft or Merlin32 based projects, you don't need to install cc65. 5. If you plan to use Merlin32 based projects, install the [Merlin32 binaries and libraries](https://www.brutaldeluxe.fr/products/crossdevtools/merlin/). By default, the build system assumes you have installed the Merlin32 binary in /usr/local/bin and put the library macro files in /usr/local/lib/Merlin. If you installed them somewhere else, you can override these location in your projects. From ebbb3add28fe36543ce29427aeb483eed3feadb5 Mon Sep 17 00:00:00 2001 From: Jeremy Rand Date: Thu, 8 Aug 2019 22:55:01 -0400 Subject: [PATCH 10/13] Fix bug with copying extra files as part of the build --- make/createDiskImage | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/make/createDiskImage b/make/createDiskImage index daec8e9..30531ec 100755 --- a/make/createDiskImage +++ b/make/createDiskImage @@ -363,9 +363,9 @@ do # If the file type is text, convert the line feeds to carriage return if [ $FILETYPE = txt ] || [ $FILETYPE = T ] then - tr '\n' '\r' < $FILE | "$JAVA" -jar "$OLDPWD/$APPLECOMMANDER" $TRANSFERARG "$OLDPWD/$DISKIMAGE" "$DESTFILE" $FILETYPE + tr '\n' '\r' < $FILE | "$JAVA" -jar "$OLDPWD/$APPLECOMMANDER" $TRANSFERARG "$DISKIMAGE" "$DESTFILE" $FILETYPE else - "$JAVA" -jar "$OLDPWD/$APPLECOMMANDER" $TRANSFERARG "$OLDPWD/$DISKIMAGE" "$DESTFILE" $FILETYPE < $FILE + "$JAVA" -jar "$OLDPWD/$APPLECOMMANDER" $TRANSFERARG "$DISKIMAGE" "$DESTFILE" $FILETYPE < $FILE fi done From 371edbaa1c0782454c9788cf0ae5ed15bc836de5 Mon Sep 17 00:00:00 2001 From: Jeremy Rand Date: Fri, 9 Aug 2019 00:04:19 -0400 Subject: [PATCH 11/13] Add the build products to the project templates --- .../TemplateInfo.plist | 26 +++++++++++++++++++ .../TemplateInfo.plist | 26 +++++++++++++++++++ .../TemplateInfo.plist | 26 +++++++++++++++++++ .../TemplateInfo.plist | 26 +++++++++++++++++++ 4 files changed, 104 insertions(+) diff --git a/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/TemplateInfo.plist b/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/TemplateInfo.plist index 76f1065..c1165a2 100644 --- a/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/TemplateInfo.plist +++ b/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/TemplateInfo.plist @@ -164,6 +164,32 @@ Release + + + ProductType + com.apple.product-type.tool + TargetIdentifier + com.apple.dt.commandLineToolTarget + Name + Binary + SharedSettings + + PRODUCT_NAME + ___PACKAGENAME___ + + + + ProductType + com.apple.product-type.tool + TargetIdentifier + com.apple.dt.commandLineToolTarget + Name + DiskImage + SharedSettings + + PRODUCT_NAME + ___PACKAGENAME___.dsk + ProductType diff --git a/pkg/Templates/Apple II/Apple II Merlin Project.xctemplate/TemplateInfo.plist b/pkg/Templates/Apple II/Apple II Merlin Project.xctemplate/TemplateInfo.plist index 89abc6d..db0fdc0 100644 --- a/pkg/Templates/Apple II/Apple II Merlin Project.xctemplate/TemplateInfo.plist +++ b/pkg/Templates/Apple II/Apple II Merlin Project.xctemplate/TemplateInfo.plist @@ -178,6 +178,32 @@ Release + + + ProductType + com.apple.product-type.tool + TargetIdentifier + com.apple.dt.commandLineToolTarget + Name + Binary + SharedSettings + + PRODUCT_NAME + ___PACKAGENAME___ + + + + ProductType + com.apple.product-type.tool + TargetIdentifier + com.apple.dt.commandLineToolTarget + Name + DiskImage + SharedSettings + + PRODUCT_NAME + ___PACKAGENAME___.dsk + ProductType diff --git a/pkg/Templates/Apple II/Apple II ca65 Project.xctemplate/TemplateInfo.plist b/pkg/Templates/Apple II/Apple II ca65 Project.xctemplate/TemplateInfo.plist index 2a3c554..45b9fcf 100644 --- a/pkg/Templates/Apple II/Apple II ca65 Project.xctemplate/TemplateInfo.plist +++ b/pkg/Templates/Apple II/Apple II ca65 Project.xctemplate/TemplateInfo.plist @@ -164,6 +164,32 @@ Release + + + ProductType + com.apple.product-type.tool + TargetIdentifier + com.apple.dt.commandLineToolTarget + Name + Binary + SharedSettings + + PRODUCT_NAME + ___PACKAGENAME___ + + + + ProductType + com.apple.product-type.tool + TargetIdentifier + com.apple.dt.commandLineToolTarget + Name + DiskImage + SharedSettings + + PRODUCT_NAME + ___PACKAGENAME___.dsk + ProductType diff --git a/pkg/Templates/Apple II/Apple II cc65 Project.xctemplate/TemplateInfo.plist b/pkg/Templates/Apple II/Apple II cc65 Project.xctemplate/TemplateInfo.plist index a67906a..0c23601 100644 --- a/pkg/Templates/Apple II/Apple II cc65 Project.xctemplate/TemplateInfo.plist +++ b/pkg/Templates/Apple II/Apple II cc65 Project.xctemplate/TemplateInfo.plist @@ -164,6 +164,32 @@ Release + + + ProductType + com.apple.product-type.tool + TargetIdentifier + com.apple.dt.commandLineToolTarget + Name + Binary + SharedSettings + + PRODUCT_NAME + ___PACKAGENAME___ + + + + ProductType + com.apple.product-type.tool + TargetIdentifier + com.apple.dt.commandLineToolTarget + Name + DiskImage + SharedSettings + + PRODUCT_NAME + ___PACKAGENAME___.dsk + ProductType From f957565ef5ba3824c4639ec22d71b9904681c0c9 Mon Sep 17 00:00:00 2001 From: Jeremy Rand Date: Fri, 9 Aug 2019 23:44:00 -0400 Subject: [PATCH 12/13] Bump the version number --- pkg/createPackage | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/createPackage b/pkg/createPackage index dd06df5..48ad145 100755 --- a/pkg/createPackage +++ b/pkg/createPackage @@ -18,7 +18,7 @@ cp -R make $TMPDIR/Templates/'Apple II/Apple II Basic Project.xctemplate/' cp -R make $TMPDIR/Templates/'Apple II/Apple II Merlin Project.xctemplate/' -pkgbuild --root $TMPDIR --version 2.7 --identifier com.halcyontouch.Apple2Template.pkg --install-location /Library/Developer/Xcode/ --scripts pkg/scripts/ AppleXcodeTemplate.pkg +pkgbuild --root $TMPDIR --version 2.7.3 --identifier com.halcyontouch.Apple2Template.pkg --install-location /Library/Developer/Xcode/ --scripts pkg/scripts/ AppleXcodeTemplate.pkg productbuild --distribution pkg/Distribution.xml --resource ./pkg temp.pkg rm AppleXcodeTemplate.pkg productsign --sign "Developer ID Installer" temp.pkg AppleXcodeTemplate.pkg From 9ed46d562ad28f357ea8db3dc73ef00e951d2f24 Mon Sep 17 00:00:00 2001 From: Jeremy Rand Date: Fri, 9 Aug 2019 23:57:22 -0400 Subject: [PATCH 13/13] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3580392..600d6de 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ Mac OS X Installation: In order to use this infrastructure from Mac OS X, follow these instructions: 1. Install [Xcode from Apple](https://itunes.apple.com/us/app/xcode/id497799835?mt=12&uo=4). Xcode is generally the most popular app in the Mac App Store in the "Developer Tools" category. Xcode is free and you do not need to be a registered Apple developer to download and use it, especially if you are building Apple II programs. I am generally running the latest version of Xcode so if you are trying to use these templates with an old version, you may run into problems. - 2. Install the [Apple II project templates](https://github.com/jeremysrand/Apple2BuildPipeline/releases/download/2.7.2/AppleXcodeTemplate.pkg). + 2. Install the [Apple II project templates](https://github.com/jeremysrand/Apple2BuildPipeline/releases/download/2.7.3/AppleXcodeTemplate.pkg). 3. Install and setup [Virtual II](http://www.virtualii.com). 4. If you plan to use cc65 based projects, install the [cc65 v2.17 package](https://github.com/jeremysrand/Apple2BuildPipeline/releases/download/2.6/cc65-2.17.pkg). Both versions should work with the latest project templates but all of my testing from now on will be with the newer version. I haven't tested without cc65 installed but in theory, if you only plan to use Applesoft or Merlin32 based projects, you don't need to install cc65. 5. If you plan to use Merlin32 based projects, install the [Merlin32 binaries and libraries](https://www.brutaldeluxe.fr/products/crossdevtools/merlin/). By default, the build system assumes you have installed the Merlin32 binary in /usr/local/bin and put the library macro files in /usr/local/lib/Merlin. If you installed them somewhere else, you can override these location in your projects.