51 lines
1.1 KiB
Makefile
51 lines
1.1 KiB
Makefile
TOPNAME = top
|
|
NXDC_FILES = constr/top.nxdc
|
|
INC_PATH ?=
|
|
|
|
VERILATOR = verilator
|
|
VERILATOR_CFLAGS += -MMD -Wall --build -cc -Wno-lint \
|
|
-O3 --x-assign fast --x-initial fast --noassert
|
|
|
|
BUILD_DIR = ./build
|
|
OBJ_DIR = $(BUILD_DIR)/obj_dir
|
|
BIN = $(BUILD_DIR)/$(TOPNAME)
|
|
|
|
default: $(BIN)
|
|
|
|
$(shell mkdir -p $(BUILD_DIR))
|
|
|
|
# contraint file
|
|
SRC_AUTO_BIND = $(abspath $(BUILD_DIR)/auto_bind.cpp)
|
|
$(SRC_AUTO_BIND): $(NXDC_FILES)
|
|
python $(NVBOARD_HOME)/scripts/auto_pin_bind.py $^ $@
|
|
|
|
# project source
|
|
|
|
VSRCS = $(shell find $(abspath ./vsrc) -name "*.v")
|
|
CSRCS = $(shell find $(abspath ./csrc) -name "*.c" -or -name "*.cc" -or -name "*.cpp")
|
|
CSRCS += $(SRC_AUTO_BIND)
|
|
|
|
# rules for NVBoard
|
|
include $(NVBOARD_HOME)/scripts/nvboard.mk
|
|
|
|
# rules for verilator
|
|
|
|
INCFLAGS = $(addprefix -I, $(INC_PATH))
|
|
CFLAGS += $(INCFLAGS) -DTOP_NAME="\"V$(TOPNAME)\""
|
|
LDFLAGS += -lSDL2 -lSDL2_image
|
|
|
|
$(BIN): $(VSRCS) $(CSRCS) $(NBD_ARCHIVE)
|
|
@rm -rf $(OBJ_DIR)
|
|
$(VERILATOR) $(VERILATOR_CFLAGS) \
|
|
-top $(TOPNAME) $^ \
|
|
$(addprefix -CFLAGS , $(CFLAGS)) $(addprefix -LDFLAGS , $(LDFLAGS)) \
|
|
--Mdir $(OBJ_DIR) --exe -o $(abspath $(BIN))
|
|
|
|
run: $(BIN)
|
|
@$^
|
|
|
|
clean:
|
|
rm -rf $(BUILD_DIR)
|
|
|
|
.PHONY: clean run
|