-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathmakefile.include.template
More file actions
107 lines (86 loc) · 2.42 KB
/
Copy pathmakefile.include.template
File metadata and controls
107 lines (86 loc) · 2.42 KB
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
##
# Copyright 2023,2024 CEA*
# Commissariat a l'Energie Atomique et aux Energies Alternatives
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
##
##
# @file makefile.include.template
# @author Cesar Fuguet
##
BSP = <<__BSP__>>
THISDIR := $(dir $(lastword $(MAKEFILE_LIST)))
-include $(BSP)/makefile.bsp.include
BIN2MEM = $(RVB_HOME)/scripts/bin2mem.py
MKDIR = mkdir -p
RM = rm -f
RMDIR = rmdir
PRINTF_FLOAT = 1
LINKER_SCRIPT = $(BSP)/linkcmds
MEM_WORD_SIZE = 64
CFLAGS += -ffreestanding \
-ffunction-sections \
-fdata-sections \
$(BSP_CFLAGS)
CXXFLAGS = $(CFLAGS) -std=c++11
LDFLAGS = -nostdlib \
-static \
-T $(LINKER_SCRIPT) \
-Wl,--gc-sections \
-Wl,--print-memory-usage \
-Wl,--relax \
-L$(THISDIR) \
$(EXTRA_LDFLAGS)
ifeq ($(PRINTF_FLOAT),1)
LDFLAGS += -u _printf_float
endif
INCLUDES = -I$(RVB_HOME)/include \
-I$(BSP)/include \
$(EXTRA_INCLUDES)
LIBS = $(EXTRA_LIBS) -Wl,--start-group -lc -lgcc -lrvb -Wl,--end-group
O = build
TARGET ?= $(error missing TARGET)
target = $O/$(TARGET).x
# add build prefix to object files
OBJS := $(addprefix $O/,$(OBJS))
.PHONY: all dump mem bin
all: $(target) $(target).dump
dump: $(target).dump
mem: $(target).mem
bin: $(target).bin
$(target): $(OBJS)
$(MKDIR) $(dir $@)
$(CXX) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)
%.dump: %
$(MKDIR) $(dir $@)
$(OD) -D $< > $@
%.bin: %
$(MKDIR) $(dir $@)
$(OC) -S -O binary $< $@
%.mem: %.bin
$(MKDIR) $(dir $@)
$(BIN2MEM) --in $< --out $@ --outw $(MEM_WORD_SIZE)
$O/%.o: %.cpp
$(MKDIR) $(dir $@)
$(CXX) $(CXXFLAGS) $(INCLUDES) -c -o $@ $<
$O/%.o: %.c
$(MKDIR) $(dir $@)
$(CC) $(CFLAGS) $(INCLUDES) -c -o $@ $<
$O/%.o: %.S
$(MKDIR) $(dir $@)
$(CC) $(CFLAGS) $(INCLUDES) -c -o $@ $<
.PHONY: clean
clean:
$(RM) $(OBJS)
$(RM) $(target) $(target).dump $(target).bin $(target).mem
$(RMDIR) $(O)