# -*- Makefile -*-
# Each plugin shall have a directory named 'test' that contains test cases
# directories and a Makefile which includes this Makefile template.
# The test Makefile specifies which tests to execute and how to verify them.
# The test to execute should be explicitly specified in the TESTS variable.
# Each test needs a verification step define in the name_of_test_verify variable.
# A simple diff verification template have been defined in the template Makefile
# diff_test performs a simple diff and takes name of file and its extension
# Example of a test Makefile is given below:
#
# include $(shell pwd)/../../Makefile_test.common
# TESTS = test1 test2
# test1_verify = $(call diff_test,test1,ext) && test $$(grep "PASS" test1/test1.txt | wc -l) -eq 2
# test2_verify = $(call diff_test,test2,ext)
#

# Either find yosys in system and use its path or use the given path
YOSYS_PATH ?= $(realpath $(dir $(shell which yosys))/..)

# Find yosys-config, throw an error if not found
YOSYS_CONFIG = $(YOSYS_PATH)/bin/yosys-config
ifeq (,$(wildcard $(YOSYS_CONFIG)))
$(error "Didn't find 'yosys-config' under '$(YOSYS_PATH)'")
endif

GTEST_DIR ?= ../../third_party/googletest/googletest
CXX ?= $(shell $(YOSYS_CONFIG) --cxx)
CXXFLAGS ?= $(shell $(YOSYS_CONFIG) --cxxflags) -I.. -I$(GTEST_DIR)/include
LDLIBS ?= $(shell $(YOSYS_CONFIG) --ldlibs) -L$(GTEST_DIR)/build/lib -lgtest -lgtest_main -lpthread
LDFLAGS ?= $(shell $(YOSYS_CONFIG) --ldflags)
TEST_UTILS ?= ../../../test-utils/test-utils.tcl

define test_tpl =
$(1): $(1)/ok
	@set +e; \
	$$($(1)_verify); \
	if [ $$$$? -eq 0 ]; then \
		printf "Test %-18s \e[32mPASSED\e[0m @ %s\n" $(1) $(CURDIR); \
		touch $$<; \
		true; \
	else \
		printf "Test %-18s \e[31;1mFAILED\e[0m @ %s\n" $(1) $(CURDIR); \
		false; \
	fi

$(1)/ok: $(1)/$(1).v
	@set +e; \
	cd $(1); \
	echo "source $(TEST_UTILS)" > run-$(1).tcl ;\
	echo "source $(1).tcl" >> run-$(1).tcl ;\
	DESIGN_TOP=$(1) TEST_OUTPUT_PREFIX=./ \
	yosys -c "run-$(1).tcl" -q -q -l $(1).log; \
	RETVAL=$$$$?; \
	rm -f run-$(1).tcl; \
	if [ ! -z "$$($(1)_negative)" ] && [ $$($(1)_negative) -eq 1 ]; then \
		if [ $$$$RETVAL -ne 0 ]; then \
			printf "Negative test %-18s \e[32mPASSED\e[0m @ %s\n" $(1) $(CURDIR); \
			true; \
		else \
			printf "Negative test %-18s \e[31;1mFAILED\e[0m @ %s\n" $(1) $(CURDIR); \
			false; \
		fi \
	else \
		if [ $$$$RETVAL -ne 0 ]; then \
			echo "Unexpected runtime error"; \
			false; \
		fi \
	fi

endef

define unit_test_tpl =
$(1): $(1)/$(1).test
	@$$<

$(1)/$(1).test: $(1)/$(1).test.o $$(GTEST_DIR)/build/lib/libgtest.a
	@$(CXX) $(LDFLAGS) -o $$@ $$< $(LDLIBS)

$(1)/$(1).test.o: $(1)/$(1).test.cc
	@$(CXX) $(CXXFLAGS) $(LDFLAGS) -c $$< -o $$@

endef

diff_test = diff $(1)/$(1).golden.$(2) $(1)/$(1).$(2)

all: $(TESTS) $(UNIT_TESTS)

$(GTEST_DIR)/build/lib/libgtest.a $(GTEST_DIR)/build/lib/libgtest_main.a:
	@mkdir -p $(GTEST_DIR)/build
	@cd $(GTEST_DIR)/build; \
	cmake ..; \
	make

.PHONY: all clean $(TESTS) $(UNIT_TESTS)

$(foreach test,$(TESTS),$(eval $(call test_tpl,$(test))))
$(foreach test,$(UNIT_TESTS),$(eval $(call unit_test_tpl,$(test))))

clean:
	@rm -rf $(foreach test,$(TESTS),$(test)/$(test).sdc $(test)/$(test)_[0-9].sdc $(test)/$(test).txt $(test)/$(test).eblif $(test)/$(test).json)
	@rm -rf $(foreach test,$(UNIT_TESTS),$(test)/$(test).test.o $(test)/$(test).test.d $(test)/$(test).test)
	@find . -name "ok" -or -name "*.log" | xargs rm -rf
