CODE_LOCATION=0x1000
INSTALLER_ADDRESS=0x1100

CC = sdcc
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:
	mkdir -p $(BUILDDIR)

$(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)
