summaryrefslogtreecommitdiff
blob: 1f6d6e2629b216e71bb5beeb31180c3b98439b62 (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
## Parameters ##################################################################
#### Where to find the model
ifndef MODEL_DIR
MODEL_DIR =
endif

#### Where to store the CFG models
ifndef PATH_MODEL_DIR
PATH_MODEL_DIR =
endif

#### Binaries
###### JRE binary
ifndef JAVA
JAVA = java
endif

###### JDK binary
ifndef JAVAC
JAVAC = javac
endif

## Parameters Sanity Check #####################################################
ifeq ($(strip $(MODEL_DIR)),)
$(error No MODEL_DIR defined as parameter.)
endif

ifeq ($(strip $(PATH_MODEL_DIR)),)
$(error No CFG_MODEL_DIR 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/"
PATTERN = 's/\(is_start_node ([0-9]+).*/\1/p'

## Makefile Magic ##############################################################
SOURCES = $(wildcard src/*.java)
CLASSES = $(SOURCES:.java=.class)
CFG_MODEL_FILES = $(wildcard $(MODEL_DIR)/cfg_*.mod)
PATH_MODEL_FILES = $(addprefix $(PATH_MODEL_DIR)/,$(notdir $(CFG_MODEL_FILES)))


## Makefile Rules ##############################################################
compile: $(CLASSES)

model: $(CLASSES)  $(PATH_MODEL_DIR) $(PATH_MODEL_FILES)

clean:
	rm -f $(CLASSES)
	rm -f $(PATH_MODEL_DIR)/*.mod

clean_model:
	rm -f $(PATH_MODEL_DIR)/*.mod
########
%.class: %.java
	$(JAVAC) -cp $(CLASSPATH) $<

$(PATH_MODEL_DIR)/%: $(MODEL_DIR)/% $(CLASSES)
	$(eval ROOT_NODE := $(shell cat $< | grep 'is_start_node' | sed -En $(PATTERN)))
	$(JAVA) -cp $(CLASSPATH) Main $< $(ROOT_NODE) "p$(ROOT_NODE)_" $@

$(PATH_MODEL_DIR):
	mkdir -p $(PATH_MODEL_DIR)