README: Updates to build bootloaders
[freedom-sifive.git] / common.mk
index e09cc29a1483485a241437d929269f8dfcf2a3f9..db054830983f75d75ac16e9d71a01f60ad20a8ca 100644 (file)
--- a/common.mk
+++ b/common.mk
 # 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)