#
#    Copyright (c) Project openweave-core Authors
#    Copyright (c) 2014-2017 Nest Labs, Inc.
#    All rights reserved.
#
#    Licensed under the Apache License, Version 2.0 (the "License");
#    you may not use this file except in compliance with the License.
#    You may obtain a copy of the License at
#
#        http://www.apache.org/licenses/LICENSE-2.0
#
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS,
#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#    See the License for the specific language governing permissions and
#    limitations under the License.
#

#    Description:
#      This file implements a glue makefile for building the Weave SDK
#      for standalone desktop or server build host systems.
#
#      This is strictly a convenience makefile. Such systems can
#      otherwise be built using the usual GNU autotools convention of:
#
#        % ./configure
#        % make
#

# Don't allow this top-level makefile's targets to be built in parallel.

.NOTPARALLEL:

COVERAGE                       ?= 0
DEBUG                          ?= 0
TIMESTAMP                      ?= 0
TUNNEL_FAILOVER                ?= 0
USE_LWIP                       ?= 0
NO_OPENSSL                     ?= 0
BLUEZ                          ?= 0
USE_FUZZING                    ?= 0
TESTS                          ?= 1

HOSTOS                          = $(shell uname -s |tr [:upper:] [:lower:])
ARCH                            = $(shell uname -m |tr [:upper:] [:lower:])

ECHO                           := @echo
MAKE                           := make
MKDIR_P                        := mkdir -p
LN_S                           := ln -s
RM_F                           := rm -f

INSTALL                        := /usr/bin/install
INSTALLFLAGS                   := -p

TopSourceDir                   := $(dir $(shell readlink $(firstword $(MAKEFILE_LIST))))
AbsTopSourceDir                := $(dir $(realpath $(firstword $(MAKEFILE_LIST))))

BuildPath                       = build
TopBuildDir                     = $(BuildPath)
AbsTopBuildDir                  = $(CURDIR)/$(TopBuildDir)

ResultPath                      = output
TopResultDir                    = $(ResultPath)
AbsTopResultDir                 = $(CURDIR)/$(TopResultDir)

TargetTuple                     = $(shell ${AbsTopSourceDir}/third_party/nlbuild-autotools/repo/third_party/autoconf/config.guess | sed -e 's/[[:digit:].]*$$//g')

ifeq ($(HOSTOS),darwin)
ProjectConfigDir               ?= $(AbsTopSourceDir)/build/config/standalone/darwin
else
ProjectConfigDir               ?= $(AbsTopSourceDir)/build/config/standalone
endif

ifeq ($(ARCH),x86_64)
configure_OPTIONS               = CPPFLAGS="-maes"
endif

# NOTE: Mac OS SDKs generated on OS X Sierra (or higher) seem to have trouble
#       running on El Capitan (or earlier) due to issues with clock_gettime: 
#       declaring the interface in time.h but not making the symbol 
#       available in libSystem.dylib, resulting in a runtime crash. For 
#       now, suppress use of clock_getttime on OS X by overriding 
#       configure and asserting:
#
#         ac_cv_func_clock_gettime=no
#         ac_cv_have_decl_clock_gettime=no
#
#       below.
#

ifeq ($(HOSTOS),darwin)
configure_OPTIONS              += ac_cv_func_clock_gettime=no  ac_cv_have_decl_clock_gettime=no
endif

# By default, attempt use the system's OpenSSL library, falling back to building the internal
# copy of OpenSSL (in third_party/openssl) when necessary.
#
# On Linux, the logic uses pkg-config to determine if the OpenSSL development package (libssl-dev)
# has been installed.  If not, the internal copy of OpenSSL is built.
#
# On OS X, the logic uses homebrew to determine if OpenSSL has been installed.  If not, the
# internal copy of OpenSSL will be built.
#
# The variable OPENSSL can be used to override the above logic and specify a particular root
# directory in which to find the OpenSSL headers and libraries.
#
# Setting OPENSSL=no or NO_OPENSSL=1 will cause OpenWeave to be built without OpenSSL.  Note that
# building without OpenSSL automatically suppresses the building of various command line tools that
# have a hard dependency on OpenSSL (e.g. the weave tool).

ifeq ($(NO_OPENSSL),1)
OPENSSL                         = no
else
ifeq ($(HOSTOS),darwin)
OPENSSL                        ?= $(shell if which brew > /dev/null && brew ls --versions openssl > /dev/null; then brew --prefix openssl; else echo "internal"; fi)
else
OPENSSL                        ?= $(shell if which pkg-config > /dev/null && pkg-config --exists openssl; then echo ""; else echo "internal"; fi)
endif
endif
configure_OPTIONS              += --with-openssl=$(OPENSSL)
ifeq ($(OPENSSL),no)
configure_OPTIONS              += --disable-tools
ProjectConfigDir                = $(AbsTopSourceDir)/build/config/standalone/no-openssl
endif

