-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
148 lines (112 loc) · 4.4 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
# A sample Makefile for building Google Test and using it in user
# tests. Please tweak it to suit your environment and project. You
# may want to move it to your project's root directory.
#
# SYNOPSIS:
#
# make [all] - makes everything.
# make TARGET - makes the given target.
# make clean - removes all files generated by make.
# Please tweak the following variable definitions as needed by your
# project, except GTEST_HEADERS, which you can use in your own targets
# but shouldn't modify.
##################################### Variable Definition #########################################
SHELL = /bin/sh
# Where to find src code.
THELIB_DIR = ../thelib
#THELIB_SRC=$(THELIB_DIR)/src/netio
THELIB_SRC=$(THELIB_DIR)/src
#THLIB_SRC_1=$(THELIB_DIR)/src/p2p
THELIB_INC=$(THELIB_DIR)/include
THIRD_PARTY_INC=../../3rdparty/include
COMMON_DIR=../common
COMMON_INC=$(COMMON_DIR)/include
COMMON_SRC=$(COMMON_DIR)/src
RTMP_DIR=./librtmp
SRC_DIR = .
BIN_DIR = .
DIST_DIR = ../dist
UTIL_DIR = ../util
BUILD_DIR = ../build
THIRD_PARTY_LIBS =../../3rdparty
# All code path, make depend path
VPATH = $(JEEP_DIR):$(SRC_DIR):$(RECORD_DIR):$(VOICE_DIR)
# Lib for link -L
LIB_PATH = .
# Lib for link -l
LIBS = pthread ssl lua boost_date_time
STATIC_LIB = # $(THIRD_PARTY_LIBS)/lib/json/libjson_linux-gcc-4.1.2_libmt.a\
$(THIRD_PARTY_LIBS)/lib/mysql/mysql/libmysqlclient_r.a \
$(THIRD_PARTY_LIBS)/lib/glog/libglog.a \
$(THIRD_PARTY_LIBS)/lib/boost/libboost_date_time.a \
$(THIRD_PARTY_LIBS)/lib/boost/libboost_system.a \
/usr/lib64/libcurl.a \
/usr/lib64/libidn.a \
$(THIRD_PARTY_LIBS)/lib/libmemcached/libmemcached.a
# Lib for preprocessor -I
INC_PATH = $(SRC_DIR) $(COMMON_INC) $(RTMP_DIR) $(THELIB_INC) $(THIRD_PARTY_INC)
#/usr/local/include
PLATFORM_DEFINES = \
-DLINUX \
-DLITTLE_ENDIAN_BYTE_ALIGNED \
-DNET_EPOLL \
-DHAS_SAFE_LOGGER \
-DLINUX64 \
-DNO_CRYPTO
#-D_DEBUG
#-D_FILE_DEBUG_
# Flags passed to the preprocessor.
CPPFLAGS += $(addprefix -I,$(INC_PATH))
# Flags passed to the C compiler
SVN_REV := $(shell svnversion -n .)
SVNDEV := -D'SVN_REV="$(SVN_REV)"'
CFLAGS += -Wall -g $(PLATFORM_DEFINES) $(SVNDEV)
#CFLAGS += -Wall -O2 -g -DLINUX64 -D__DEBUG__
# CSTD = -std=c99
#############################################################################
OUTPUT = $(BIN_DIR)/chunksource
# House-keeping build targets.
CPP_EXT := cpp
C_EXT := c
RTMP_SOURCE := $(shell find $(RTMP_DIR) -type f -name "*.$(C_EXT)")
RTMP_OBJECT := $(patsubst $(RTMP_DIR)/%, $(BUILD_DIR)/%, $(RTMP_SOURCE:.$(C_EXT)=.o))
C_SOURCE := $(RTMP_SOURCE)
C_OBJECT := $(RTMP_OBJECT)
COMMON_SOURCE := $(shell find $(COMMON_SRC) -type f -name "*.$(CPP_EXT)")
COMMON_OBJECT := $(patsubst $(COMMON_SRC)/%, $(BUILD_DIR)/%, $(COMMON_SOURCE:.$(CPP_EXT)=.o))
THELIB_SOURCE := $(shell find $(THELIB_SRC) -type f -name "*.$(CPP_EXT)")
THELIB_OBJECT := $(patsubst $(THELIB_SRC)/%, $(BUILD_DIR)/%, $(THELIB_SOURCE:.$(CPP_EXT)=.o))
#THELIB_SOURCE_1 := $(shell find $(THELIB_SRC_1) -type f -name "*.$(CPP_EXT)")
#THELIB_OBJECT_1 := $(patsubst $(THELIB_SRC_1)/%, $(BUILD_DIR)/%, $(THELIB_SOURCE_1:.$(CPP_EXT)=.o))
CPP_SOURCE := $(shell find $(SRC_DIR) -path "$(RTMP_DIR)*" -a -prune -type f -o -name "*.$(CPP_EXT)")
CPP_OBJECT := $(patsubst $(SRC_DIR)/%, $(BUILD_DIR)/%, $(CPP_SOURCE:.$(CPP_EXT)=.o))
SOURCES := $(C_SOURCE) $(COMMON_SOURCE) $(THELIB_SOURCE) $(THELIB_SOURCE_1) $(CPP_SOURCE)
OBJECTS := $(C_OBJECT) $(COMMON_OBJECT) $(THELIB_OBJECT) $(THELIB_OBJECT_1) $(CPP_OBJECT)
###############################################################################
all : $(OUTPUT)
$(BUILD_DIR)/%.o: $(RTMP_DIR)/%.c
@mkdir -p $(shell dirname $@)
gcc $(CFLAGS) $(CPPFLAGS) -c $< -o $@
$(BUILD_DIR)/%.o: $(COMMON_SRC)/%.cpp
@mkdir -p $(shell dirname $@)
$(CXX) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
$(BUILD_DIR)/%.o: $(THELIB_SRC)/%.cpp
@mkdir -p $(shell dirname $@)
$(CXX) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
#$(BUILD_DIR)/%.o: $(THELIB_SRC_1)/%.cpp
# @mkdir -p $(shell dirname $@)
# $(CXX) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.cpp
@mkdir -p $(shell dirname $@)
$(CXX) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
$(OUTPUT): $(OBJECTS)
$(CXX) -lrt -o $@ $^ $(addprefix -L,$(LIB_PATH)) $(addprefix -l,$(LIBS)) $(STATIC_LIB)
.PHONY : clean
clean :
rm -f $(OUTPUT) $(OBJECTS)
dist : $(OUTPUT)
tar -zcvf $(DIST_DIR)/statserver.$(subst :,_,$(SVN_REV)).tar.gz \
statserver \
ip.txt conf ver \
logrun.pl \
$(UTIL_DIR)/*.sh