-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
105 lines (84 loc) · 2.67 KB
/
Makefile
File metadata and controls
105 lines (84 loc) · 2.67 KB
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
CFLAGS+=-Wall -Werror -Iinclude/ -Ilib/mbedtls/include/
# not sure the best way to get usleep and signals and stuff other than D_DEFAULT_SOURCE
CFLAGS+=-std=c99 -pedantic -D_DEFAULT_SOURCE -g -O0
MOD_CFLAGS+=-Ilib/jsmn/ -Llib/ -ljsmn -Ilib/parson/ -lparson -Isrc/modules/
LDFLAGS=-ldl -Llib/ -lmbedtls -lmbedx509 -lmbedcrypto -lpthread -lcurl
OUTPUT=minervabot
# files
SRCS=$(wildcard src/*.c)
OBJS=$(patsubst src/%.c, objs/%.o, $(SRCS))
SRCS_MOD=$(wildcard src/modules/*.c)
OUTP_MOD=$(patsubst src/%.c, %.so, $(SRCS_MOD))
LIBS=lib/libmbedtls.a lib/libjsmn.a lib/libparson.a
# primary rules
default: objs/modules/ modules/ $(OUTPUT) $(OUTP_MOD)
debug: CFLAGS+=-g -O0
debug: default
asan: CFLAGS+=-fsanitize=address
asan: LDFLAGS+=-fsanitize=address
asan: debug
# directories
objs/:
@mkdir -p $@
objs/modules/: objs/
@mkdir -p $@
modules/:
@mkdir -p $@
# regular code
objs/%.o: src/%.c
@echo " CC\t$@"
@$(CC) $(CFLAGS) -c $< -o $@
$(OUTPUT): $(LIBS) $(OBJS)
@echo " CCLD\t$@"
@gcc $^ $(LDFLAGS) -o $@
# modules
modules/%.so: src/modules/%.c
@echo " CCMOD\t$@"
@$(CC) $< $(CFLAGS) $(MOD_CFLAGS) -fPIC $(LDFLAGS) -shared -o $@
modules/mod_common.so: src/modules/mod_common.c
@echo " CCMOD\t$@"
@$(CC) $< $(CFLAGS) $(MOD_CFLAGS) -Wl,--export-dynamic -fPIC $(LDFLAGS) -shared -o $@
modules/bot_math.so: src/modules/bot_math.c lib/libleo.a
@echo " CCMOD\t$@"
@$(CC) $< $(CFLAGS) -fPIC $(LDFLAGS) -lleo -lm -shared -o $@ -Ilib/leo/include
LUA_V=5.3.5
lib/liblua.a:
cd lib/; curl -R -O http://www.lua.org/ftp/lua-$(LUA_V).tar.gz; tar zxf lua-$(LUA_V).tar.gz
cd lib/lua-$(LUA_V)/; make generic
cp lib/lua-$(LUA_V)/src/liblua.a lib/
modules/bot_lua.so: src/modules/bot_lua.c lib/liblua.a
@echo " CCMOD\t$@"
@$(CC) $< $(CFLAGS) -fPIC $(LDFLAGS) -llua -shared -o $@ -Ilib/lua-$(LUA_V)/src/
# misc
.PHONY: clean
clean:
@echo " RM\tobjs/ modules/"
@rm -rf objs/ modules/ > /dev/null 2>&1 || true
@echo " RM\t$(OUTPUT)"
@rm $(OUTPUT) > /dev/null 2>&1 || true
.PHONY: test
test: clean debug
valgrind --tool=massif ./$(OUTPUT) "#/"
#--leak-check=full --show-leak-kinds=all
#--tool=massif
.PHONY: testa
testa: clean asan
./$(OUTPUT) "#/"
# libraries
lib/libmbedtls.a:
-@git submodule update --init --recursive
$(MAKE) no_test -C lib/mbedtls
cp lib/mbedtls/library/*.a lib/
lib/libjsmn.a:
-@git submodule update --init --recursive
CFLAGS=-fPIC $(MAKE) all -C lib/jsmn
cp lib/jsmn/*.a lib/
lib/libparson.a:
-@git submodule update --init --recursive
$(CC) -c -Wall -Wextra -std=c89 -pedantic-errors -fPIC lib/parson/parson.c -o lib/parson.o
$(AR) rc $@ lib/parson.o
rm lib/parson.o
lib/libleo.a:
-@git submodule update --init --recursive
$(MAKE) -C lib/leo
cp lib/leo/libleo.a lib/