forked from raboof/nethogs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakeLib.mk
112 lines (89 loc) · 3.09 KB
/
MakeLib.mk
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
105
106
107
108
109
110
111
112
LIBRARY=libnethogs.so
LIBVERSION=$(VERSION)
LIBNAME=$(LIBRARY).$(LIBVERSION)
SO_NAME=$(LIBRARY).$(LIBVERSION)
libdir := $(PREFIX)/lib
incdir := $(PREFIX)/include
all: $(LIBNAME) libnethogs.a
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Linux)
LDFLAGS:= -shared -Wl,-soname,$(SO_NAME)
else ifeq ($(UNAME_S),FreeBSD)
LDFLAGS:= -shared -Wl,-soname,$(SO_NAME)
else
LDFLAGS:= -shared -Wl,-install_name,$(SO_NAME)
endif
CXXINCLUDES :=
VISIBILITY=-fvisibility=hidden
ODIR_BASE := obj
ifeq ($(DEBUG),1)
# Debug mode options
$(info Building debug version)
ODIR:=$(ODIR_BASE)/lib/debug
CFLAGS?=-Wall -Wextra -O0 -g -fPIC $(VISIBILITY)
CXXFLAGS?=-Wall -Wextra -Wno-missing-field-initializers --std=c++14 -O0 -g -fPIC $(VISIBILITY) $(CXXINCLUDES)
else
# Release mode options
ODIR:=$(ODIR_BASE)/lib/release
CFLAGS?=-Wall -Wextra -O3 -fPIC $(VISIBILITY)
CXXFLAGS?=-Wall -Wextra -Wno-missing-field-initializers --std=c++14 -O3 -fPIC $(VISIBILITY) $(CXXINCLUDES)
endif
OBJ_NAMES= libnethogs.o packet.o connection.o process.o decpcap.o inode2prog.o conninode.o devices.o
OBJS=$(addprefix $(ODIR)/,$(OBJ_NAMES))
#$(info $(OBJS))
.PHONY: uninstall
install: $(LIBNAME)
install -d -m 755 $(DESTDIR)$(libdir)
install -m 755 $(LIBNAME) $(DESTDIR)$(libdir)
@echo "Installed $(LIBNAME) to $(DESTDIR)$(libdir)"
ldconfig || true
install_dev: install
@ln -f -s $(DESTDIR)$(libdir)/$(LIBNAME) $(DESTDIR)$(libdir)/$(LIBRARY)
install -m 755 libnethogs.a $(DESTDIR)$(libdir)
@echo "Installed libnethogs.a to $(DESTDIR)$(libdir)"
install -d -m 755 $(DESTDIR)$(incdir)
install -m 755 libnethogs.h $(DESTDIR)$(incdir)
@echo "Installed libnethogs.h to $(DESTDIR)$(incdir)"
ldconfig || true
uninstall:
rm -f $(DESTDIR)$(libdir)/$(LIBNAME)
rm -f $(DESTDIR)$(libdir)/$(LIBRARY)
rm -f $(DESTDIR)$(libdir)/libnethogs.a
rm -f $(DESTDIR)$(incdir)/libnethogs.h
ldconfig || true
$(LIBNAME): $(OBJS)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $(OBJS) -o $@ -lpcap
libnethogs.a: $(OBJS)
$(AR) rcs $@ $(OBJS)
#-lefence
$(ODIR)/process.o: process.cpp process.h nethogs.h
@mkdir -p $(ODIR)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -o $@ -c process.cpp
$(ODIR)/packet.o: packet.cpp packet.h nethogs.h
@mkdir -p $(ODIR)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -o $@ -c packet.cpp
$(ODIR)/connection.o: connection.cpp connection.h nethogs.h
@mkdir -p $(ODIR)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -o $@ -c connection.cpp
$(ODIR)/decpcap.o: decpcap.c decpcap.h
@mkdir -p $(ODIR)
$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ -c decpcap.c
$(ODIR)/inode2prog.o: inode2prog.cpp inode2prog.h nethogs.h
@mkdir -p $(ODIR)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -o $@ -c inode2prog.cpp
$(ODIR)/conninode.o: conninode.cpp nethogs.h conninode.h
@mkdir -p $(ODIR)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -o $@ -c conninode.cpp
$(ODIR)/devices.o: devices.cpp devices.h
@mkdir -p $(ODIR)
$(CXX) $(CXXFLAGS) -o $@ -c devices.cpp
$(ODIR)/libnethogs.o: libnethogs.cpp libnethogs.h
@mkdir -p $(ODIR)
$(CXX) $(CXXFLAGS) -o $@ -c libnethogs.cpp -DVERSION=\"$(LIBVERSION)\"
.PHONY: clean
clean:
rm -f $(OBJS)
rm -f $(LIBNAME)
rm -f libnethogs.a
mkdir -p $(ODIR)
rmdir -p --ignore-fail-on-non-empty $(ODIR)