# 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/googletest/googletest/include \
	-Ithird_party/googletest/googlemock/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-libs : out/$(BUILD_MODE)/libweave.so
all-tests : out/$(BUILD_MODE)/libweave_exports_testrunner out/$(BUILD_MODE)/libweave_testrunner

all : all-libs all-examples all-tests

clean :
	rm -rf out

cleanall : clean clean-gtest clean-libevhtp

.PHONY : clean cleanall all
.DEFAULT_GOAL := all

