+# 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 = @@SREC_FILES@@
+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 = -Os -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 $@ $^
+