# If the user has asserted USE_FUZZING enable fuzzing build
ifeq ($(USE_FUZZING),1)
configure_OPTIONS              += --enable-fuzzing
endif

# If the user has asserted COVERAGE, alter the configuration options
# accordingly.

ifeq ($(COVERAGE),1)
# no point in enabling docs generation for a coverage build
configure_OPTIONS              += --enable-coverage --enable-coverage-reports --disable-docs
# Happy checks are time consuming, but on average less processor intensive than
# compiling and running unit-tests.
# Bump the number of builds, it primarily has an effect on the make check
# phase of the build.
BuildJobs                      ?= $(shell echo $$(( `getconf _NPROCESSORS_ONLN` * 2 )) )
endif

# On properly configured 64-bit Linux machines, recognize the
# I686TARGET flag and build the 32-bit image.

ifeq ($(HOSTOS),linux)
ifeq ($(ARCH),x86_64)
ifeq ($(I686TARGET),1)
TargetTuple                     = i686-pc-linux-gnu
configure_OPTIONS              += --build=$(TargetTuple) CFLAGS="-m32 -g -O2"  CXXFLAGS="-m32 -g -O2" LDFLAGS="-m32 -L/usr/lib/i386-linux-gnu/"
endif
endif
endif

# If the user has asserted DEBUG, alter the configuration options
# accordingly.

ifeq ($(DEBUG),1)
configure_OPTIONS              += --enable-debug --enable-optimization=no
else
configure_OPTIONS              += 
endif

# Disable docs generation
ifeq ($(DOCS),0)
configure_OPTIONS              += --disable-docs
else
configure_OPTIONS              +=
endif

# If the user has asserted TIMESTAMP, alter the configuration options
# accordingly.
ifeq ($(TIMESTAMP),1)
configure_OPTIONS              += --enable-stdio-logging-timestamps
else
configure_OPTIONS              +=
endif

# If the user has used tunnel failover, alter the configuration options
# accordingly.
ifeq ($(TUNNEL_FAILOVER),1)
configure_OPTIONS              += --enable-tunnel-failover
else
configure_OPTIONS              +=
endif

# If the user has woble over bluez peripheral, alter the configuration options
# accordingly.
ifeq ($(BLUEZ),1)
configure_OPTIONS              += --enable-experimental --enable-deprecated --enable-testing --enable-tools --disable-systemd --enable-debug
else
configure_OPTIONS              += --with-bluez=no
endif

# If the user has asserted HAPPY, alter the configuration options
# accordingly.

ifdef HAPPY
ifeq ($(HAPPY),1)
configure_OPTIONS              += --with-happy
else
ifeq ($(HAPPY),0)
configure_OPTIONS              += --without-happy
else
configure_OPTIONS              += --with-happy=$(HAPPY)
endif
endif
else
configure_OPTIONS              +=
endif

ifdef SERVICE
BuildJobs                       = 1
configure_OPTIONS              += --with-happy-service=$(SERVICE)
ifdef SUITE
configure_OPTIONS              += --with-happy-test-suite=$(SUITE)
else # SUITE
configure_OPTIONS              += --with-happy-test-suite=minimal
endif # SUITE

else # SERVICE

ifdef SUITE
configure_OPTIONS              += --with-happy-test-suite=$(SUITE)
else # SUITE
configure_OPTIONS              += --with-happy-test-suite=all
endif # SUITE
endif # SERVICE

ifdef DNS
configure_OPTIONS              += --with-happy-dns=$(DNS)
else
configure_OPTIONS              +=
endif

ifdef SCHEMA
configure_OPTIONS              += --with-schema=$(SCHEMA)
else
configure_OPTIONS              +=
endif

# Disable tests generation
ifeq ($(TESTS),0)
configure_OPTIONS              += --disable-tests
else
configure_OPTIONS              +=
endif

# If the user has asserted USE_LWIP, alter the configuration and
# target tuple to use LwIP rather than the expected BSD sockets.

ifeq ($(USE_LWIP),1)
configure_OPTIONS               += --with-target-network=lwip --with-lwip=internal --disable-java
TargetTuple                     := $(TargetTuple)-lwip
endif

ifeq ($(LONG_TESTS),1)
configure_OPTIONS               += --enable-long-tests=yes
endif

ifeq ($(ENABLE_WOBLE_TEST),1)
configure_OPTIONS               += --enable-woble-test=yes
endif

ifndef BuildJobs
BuildJobs := $(shell getconf _NPROCESSORS_ONLN)
endif
JOBSFLAG := -j$(BuildJobs)

