-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathMakefile
61 lines (46 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
CXX ?= g++
# TODO: remove -fpermissive
CXXFLAGS := --std=c++14 -fpermissive -I./include
LDFLAGS :=
LDLIBS := -pthread -lpcap -lboost_program_options
SOURCES := $(shell find src -name "*.cc")
.PHONY: all x86 arm clean
all: x86 arm
# x86 target
x86: build/x86/sheepwall build/test/unit_test
X86_OBJECTS := $(addprefix build/x86/, $(SOURCES:src/%.cc=%.o))
build/x86/sheepwall: $(X86_OBJECTS)
if [ ! -d `dirname $@` ]; then mkdir -p `dirname $@`; fi
$(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS)
build/x86/%.o: src/%.cc
if [ ! -d `dirname $@` ]; then mkdir -p `dirname $@`; fi
$(CXX) $(CXXFLAGS) -o $@ -c $<
# test
TEST_SOURCES=$(shell find test -name "*.cc")
TEST_OBJECTS := $(addprefix build/test/, $(TEST_SOURCES:test/%.cc=%.o) $(filter-out main.o, $(SOURCES:src/%.cc=%.o)))
TEST_CXXFLAGS := $(CXXFLAGS) --coverage
TEST_LDFLAGS := $(LDFLAGS)
TEST_LDLIBS := $(LDLIBS) -lgtest -lgtest_main -lgcov
build/test/unit_test: $(TEST_OBJECTS)
$(CXX) $(TEST_CXXFLAGS) $(LDFLAGS) -o $@ $^ $(TEST_LDLIBS)
build/test/%.o: test/%.cc
if [ ! -d `dirname $@` ]; then mkdir -p `dirname $@`; fi
$(CXX) $(TEST_CXXFLAGS) -o $@ -c $<
build/test/%.o: src/%.cc
if [ ! -d `dirname $@` ]; then mkdir -p `dirname $@`; fi
$(CXX) $(TEST_CXXFLAGS) -o $@ -c $<
# ARM target
arm: build/arm/sheepwall
# using ubuntu's g++-arm-linux-gnueabi package
arm: CXX := arm-linux-gnueabi-g++
arm: CXXFLAGS += -I/home/fatminmin/arm-boost/include -I/home/fatminmin/arm-libpcap/include
arm: LDFLAGS += -L/home/fatminmin/arm-boost/lib -L/home/fatminmin/arm-libpcap/lib -static
ARM_OBJECTS := $(addprefix build/arm/, $(SOURCES:src/%.cc=%.o))
build/arm/sheepwall: $(ARM_OBJECTS)
if [ ! -d `dirname $@` ]; then mkdir -p `dirname $@`; fi
$(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS)
build/arm/%.o: src/%.cc
if [ ! -d `dirname $@` ]; then mkdir -p `dirname $@`; fi
$(CXX) $(CXXFLAGS) -o $@ -c $<
clean:
rm -rf build/*