X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=common.mk;h=db054830983f75d75ac16e9d71a01f60ad20a8ca;hb=22ee433699dca058f96858c15e7a2b0c33547d63;hp=e09cc29a1483485a241437d929269f8dfcf2a3f9;hpb=3cf8128a3037cbe02a1542c43f7bf3798f6060b1;p=freedom-sifive.git diff --git a/common.mk b/common.mk index e09cc29..db05483 100644 --- a/common.mk +++ b/common.mk @@ -11,11 +11,23 @@ # Optional variables: # - EXTRA_FPGA_VSRCS +# export to bootloader +export ROMCONF=$(BUILD_DIR)/$(CONFIG_PROJECT).$(CONFIG).rom.conf + +# export to fpga-shells +export FPGA_TOP_SYSTEM=$(MODEL) +export FPGA_BUILD_DIR=$(BUILD_DIR)/$(FPGA_TOP_SYSTEM) +export fpga_common_script_dir=$(FPGA_DIR)/common/tcl +export fpga_board_script_dir=$(FPGA_DIR)/$(BOARD)/tcl + +export BUILD_DIR + EXTRA_FPGA_VSRCS ?= PATCHVERILOG ?= "" +BOOTROM_DIR ?= "" base_dir := $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))) -rocketchip_dir := $(base_dir)/rocket-chip +export rocketchip_dir := $(base_dir)/rocket-chip SBT ?= java -jar $(rocketchip_dir)/sbt-launch.jar # Build firrtl.jar and put it where chisel3 can find it. @@ -25,15 +37,16 @@ FIRRTL ?= java -Xmx2G -Xss8M -XX:MaxPermSize=256M -cp $(FIRRTL_JAR) firrtl.Drive $(FIRRTL_JAR): $(shell find $(rocketchip_dir)/firrtl/src/main/scala -iname "*.scala") $(MAKE) -C $(rocketchip_dir)/firrtl SBT="$(SBT)" root_dir=$(rocketchip_dir)/firrtl build-scala touch $(FIRRTL_JAR) + mkdir -p $(rocketchip_dir)/lib + cp -p $(FIRRTL_JAR) rocket-chip/lib mkdir -p $(rocketchip_dir)/chisel3/lib cp -p $(FIRRTL_JAR) $(rocketchip_dir)/chisel3/lib # Build .fir firrtl := $(BUILD_DIR)/$(CONFIG_PROJECT).$(CONFIG).fir -firrtl_prm := $(BUILD_DIR)/$(CONFIG_PROJECT).$(CONFIG).prm -$(firrtl) $(firrtl_prm): $(shell find $(base_dir)/src/main/scala -name '*.scala') $(FIRRTL_JAR) +$(firrtl): $(shell find $(base_dir)/src/main/scala -name '*.scala') $(FIRRTL_JAR) mkdir -p $(dir $@) - $(SBT) "run-main rocketchip.Generator $(BUILD_DIR) $(PROJECT) $(MODEL) $(CONFIG_PROJECT) $(CONFIG)" + $(SBT) "run-main freechips.rocketchip.system.Generator $(BUILD_DIR) $(PROJECT) $(MODEL) $(CONFIG_PROJECT) $(CONFIG)" .PHONY: firrtl firrtl: $(firrtl) @@ -46,22 +59,24 @@ ifneq ($(PATCHVERILOG),"") $(PATCHVERILOG) endif +.PHONY: verilog +verilog: $(verilog) -verilog_consts_vh := $(BUILD_DIR)/$(CONFIG_PROJECT).$(CONFIG).vh -$(verilog_consts_vh): $(firrtl_prm) - echo "\`ifndef CONST_VH" > $@ - echo "\`define CONST_VH" >> $@ - sed -r 's/\(([A-Za-z0-9_]+),([A-Za-z0-9_]+)\)/`define \1 \2/' $< >> $@ - echo "\`endif // CONST_VH" >> $@ +romgen := $(BUILD_DIR)/$(CONFIG_PROJECT).$(CONFIG).rom.v +$(romgen): $(verilog) +ifneq ($(BOOTROM_DIR),"") + $(MAKE) -C $(BOOTROM_DIR) romgen + mv $(BUILD_DIR)/rom.v $@ +endif -.PHONY: verilog -verilog: $(verilog) $(verilog_consts_vh) +.PHONY: romgen +romgen: $(romgen) # Build .mcs mcs := $(BUILD_DIR)/$(CONFIG_PROJECT).$(CONFIG).mcs -$(mcs): $(verilog) $(verilog_consts_vh) - VSRC_TOP=$(verilog) VSRC_CONSTS=$(verilog_consts_vh) EXTRA_VSRCS="$(EXTRA_FPGA_VSRCS)" $(MAKE) -C $(FPGA_DIR) mcs - cp $(FPGA_DIR)/obj/system.mcs $@ +$(mcs): $(romgen) + VSRCS="$(VSRCS)" $(MAKE) -C $(FPGA_DIR) mcs + cp $(BUILD_DIR)/$(MODEL)/obj/system.mcs $@ .PHONY: mcs mcs: $(mcs) @@ -69,5 +84,8 @@ mcs: $(mcs) # Clean .PHONY: clean clean: +ifneq ($(BOOTROM_DIR),"") + $(MAKE) -C $(BOOTROM_DIR) clean +endif $(MAKE) -C $(FPGA_DIR) clean rm -rf $(BUILD_DIR)