Makefile 6.66 KB
Newer Older
1 2 3
NEED_GPERFTOOLS=1
NEED_GTEST=1
include ../config.mk
4
CPPFLAGS+=-DBTHREAD_USE_FAST_PTHREAD_MUTEX -D__const__= -D_GNU_SOURCE -DUSE_SYMBOLIZE -DNO_TCMALLOC -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -DUNIT_TEST -Dprivate=public -Dprotected=public -DBVAR_NOT_LINK_DEFAULT_VARIABLES --include sstream_workaround.h
gejun's avatar
gejun committed
5
CXXFLAGS=$(CPPFLAGS) -O2 -pipe -Wall -W -fPIC -fstrict-aliasing -Wno-invalid-offsetof -Wno-unused-parameter -fno-omit-frame-pointer -std=c++0x
gejun's avatar
gejun committed
6

7
#required by butil/crc32.cc to boost performance for 10x
8 9 10 11
ifeq ($(shell test $(GCC_VERSION) -ge 40400; echo $$?),0)
	CXXFLAGS+=-msse4 -msse4.2
endif
#not solved yet
12 13
ifeq ($(CC),gcc)
 ifeq ($(shell test $(GCC_VERSION) -ge 70000; echo $$?),0)
14
	CXXFLAGS+=-Wno-aligned-new
15
 endif
16
endif
17

18
HDRPATHS=-I. -I../src $(addprefix -I, $(HDRS))
19
LIBPATHS=$(addprefix -L, $(LIBS))
20

21
TEST_BUTIL_SOURCES = \
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
    at_exit_unittest.cc \
    atomicops_unittest.cc \
    base64_unittest.cc \
    big_endian_unittest.cc \
    bits_unittest.cc \
    hash_tables_unittest.cc \
    linked_list_unittest.cc \
    mru_cache_unittest.cc \
    small_map_unittest.cc \
    stack_container_unittest.cc \
    cpu_unittest.cc \
    crash_logging_unittest.cc \
    leak_tracker_unittest.cc \
    stack_trace_unittest.cc \
    environment_unittest.cc \
    file_util_unittest.cc \
    dir_reader_posix_unittest.cc \
    file_path_unittest.cc \
    file_unittest.cc \
    scoped_temp_dir_unittest.cc \
    guid_unittest.cc \
    hash_unittest.cc \
    lazy_instance_unittest.cc \
    md5_unittest.cc \
    aligned_memory_unittest.cc \
    linked_ptr_unittest.cc \
    ref_counted_memory_unittest.cc \
    ref_counted_unittest.cc \
    scoped_ptr_unittest.cc \
    scoped_vector_unittest.cc \
    singleton_unittest.cc \
    weak_ptr_unittest.cc \
    observer_list_unittest.cc \
    file_descriptor_shuffle_unittest.cc \
    rand_util_unittest.cc \
    safe_numerics_unittest.cc \
    scoped_clear_errno_unittest.cc \
    scoped_generic_unittest.cc \
    security_unittest.cc \
    sha1_unittest.cc \
    stl_util_unittest.cc \
    nullable_string16_unittest.cc \
    safe_sprintf_unittest.cc \
    string16_unittest.cc \
    stringprintf_unittest.cc \
    string_number_conversions_unittest.cc \
    string_piece_unittest.cc \
    string_split_unittest.cc \
    string_tokenizer_unittest.cc \
    string_util_unittest.cc \
    stringize_macros_unittest.cc \
    sys_string_conversions_unittest.cc \
    utf_offset_string_conversions_unittest.cc \
    utf_string_conversions_unittest.cc \
    cancellation_flag_unittest.cc \
    condition_variable_unittest.cc \
    lock_unittest.cc \
    waitable_event_unittest.cc \
    type_traits_unittest.cc \
    non_thread_safe_unittest.cc \
    platform_thread_unittest.cc \
    simple_thread_unittest.cc \
    thread_checker_unittest.cc \
    thread_collision_warner_unittest.cc \
    thread_id_name_manager_unittest.cc \
    thread_local_storage_unittest.cc \
    thread_local_unittest.cc \
    watchdog_unittest.cc \
    pr_time_unittest.cc \
    time_unittest.cc \
    version_unittest.cc \
    logging_unittest.cc \
    cacheline_unittest.cpp \
    class_name_unittest.cpp \
    endpoint_unittest.cpp \
    unique_ptr_unittest.cpp \
    errno_unittest.cpp \
    fd_guard_unittest.cpp \
    file_watcher_unittest.cpp \
    find_cstr_unittest.cpp \
    scoped_lock_unittest.cpp \
    status_unittest.cpp \
    string_printf_unittest.cpp \
    string_splitter_unittest.cpp \
    synchronous_event_unittest.cpp \
    temp_file_unittest.cpp \
    baidu_thread_local_unittest.cpp \
    baidu_time_unittest.cpp \
    flat_map_unittest.cpp \
    crc32c_unittest.cc \
112
    iobuf_unittest.cpp \
113 114
    test_switches.cc \
    scoped_locale.cc \
115
    popen_unittest.cpp \
116
    butil_unittest_main.cpp
117

gejun's avatar
gejun committed
118 119 120 121
ifeq ($(SYSTEM), Linux)
    TEST_BUTIL_SOURCES += test_file_util_linux.cc \
						  proc_maps_linux_unittest.cc
endif
zhujiashun's avatar
zhujiashun committed
122

