# 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)/main.o # Epiphany applications and common objects EPAPPS = $(DEST)/Gen.srec $(DEST)/Square.srec #$(DEST)/Beam_Former.srec EWRAPPERS = $(patsubst $(DEST)%,$(EDEST)%,$(EPAPPS:.srec=_Wrapper.o)) ECOMMON = $(EDEST)/dol.o $(EDEST)/ports.o $(EDEST)/index.o # Epiphany build flags CC = e-gcc OBJCOPY = e-objcopy CFLAGS = -O2 -std=c99 -Ilib -falign-loops=8 -falign-functions=8 -Wall LFLAGS = -T$(EPIPHANY_HOME)/bsps/current/fast.ldf -le-lib OCFLAGS = -R .shared_dram -R .data_bank3 # Host build flags HOSTCC = gcc HCFLAGS = -O2 -std=c99 -I$(EPIPHANY_HOME)/tools/host/include -Wall HLFLAGS = -L$(EPIPHANY_HOME)/tools/host/lib -le-hal # Global rules .SECONDARY: .PHONY: all run host cores clean all: run host: $(HOSTAPP) cores: $(ECOMMON) $(EWRAPPERS) $(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: $(EDEST)/%.o $(EDEST)/%_Wrapper.o $(ECOMMON) @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 $@ $^