-
Notifications
You must be signed in to change notification settings - Fork 31
/
Makefile
85 lines (67 loc) · 2.62 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
TESTS = lib_base32 lib_lob lib_hashname lib_murmur lib_chunks lib_frames lib_util lib_xht \
e3x_core e3x_self e3x_exchange \
mesh_core net_loopback lib_chacha \
lib_socketio lib_jwt lib_base64 lib_sha \
chan_core net_bulk
# net_udp4 net_tcp4 net_serial
CC=gcc
CFLAGS+=-g -std=c99 -std=gnu99 -Wall -Wextra -Wno-unused-parameter -DDEBUG -DRADIOS_MAX=2
INCLUDE+=-I../unix -I../include -I../include/lib
LIB = src/lib/lob.c src/lib/hashname.c src/lib/xht.c src/lib/js0n.c src/lib/base32.c src/lib/chacha.c src/lib/murmur.c src/lib/socketio.c src/lib/jwt.c src/lib/base64.c src/lib/aes128.c src/lib/sha256.c src/lib/uECC.c
E3X = src/e3x/e3x.c src/e3x/self.c src/e3x/exchange.c src/e3x/cipher.c
MESH = src/mesh.c src/link.c src/chan.c
EXT =
#NET = src/net/loopback.c src/net/udp4.c src/net/tcp4.c src/net/serial.c
NET = src/net/loopback.c
UTIL = src/util/util.c src/util/chunks.c src/util/frames.c src/unix/util.c src/unix/util_sys.c
# CS1c by default
CS = src/e3x/cs1c/cs1c.c
TESTS += e3x_cs1c
# check for CS3a deps
ifneq ("$(wildcard ../node_modules/libsodium-c/src/libsodium/.libs/libsodium.a)","")
CS += src/e3x/cs3a/cs3a.c
LDFLAGS += ../node_modules/libsodium-c/src/libsodium/.libs/libsodium.a
INCLUDE += -I../node_modules/libsodium-c/src/libsodium/include
TESTS += e3x_cs3a
else
CS += src/e3x/cs3a_disabled.c
endif
LIB_OBJFILES = $(patsubst %.c,../%.o,$(LIB))
E3X_OBJFILES = $(patsubst %.c,../%.o,$(E3X))
MESH_OBJFILES = $(patsubst %.c,../%.o,$(MESH))
EXT_OBJFILES = $(patsubst %.c,../%.o,$(EXT))
NET_OBJFILES = $(patsubst %.c,../%.o,$(NET))
UTIL_OBJFILES = $(patsubst %.c,../%.o,$(UTIL))
CS_OBJFILES = $(patsubst %.c,../%.o,$(CS))
FULL_OBJFILES = $(LIB_OBJFILES) $(E3X_OBJFILES) $(MESH_OBJFILES) $(EXT_OBJFILES) $(NET_OBJFILES) $(UTIL_OBJFILES) $(CS_OBJFILES)
all: test
test: test-slink tests test-mem test-interop
test-slink: #net_slink.o bin/test_net_slink
test-mem: mem_last.o bin/test_mem_last
@./bin/test_mem_last > ./mem_last.txt 2>&1
test-interop: #net_link.o bin/test_net_link
@if ./interop.sh ; then \
echo "PASSED interop.sh"; \
else \
echo "FAILED interop.sh"; exit 1; \
fi;
tests: build-tests
@for test in $(TESTS); do \
chmod 0755 ./bin/test_$$test && \
echo && \
echo "=====[ running $$test ]=====" && \
if ./bin/test_$$test ; then \
echo "PASSED $$test"; \
else \
echo "FAILED $$test"; exit 1; \
fi; \
done
build-tests: $(patsubst %,%.o,$(TESTS)) $(patsubst %,bin/test_%,$(TESTS))
bin/test_% : %.o $(FULL_OBJFILES)
$(CC) $(INCLUDE) $(CFLAGS) -o $@ $(patsubst bin/test_%,%.o,$@) $(FULL_OBJFILES) $(LDFLAGS)
%.o : %.c
$(CC) $(INCLUDE) $(CFLAGS) -c $< -o $@
clean:
rm -rf bin/*
rm -f id.json
rm -f *.o