mirror of
https://github.com/openhwgroup/cvw
synced 2025-01-24 13:34:28 +00:00
b3aaa87cba
Since writing an SD card image generation script, the bootloader needed to be altered to access individual binaries from specific partitions. A new file, gpt.c with it's header gpt.h, have been added to the bootloader to facilitate this. The SDC has been added to the device tree for the VCU108 board. Additionally the SDC interrupt signal was added to the PLIC node in the device tree. The PLIC itself was modified to accept the SDC interrupt signal.
115 lines
3.5 KiB
Makefile
115 lines
3.5 KiB
Makefile
CEXT := c
|
|
CPPEXT := cpp
|
|
AEXT := s
|
|
SEXT := S
|
|
SRCEXT := \([$(CEXT)$(AEXT)$(SEXT)]\|$(CPPEXT)\)
|
|
OBJEXT := o
|
|
DEPEXT := d
|
|
SRCDIR := .
|
|
BUILDDIR := OBJ
|
|
|
|
SOURCES ?= $(shell find $(SRCDIR) -type f -regex ".*\.$(SRCEXT)" | sort)
|
|
OBJECTS := $(SOURCES:.$(CEXT)=.$(OBJEXT))
|
|
OBJECTS := $(OBJECTS:.$(AEXT)=.$(OBJEXT))
|
|
OBJECTS := $(OBJECTS:.$(SEXT)=.$(OBJEXT))
|
|
OBJECTS := $(OBJECTS:.$(CPPEXT)=.$(OBJEXT))
|
|
OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(OBJECTS))
|
|
|
|
TARGETDIR := bin
|
|
TARGET := $(TARGETDIR)/boot
|
|
ROOT := ..
|
|
LIBRARY_DIRS :=
|
|
LIBRARY_FILES :=
|
|
|
|
MARCH :=-march=rv64imfdc
|
|
MABI :=-mabi=lp64d
|
|
LINK_FLAGS :=$(MARCH) $(MABI) -nostartfiles
|
|
LINKER :=$(ROOT)/linker1000.x
|
|
|
|
|
|
AFLAGS =$(MARCH) $(MABI) -W
|
|
# Override directive allows us to prepend other options on the command line
|
|
# e.g. $ make CFLAGS=-g
|
|
override CFLAGS +=$(MARCH) $(MABI) -mcmodel=medany -O2
|
|
AS=riscv64-unknown-elf-as
|
|
CC=riscv64-unknown-elf-gcc
|
|
AR=riscv64-unknown-elf-ar
|
|
|
|
|
|
#Default Make
|
|
all: directories $(TARGET).memfile
|
|
|
|
#Remake
|
|
remake: clean all
|
|
|
|
#Make the Directories
|
|
directories:
|
|
@mkdir -p $(TARGETDIR)
|
|
@mkdir -p $(BUILDDIR)
|
|
|
|
clean:
|
|
rm -rf $(BUILDDIR) $(TARGETDIR) *.memfile *.objdump
|
|
|
|
|
|
#Needed for building additional library projects
|
|
ifdef LIBRARY_DIRS
|
|
LIBS+=${LIBRARY_DIRS:%=-L%} ${LIBRARY_FILES:%=-l%}
|
|
INC+=${LIBRARY_DIRS:%=-I%}
|
|
|
|
${LIBRARY_DIRS}:
|
|
make -C $@ -j 1
|
|
|
|
.PHONY: $(LIBRARY_DIRS) $(TARGET)
|
|
endif
|
|
|
|
|
|
#Pull in dependency info for *existing* .o files
|
|
-include $(OBJECTS:.$(OBJEXT)=.$(DEPEXT))
|
|
|
|
#Link
|
|
$(TARGET): $(OBJECTS) $(LIBRARY_DIRS)
|
|
$(CC) $(LINK_FLAGS) -g -o $(TARGET) $(OBJECTS) ${LIBS} -T ${LINKER}
|
|
|
|
|
|
#Compile
|
|
$(BUILDDIR)/%.$(OBJEXT): $(SRCDIR)/%.$(CEXT)
|
|
@mkdir -p $(dir $@)
|
|
$(CC) $(CFLAGS) $(INC) -c -o $@ $< > $(BUILDDIR)/$*.list
|
|
@$(CC) $(CFLAGS) $(INC) -MM $(SRCDIR)/$*.$(CEXT) > $(BUILDDIR)/$*.$(DEPEXT)
|
|
@cp -f $(BUILDDIR)/$*.$(DEPEXT) $(BUILDDIR)/$*.$(DEPEXT).tmp
|
|
@sed -e 's|.*:|$(BUILDDIR)/$*.$(OBJEXT):|' < $(BUILDDIR)/$*.$(DEPEXT).tmp > $(BUILDDIR)/$*.$(DEPEXT)
|
|
@sed -e 's/.*://' -e 's/\\$$//' < $(BUILDDIR)/$*.$(DEPEXT).tmp | fmt -1 | sed -e 's/^ *//' -e 's/$$/:/' >> $(BUILDDIR)/$*.$(DEPEXT)
|
|
@rm -f $(BUILDDIR)/$*.$(DEPEXT).tmp
|
|
|
|
# gcc won't output dependencies for assembly files for some reason
|
|
# most asm files don't have dependencies so the echo will work for now.
|
|
$(BUILDDIR)/%.$(OBJEXT): $(SRCDIR)/%.$(AEXT)
|
|
@mkdir -p $(dir $@)
|
|
$(CC) $(CFLAGS) -c -o $@ $< > $(BUILDDIR)/$*.list
|
|
@echo $@: $< > $(BUILDDIR)/$*.$(DEPEXT)
|
|
|
|
$(BUILDDIR)/%.$(OBJEXT): $(SRCDIR)/%.$(SEXT)
|
|
@mkdir -p $(dir $@)
|
|
$(CC) $(CFLAGS) $(INC) -c -o $@ $< > $(BUILDDIR)/$*.list
|
|
@echo $@: $< > $(BUILDDIR)/$*.$(DEPEXT)
|
|
|
|
# C++
|
|
$(BUILDDIR)/%.$(OBJEXT): $(SRCDIR)/%.$(CPPEXT)
|
|
@mkdir -p $(dir $@)
|
|
$(CC) $(CFLAGS) $(INC) -c -o $@ $< > $(BUILDDIR)/$*.list
|
|
@$(CC) $(CFLAGS) $(INC) -MM $(SRCDIR)/$*.$(CPPEXT) > $(BUILDDIR)/$*.$(DEPEXT)
|
|
@cp -f $(BUILDDIR)/$*.$(DEPEXT) $(BUILDDIR)/$*.$(DEPEXT).tmp
|
|
@sed -e 's|.*:|$(BUILDDIR)/$*.$(OBJEXT):|' < $(BUILDDIR)/$*.$(DEPEXT).tmp > $(BUILDDIR)/$*.$(DEPEXT)
|
|
@sed -e 's/.*://' -e 's/\\$$//' < $(BUILDDIR)/$*.$(DEPEXT).tmp | fmt -1 | sed -e 's/^ *//' -e 's/$$/:/' >> $(BUILDDIR)/$*.$(DEPEXT)
|
|
@rm -f $(BUILDDIR)/$*.$(DEPEXT).tmp
|
|
|
|
# convert to hex
|
|
$(TARGET).memfile: $(TARGET)
|
|
@echo 'Making object dump file.'
|
|
riscv64-unknown-elf-objdump -DS $< > $<.objdump
|
|
@echo 'Making memory file'
|
|
riscv64-unknown-elf-elf2hex --bit-width 64 --input $^ --output $@
|
|
extractFunctionRadix.sh $<.objdump
|
|
mkdir -p ../../imperas-riscv-tests/work/rv64BP/
|
|
cp -f $(TARGETDIR)/* ../../imperas-riscv-tests/work/rv64BP/
|