####################################################### # toolchain CC = sdcc OBJCOPY = objcopy PACK_HEX = packihx WCHISP ?= wchisptool -g -f ####################################################### FREQ_SYS ?= 24000000 XRAM_SIZE ?= 0x0400 XRAM_LOC ?= 0x0000 CODE_SIZE ?= 0x3800 ROOT_DIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) CFLAGS := -V -mmcs51 --model-small \ --xram-size $(XRAM_SIZE) --xram-loc $(XRAM_LOC) \ --code-size $(CODE_SIZE) \ -I$(ROOT_DIR)include -DFREQ_SYS=$(FREQ_SYS) \ $(EXTRA_FLAGS) LFLAGS := $(CFLAGS) RELS := $(C_FILES:.c=.rel) print-% : ; @echo $* = $($*) %.rel : %.c $(CC) -c $(CFLAGS) $< # Note: SDCC will dump all of the temporary files into this one, so strip the paths from RELS # For now, get around this by stripping the paths off of the RELS list. $(TARGET).ihx: $(RELS) $(CC) $(notdir $(RELS)) $(LFLAGS) -o $(TARGET).ihx $(TARGET).hex: $(TARGET).ihx $(PACK_HEX) $(TARGET).ihx > $(TARGET).hex $(TARGET).bin: $(TARGET).ihx $(OBJCOPY) -I ihex -O binary $(TARGET).ihx $(TARGET).bin flash: $(TARGET).bin pre-flash $(WCHISP) $(TARGET).bin .DEFAULT_GOAL := all all: $(TARGET).bin $(TARGET).hex clean: rm -f \ $(notdir $(RELS:.rel=.asm)) \ $(notdir $(RELS:.rel=.lst)) \ $(notdir $(RELS:.rel=.mem)) \ $(notdir $(RELS:.rel=.rel)) \ $(notdir $(RELS:.rel=.rst)) \ $(notdir $(RELS:.rel=.sym)) \ $(notdir $(RELS:.rel=.adb)) \ $(TARGET).lk \ $(TARGET).map \ $(TARGET).mem \ $(TARGET).ihx \ $(TARGET).hex \ $(TARGET).bin