-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
59 lines (48 loc) · 2.14 KB
/
Makefile
File metadata and controls
59 lines (48 loc) · 2.14 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
CC := clang++
SRCDIR := src
HEADERDIR := include
BUILDDIR := build
TARGETDIR := bin
TARGET := $(TARGETDIR)/irin
BOOSTDIR := /usr/local/Cellar/boost/1.62.0
SRCEXT := cc
HEADEREXT := h
SOURCES := $(shell find $(SRCDIR) -type f -name "*.$(SRCEXT)")
HEADERS := $(shell find $(HEADERDIR) -type f -name "*.$(HEADEREXT)")
OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.o))
CFLAGS := -std=c++14
DEVFLAGS := $(CFLAGS) -g -Wall -Wextra
PRODFLAGS := $(CFLAGS) -O2
INC := $(BOOSTDIR)/include
LIBDIR := lib
LIBS := -lboost_system-mt -lboost_thread-mt -lboost_filesystem-mt -lboost_log-mt -lboost_log_setup-mt -lboost_program_options-mt
GOOGLETESTDIR := gtest
$(TARGET): $(OBJECTS)
@echo "Linking..."
$(CC) $^ -o $(TARGET) -L $(BOOSTDIR)/lib $(LIBS)
$(BUILDDIR)/%.o: $(SRCDIR)/%.$(SRCEXT)
@echo "Compiling..."
@mkdir -p $(BUILDDIR)/server
@mkdir -p $(BUILDDIR)/services
@mkdir -p $(TARGETDIR)
$(CC) $(DEVFLAGS) -I $(INC) -I include -DBOOST_LOG_DYN_LINK -c -o $@ $<
gtestcompile:
@mkdir -p $(BUILDDIR)/gtest
$(CC) $(DEVFLAGS) -isystem $(GOOGLETESTDIR)/include -I $(GOOGLETESTDIR) -pthread -c $(GOOGLETESTDIR)/src/gtest-all.cc -o $(BUILDDIR)/gtest/gtest-all.o
$(CC) $(DEVFLAGS) -isystem $(GOOGLETESTDIR)/include -I $(GOOGLETESTDIR) -pthread -c $(GOOGLETESTDIR)/src/gtest_main.cc -o $(BUILDDIR)/gtest/gtest_main.o
gtestarchive: gtestcompile
@mkdir -p $(LIBDIR)/gtest
ar -rv $(LIBDIR)/gtest/gtest.a $(BUILDDIR)/gtest/gtest-all.o
ar -rv $(LIBDIR)/gtest/gtest_main.a $(BUILDDIR)/gtest/gtest_main.o
testcompile:
@mkdir -p $(BUILDDIR)/test
$(CC) $(DEVFLAGS) -I include -I $(INC) -isystem $(GOOGLETESTDIR)/include -pthread -c test/http-message-decoder-test.cc -o $(BUILDDIR)/test/http-message-decoder-test.o
testlink: $(TARGET) gtestarchive testcompile
@mkdir -p $(TARGETDIR)/test
$(CC) $(BUILDDIR)/test/http-message-decoder-test.o -o $(TARGETDIR)/test/http-message-decoder-test $(BUILDDIR)/server/http-message-decoder.o $(LIBDIR)/gtest/gtest.a $(LIBDIR)/gtest/gtest_main.a
test: testlink
./bin/test/http-message-decoder-test
clean:
@echo "Cleaning..."
rm -r -f $(BUILDDIR) $(TARGETDIR) $(LIBDIR)/gtest
.PHONY: clean