-
Notifications
You must be signed in to change notification settings - Fork 175
/
Makefile
128 lines (103 loc) · 5.17 KB
/
Makefile
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#
# (C) 2009-2023, Kees Verruijt, Harlingen, The Netherlands.
#
# This file is part of CANboat.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
PLATFORM=$(shell uname | tr '[A-Z]' '[a-z]')-$(shell uname -m)
BUILDDIR?=rel/$(PLATFORM)
TARGETDIR=../$(BUILDDIR)
ANALYZER=$(TARGETDIR)/analyzer
ANALYZER_J1939=$(TARGETDIR)/analyzer-j1939
ANALYZER_EXPLAIN=$(TARGETDIR)/analyzer-explain
ANALYZER_EXPLAIN_J1939=$(TARGETDIR)/analyzer-explain-j1939
TARGETS=$(ANALYZER) $(ANALYZER_J1939) $(ANALYZER_EXPLAIN) $(ANALYZER_EXPLAIN_J1939)
XMLFILE=pgns.xml
XMLFILE_J1939=pgns-j1939.xml
JSONFILE=pgns.json
JSONFILE_J1939=pgns-j1939.json
XSL2FILE=../docs/canboat.xsl
XML2FILE=../docs/canboat.xml
XSD2FILE=../docs/canboat.xsd
JSON2FILE=../docs/canboat.json
HTML2FILE=../docs/canboat.html
NGTXMLFILE=pgns-ngt.xml
NGTJSONFILE=pgns-ngt.json
IKXMLFILE=pgns-ik.xml
IKJSONFILE=pgns-ik.json
NPMFILE=package.json
HEADERS=analyzer.h pgn.h lookup.h fieldtype.h
HEADERS_J1939=analyzer.h pgn-j1939.h lookup.h fieldtype.h
COMMONDIR=../common
COMMON=$(COMMONDIR)/common.c $(COMMONDIR)/parse.c $(COMMONDIR)/utf.c $(COMMONDIR)/common.h $(COMMONDIR)/license.h $(COMMONDIR)/utf.h $(COMMONDIR)/version.h
ANALYZER_EXPLAIN_SOURCES=analyzer-explain.c pgn.c lookup.c print.c fieldtype.c $(HEADERS) $(COMMON) Makefile
ANALYZER_EXPLAIN_J1939_SOURCES=analyzer-explain.c pgn.c lookup.c print.c fieldtype.c $(HEADERS_J1939) $(COMMON) Makefile
ANALYZER_EXPLAIN_DEP=$(ANALYZER_EXPLAIN) $(ANALYZER_EXPLAIN_SOURCES)
ANALYZER_EXPLAIN_J1939_DEP=$(ANALYZER_EXPLAIN_J1939) $(ANALYZER_EXPLAIN_J1939_SOURCES)
CFLAGS?=-Wall -O2
LDLIBS=-lm
all: $(TARGETS)
analyzer: $(ANALYZER)
$(ANALYZER): analyzer.c pgn.c lookup.c print.c fieldtype.c $(HEADERS) $(COMMON) Makefile
@mkdir -p $(TARGETDIR)
$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $(ANALYZER) -I$(COMMONDIR) pgn.c analyzer.c lookup.c print.c fieldtype.c $(COMMONDIR)/common.c $(COMMONDIR)/parse.c $(COMMONDIR)/utf.c $(LDLIBS$(LDLIBS-$(@)))
$(ANALYZER_J1939): analyzer.c pgn.c lookup.c print.c fieldtype.c $(HEADERS_J1939) $(COMMON) Makefile
@mkdir -p $(TARGETDIR)
$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $(ANALYZER_J1939) -I$(COMMONDIR) -DJ1939 pgn.c analyzer.c lookup.c print.c fieldtype.c $(COMMONDIR)/common.c $(COMMONDIR)/parse.c $(COMMONDIR)/utf.c $(LDLIBS$(LDLIBS-$(@)))
$(ANALYZER_EXPLAIN): $(ANALYZER_EXPLAIN_SOURCES)
@mkdir -p $(TARGETDIR)
$(CC) -DEXPLAIN $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $(ANALYZER_EXPLAIN) -I$(COMMONDIR) pgn.c analyzer-explain.c lookup.c print.c fieldtype.c $(COMMONDIR)/common.c $(COMMONDIR)/parse.c $(COMMONDIR)/utf.c $(LDLIBS$(LDLIBS-$(@)))
$(ANALYZER_EXPLAIN_J1939): $(ANALYZER_EXPLAIN_J1939_SOURCES)
@mkdir -p $(TARGETDIR)
$(CC) -DEXPLAIN -DJ1939 $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $(ANALYZER_EXPLAIN_J1939) -I$(COMMONDIR) pgn.c analyzer-explain.c lookup.c print.c fieldtype.c $(COMMONDIR)/common.c $(COMMONDIR)/parse.c $(COMMONDIR)/utf.c $(LDLIBS$(LDLIBS-$(@)))
$(XMLFILE): $(ANALYZER_EXPLAIN_DEP)
$(ANALYZER_EXPLAIN) -explain-xml -camel -v1 >$(XMLFILE)
$(XMLFILE_J1939): $(ANALYZER_EXPLAIN_J1939_DEP)
$(ANALYZER_EXPLAIN_J1939) -explain-xml -camel -v1 >$(XMLFILE_J1939)
$(XML2FILE): $(ANALYZER_EXPLAIN_DEP) $(XSD2FILE) fixup-version.py
python3 fixup-version.py $(ANALYZER) $(XSD2FILE)
python3 fixup-version.py -s $(ANALYZER) $(XSD2FILE)
$(ANALYZER_EXPLAIN) -explain-xml -camel >$(XML2FILE)
xmllint --schema $(XSD2FILE) $(XML2FILE) --noout
$(HTML2FILE): $(XSL2FILE) $(XML2FILE)
xsltproc $(XSL2FILE) $(XML2FILE) | ./fixup-html.sh > $(HTML2FILE)
$(NGTXMLFILE): $(ANALYZER_EXPLAIN_DEP)
$(ANALYZER_EXPLAIN) -explain-ngt-xml -camel -v1 >$(NGTXMLFILE)
$(IKXMLFILE): $(ANALYZER_EXPLAIN_DEP)
$(ANALYZER_EXPLAIN) -explain-ik-xml -camel -v1 >$(IKXMLFILE)
$(JSONFILE): $(XMLFILE) pgns2json.xslt validate-json.py
xsltproc pgns2json.xslt $(XMLFILE) >$(@)
python3 validate-json.py $(@)
$(JSONFILE_J1939): $(XMLFILE) pgns2json.xslt validate-json.py
xsltproc pgns2json.xslt $(XMLFILE_J1939) >$(@)
python3 validate-json.py $(@)
$(JSON2FILE): $(XML2FILE) canboat2json.xslt validate-json.py
xsltproc canboat2json.xslt $(XML2FILE) >$(@)
python3 validate-json.py --range $(@)
$(NGTJSONFILE): $(NGTXMLFILE) pgns2json.xslt validate-json.py
xsltproc pgns2json.xslt $(NGTXMLFILE) >$(@)
python3 validate-json.py $(@)
$(IKJSONFILE): $(IKXMLFILE) pgns2json.xslt validate-json.py
xsltproc pgns2json.xslt $(IKXMLFILE) >$(@)
python3 validate-json.py $(@)
$(NPMFILE): ../common/version.h $(ANALYZER) fixup-version.py
python3 fixup-version.py $(ANALYZER) $(NPMFILE)
generated: $(JSONFILE) $(JSON2FILE) $(NGTJSONFILE) $(IKJSONFILE) $(NPMFILE) $(HTML2FILE)
clean:
-rm -f $(TARGETS) *.elf *.gdb
tests: $(ANALYZER)
(cd tests; make tests)
webserver:
cd ../docs; python3 -m http.server --cgi 8080
.PHONY: generated clean tests webserver analyzer