forked from blaine-dodson/Syringenator
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
106 lines (74 loc) · 3.24 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
################################################################################
#
# Syringenator : Software for the Syringenator robot
#
# Copyright (c) 2019 by the authors. All rights reserved.
#
################################################################################
SHELL:=/bin/bash
srcdir:=src
ARDDIR:=$(srcdir)/controller
ARDLIBDIR:= $(srcdir)/Arduino/libraries
PIDIR :=$(srcdir)/pi
CPPFLAGS:= --std=c++11 -g -I/usr/local/include/opencv4/
.PHONEY: all all_docs clean super_clean constants
all: constants all_docs
################################################################################
# CONSTANTS HEADERS
################################################################################
ARDCONST:= $(ARDLIBDIR)/constants/constants.h
PYCONST := $(PIDIR)/constants.py
CONSTIN := $(srcdir)/constants.in
constants: $(PYCONST)
boilerplate:="This file has been autogenerated, CHANGES MADE HERE WILL NOT PERSIST"
$(PYCONST): $(CONSTIN) Makefile
install -d $(ARDLIBDIR)/constants
echo -en "/**\t@file $(ARDCONST)\n " > $(ARDCONST)
echo -e "##\t@file $(PYCONST)" > $(PYCONST)
HEADER=true ;\
cat $(CONSTIN) | while read -r line; do \
if $$HEADER; then \
if test "$$line" == "%%"; then \
echo -e "*\t$(boilerplate)\n */\n\n" >> $(ARDCONST) ;\
echo -e "#ifndef CONSTANTS_H\n#define CONSTANTS_H\n\n" >> $(ARDCONST) ;\
echo -e "#\t$(boilerplate)\n" >> $(PYCONST) ;\
HEADER=false ;\
else \
echo -ne "*\t$$line\n " >> $(ARDCONST) ;\
echo -e "#\t$$line" >> $(PYCONST) ;\
fi \
elif test "$$line" != ""; then \
words=($$line) ;\
echo "#define $${words[0]} $${words[1]} ///< $${words[@]:2:100}" >> $(ARDCONST) ;\
echo -e "## $${words[@]:2:100}\n$${words[0]} = $${words[1]}" >> $(PYCONST) ;\
fi \
done ;\
echo -e "\n#endif // CONSTANTS_H\n\n" >> $(ARDCONST)
################################################################################
# DOCUMENTATION
################################################################################
docsource:=$(wildcard *.md)
docsource+=$(wildcard $(ARDDIR)/*)
docsource+=$(wildcard $(PIDIR)/*)
pdfman :=refman.pdf
all_docs: $(pdfman)
$(pdfman): docs
$(MAKE) -C latex all
mv latex/refman.pdf ./$(pdfman)
# also produces latex file
docs: doxygen.cfg $(docsource) $(PYCONST)
rm -fr docs latex $(pdfman)
doxygen doxygen.cfg
################################################################################
# DEMOS
################################################################################
demoImgCapCpp: $(PIDIR)/demoImgCap.cpp
g++ $(CPPFLAGS) -o $@ $^ -lrealsense2 -lopencv_core -lopencv_highgui
################################################################################
# CLEAN
################################################################################
cleanfiles:=imgCapCpp
clean:
rm -fr *.pyc $(cleanfiles)
super_clean:
rm -fr docs latex $(pdfman) $(ARDCONST) $(PYCONST)