forked from grahamedgecombe/icicle
-
Notifications
You must be signed in to change notification settings - Fork 4
/
Makefile
69 lines (54 loc) · 1.8 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
.DEFAULT_GOAL = all
QUIET = -q
PLL = pll.sv
SRC = $(sort $(wildcard *.sv) $(PLL))
TOP = top
SV = $(TOP).sv
YS = $(ARCH).ys
YS_ICE40 = `yosys-config --datdir/$(ARCH)/cells_sim.v`
BLIF = $(TOP).blif
JSON = $(TOP).json
ASC_SYN = $(TOP)_syn.asc
ASC = $(TOP).asc
BIN = $(TOP).bin
SVF = $(TOP).svf
TIME_RPT = $(TOP).rpt
STAT = $(TOP).stat
BOARD ?= ice40hx8k-b-evn
PROGRAM ?= buttons2leds
C_SRC = $(filter-out programs/uip/fsdata.c, $(wildcard programs/$(PROGRAM)/*.c))
OBJ = $(sort $(addsuffix .o, $(basename $(C_SRC))) start.o)
TARGET ?= riscv64-unknown-elf
AS = $(TARGET)-as
ASFLAGS = -march=rv32i -mabi=ilp32
LD = $(TARGET)-gcc
LDFLAGS = $(CFLAGS) -Wl,-Tprogmem.lds
CC = $(TARGET)-gcc
CFLAGS = -march=rv32i -mabi=ilp32 -Wall -Wextra -pedantic -DFREQ=$(FREQ_PLL)000000 -Os -ffreestanding -nostartfiles -g -Iprograms/$(PROGRAM)
OBJCOPY = $(TARGET)-objcopy
include boards/$(BOARD).mk
include arch/$(ARCH).mk
.PHONY: all clean syntax time stat flash
all: $(BIN)
clean:
$(RM) $(BLIF) $(JSON) $(ASC_SYN) $(ASC) $(BIN) $(SVF) $(PLL) $(TIME_RPT) $(STAT) $(OBJ) progmem_syn.hex progmem.hex progmem.bin start.o start.s progmem progmem.lds defines.sv
progmem.bin: progmem
$(OBJCOPY) -O binary $< $@
progmem.hex: progmem.bin
xxd -p -c 4 < $< > $@
progmem: $(OBJ) progmem.lds
$(LD) $(LDFLAGS) -o $@ $(OBJ)
$(BLIF) $(JSON): $(YS) $(SRC) progmem_syn.hex progmem.hex defines.sv
yosys $(QUIET) $<
syntax: $(SRC) progmem_syn.hex defines.sv
iverilog -D$(shell echo $(ARCH) | tr 'a-z' 'A-Z') -Wall -t null -g2012 $(YS_ICE40) $(SV)
defines.sv: boards/$(BOARD)-defines.sv
cp boards/$(BOARD)-defines.sv defines.sv
start.s: start-$(PROGMEM).s
cp $< $@
progmem.lds: arch/$(ARCH)-$(PROGMEM).lds
cp $< $@
time: $(TIME_RPT)
cat $<
stat: $(STAT)
cat $<