2 # File: BuildEnvironment.mk
3 # Copyright (c) 2019, Dornerworks Ltd.
7 CROSS_COMPILE_PREFIX = riscv32-unknown-elf
9 SDK_DIR = ./freedom-e-sdk
11 LINKER_SCRIPT = $(SDK_DIR)/env/freedom-e300-hifive1/flash.lds
12 #-----------------------------------------------------------
13 GCC = $(CROSS_COMPILE_PREFIX)-gcc
14 OBJCOPY = $(CROSS_COMPILE_PREFIX)-objcopy
15 OBJDUMP = $(CROSS_COMPILE_PREFIX)-objdump
16 AR = $(CROSS_COMPILE_PREFIX)-ar
17 RANLIB = $(CROSS_COMPILE_PREFIX)-ranlib
18 GDB = $(CROSS_COMPILE_PREFIX)-gdb
20 # if using the multi-arch (riscv64-unknown-elf-gcc):
21 ARCH_FLAGS = -march=rv32imac -mabi=ilp32 -mcmodel=medany
23 CFLAGS = -Wall -Wextra -O0 -g3 -msmall-data-limit=8 -std=gnu11
24 CFLAGS += -ffunction-sections -fdata-sections -fno-builtin-printf
25 CFLAGS += -DDONT_USE_PLIC -DDONT_USE_M_TIME
26 CFLAGS += -include sys/cdefs.h
27 CFLAGS += $(ARCH_FLAGS)
28 # These flags are for outputing *.d dependency files for make
29 CFLAGS += -MT"$@" -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)"
32 ASMFLAGS += $(ARCH_FLAGS)
33 ASMFLAGS += -DportasmHANDLE_INTERRUPT=handle_trap
34 ASMFLAGS += -msmall-data-limit=8
35 ASMFLAGS += -ffunction-sections -fdata-sections
36 ASMFLAGS += -x assembler-with-cpp
37 ASMFLAGS += -MT"$@" -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)"
39 # Linker arguments __________________________________________
40 LDFLAGS := -Xlinker --gc-sections -Xlinker --defsym=__stack_size=1K
42 LDFLAGS += -ffunction-sections -fdata-sections --specs=nano.specs
43 LDFLAGS += -nostartfiles
44 LDFLAGS += -T $(LINKER_SCRIPT)
46 LDFLAGS += -Wl,--start-group -Wl,--end-group
47 LDFLAGS += -Wl,--wrap=malloc -Wl,--wrap=free -Wl,--wrap=open -Wl,--wrap=lseek -Wl,--wrap=read -Wl,--wrap=write
48 LDFLAGS += -Wl,--wrap=fstat -Wl,--wrap=stat -Wl,--wrap=close -Wl,--wrap=link -Wl,--wrap=unlink -Wl,--wrap=execve
49 LDFLAGS += -Wl,--wrap=fork -Wl,--wrap=getpid -Wl,--wrap=kill -Wl,--wrap=wait -Wl,--wrap=isatty -Wl,--wrap=times
50 LDFLAGS += -Wl,--wrap=sbrk -Wl,--wrap=_exit -Wl,--wrap=puts -Wl,--wrap=_malloc -Wl,--wrap=_free -Wl,--wrap=_open
51 LDFLAGS += -Wl,--wrap=_lseek -Wl,--wrap=_read -Wl,--wrap=_write -Wl,--wrap=_fstat -Wl,--wrap=_stat -Wl,--wrap=_close
52 LDFLAGS += -Wl,--wrap=_link -Wl,--wrap=_unlink -Wl,--wrap=_execve -Wl,--wrap=_fork -Wl,--wrap=_getpid -Wl,--wrap=_kill
53 LDFLAGS += -Wl,--wrap=_wait -Wl,--wrap=_isatty -Wl,--wrap=_times -Wl,--wrap=_sbrk -Wl,--wrap=__exit -Wl,--wrap=_puts