TECH = scn4m_subm
CUR_DIR = $(shell pwd)
TEST_DIR = ${CUR_DIR}/tests

MAKEFLAGS += -j 1

# Library test
LIBRARY_TESTS = $(shell find ${TEST_DIR} -name 0[1-2]*_test.py)

# Technology and DRC tests (along with ptx)
TECH_TESTS = $(shell find ${TEST_DIR} -name 03*_test.py)

# Parameterized cells
CELL_TESTS = $(shell find ${TEST_DIR} -name 04*_test.py)

# Dynamically generated modules and arrays
MODULE_TESTS = $(shell find ${TEST_DIR} -name 0[5-9]*_test.py)\
$(shell find ${TEST_DIR} -name 1*_test.py)

# Top-level SRAM configurations
TOP_TESTS = $(shell find ${TEST_DIR} -name 20*_test.py)

# All simulation tests.
CHAR_TESTS = $(shell find ${TEST_DIR} -name 2[1-2]*_test.py)

# Keep the model lib test here since it is fast
# and doesn't need simulation.
USAGE_TESTS = $(shell find ${TEST_DIR} -name 2[3-9]*_test.py)\
$(shell find ${TEST_DIR} -name 30*_test.py)

ALL_TESTS = \
${LIBRARY_TESTS} \
${TECH_TESTS} \
${CELL_TESTS} \
${MODULE_TESTS} \
${TOP_TESTS} \
${CHAR_TESTS} \
${USAGE_TESTS} 

.PHONY: ${ALL_TESTS}

all: ${ALL_TESTS}

# Library tests
lib:	${LIBRARY_TESTS}

# Transistor and wire tests
tech: ${TECH_TESTS}

# Dynamically generated cells
cell: ${CELL_TESTS}

# Dynamically generated modules
module: ${MODULE_TESTS}

# Top level SRAM tests
top: ${TOP_TESTS}

# Timing and characterization tests
char: ${CHAR_TESTS}

# Usage and file generation
usage: ${USAGE_TESTS}

$(ALL_TESTS):
	python3 $@ -t ${TECH}

clean:
	find . -name \*.pyc -exec rm {} \;
	find . -name \*~ -exec rm {} \;

