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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
#ifeq ($(MAKELEVEL),0)
#$(error Sorry, this makefile is not intended to be \
#used directly. Please use the makefile in the toplevel \
#directory of the PUMA source tree instead)
#endif
#-------------------------------------------------
# variables
#-------------------------------------------------
include $(ROOT)/vars.mk
HEADERS := $(shell find $(STEP1)/inc -name "*")
HEADERSDEP:= $(STEP2)/.inc
ACOBJECTS := $(notdir $(filter-out $(DONTWEAVE), $(SOURCES)))
ACOBJECTS += $(notdir $(LEMSOURCES:.lem=.cc))
ACOBJECTS := $(addprefix $(STEP2)/src/, $(ACOBJECTS))
CPPFLAGS += -I $(EXTDIR) -I $(STEP1)/inc -I $(STEP1)/aspects
ACFILES := $(addprefix $(STEP1)/aspects/Puma/, $(notdir $(ASPECTS)))
ACDEPS := $(addprefix --include , $(ACFILES))
ACFLAGS += $(addprefix -a , $(ACFILES))
#ACFLAGS += $(CPPFLAGS) -I $(STEP1)/src -r $(GENDIR)/puma.acp
ACFLAGS += $(CPPFLAGS) -I $(STEP1)/src
ACFLAGS += --config $(CONFIG) --gen_size_type __SIZE_TYPE__ -k
# workaround Clang/GCC C++14 issues
ACFLAGS += -D "__cplusplus=199711L"
DEPDIR := $(STEP1)/dep
DEPFILES := $(addprefix $(DEPDIR)/, $(notdir $(ACOBJECTS:.cc=.d)))
#-------------------------------------------------
# targets
#-------------------------------------------------
vpath %.cc $(STEP1)/src
vpath %.d $(DEPDIR)
ifneq ($(ASPECTS),)
all: showinfo dontweave $(ACOBJECTS) $(HEADERSDEP)
else
all: dontweave
@cp -pr $(STEP1)/inc/Puma $(STEP2)/inc
@cp -pr $(STEP1)/inc/Puma $(INCDIR)
endif
prof:
@echo Profiling enabled
showinfo:
@echo
@echo "---"
@echo "Weaving PUMA for TARGET=$(TARGET)"
@echo " Weaver = $(AC) $(ACFLAGS)"
@echo "---"
@echo
ifeq ($(DONTWEAVE),)
dontweave:
@echo "Weaving into ALL files"
else
dontweave:
@echo "Copying sources not to weave..."
@cp -p $(DONTWEAVE) $(STEP2)/src
endif
#-------------------------------------------------
# rules
#-------------------------------------------------
$(STEP2)/src/%.cc : %.cc
@echo "Weaving aspects into $(notdir $<)..."
@$(AC) $(ACFLAGS) -p $(STEP1) -c $< -o $@
@echo "$@: \\" > $(addprefix $(DEPDIR)/, $(notdir $(<:.cc=.d)))
@grep "^#line" $@ | grep -v $(STEP2) | grep -v "<ac" | grep -v "\.ah" | \
awk '{print $$3}' | sed -e "s#\"##g" | sort | uniq |\
sed -e "s/$$/ \\\/g" >> $(addprefix $(DEPDIR)/, $(notdir $(<:.cc=.d)))
@echo $(ACFILES) >> $(addprefix $(DEPDIR)/, $(notdir $(<:.cc=.d)))
$(HEADERSDEP): $(HEADERS) $(ACFILES)
@echo "Generating library header files..."
@touch $(HEADERSDEP)
@cd $(STEP1) && $(AC) $(ACFLAGS) -i -p. -d$(STEP2)
@cp -p $(STEP2)/aspects/Puma/*.ah $(STEP2)/inc/Puma
@cp -pr $(STEP2)/inc/Puma $(INCDIR)
#-------------------------------------------------
# special targets
#-------------------------------------------------
.PHONY: all dontweave config showinfo
#-------------------------------------------------
# includes
#-------------------------------------------------
ifeq ($(MAKECMDGOALS),)
ifneq ($(DEPFILES),)
-include $(DEPFILES)
endif
endif
|