-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
39 lines (30 loc) · 1.48 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
CXX=g++
CXXFLAGS=$(INCLUDES) -ansi -std=c++98 -pedantic-errors -Wall -Wextra -O0 -g3 -fPIC
space :=
space +=
INCS=include/ vdr/app/ vdr/include/ framework/communication/include/ minion/minion_app minion/include framework/include/
INCLUDES=$(patsubst %, -I%, $(INCS))
VDR_TARGETS=vdr_main
MINION_TARGETS=minion_main
VDR_OBJS=$(patsubst %, %.o, $(VDR_TARGETS))
MINION_OBJS=$(patsubst %, %.o, $(MINION_TARGETS))
SHLIBS_DIRS=vdr/app minion/minion_app minion/master_proxy minion/minion vdr/master framework/communication vdr/os_proxy vdr/protocols vdr/minion_proxy vdr/block_table framework/timer framework/thread_pool framework/eventer framework/encryptor
SHLIBS_PATHS_COLLON_SEP=$(subst $(space),:,$(SHLIBS_DIRS))
SHLIBS_PATH=$(patsubst %, -L%, $(SHLIBS_DIRS))
SHLIBS= app minion_app master_proxy minion master communication os_proxy protocols boost_thread boost_system boost_chrono minion_proxy block_table timer config++ thread_pool eventer encryptor
SHLIBS_LINK=$(patsubst %, -l%, $(SHLIBS))
minion: $(SHLIBS_DIRS) minion.out
minion.out: $(MINION_OBJS)
$(CXX) $(CXXFLAGS) $^ $(SHLIBS_PATH) -Wl,-rpath=$(SHLIBS_PATHS_COLLON_SEP) -o $@ $(SHLIBS_LINK)
vdr: $(SHLIBS_DIRS) vdr.out
vdr.out: $(VDR_OBJS)
$(CXX) $(CXXFLAGS) $^ $(SHLIBS_PATH) -Wl,-rpath=$(SHLIBS_PATHS_COLLON_SEP) -o $@ $(SHLIBS_LINK)
$(SHLIBS_DIRS):
$(MAKE) --directory=$@
clean:
-rm *.o *.out
-find -name '*.so' -delete
-find -name '*.gch' -delete
-find -name '*.o' -delete
-find -name '*.out' -delete
.PHONY: all clean $(SHLIBS_DIRS)