mirror of
https://github.com/logicog/RTLPlayground.git
synced 2026-10-29 17:54:14 +08:00
The installer Makefile called whatever sdcc was on the PATH, so an installer built by hand came out of the system compiler, without the fixes in sdcc/. Use the same toolchain/sdcc-<cksum> as the main Makefile, built on demand by sdcc/build.sh if a bare installer build gets there first, and keep CC= on the command line as the way to pick another compiler. The README example shows the new command lines.
52 lines
1.3 KiB
Makefile
52 lines
1.3 KiB
Makefile
CODE_LOCATION=0x1000
|
|
INSTALLER_ADDRESS=0x1100
|
|
|
|
SDCC_PREFIX = ../toolchain/sdcc-$(shell cat ../sdcc/* | cksum | cut -d' ' -f1)
|
|
ifeq ($(origin CC),default)
|
|
SDCC = $(SDCC_PREFIX)/bin/sdcc
|
|
CC = $(SDCC)
|
|
ASM = $(SDCC_PREFIX)/bin/sdas8051
|
|
endif
|
|
CC_FLAGS = -mmcs51
|
|
ASM ?= sdas8051
|
|
AFLAGS= -plosgff
|
|
|
|
BUILDDIR = output
|
|
|
|
SRCS = installer.c
|
|
OBJS = ${SRCS:%.c=$(BUILDDIR)/%.rel}
|
|
|
|
all: create_build_dir $(BUILDDIR)/updatebuilder $(BUILDDIR)/rtlplayground_oem_upgrade.bin
|
|
|
|
create_build_dir: $(SDCC)
|
|
mkdir -p $(BUILDDIR)
|
|
|
|
ifneq ($(SDCC),)
|
|
$(SDCC):
|
|
sh ../sdcc/build.sh $(abspath $(SDCC_PREFIX))
|
|
endif
|
|
|
|
$(BUILDDIR)/updatebuilder: updatebuilder.c
|
|
gcc $^ -o $@
|
|
|
|
$(BUILDDIR)/installer.rel: installer.c
|
|
$(CC) $(CC_FLAGS) --code-loc ${CODE_LOCATION} -o $@ -c $<
|
|
|
|
$(BUILDDIR)/crtstart.rel: crtstart.asm
|
|
$(ASM) $(AFLAGS) -o $@ $<
|
|
|
|
$(BUILDDIR)/%.rel: $(BUILDDIR)/%.asm
|
|
${ASM} ${AFLAGS} -o $@ $^
|
|
|
|
$(BUILDDIR)/%.rel: %.c
|
|
$(CC) $(CC_FLAGS) -o $@ -c $<
|
|
|
|
$(BUILDDIR)/rtlinstaller.ihx: $(BUILDDIR)/crtstart.rel $(OBJS)
|
|
$(CC) $(CC_FLAGS) -Wl-bHOME=${INSTALLER_ADDRESS} -Wl-r -o $@ $^
|
|
|
|
$(BUILDDIR)/rtlplayground_oem_upgrade.bin: $(BUILDDIR)/rtlinstaller.ihx ../$(BUILDDIR)/rtlplayground.bin
|
|
./$(BUILDDIR)/updatebuilder -i $< -o $(BUILDDIR)/rtlplayground_oem_upgrade.bin ../$(BUILDDIR)/rtlplayground.bin
|
|
|
|
clean:
|
|
rm -r $(BUILDDIR)
|