# Makefile # Host and Epiphany application destination DEST := bin # Host source and object folder HSRC := hsrc HDEST := hobj # Epiphany source, library and object folder ESRC := esrc EDEST := eobj ELIB := lib # Host application and host objects HOSTAPP = $(DEST)/ep_application HOBJS = $(HDEST)/buffers.o # Epiphany applications and common objects EPAPPS = $(DEST)/Data_Generator.srec $(DEST)/Weight_Generator.srec ECOMMON = $(EDEST)/dol.o # Epiphany build flags CC = e-gcc OBJCOPY = e-objcopy CFLAGS = -O2 -falign-loops=8 -falign-functions=8 -Wall -Ilib LFLAGS = -T$(EPIPHANY_HOME)/bsps/current/fast.ldf -le-lib OCFLAGS = -R .shared_dram -R .data_bank3 # Host build flags HOSTCC = gcc HCFLAGS = -I$(EPIPHANY_HOME)/tools/host/include -std=c99 -Wall HLFLAGS = -L$(EPIPHANY_HOME)/tools/host/lib -le-hal # Global rules .PHONY: all run host cores clean all: run host: $(HOSTAPP) cores: $(EPAPPS) run: host cores @echo -e "\tRUN" @sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \ EPIPHANY_HDF=$(EPIPHANY_HDF) \ $(HOSTAPP) clean: @echo -e "\tCLEAN" @rm -v -f $(HOSTAPP) $(EPAPPS) $(EDEST)/* $(HDEST)/* # Host rules $(HOSTAPP): $(HOBJS) @echo -e "\t(HOST) LINK\t$@" @$(HOSTCC) -o $@ $^ $(HLFLAGS) $(HDEST)/%.o: $(HSRC)/%.c @echo -e "\t(HOST) CC\t$@" @$(HOSTCC) $(HCFLAGS) -c -o $@ $^ # Epiphany rules $(DEST)/%.srec: $(EDEST)/%.elf @echo -e "\t(EPIPHANY) OBJCOPY $@" @$(OBJCOPY) $(OCFLAGS) --output-target srec --srec-forceS3 $^ $@ $(EDEST)/%.elf: $(ECOMMON) $(EDEST)/%.o @echo -e "\t(EPIPHANY) LINK\t$@" @$(CC) -o $@ $^ $(LFLAGS) $(EDEST)/%.o: $(ESRC)/%.c @echo -e "\t(EPIPHANY) CC\t$@" @$(CC) $(CFLAGS) -c -o $@ $^ $(EDEST)/%.o: $(ELIB)/%.c @echo -e "\t(EPIPHANY) CC\t$@" @$(CC) $(CFLAGS) -c -o $@ $^