blob: bb48bfe5b501ce72329fd2272c808ee8248d4228 (
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
|
## Parameters ##################################################################
TO_PRED_TEMPLATE_DIR ?=
INFERRED_LEVEL_FILE ?=
PARSING_SCRIPT ?= java -cp "./src" ParserEntry
PROPERTIES_DIR ?=
#### Where to find the properties to verify
ALL_PROPERTY_FILES ?= $(wildcard $(PROPERTIES_DIR)/*.pro)
#### Binaries
###### JRE binary
JAVA ?= java
###### JDK binary
JAVAC ?= javac
## Parameters Sanity Check #####################################################
ifeq ($(strip $(PARSING_SCRIPT)),)
$(error No PARSING_SCRIPT defined as parameter.)
endif
ifeq ($(strip $(JAVA)),)
$(error No Java executable defined as parameter.)
endif
ifeq ($(strip $(JAVAC)),)
$(error No Java compiler defined as parameter.)
endif
################################################################################
CLASSPATH = "./src/"
## Makefile Magic ##############################################################
SOURCES = $(wildcard src/*.java)
CLASSES = $(SOURCES:.java=.class)
PRED_TO_INFER = \
$(addsuffix .pp,$(addprefix $(TO_PRED_TEMPLATE_DIR)/,$(notdir $(basename $(ALL_PROPERTY_FILES)))))
ADDITIONAL_MAKEFILES = \
$(addsuffix .deps,$(addprefix $(DEPENDENCIES_DIR)/,$(basename $(notdir $(ALL_PROPERTY_FILES)))))
export
## Makefile Rules ##############################################################
compile: $(CLASSES) $(PRED_TO_INFER) $(ADDITIONAL_MAKEFILES)
model:
solutions:
clean:
rm -f $(CLASSES)
rm -f $(TO_PRED_TEMPLATE_DIR)/*
rm -f $(INFERRED_LEVEL_FILE)
clean_model:
clean_solutions:
rm -f $(TO_PRED_TEMPLATE_DIR)/*
rm -f $(INFERRED_LEVEL_FILE)
########
$(TO_PRED_TEMPLATE_DIR)/%.pp: $(PROPERTIES_DIR)/%.pro
cat $< | sed 's/.*;;.*//g' | tr -d "\n\r" \
| sed -n 's/.*(tag_existing[ \t]\+([ \t]*\(\([ \t]*([^)]\+)\)\+\)[ \t]*.*)/\1/p' \
| sed 's/)/)\n/g' | sed 's/[ \t]\+/ /g' | tr -d "()" \
| $(PARSING_SCRIPT) \
$(patsubst %.pp,%,$(notdir $(basename $@))) \
$@ \
$(INFERRED_LEVEL_FILE)
$(MAKE) $(DEPENDENCIES_DIR)/$(patsubst %.pp,%,$(notdir $(basename $@))).deps
$(DEPENDENCIES_DIR)/%.deps: $(PROPERTIES_DIR)/%.pro
printf "$(SOL_DIR)/$(notdir $(basename $@)).sol.ready: " > $@
for dep in `sed -n 's/^#require \"\(.*\)\"$$/\1/p' $<` ; do \
printf "$(SOL_DIR)/$$dep.sol " >> $@ ; \
done
printf "\n\t touch $(SOL_DIR)/$(notdir $(basename $@)).sol.ready\n\n" >> $@
########
%.class: %.java
$(JAVAC) -cp $(CLASSPATH) $<
|