
###############################################################################
# Initial Environment Setup and Sanity Checks
###############################################################################
SHELL := /bin/bash
.SUFFIXES:
.SECONDEXPANSION:
.DELETE_ON_ERROR:

PYTHON.SRC := \
	modules/convert.py \
	modules/pfm_data.py \
	modules/pfm_smbus_rule.py \
	modules/pfm_spi_region.py \
	modules/pfm_factory.py

PYTHON.UNITTEST_STAMPS := $(strip $(patsubst %.py,%.unittest,$(PYTHON.SRC)))


###############################################################################
# Targets
###############################################################################
.PHONY: all
all: test

# TODO: Add check-pfms here once BMC and PCH teams have valid PFMs.
.PHONY: test
test: $(PYTHON.UNITTEST_STAMPS) check-cpld-update-capsule-generator check-pfms

$(PYTHON.UNITTEST_STAMPS): %.unittest: %.py
	cd $(<D) && PYTHONPATH=$(abspath .) python -3 -B -m unittest $(*F)

.PHONY: check-pfms
check-pfms: check-pch-pfm 
	@echo "[Success] check-pfms"

.PHONY: check-pch-pfm
check-pch-pfm: sample_binaries/unsigned_pfm_pch.bin 
	python pfm_checker.py $<

.PHONY: check-bmc-pfm
check-bmc-pfm: sample_blobs/bmc_pfm.bin
	python pfm_checker.py $<

.PHONY: check-cpld-update-capsule-generator
check-cpld-update-capsule-generator: cpld_update_capsule_generator.py sample_binaries/pfr_cfm0_auto.rpd
	python $< 1 sample_binaries/pfr_cfm0_auto.rpd cpld_upd_cap.bin
	@diff cpld_upd_cap.bin sample_binaries/pfr_cfm0_cpld_capsule.bin
	@rm cpld_upd_cap.bin
	@echo "[Success] The generated CPLD update capsule matches the expected binary. " 

.PHONY: clean
clean:
	@rm */*.pyc */*.bin
