-
Notifications
You must be signed in to change notification settings - Fork 42
/
Makefile
91 lines (74 loc) · 3.18 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
# ESPiLight - pilight 433.92 MHz protocols library for Arduino
# Copyright (c) 2016 Puuu. All right reserved.
#
# Project home: https://github.com/puuu/espilight/
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 3 of the License, or (at your option) any later version.
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with library. If not, see <http://www.gnu.org/licenses/>
SRC_DIR = pilight
DST_DIR = src/pilight
PROTOCOL_DIR = libs/pilight/protocols/433.92
PROTOCOLS = $(patsubst $(SRC_DIR)/$(PROTOCOL_DIR)/%.h,%,$(sort $(wildcard $(SRC_DIR)/$(PROTOCOL_DIR)/*.h)))
PILIGHT_FILES = libs/pilight/core/dso.h libs/pilight/core/mem.h \
libs/pilight/core/json.h libs/pilight/core/json.c \
libs/pilight/core/binary.h libs/pilight/core/binary.c \
libs/pilight/protocols/protocol_header.h \
libs/pilight/protocols/protocol_init.h
PROTOCOL_H_FILES = $(foreach protocol,$(PROTOCOLS),$(PROTOCOL_DIR)/$(protocol).h)
PROTOCOL_C_FILES = $(foreach protocol,$(PROTOCOLS),$(PROTOCOL_DIR)/$(protocol).c)
FILES = $(PILIGHT_FILES) $(PROTOCOL_H_FILES) $(PROTOCOL_C_FILES)
DST_FILES = $(foreach file,$(FILES),$(DST_DIR)/$(file))
.PHONY: all clean copy update release
all: $(SRC_DIR)/libs
$(MAKE) -e copy
copy: $(DST_FILES)
$(DST_DIR)/%: $(SRC_DIR)/%
@mkdir -p $(@D)
cp $< $@
$(DST_DIR)/libs/pilight/core/json.c: $(SRC_DIR)/libs/pilight/core/json.c
@mkdir -p $(@D)
cp $< $@
# ESP8266 Android, sprintf not working with float. Patch:
sed 's/\(^[ \t]*\)\(sprintf(buf, "%.*f", decimals, num);\)/#ifdef ESP8266\n\1dtostrf(num, 0, decimals, buf);\n#else\n\1\2\n#endif/' -i $@
# Arduino did not provide printf, fprintf
sed 's!#include <stdio.h>!#include <stdio.h>\n#include "../../../../tools/aprintf.h"!' -i $@
$(DST_DIR)/libs/pilight/protocols/protocol_header.h:
for protocol in $(PROTOCOLS); do\
echo "#include \"433.92/$${protocol}.h\"" >> $@;\
done
$(DST_DIR)/libs/pilight/protocols/protocol_init.h: $(foreach file,$(PROTOCOL_C_FILES),$(DST_DIR)/$(file))
for cfile in $^; do\
grep 'void .*Init(' $$cfile | sed 's/void \(.*Init\)(.*/\1();/' >> $@;\
done
pilight/libs:
git submodule update --init pilight
update:
$(MAKE) clean
git submodule update pilight
$(MAKE) copy
release: $(SRC_DIR)/libs
git checkout release
git merge master
make update
git add src/pilight
git commit -m "integrate new pilight files"
@echo "change log:"
@git log --pretty="* %s" --no-merges HEAD...`git describe --abbrev=0 --tags`
@git submodule summary `git describe --abbrev=0 --tags`
@echo "run: git tag -a v"`grep version library.properties | sed 's/version=\(.*\)/\1/g'`
clean:
-rm $(DST_FILES)
stylecheck:
RESULT=0;\
for file in src/*.h src/*.cpp src/tools/*.h src/tools/*.cpp tests/*/*.ino examples/*/*.ino; do\
clang-format -style=google "$$file" | diff -u "$$file" - || RESULT=$$?;\
done;\
exit $$RESULT