# -*- makefile -*- CROSS_COMPILE := arm-linux- LINKERSCRIPT := $(MC1322X)/mc1322x.lds LIBMC1322X := $(MC1322X)/libmc1322x include $(MC1322X)/config.mk include $(MC1322X)/board/Makefile.board include $(MC1322X)/libmc1322x/Makefile.lib CFLAGS += -I$(MC1322X)/src -I. # default start and isr ifndef START START = $(MC1322X)/src/start.o endif ifndef ISR ISR = $(MC1322X)/src/isr.o endif SRCOBJS += $(MC1322X)/src/default_lowlevel.o BOARDOBJS := $(addprefix $(OBJDIR)/,$(COBJS)) ARCH = arm CPU = arm7tdmi-s export ARCH CPU VENDOR .SECONDARY: ### See http://make.paulandlesley.org/autodep.html#advanced ifdef BOARD -include ${addprefix $(OBJDIR)/,$(addsuffix .d,$(TARGETS))} endif define FINALIZE_DEPENDENCY cp $(@:.o=.d) $(@:.o=.$$$$); \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' < $(@:.o=.$$$$) >> $(@:.o=.d); \ rm -f $(@:.o=.$$$$) endef $(START): $(START:.o=.s) $(CC) $(AFLAGS) -c -o $@ $< $(ISR): $(ISR:.o=.c) $(CC) $(CFLAGS) $(ARM_FLAGS) -MMD $< -c -o $@ @$(FINALIZE_DEPENDENCY) %_$(BOARD).elf: $(START) $(ISR) $(SRCOBJS) $(OBJDIR)/%.o $(BOARDOBJS) $(LINKERSCRIPT) $(LIBMC1322X)/libmc1322x.a $(CC) $(LDFLAGS) $(AOBJS) \ $(filter %.o %.a,$+) -o $@ %.srec: %.elf $(OBJCOPY) ${OBJCFLAGS} -O srec $< $@ %.ihex: %.elf $(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@ %.bin: %.elf $(OBJCOPY) ${OBJCFLAGS} -O binary $< $@ %.dis: %.elf $(OBJDUMP) -SD $< > $@ %.o: %.c $(CC) $(CFLAGS) $(THUMB_FLAGS) -MMD -c -o $@ $< @$(FINALIZE_DEPENDENCY) $(OBJDIR)/%.s: %.S $(CPP) $(AFLAGS) -o $@ $< $(OBJDIR)/%.o: %.S $(CC) $(AFLAGS) -MMD -c -o $@ $< @$(FINALIZE_DEPENDENCY) $(OBJDIR)/%.o: %.c $(CC) $(CFLAGS) $(THUMB_FLAGS) -MMD -c -o $@ $< @$(FINALIZE_DEPENDENCY) clean: find $(MC1322X) \ \( -name 'core' -o -name '*.bak' -o -name '*~' \ -o -name '*.o' -o -name '*.a' -o -name '*.obj' -o -name '*.elf' -o -name '*.s' -o -name '*.map' \ -o -name 'obj_*_board' -o -name '.depend' -o -name '*.bin' -o -name '*.dis' -o -name '*.d' \) -print \ | xargs rm -rf rm -fr *.*~ find \ \( -name 'core' -o -name '*.bak' -o -name '*~' \ -o -name '*.o' -o -name '*.a' -o -name '*.obj' -o -name '*.elf' -o -name '*.s' -o -name '*.map' \ -o -name 'obj_*_board' -o -name '.depend' -o -name '*.bin' -o -name '*.dis' -o -name '*.d' \) -print \ | xargs rm -rf rm -fr *.*~ clobber \ mrproper \ distclean: clean #.DEFAULT_GOAL := all ifndef BOARD .DEFAULT_GOAL := allboards else .DEFAULT_GOAL := all endif all: $(OBJDIR)/board.h for target in $(TARGETS); do make $$target\_$(BOARD).bin; done allboards: for board in $(BOARDS); do make BOARD=$$board all; done