tidying up main makefrag

This commit is contained in:
Scott Beamer 2014-09-24 17:12:28 -07:00
parent 09a7ceaf25
commit 53d7009dc0
1 changed files with 37 additions and 23 deletions

View File

@ -2,12 +2,14 @@
JOBS = 16
base_dir = $(abspath ..)
common = $(base_dir)/common
output_delivery = deliver_output
ifneq ($(BOARD_MODEL),)
insert_board = s/\# REPLACE FOR OFFICIAL BOARD NAME/set_property "board" "$(BOARD_MODEL)"/g
insert_board = s/\# REPLACE FOR OFFICIAL BOARD NAME/set_property "board" "$(BOARD_MODEL)"/g
endif
verilog_srcs = \
src/verilog/clocking.vh \
src/verilog/rocketchip_wrapper.v \
@ -19,41 +21,48 @@ default: project
# Specialize sources for board
src/verilog/rocketchip_wrapper.v: $(base_dir)/common/rocketchip_wrapper.v
cp $(base_dir)/common/rocketchip_wrapper.v src/verilog/
# ------------------------------------------------------------------------------
src/verilog/rocketchip_wrapper.v: $(common)/rocketchip_wrapper.v
cp $(common)/rocketchip_wrapper.v src/verilog/
src/tcl/$(BOARD)_rocketchip.tcl: $(base_dir)/common/zynq_rocketchip.tcl Makefile
sed 's/BOARD_NAME_HERE/$(BOARD)/g;s/PART_NUMBER_HERE/$(PART)/g;$(insert_board);s/CHISEL_CONFIG_HERE/$(CHISEL_CONFIG)/g' $(base_dir)/common/zynq_rocketchip.tcl > src/tcl/$(BOARD)_rocketchip.tcl
src/tcl/$(BOARD)_rocketchip.tcl: $(common)/zynq_rocketchip.tcl Makefile
sed 's/BOARD_NAME_HERE/$(BOARD)/g;s/PART_NUMBER_HERE/$(PART)/g;$(insert_board);s/CHISEL_CONFIG_HERE/$(CHISEL_CONFIG)/g' \
$(common)/zynq_rocketchip.tcl > src/tcl/$(BOARD)_rocketchip.tcl
src/tcl/make_bitstream.tcl: $(base_dir)/common/make_bitstream.tcl
sed 's/BOARD_NAME_HERE/$(BOARD)/g' $(base_dir)/common/make_bitstream.tcl > src/tcl/make_bitstream.tcl
src/tcl/make_bitstream.tcl: $(common)/make_bitstream.tcl
sed 's/BOARD_NAME_HERE/$(BOARD)/g' \
$(common)/make_bitstream.tcl > src/tcl/make_bitstream.tcl
# no dependencies so it has to be manually called
# (don't want to clobber local verilog by accident)
rocket:
cd $(base_dir)/rocket-chip/fsim; make verilog CONFIG=$(CHISEL_CONFIG); cp generated-src/Top.$(CHISEL_CONFIG).v $(base_dir)/$(BOARD)/src/verilog
cd $(base_dir)/rocket-chip/fsim; \
make verilog CONFIG=$(CHISEL_CONFIG); \
cp generated-src/Top.$(CHISEL_CONFIG).v $(base_dir)/$(BOARD)/src/verilog
# Project generation
$(BOARD)_rocketchip/$(BOARD)_rocketchip.xpr: src/verilog/rocketchip_wrapper.v src/tcl/$(BOARD)_rocketchip.tcl
vivado -mode tcl -source src/tcl/$(BOARD)_rocketchip.tcl
# ------------------------------------------------------------------------------
project = $(BOARD)_rocketchip/$(BOARD)_rocketchip.xpr
$(project): | src/verilog/rocketchip_wrapper.v src/tcl/$(BOARD)_rocketchip.tcl
vivado -mode tcl -source src/tcl/$(BOARD)_rocketchip.tcl; \
project: $(project)
$(BOARD)_rocketchip/$(BOARD)_rocketchip.runs/impl_1/rocketchip_wrapper.bit: $(BOARD)_rocketchip/$(BOARD)_rocketchip.xpr src/tcl/make_bitstream.tcl $(verilog_srcs) src/constrs/base.xdc
vivado: $(project)
vivado $(project) &
bitstream = $(BOARD)_rocketchip/$(BOARD)_rocketchip.runs/impl_1/rocketchip_wrapper.bit
$(bitstream): src/tcl/make_bitstream.tcl $(verilog_srcs) src/constrs/base.xdc | $(project)
vivado -mode tcl -source src/tcl/make_bitstream.tcl
bitstream: $(bitstream)
project: $(BOARD)_rocketchip/$(BOARD)_rocketchip.xpr
vivado: $(BOARD)_rocketchip/$(BOARD)_rocketchip.xpr
vivado $(BOARD)_rocketchip/$(BOARD)_rocketchip.xpr &
bitstream: $(BOARD)_rocketchip/$(BOARD)_rocketchip.runs/impl_1/rocketchip_wrapper.bit
# Platform software generation
# ------------------------------------------------------------------------------
arm_linux_dir = $(base_dir)/common/linux-xlnx
uboot_dir = $(base_dir)/common/u-boot-xlnx
soft_build_dir = soft_build
# software builds
arm-linux: arm-uboot # must first build uboot because we need tools
# compile kernel
git submodule update --init $(arm_linux_dir)
@ -83,11 +92,15 @@ arm-uboot:
arm-dtb:
export PATH=$(arm_linux_dir)/scripts/dtc:$$PATH && dtc -I dts -O dtb -o $(output_delivery)/devicetree.dtb soft_config/$(BOARD)_devicetree.dts
# Handle images and git submodule for prebuilt modules
# ------------------------------------------------------------------------------
# boot.bif is proxy for has images submodule been pulled
fpga-images-$(BOARD)/boot.bif:
git submodule update --init --depth=1 fpga-images-$(BOARD)
fpga-images-$(BOARD)/boot.bin: fpga-images-$(BOARD)/boot.bif $(BOARD)_rocketchip/$(BOARD)_rocketchip.runs/impl_1/rocketchip_wrapper.bit
fpga-images-$(BOARD)/boot.bin: fpga-images-$(BOARD)/boot.bif $(bitstream)
cd fpga-images-$(BOARD); bootgen -image boot.bif -w -o boot.bin
fetch-images: fpga-images-$(BOARD)/boot.bif
@ -110,7 +123,8 @@ ramdisk-close:
rm uramdisk.cpio.gz
@echo "Don't forget to remove ramdisk before opening it again (sudo rm -rf ramdisk)"
clean:
rm -f *.log *.jou
.PHONY: rocket project vivado bitstream fetch-images load-sd clean ramdisk-open ramdisk-close
clean:
rm -f *.log *.jou *.str
.PHONY: rocket vivado fetch-images load-sd clean ramdisk-open ramdisk-close