# Copyright (C) 2017-2020  The Project X-Ray Authors.
#
# Use of this source code is governed by a ISC-style
# license that can be found in the LICENSE file or at
# https://opensource.org/licenses/ISC
#
# SPDX-License-Identifier: ISC

N := 1
BUILD_DIR = build_${XRAY_PART}
SPECIMENS := $(addprefix $(BUILD_DIR)/specimen_,$(shell seq -f '%03.0f' $(N)))
SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS))
MAX_VIVADO_PROCESS ?= 4
MAX_TILES_INSTANCE ?= 300
MAX_NODES_INSTANCE ?= 30000

database: $(SPECIMENS_OK)
	true

pushdb:
	cp $(BUILD_DIR)/output/tile_type_*.json ${XRAY_FAMILY_DIR}/
	rm ${XRAY_FAMILY_DIR}/tile_type_*_site_type_*.json
	cp $(BUILD_DIR)/output/site_type_*.json ${XRAY_FAMILY_DIR}/
	cp $(BUILD_DIR)/output/tileconn.json ${XRAY_FAMILY_DIR}/$(XRAY_FABRIC)/
	cp $(BUILD_DIR)/output/node_wires.json ${XRAY_FAMILY_DIR}/$(XRAY_FABRIC)/

$(SPECIMENS_OK):
	bash generate.sh $(subst /OK,,$@) -p=$(MAX_VIVADO_PROCESS) -t=$(MAX_TILES_INSTANCE) -n=$(MAX_NODES_INSTANCE)
	touch $@

run:
	rm -rf $(BUILD_DIR) run.${XRAY_PART}.ok
	$(MAKE) database
	$(MAKE) pushdb
	# Clean up intermediate files after successful pushdb.
	find $(BUILD_DIR) -name "*.json5" -delete
	touch run.${XRAY_PART}.ok

clean:
	rm -rf build_* run.*.ok

.PHONY: database pushdb run clean

