| # Copyright 2015 The Weave Authors. All rights reserved. | 
 | # Use of this source code is governed by a BSD-style license that can be | 
 | # found in the LICENSE file. | 
 |  | 
 | # Run make with BUILD_MODE=Release for release. | 
 | BUILD_MODE ?= Debug | 
 |  | 
 | DEFS_Debug := \ | 
 | 	-D_DEBUG | 
 |  | 
 | DEFS_Release := \ | 
 | 	-DNDEBUG | 
 |  | 
 | INCLUDES := \ | 
 | 	-I. \ | 
 | 	-Iinclude \ | 
 | 	-Ithird_party/chromium \ | 
 | 	-Ithird_party/include \ | 
 | 	-Ithird_party/libuweave \ | 
 | 	-Ithird_party/modp_b64/modp_b64 | 
 |  | 
 | CFLAGS := \ | 
 | 	-fno-exceptions \ | 
 | 	-fPIC \ | 
 | 	-fvisibility=hidden \ | 
 | 	-Wall \ | 
 | 	-Werror \ | 
 | 	-Wextra \ | 
 | 	-Wformat=2 \ | 
 | 	-Wl,--exclude-libs,ALL \ | 
 | 	-Wno-missing-field-initializers \ | 
 | 	-Wno-unused-parameter \ | 
 |  | 
 | CFLAGS_Debug := \ | 
 | 	-O0 \ | 
 | 	-g3 | 
 |  | 
 | CFLAGS_Release := \ | 
 | 	-Os | 
 |  | 
 | CFLAGS_C := \ | 
 | 	-std=c99 | 
 |  | 
 | CFLAGS_CC := \ | 
 | 	-std=c++11 | 
 |  | 
 | comma := , | 
 | ifeq (1, $(CLANG)) | 
 |   CC = $(shell which clang-3.6) | 
 |   CXX = $(shell which clang++-3.6) | 
 |   CFLAGS := $(filter-out -Wl$(comma)--exclude-libs$(comma)ALL,$(CFLAGS)) | 
 |   CFLAGS += \ | 
 |     -fno-omit-frame-pointer \ | 
 |     -Wno-inconsistent-missing-override | 
 |   ifeq (Debug, $(BUILD_MODE)) | 
 |     CFLAGS += \ | 
 |       -fsanitize=address | 
 |     LDFLAGS += \ | 
 |       -fsanitize=address | 
 |   endif | 
 | endif | 
 |  | 
 | # Headers dependencies. | 
 | CFLAGS += -MMD | 
 | OBJFILES = $(shell find out/$(BUILD_MODE)/ -type f -name '*.o') | 
 | -include $(OBJFILES:.o=.d) | 
 |  | 
 | DEFS_TEST := \ | 
 | 	$(DEFS_$(BUILD_MODE)) \ | 
 | 	-DHAS_GTEST=1 | 
 |  | 
 | ### | 
 | # libweave.so | 
 |  | 
 | out/$(BUILD_MODE)/libweave.so : out/$(BUILD_MODE)/libweave_common.a | 
 | 	$(CXX) -shared -Wl,-soname=libweave.so -o $@ -Wl,--whole-archive $^ -Wl,--no-whole-archive -lcrypto -lexpat -lpthread -lrt | 
 |  | 
 | include file_lists.mk third_party/third_party.mk examples/examples.mk tests.mk | 
 |  | 
 | ### | 
 | # src/ | 
 |  | 
 | weave_obj_files := $(WEAVE_SRC_FILES:%.cc=out/$(BUILD_MODE)/%.o) | 
 |  | 
 | $(weave_obj_files) : out/$(BUILD_MODE)/%.o : %.cc | 
 | 	mkdir -p $(dir $@) | 
 | 	$(CXX) $(DEFS_$(BUILD_MODE)) $(INCLUDES) $(CFLAGS) $(CFLAGS_$(BUILD_MODE)) $(CFLAGS_CC) -c -o $@ $< | 
 |  | 
 | out/$(BUILD_MODE)/libweave_common.a : $(weave_obj_files) $(third_party_chromium_base_obj_files) $(third_party_chromium_crypto_obj_files) $(third_party_modp_b64_obj_files) $(third_party_libuweave_obj_files) | 
 | 	rm -f $@ | 
 | 	$(AR) crsT $@ $^ | 
 |  | 
 | all : out/$(BUILD_MODE)/libweave.so all-examples out/$(BUILD_MODE)/libweave_exports_testrunner out/$(BUILD_MODE)/libweave_testrunner | 
 |  | 
 | clean : | 
 | 	rm -rf out | 
 |  | 
 | cleanall : clean clean-gtest clean-libevhtp | 
 |  | 
 | .PHONY : clean cleanall all | 
 | .DEFAULT_GOAL := all | 
 |  |