summaryrefslogtreecommitdiff
blob: 37769db67c35113c10f3e7436844caa81bf7adec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
TABELLION_MAIN ?= ${CURDIR}/../../
AST_CREATOR = ghdl --file-to-xml
#TEST_DIRS ?= $(addprefix ${CURDIR}/,$(wildcard */))
TEST_DIRS ?= $(patsubst %/,%,$(wildcard */))
PROPERTY_DIR ?= ${CURDIR}/../property
# TODO: Start using those variables...
SOLUTION_DIR ?= /tmp/tabellion/sol/
ORACLE_CREATOR_SCRIPT = ${CURDIR}/oracle_creator.py
################################################################################
TEST_FILES = $(addsuffix /valid,$(TEST_DIRS)) $(addsuffix /invalid,$(TEST_DIRS))
SOLUTION_FILES = $(addsuffix .sol,$(addprefix $(SOLUTION_DIR)/,$(TEST_DIRS)))

#VHD_FILES = $(addsuffix .vhd, $(TEST_FILES))
AST_FILES = $(addsuffix .xml, $(TEST_FILES))
OCL_FILES = $(addsuffix .ocl, $(TEST_FILES))
SOL_FILES = $(addsuffix .sol, $(TEST_FILES))
VLD_FILES = $(addsuffix /valid.result, $(TEST_DIRS))
IVLD_FILES = $(addsuffix /invalid.result, $(TEST_DIRS))

export

all: $(AST_FILES) $(OCL_FILES) $(VLD_FILES) $(IVLD_FILES)
	@echo "################################################################"
	@echo "## FALSE POSITIVES (should not have detected) ##################"
	@echo "################################################################"

	@for dir in $(TEST_DIRS) ; do \
		echo "#### $$dir ####"; \
		cat $$dir/invalid.result; \
	done

	@echo "################################################################"
	@echo "## FALSE NEGATIVES (should have detected) ######################"
	@echo "################################################################"

	@for dir in $(TEST_DIRS) ; do \
		echo "#### $$dir ####"; \
		cat $$dir/valid.result; \
	done

clean:
	rm -f $(AST_FILES)
	rm -f $(OCL_FILES)
	rm -f $(VLD_FILES)
	rm -f $(IVLD_FILES)
	rm -f $(SOL_FILES)
	rm -rf /tmp/tabellion_{,in}valid

$(AST_FILES): %.xml : %.vhd
	$(AST_CREATOR) $< > $@

$(OCL_FILES): %.ocl : %.vhd
	grep -no "\$$SOL:[0-9]\+:[0-9]\+\\$$" $< | $(ORACLE_CREATOR_SCRIPT) | sort > $@

$(VLD_FILES): %/valid.result: %/valid.ocl %/valid.xml
	$(MAKE) -C $(TABELLION_MAIN) \
		TMP_DIR=/tmp/tabellion_valid \
		clean_solutions
	$(MAKE) -C $(TABELLION_MAIN) \
		TMP_DIR=/tmp/tabellion_valid \
		clean_model
	$(MAKE) -C $(TABELLION_MAIN) \
		TMP_DIR=/tmp/tabellion_valid \
		AST_FILE=${PWD}/$(dir $@)/valid.xml \
		PROPERTY_FILES=$(PROPERTY_DIR)/$(patsubst %/,%,$(dir $@)).pro \
		TEMPLATE_DIR=${PWD}/$(dir $@)/ \
		NICE_MESSAGE=/tmp/tabellion_valid/result
	cat /tmp/tabellion_valid/result | sed '/^\s*$$/d' | sort > /tmp/tabellion_valid/result_clean
	-diff /tmp/tabellion_valid/result_clean $(dir $@)/valid.ocl > $@

$(IVLD_FILES): %/invalid.result: %/invalid.ocl %/invalid.xml
	$(MAKE) -C $(TABELLION_MAIN) \
		TMP_DIR=/tmp/tabellion_invalid \
		clean_solutions
	$(MAKE) -C $(TABELLION_MAIN) \
		TMP_DIR=/tmp/tabellion_invalid \
		clean_model
	$(MAKE) -C $(TABELLION_MAIN) \
		TMP_DIR=/tmp/tabellion_invalid \
		AST_FILE=${PWD}/$(dir $@)/invalid.xml \
		PROPERTY_FILES=$(PROPERTY_DIR)/$(patsubst %/,%,$(dir $@)).pro \
		TEMPLATE_DIR=${PWD}/$(dir $@)/ \
		NICE_MESSAGE=/tmp/tabellion_invalid/result
	cat /tmp/tabellion_invalid/result | sed '/^\s*$$/d' | sort > $@