-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
61 lines (49 loc) · 1.86 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
export SODIUM_STATIC := yes
CC=cc
SRCDIR := src
BUILDDIR := build
TESTDIR := test
DEPSDIR := deps
BINDIR := bin
TARGET := bin/opal
SRCEXT := c
SOURCES := $(shell find $(SRCDIR) -type f -name *.$(SRCEXT))
OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.o))
TEST_SOURCES := $(shell find $(TESTDIR) -type f -name *.$(SRCEXT))
TEST_OBJECTS := $(patsubst $(TESTDIR)/%,$(BUILDDIR)/$(TESTDIR)/%,$(TEST_SOURCES:.$(SRCEXT)=.o))
CC_LIB := -I/usr/local/include
CFLAGS = -g $(CC_LIB) $(shell pkg-config --cflags 'libprotobuf-c >= 1.0.0')
LIB := -L/usr/local/lib -lcrypto -Bstatic -lsodium -lrocksdb $(shell pkg-config --libs 'libprotobuf-c >= 1.0.0') -lprotobuf-c-rpc
INC := -I include
all: opal
$(BUILDDIR)/%.o: $(SRCDIR)/%.$(SRCEXT)
@mkdir -p $(BUILDDIR)
@echo " $(CC) $(CFLAGS) -O2 $(INC) -c -o $@ $<"; $(CC) $(CFLAGS) $(INC) -c -o $@ $<
libsodium:
@mkdir -p $(DEPSDIR)
[ -d $(DEPSDIR)/libsodium ] || git clone https://github.com/jedisct1/libsodium $(DEPSDIR)/libsodium
set -ex && cd $(DEPSDIR)/libsodium && \
git fetch && \
git checkout origin/stable && \
rm -rf lib && \
./autogen.sh && \
./configure --disable-shared && \
$(MAKE) && \
$(MAKE) install
test: CFLAGS += -DOPAL_TEST
test: CFLAGS += -g
test: $(OBJECTS) $(TEST_OBJECTS)
@mkdir -p $(BINDIR)
@echo " $(CC) $(OBJECTS) $(TEST_OBJECTS) -o $(BINDIR)/opaltest $(LIB)"; $(CC) $(OBJECTS) $(TEST_OBJECTS) -o $(BINDIR)/opaltest $(LIB)
@echo " Running tests...";
./bin/opaltest -v
$(BUILDDIR)/$(TESTDIR)/%.o: $(TESTDIR)/%.$(SRCEXT)
@mkdir -p $(BUILDDIR)/$(TESTDIR)
@echo " $(CC) $(CFLAGS) $(INC) -c -o $@ $<"; $(CC) $(CFLAGS) $(INC) -c -o $@ $<
opal: $(OBJECTS)
@mkdir -p $(BINDIR)
@echo " $(CC) $^ -o $(TARGET) $(LIB)"; $(CC) $^ -o $(TARGET) $(LIB)
.PHONY: clean
clean:
@echo " Cleaning...";
@echo " $(RM) -r $(BUILDDIR) $(TARGET) $(BINDIR)/opaltest"; $(RM) -r $(BUILDDIR) $(TARGET) $(BINDIR)/opaltest