#
# automake files
#
AMFILES = src/system/SystemLayer.am			\
	src/system/Makefile.am				\
	src/platform/ble/bluez/Makefile.am		\
	src/adaptations/device-layer/Makefile.am	\
	src/include/Makefile.am				\
	src/lib/profiles/WeaveProfiles.am		\
	src/lib/core/WeaveCore.am			\
	src/lib/support/verhoeff/Makefile.am		\
	src/lib/support/WeaveSupport.am			\
	src/lib/support/Makefile.am			\
	src/lib/Makefile.am				\
	src/warm/Warm.am				\
	src/warm/Makefile.am				\
	src/inet/InetLayer.am				\
	src/inet/Makefile.am				\
	src/ble/BleLayer.am				\
	src/ble/Makefile.am				\
	src/test-apps/fuzz/Makefile.am			\
	src/test-apps/wrapper-tests/jni/Makefile.am	\
	src/test-apps/Makefile.am			\
	src/examples/Makefile.am			\
	src/wrappers/jni/jni-utils/Makefile.am		\
	src/wrappers/jni/security-support/Makefile.am	\
	src/wrappers/jni/Makefile.am			\
	src/lwip/Makefile.am				\
	src/Makefile.am					\
	src/ra-daemon/Makefile.am			\
	src/tools/weave/Makefile.am			\
	src/tools/misc/Makefile.am			\
	src/device-manager/DeviceManager.am		\
	src/device-manager/cocoa/Makefile.am		\
	src/device-manager/java/Makefile.am		\
	src/device-manager/python/Makefile.am		\
	third_party/Makefile.am				\
	doc/Makefile.am					\
	Makefile.am					\
	configure.ac					\
	$(NULL)

#
# configure-arch <target>
#
# Configure the Weave SDK for the specified target.
#
#   target - The target to configure.
#
define configure-target
$(ECHO) "  CONFIG   $(1)..."
(cd $(BuildPath)/$(1) && $(AbsTopSourceDir)/configure -C \
INSTALL="$(INSTALL) $(INSTALLFLAGS)" \
--prefix=/ \
--exec-prefix=/$(1) \
--with-weave-project-includes=$(ProjectConfigDir) \
$(configure_OPTIONS))
endef # configure-target

#
# build-target <target>
#
# Build the Weave SDK intermediate build products for the specified
# target.
#
#   target - The target to build.
#
define build-target
$(ECHO) "  BUILD    $(1)"
$(MAKE) $(JOBSFLAG) -C $(BuildPath)/$(1) --no-print-directory \
all
endef # build-target

#
# check-target <target>
#
# Check (run unit tests) the Weave SDK for the specified target.
#
#   target - The target to check.
#
define check-target
$(ECHO) "  CHECK    $(1)"
$(MAKE) $(JOBSFLAG) -C $(BuildPath)/$(1) --no-print-directory \
check
endef # check-target

#
# coverage-target <target>
#
# Generate code coverage from unit tests for the Weave SDK for the
# specified target.
#
#   target - The target to generate code coverage for.
#
define coverage-target
$(ECHO) "  COVERAGE $(1)"
$(MAKE) $(JOBSFLAG) -C $(BuildPath)/$(1) --no-print-directory \
coverage
endef # coverage-target

#
# stage-target <target>
#
# Stage (install) the Weave SDK final build products for the specified
# target.
#
#   target - The target to stage.
#
define stage-target
$(ECHO) "  STAGE    $(1)"
$(MAKE) $(JOBSFLAG) -C $(BuildPath)/$(1) --no-print-directory \
DESTDIR=$(AbsTopResultDir) \
install
endef # stage-target

#
# pretty-target <target>
#
# Prettyify the Weave SDK source code for the specified target.
#
#   target - The target to prettify.
#
define pretty-target
$(ECHO) "  PRETTY   $(1)"
$(MAKE) $(JOBSFLAG) -C $(BuildPath)/$(1) --no-print-directory \
pretty
endef # pretty-target

#
# pretty-check-target <target>
#
# Pretty-check (lint) the Weave SDK source code for the specified
# target.
#
#   target - The target to pretty-check (lint).
#
define pretty-check-target
$(ECHO) "  PRETTY   $(1)"
$(MAKE) $(JOBSFLAG) -C $(BuildPath)/$(1) --no-print-directory \
pretty-check
endef # pretty-check-target

#
# TARGET_template <target>
#
# Define macros, targets and rules to configure, build, and stage the
# Weave SDK for a single target.
#
#   target - The target to instantiate the template for.
#
define TARGET_template
CONFIGURE_TARGETS    += configure-$(1)
BUILD_TARGETS        += do-build-$(1)
CHECK_TARGETS        += check-$(1)
COVERAGE_TARGETS     += coverage-$(1)
STAGE_TARGETS        += stage-$(1)
PRETTY_TARGETS       += pretty-$(1)
PRETTY_CHECK_TARGETS += pretty-check-$(1)
BUILD_DIRS           += $(BuildPath)/$(1)
DIRECTORIES          += $(BuildPath)/$(1)

