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
|
TABELLION_MAIN ?= ${CURDIR}/../../
AST_CREATOR = ghdl --file-to-xml
#TEST_DIRS ?= $(addprefix ${CURDIR}/,$(wildcard */))
TEST_DIRS ?= $(patsubst %/,%,$(wildcard */))
PROPERTY_DIR ?= ${CURDIR}/../property
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 > $@
|