forked from OpenAtomFoundation/pika
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
148 lines (118 loc) · 4.22 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
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
include Makefile.global
#RPATH = /usr/local/pika21/lib/
#LFLAGS = -Wl,-rpath=$(RPATH)
UNAME := $(shell if [ -f "/etc/redhat-release" ]; then echo "CentOS"; else echo "Ubuntu"; fi)
OSVERSION := $(shell cat /etc/redhat-release | cut -d "." -f 1 | awk '{print $$NF}')
ifeq ($(UNAME), Ubuntu)
SO_DIR = $(CURDIR)/lib/ubuntu
TOOLS_DIR = $(CURDIR)/tools/ubuntu
else ifeq ($(OSVERSION), 5)
SO_DIR = $(CURDIR)/lib/5.4
TOOLS_DIR = $(CURDIR)/tools/5.4
else
SO_DIR = $(CURDIR)/lib/6.2
TOOLS_DIR = $(CURDIR)/tools/6.2
endif
CXX = g++
ifeq ($(__REL), 1)
#CXXFLAGS = -Wall -W -DDEBUG -g -O0 -D__XDEBUG__ -fPIC -Wno-unused-function -std=c++11
CXXFLAGS = -O2 -g -pipe -fPIC -W -DNDEBUG -Wwrite-strings -Wpointer-arith -Wreorder -Wswitch -Wsign-promo -Wredundant-decls -Wformat -Wall -Wno-unused-parameter -D_GNU_SOURCE -D__STDC_FORMAT_MACROS -std=c++11 -gdwarf-2 -Wno-redundant-decls
else
CXXFLAGS = -O0 -g -pg -pipe -fPIC -W -DDEBUG -Wwrite-strings -Wpointer-arith -Wreorder -Wswitch -Wsign-promo -Wredundant-decls -Wformat -Wall -Wno-unused-parameter -D_GNU_SOURCE -D__STDC_FORMAT_MACROS -std=c++11 -Wno-redundant-decls
endif
OBJECT = pika
SRC_DIR = ./src
THIRD_PATH = ./third
OUTPUT = ./output
INCLUDE_PATH = -I./include/ \
-I./src/ \
-I$(THIRD_PATH)/glog/src/ \
-I$(THIRD_PATH)/nemo/output/include/ \
-I$(THIRD_PATH)/slash/output/include/ \
-I$(THIRD_PATH)/pink/output/include/ \
-I$(THIRD_PATH)/pink/output/
LIB_PATH = -L./ \
-L$(THIRD_PATH)/nemo/output/lib/ \
-L$(THIRD_PATH)/slash/output/lib/ \
-L$(THIRD_PATH)/pink/output/lib/ \
-L$(THIRD_PATH)/glog/.libs/
LIBS = -lpthread \
-lglog \
-lnemo \
-lslash \
-lrocksdb \
-lpink \
-lz \
-lbz2 \
-lsnappy \
-lrt
NEMO = $(THIRD_PATH)/nemo/output/lib/libnemo.a
GLOG = $(SO_DIR)/libglog.so.0
PINK = $(THIRD_PATH)/pink/output/lib/libpink.a
SLASH = $(THIRD_PATH)/slash/output/lib/libslash.a
.PHONY: all clean
BASE_OBJS := $(wildcard $(SRC_DIR)/*.cc)
BASE_OBJS += $(wildcard $(SRC_DIR)/*.c)
BASE_OBJS += $(wildcard $(SRC_DIR)/*.cpp)
OBJS = $(patsubst %.cc,%.o,$(BASE_OBJS))
all: $(OBJECT)
@echo "UNAME : $(UNAME)"
@echo "SO_DIR : $(SO_DIR)"
@echo "TOOLS_DIR: $(TOOLS_DIR)"
make -C $(CURDIR)/tools/aof_to_pika/
cp $(CURDIR)/tools/aof_to_pika/output/bin/* $(TOOLS_DIR)
make __REL=1 -C $(CURDIR)/tools/binlog_sync/
cp $(CURDIR)/tools/binlog_sync/binlog_sync $(TOOLS_DIR)
make __REL=1 -C $(CURDIR)/tools/binlog_tools/
cp $(CURDIR)/tools/binlog_tools/binlog_sender $(TOOLS_DIR)
cp $(CURDIR)/tools/binlog_tools/binlog_parser $(TOOLS_DIR)
rm -rf $(OUTPUT)
mkdir $(OUTPUT)
mkdir $(OUTPUT)/bin
cp -r ./conf $(OUTPUT)/
mkdir $(OUTPUT)/lib
cp -r $(SO_DIR)/* $(OUTPUT)/lib
cp $(OBJECT) $(OUTPUT)/bin/
mkdir $(OUTPUT)/tools
if [ -d $(TOOLS_DIR) ]; then \
cp -r $(TOOLS_DIR)/* $(OUTPUT)/tools/; \
fi
rm -rf $(OBJECT)
@echo "Success, go, go, go..."
$(OBJECT): $(NEMO) $(GLOG) $(PINK) $(SLASH) $(OBJS)
$(CXX) $(CXXFLAGS) -o $@ $(OBJS) $(INCLUDE_PATH) $(LIB_PATH) $(LFLAGS) $(LIBS)
$(NEMO):
make -C $(THIRD_PATH)/nemo/
$(SLASH):
make -C $(THIRD_PATH)/slash/
$(PINK):
make -C $(THIRD_PATH)/pink/
$(OBJS): %.o : %.cc
$(CXX) $(CXXFLAGS) -c $< -o $@ $(INCLUDE_PATH)
$(TOBJS): %.o : %.cc
$(CXX) $(CXXFLAGS) -c $< -o $@ $(INCLUDE_PATH)
$(GLOG):
#cd $(THIRD_PATH)/glog; ./configure; make; echo '*' > $(CURDIR)/third/glog/.gitignore; cp $(CURDIR)/third/glog/.libs/libglog.so.0 $(SO_DIR);
cd $(THIRD_PATH)/glog; if [ ! -f ./Makefile ]; then ./configure; fi; make; echo '*' > $(CURDIR)/third/glog/.gitignore; cp $(CURDIR)/third/glog/.libs/libglog.so.0 $(SO_DIR);
clean:
rm -rf $(SRC_DIR)/*.o
rm -rf $(OUTPUT)/*
rm -rf $(OUTPUT)
distclean:
rm -rf $(SRC_DIR)/*.o
rm -rf $(OUTPUT)/*
rm -rf $(OUTPUT)
make clean -C $(THIRD_PATH)/nemo/
make clean -C $(THIRD_PATH)/nemo/3rdparty/rocksdb/
make clean -C $(THIRD_PATH)/pink/
make clean -C $(THIRD_PATH)/slash/
make clean -C $(THIRD_PATH)/glog/
make clean -C $(CURDIR)/tools/aof_to_pika
make clean -C $(CURDIR)/tools/pika_monitor
make clean -C $(CURDIR)/tools/binlog_sync
make clean -C $(CURDIR)/tools/binlog_tools
rm -rf $(TOOLS_DIR)/aof_to_pika
rm -rf $(TOOLS_DIR)/binlog_sync
rm -rf $(TOOLS_DIR)/binlog_parser
rm -rf $(TOOLS_DIR)/binlog_sender
rm -rf $(SO_DIR)/libglog.so*