configure-$(1): Makefile.in $(BuildPath)/$(1)/config.status

$(BuildPath)/$(1)/config.status: | $(BuildPath)/$(1)
	$$(call configure-target,$(1))

do-build-$(1): configure-$(1)

do-build-$(1):
	$$(call build-target,$(1))

check-$(1): do-build-$(1)

check-$(1):
	$$(call check-target,$(1))

coverage-$(1): do-build-$(1)

coverage-$(1):
	$$(call coverage-target,$(1))

stage-$(1): do-build-$(1)

stage-$(1): | $(TopResultDir)
	$$(call stage-target,$(1))

pretty-$(1): configure-$(1)
	$$(call pretty-target,$(1))

lint-$(1) pretty-check-$(1): configure-$(1)
	$$(call pretty-check-target,$(1))

$(1): stage-$(1)
endef # TARGET_template

.PHONY : configure build check coverage stage pretty lint pretty-check clean ensure-sudo help

ensure-sudo:
	$(ECHO) "Selected target will require sudo access."
	@sudo echo "Sudo access granted"

.DEFAULT_GOAL := all

all: stage

# Instantiate an target-specific build template for the target.

$(eval $(call TARGET_template,$(TargetTuple)))

#
# Common / Finalization
#

Makefile.in: $(AMFILES)
	$(ECHO) "BOOTSTRAP"
	@./bootstrap

configure: $(CONFIGURE_TARGETS)

build: $(BUILD_TARGETS)

check: ensure-sudo $(CHECK_TARGETS)

coverage: ensure-sudo $(COVERAGE_TARGETS)

stage: $(STAGE_TARGETS)

pretty: $(PRETTY_TARGETS)

lint pretty-check: $(PRETTY_CHECK_TARGETS)

DIRECTORIES     = $(TopResultDir) $(TopResultDir)/$(TargetTuple)/lib $(BUILD_DIRS)

CLEAN_DIRS      = $(TopResultDir) $(BUILD_DIRS)

all: stage

$(DIRECTORIES):
	$(ECHO) "  MKDIR    $@"
	@$(MKDIR_P) "$@"

clean:
	$(ECHO) "  CLEAN"
	@$(RM_F) -r $(CLEAN_DIRS)

help:
	@echo "$${HelpText}"

export HelpText
define HelpText
Simply type 'make -f $(firstword $(MAKEFILE_LIST))' to build Weave for the following 
target:

    $(TargetTuple)

You may want or need to override the following make variables either on the 
command line or in the environment: 

  DEBUG=[1|0]             Enable/disable Weave debug code and logging (default: '$(DEBUG)').

  COVERAGE=[1|0]          Enable/disable generation of code coverage information 
                          (default: '$(COVERAGE)').

  TIMESTAMP=[1|0]         Enable/disable logging module timestamp output (default: '$(TIMESTAMP)').

  USE_LWIP=[1|0]          Build the standalone configuration against the LwIP 
                          library rather than against sockets (default '$(USE_LWIP)').

  BLUEZ=[1|0]             Enable support for BLE peripheral using BlueZ bindings 

  OPENSSL=<dir>           Use the prebuilt version of OpenSSL located in the given 
                          directory. Note that the directory is expected to contain 
                          include and lib subdirectories containing the necessary header 
                          and libraries. 

  OPENSSL=internal        Build the internal copy of OpenSSL as part of the OpenWeave
                          build.

  OPENSSL=no              Build an alternate configuration that does not depend
  NO_OPENSSL=1            on the use of OpenSSL (default: '$(NO_OPENSSL)'.  Note
                          that the various command line tools that depend on
                          OpenSSL (e.g., the weave tool) will not be built in
                          this configuration.

  TUNNEL_FAILOVER=[1|0]   Enable/disabled support for redundant VPN to the Weave service 
                          (default: '$(TUNNEL_FAILOVER)').

  I686TARGET=[1|0]        Enable/disable building a 32-bit target.  Requires a properly
                          configured 64-bit Linux with multilib support (default: '$(I686TARGET)').

  DOCS=[1|0]              Enable/disable Doxygen-generated documentation (default: '$(DOCS)').
                          Note this flag only has an effect when Doxygen is
                          installed.

  HAPPY=[1|0]             When set to 0, skip the functional tests that require
                          Happy orchestration tool.  When set to 1, pick the
                          default location to the Happy tool.  When set to any
                          other value, the value is treated as the location of
                          the Happy tool.

  TESTS=[1|0]             Enable/disable tests (default: '$(TESTS)').

endef