123 124 125 126 127 128 129 130
# bthread_* functions are used in logging.cc, and they need to be marked as
# weak symbols explicitly in Darwin system.
ifeq ($(SYSTEM), Darwin)
	DYNAMIC_LINKINGS+=-Wl,-U,_bthread_getspecific
	DYNAMIC_LINKINGS+=-Wl,-U,_bthread_setspecific
	DYNAMIC_LINKINGS+=-Wl,-U,_bthread_key_create
endif

131
TEST_BUTIL_OBJS = iobuf.pb.o $(addsuffix .o, $(basename $(TEST_BUTIL_SOURCES))) 
132 133 134 135 136

TEST_BVAR_SOURCES = $(wildcard bvar_*_unittest.cpp)
TEST_BVAR_OBJS = $(addsuffix .o, $(basename $(TEST_BVAR_SOURCES))) 

TEST_BTHREAD_SOURCES = $(wildcard bthread_*unittest.cpp)
137
TEST_BTHREAD_OBJS = $(addsuffix .o, $(basename $(TEST_BTHREAD_SOURCES))) 
138 139

TEST_BRPC_SOURCES = $(wildcard brpc_*unittest.cpp)
140
TEST_BRPC_OBJS = $(addsuffix .o, $(basename $(TEST_BRPC_SOURCES))) 
141 142

TEST_PROTO_SOURCES = $(wildcard *.proto)
143
TEST_PROTO_OBJS = $(TEST_PROTO_SOURCES:.proto=.pb.o)
144

145
TEST_BINS = test_butil test_bvar $(TEST_BTHREAD_SOURCES:.cpp=) $(TEST_BRPC_SOURCES:.cpp=)
146 147 148 149 150

.PHONY:all
all: $(TEST_BINS)

.PHONY:clean
151
clean:clean_bins
152
	@echo "Cleaning"
153
	@rm -rf $(TEST_BUTIL_OBJS) $(TEST_BVAR_OBJS) $(TEST_BTHREAD_OBJS) $(TEST_BRPC_OBJS) $(TEST_PROTO_OBJS)
154
	@$(MAKE) -C.. clean_debug
155 156 157 158 159

.PHONY:clean_bins
clean_bins:
	@rm -rf $(TEST_BINS)

160
libbrpc.dbg.a:FORCE
161
	@$(MAKE) -C.. debug
162

163 164 165 166
FORCE:

.PRECIOUS: %.o

167
test_butil:libbrpc.dbg.a $(TEST_BUTIL_OBJS)
168
	@echo "Linking $@"
169
ifeq ($(SYSTEM),Linux)
170
	@$(CXX) -o $@ $(LIBPATHS) -Xlinker "-(" $^ -Wl,-Bstatic $(STATIC_LINKINGS) -Wl,-Bdynamic -Xlinker "-)" $(DYNAMIC_LINKINGS)
171 172 173
else ifeq ($(SYSTEM),Darwin)
	@$(CXX) -o $@ $(LIBPATHS) $^ $(STATIC_LINKINGS) $(DYNAMIC_LINKINGS)
endif
174

175
test_bvar:libbrpc.dbg.a $(TEST_BVAR_OBJS)
176
	@echo "Linking $@"
177
ifeq ($(SYSTEM),Linux)
178
	@$(CXX) -o $@ $(LIBPATHS) -Xlinker "-(" $(TEST_BVAR_OBJS) libbvar.dbg.a -Wl,-Bstatic $(STATIC_LINKINGS) -Wl,-Bdynamic -Xlinker "-)" $(DYNAMIC_LINKINGS)
179 180 181
else ifeq ($(SYSTEM),Darwin)
	@$(CXX) -o $@ $(LIBPATHS) $(TEST_BVAR_OBJS) libbvar.dbg.a $(STATIC_LINKINGS) $(DYNAMIC_LINKINGS)
endif
182

183
bthread%unittest:libbrpc.dbg.a bthread%unittest.o
184
	@echo "Linking $@"
185
ifeq ($(SYSTEM),Linux)
186
	@$(CXX) -o $@ $(LIBPATHS) -Xlinker "-(" $^ -Wl,-Bstatic $(STATIC_LINKINGS) -Wl,-Bdynamic -Xlinker "-)" $(DYNAMIC_LINKINGS)
187 188 189
else ifeq ($(SYSTEM),Darwin)
	@$(CXX) -o $@ $(LIBPATHS) $^ $(STATIC_LINKINGS) $(DYNAMIC_LINKINGS)
endif
190

191
brpc_%_unittest:libbrpc.dbg.a $(TEST_PROTO_OBJS) brpc_%_unittest.o
192
	@echo "Linking $@"
193
ifeq ($(SYSTEM),Linux)
194
	@$(CXX) -o $@ $(LIBPATHS) -Xlinker "-(" $^ -Wl,-Bstatic $(STATIC_LINKINGS) -Wl,-Bdynamic -Xlinker "-)" $(DYNAMIC_LINKINGS)
195 196 197
else ifeq ($(SYSTEM),Darwin)
	@$(CXX) -o $@ $(LIBPATHS) $^ $(STATIC_LINKINGS) $(DYNAMIC_LINKINGS)
endif
198

199
%.pb.cc %.pb.h:%.proto
200
	@echo "Generating $@"
gejun's avatar
gejun committed
201
	@$(PROTOC) --cpp_out=. --proto_path=. --proto_path=../src --proto_path=$(PROTOBUF_HDR) $<
202

203
%.o:%.cpp | libbrpc.dbg.a
204 205 206
	@echo "Compiling $@"
	@$(CXX) -c $(HDRPATHS) $(CXXFLAGS) $< -o $@

207
%.o:%.cc | libbrpc.dbg.a
208 209 210
	@echo "Compiling $@"
	@$(CXX) -c $(HDRPATHS) $(CXXFLAGS) $< -o $@