# makefile for sdcc-based projects by azman@my1matrix.net # - supports multiple source project # - supports large memory model # - for single source file in folder, simply do 'make .hex' # - memory settings customized for NXP's P89V51RD2 PROJECT = gtuc51main OBJECTS = gtuc51adc.rel gtuc51key.rel gtuc51lcd.rel gtuc51lib.rel gtuc51main.rel TEMPOBJ = *.asm *.lst *.rel *.sym *.lnk *.map *.mem *.rst *.hex *.lk *.ihx HEXFILE = $(PROJECT).hex OUTFILE = $(PROJECT).ihx DELETE = rm -rf TOOL_PATH ?= /home/share/tool/sdcc CC = $(TOOL_PATH)/bin/sdcc HEX = $(TOOL_PATH)/bin/packihx CFLAGS += -DUSE_SDCC -I$(TOOL_PATH)/share/sdcc/include LFLAGS += --code-loc 0x0000 --iram-size 0x0100 LFLAGS += --xram-loc 0x0000 --xram-size 0x300 MMODEL = -mmcs51 --model-small MODLIB = -L$(TOOL_PATH)/share/sdcc/lib/small large: MMODEL = -mmcs51 --model-large large: MODLIB = -L$(TOOL_PATH)/share/sdcc/lib/large main: this all: this this: $(HEXFILE) large: this new: clean all $(HEXFILE): $(OBJECTS) $(CC) $(MMODEL) $(CFLAGS) -o $(OUTFILE) $(OBJECTS) $(LFLAGS) $(MODLIB) $(HEX) $(OUTFILE) > $(HEXFILE) %.hex: %.ihx $(HEX) $< > $@ %.ihx: %.rel $(CC) $(MMODEL) $(CFLAGS) -o $@ $^ $(LFLAGS) $(MODLIB) $(OFLAGS) %.rel: src/%.c src/%.h $(CC) $(MMODEL) $(CFLAGS) -c $< %.rel: src/%.c $(CC) $(MMODEL) $(CFLAGS) -c $< clean: -$(DELETE) $(TEMPOBJ)