108 lines
2.4 KiB
Makefile
108 lines
2.4 KiB
Makefile
# 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-char-subscripts \
|
|
-Wno-missing-field-initializers \
|
|
-Wno-unused-local-typedefs \
|
|
-Wno-unused-parameter \
|
|
-Wpacked \
|
|
-Wpointer-arith \
|
|
-Wwrite-strings
|
|
|
|
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-deprecated-register \
|
|
-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
|
|
|