dol: create target object folders when generating
[jump.git] / minidol / Makefile
1 # Makefile
2
3 # Host and Epiphany application destination
4 DEST    := bin
5
6 # Host source and object folder
7 HSRC    := hsrc
8 HDEST   := hobj
9
10 # Epiphany source, library and object folder
11 ESRC    := esrc
12 EDEST   := eobj
13 ELIB    := lib
14
15 # Host application and host objects
16 ECHO    = /bin/echo -e
17 HOSTAPP = $(DEST)/ep_application
18 HOBJS   = $(HDEST)/main.o
19
20 # Epiphany applications and common objects
21 EPAPPS  = $(DEST)/Gen.srec $(DEST)/Square.srec #$(DEST)/Beam_Former.srec
22 EWRAPPERS = $(patsubst $(DEST)%,$(EDEST)%,$(EPAPPS:.srec=_Wrapper.o))
23 ECOMMON = $(EDEST)/dol.o $(EDEST)/ports.o $(EDEST)/index.o
24
25 # Epiphany build flags
26 CC      = e-gcc
27 OBJCOPY = e-objcopy
28 CFLAGS  = -O2 -std=c99 -Ilib -falign-loops=8 -falign-functions=8 -Wall
29 LFLAGS  = -T$(EPIPHANY_HOME)/bsps/current/fast.ldf -le-lib
30 OCFLAGS = -R .shared_dram -R .data_bank3
31
32 # Host build flags
33 HOSTCC  = gcc
34 HCFLAGS = -O2 -std=c99 -I$(EPIPHANY_HOME)/tools/host/include -Wall
35 HLFLAGS = -L$(EPIPHANY_HOME)/tools/host/lib -le-hal
36
37 # Global rules
38 .SECONDARY:
39 .PHONY: all run host cores clean
40 all: run
41
42 host: $(HOSTAPP)
43
44 cores: $(ECOMMON) $(EWRAPPERS) $(EPAPPS)
45
46 run: host cores
47         @$(ECHO) "\tRUN"
48         @sudo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \
49               EPIPHANY_HDF=$(EPIPHANY_HDF) \
50               $(HOSTAPP)
51
52 clean:
53         @$(ECHO) "\tCLEAN"
54         @rm -v -f $(HOSTAPP) $(EPAPPS) $(EDEST)/* $(HDEST)/*
55
56 # Host rules
57 $(HOSTAPP): $(HOBJS)
58         @$(ECHO) "\t(HOST)     LINK\t$@"
59         @$(HOSTCC) -o $@ $^ $(HLFLAGS)
60
61 $(HDEST)/%.o: $(HSRC)/%.c
62         @$(ECHO) "\t(HOST)     CC\t$@"
63         @$(HOSTCC) $(HCFLAGS) -c -o $@ $^
64
65 # Epiphany rules
66 $(DEST)/%.srec: $(EDEST)/%.elf
67         @$(ECHO) "\t(EPIPHANY) OBJCOPY $@"
68         @$(OBJCOPY) $(OCFLAGS) --output-target srec --srec-forceS3 $^ $@
69
70 $(EDEST)/%.elf: $(EDEST)/%.o $(EDEST)/%_Wrapper.o $(ECOMMON)
71         @$(ECHO) "\t(EPIPHANY) LINK\t$@"
72         @$(CC) -o $@ $^ $(LFLAGS)
73
74 $(EDEST)/%.o: $(ESRC)/%.c
75         @$(ECHO) "\t(EPIPHANY) CC\t$@"
76         @$(CC) $(CFLAGS) -c -o $@ $^
77
78 $(EDEST)/%.o: $(ELIB)/%.c
79         @$(ECHO) "\t(EPIPHANY) CC\t$@"
80         @$(CC) $(CFLAGS) -c -o $@ $^
81