blob: e2d52a1a16e831ff720e895e61896fe163a6c161 (
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
85
86
87
88
89
|
SHELL := /bin/bash
BLOCKDIR := blocks/xcosblocks
COMMONSRCFILES := $(sort $(wildcard Xcos/common/*.py))
SRCFILES := $(COMMONSRCFILES)
BLOCKSRCFILES := $(sort $(wildcard Xcos/blocks/*.py))
SRCFILES += $(BLOCKSRCFILES)
PORTSRCFILES := $(sort $(wildcard Xcos/ports/*.py))
SRCFILES += $(PORTSRCFILES)
LINKSRCFILES := $(sort $(wildcard Xcos/links/*.py))
SRCFILES += $(LINKSRCFILES)
XCOS2XMLFILES := $(sort $(wildcard xcos2xml/head.xsl))
XCOS2XMLFILES += $(sort $(wildcard xcos2xml/blocks/*.xsl))
XCOS2XMLFILES += $(sort $(wildcard xcos2xml/ports/*.xsl))
XCOS2XMLFILES += $(sort $(wildcard xcos2xml/links/*.xsl))
XCOS2XMLFILES += $(sort $(wildcard xcos2xml/foot.xsl))
SEDFILE := xcosblocks.sed
TARGET := Xcos/xcosblocks.py
TARGET2 := $(BLOCKDIR)/xcosblocks.py
TARGET3 := eda-frontend/public/xcos2xml.xsl
all : $(SEDFILE) $(TARGET) $(TARGET2) $(TARGET3)
$(SEDFILE) : Makefile $(BLOCKSRCFILES) $(PORTSRCFILES) $(LINKSRCFILES)
@echo Making $@ ...
@( \
sed -n 's/^def \([^(]*\).*/s,^\\( *\\(return\\)\\? \\)\\(\1(\\),\\1Blocks.\\3,/p' $(BLOCKSRCFILES); \
sed -n 's/^def \([^(]*\).*/s,^\\( *\\(return\\)\\? \\)\\(\1(\\),\\1Ports.\\3,/p' $(PORTSRCFILES); \
sed -n 's/^def \([^(]*\).*/s,^\\( *\\(return\\)\\? \\)\\(\1(\\),\\1Links.\\3,/p' $(LINKSRCFILES); \
) > $@
$(TARGET) : xcosblocks.sed $(SRCFILES)
@echo Making $@ ...
@( \
for f in $(COMMONSRCFILES); do \
echo "# BEGIN $$f"; \
sed -e '/^from \(blocks\|common\|links\|ports\)\..* import /d' "$$f"; \
echo; \
echo "# END $$f"; \
done; \
echo; \
echo; \
echo 'class Blocks:'; \
for f in $(BLOCKSRCFILES); do \
echo; \
echo " # BEGIN $$f"; \
sed -e '/^from \(blocks\|common\|links\|ports\)\..* import /d' -e '/^$$/N;/^\n$$/D' "$$f" | sed 's/^\(.\)/ \1/'; \
echo " # END $$f"; \
done; \
echo; \
echo; \
echo 'class Ports:'; \
for f in $(PORTSRCFILES); do \
echo; \
echo " # BEGIN $$f"; \
sed -e '/^from \(blocks\|common\|links\|ports\)\..* import /d' -e '/^$$/N;/^\n$$/D' "$$f" | sed 's/^\(.\)/ \1/'; \
echo " # END $$f"; \
done; \
echo; \
echo; \
echo 'class Links:'; \
for f in $(LINKSRCFILES); do \
echo; \
echo " # BEGIN $$f"; \
sed -e '/^from \(blocks\|common\|links\|ports\)\..* import /d' -e '/^$$/N;/^\n$$/D' "$$f" | sed 's/^\(.\)/ \1/'; \
echo " # END $$f"; \
done; \
) > $@
@sed -i -f $< $@
flake8 : $(TARGET)
flake8 --statistics
.srcflake8 : $(TARGET)
@echo 'flake8 common/*.py blocks/*.py ports/*.py links/*.py'
@flake8 $(TARGET)
touch $@
$(TARGET2) : .srcflake8
cp -f $(TARGET) $@
$(TARGET3) : $(XCOS2XMLFILES)
@echo Making $@ ...
@for f in $^; do \
cat "$$f"; \
done > $@
|