#
#   Copyright (c) 2020 Project CHIP Authors
#
#   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.
#

#
#   @file
#         Component makefile for incorporating CHIP into a k32w061
#         application.
#
#   This makefile is intended to work in conjunction with the k32w061-app.mk
#   makefile to build the CHIP example applications on NXP platforms.
#   k32w061 applications should include this file in their top level Makefile
#   after including k32w061-app.mk.  E.g.:
#
#       PROJECT_ROOT = $(realpath .)
#
#       BUILD_SUPPORT_DIR = $(PROJECT_ROOT)/third_party/connectedhomeip/config/k32w
#
#       include $(BUILD_SUPPORT_DIR)/k32w061-app.mk
#       include $(BUILD_SUPPORT_DIR)/k32w061-chip.mk
#
#       PROJECT_ROOT := $(realpath .)
#
#       APP := chip-k32w061-bringup
#
#       SRCS = \
#           $(PROJECT_ROOT)/main.cpp \
#           ...
#
#       $(call GenerateBuildRules)
#
# ==================================================
# General settings
# ==================================================

# Location of CHIP source tree
CHIP_ROOT ?= $(PROJECT_ROOT)/third_party/connectedhomeip

# Archtecture for which CHIP will be built.
CHIP_HOST_ARCH := armv7-unknown-linux-gnu

# Directory into which the CHIP build system will place its output.
CHIP_OUTPUT_DIR = $(OUTPUT_DIR)/chip

# An optional file containing application-specific configuration overrides.
CHIP_PROJECT_CONFIG = $(wildcard $(PROJECT_ROOT)/include/CHIPProjectConfig.h)

# Architcture on which CHIP is being built.
CHIP_BUILD_ARCH = $(shell $(CHIP_ROOT)/third_party/nlbuild-autotools/repo/third_party/autoconf/config.guess | sed -e 's/[[:digit:].]*$$//g')

# ==================================================
# Compilation flags specific to building CHIP
# ==================================================

CHIP_DEFINES +=                                                                                                                    \
    MBEDTLS_CONFIG_FILE=\<$(CHIP_ROOT)/third_party/openthread/repo/third_party/mbedtls/mbedtls-config.h\>                          \
    MBEDTLS_USER_CONFIG_FILE=\<$(CHIP_ROOT)/third_party/openthread/repo/examples/platforms/k32w/k32w061/k32w061-mbedtls-config.h\> \
    MBEDTLS_THREADING_C=1                                                                                                          \
    MBEDTLS_THREADING_ALT=1                                                                                                        \
    MBEDTLS_X509_CSR_WRITE_C                                                                                                       \
    MBEDTLS_X509_CREATE_C                                                                                                          \
    MBEDTLS_PK_WRITE_C                                                                                                             \
    MBEDTLS_OID_C                                                                                                                  \
    MBEDTLS_PEM_WRITE_C                                                                                                            \
    MBEDTLS_BASE64_C                                                                                                               \
    MBEDTLS_SSL_COOKIE_C                                                                                                           \
    MBEDTLS_HKDF_C                                                                                                                 \
    MBEDTLS_SSL_SRV_C                                                                                                              \
    MBEDTLS_ERROR_C

CHIP_DEFINE_FLAGS = $(foreach def,$(CHIP_DEFINES),-D$(def))
CHIP_CPPFLAGS = $(STD_CFLAGS) $(CFLAGS) $(DEBUG_FLAGS) $(OPT_FLAGS) $(DEFINE_FLAGS) $(CHIP_DEFINE_FLAGS) $(INC_FLAGS)
CHIP_CXXFLAGS = $(STD_CXXFLAGS) $(CXXFLAGS)

# ==================================================
# CHIP configuration options
# ==================================================

CHIP_CONFIGURE_OPTIONS = \
    -C AR="$(AR)" AS="$(AS)" CC="$(CCACHE) $(CC)" CXX="$(CCACHE) $(CXX)"                                                               \
    LD="$(LD)" OBJCOPY="$(OBJCOPY)" RANLIB="$(RANLIB)" INSTALL="$(INSTALL) $(INSTALLFLAGS)"                                            \
    CPPFLAGS="$(CHIP_CPPFLAGS) -imacros $(CHIP_ROOT)/third_party/openthread/repo/examples/platforms/k32w/k32w061/k32w061-sdk-config.h" \
    CXXFLAGS="$(CHIP_CXXFLAGS)"                                                                                                        \
    --prefix=$(CHIP_OUTPUT_DIR)                                                                                                        \
    --exec-prefix=$(CHIP_OUTPUT_DIR)                                                                                                   \
    --host=$(CHIP_HOST_ARCH)                                                                                                           \
    --build=$(CHIP_BUILD_ARCH)                                                                                                         \
    --with-target-style=embedded                                                                                                       \
    --with-device-layer=k32w                                                                                                           \
    --with-network-layer=all                                                                                                           \
    --with-target-network=lwip                                                                                                         \
    --with-lwip=internal                                                                                                               \
    --with-lwip-target=k32w                                                                                                            \
    --with-inet-endpoint="tcp udp"                                                                                                     \
    --with-openssl=no                                                                                                                  \
    --with-openthread=internal                                                                                                         \
    --with-logging-style=external                                                                                                      \
    --with-chip-project-includes=$(CHIP_PROJECT_CONFIG)                                                                                \
    --with-chip-system-project-includes=$(CHIP_PROJECT_CONFIG)                                                                         \
    --with-chip-inet-project-includes=$(CHIP_PROJECT_CONFIG)                                                                           \
    --with-chip-ble-project-includes=$(CHIP_PROJECT_CONFIG)                                                                            \
    --with-chip-warm-project-includes=$(CHIP_PROJECT_CONFIG)                                                                           \
    --with-chip-device-project-includes=$(CHIP_PROJECT_CONFIG)                                                                         \
    --disable-ipv4                                                                                                                     \
    --disable-tests                                                                                                                    \
    --disable-tools                                                                                                                    \
    --disable-docs                                                                                                                     \
    --disable-java                                                                                                                     \
    --disable-device-manager                                                                                                           \
    --with-crypto=mbedtls

# Enable / disable optimization.
ifeq ($(OPT),1)
CHIP_CONFIGURE_OPTIONS += --enable-optimization=yes
else
CHIP_CONFIGURE_OPTIONS += --enable-optimization=no
endif

ifeq ($(DEBUG),1)
CHIP_CONFIGURE_OPTIONS += --enable-debug
endif
# ==================================================
# Adjustments to standard build settings to
#   incorporate CHIP
# ==================================================

# Add CHIP-specific paths to the standard include directories.
STD_INC_DIRS +=                                                                                      \
    $(CHIP_OUTPUT_DIR)/include                                                                       \
    $(CHIP_OUTPUT_DIR)/src/include                                                                   \
    $(CHIP_OUTPUT_DIR)/third_party/openthread/include                                                \
    $(CHIP_ROOT)/third_party/lwip/repo/lwip/src/include                                              \
    $(CHIP_ROOT)/third_party/openthread/repo/third_party/nxp/K32W061DK6/middleware/mbedtls/port/ksdk \
    $(CHIP_ROOT)/src/lwip                                                                            \
    $(CHIP_ROOT)/src/lwip/k32w                                                                       \
    $(CHIP_ROOT)/src/lwip/freertos                                                                   \
    $(K32W061_SDK_ROOT)/CMSIS/Include                                                                \
    $(K32W061_SDK_ROOT)/devices/K32W061                                                              \
    $(K32W061_SDK_ROOT)/devices/K32W061/drivers                                                      \
    $(K32W061_SDK_ROOT)/devices/K32W061/utilities                                                    \
    $(K32W061_SDK_ROOT)/devices/K32W061/utilities/debug_console                                      \
    $(K32W061_SDK_ROOT)/devices/K32W061/utilities/str                                                \
    $(K32W061_SDK_ROOT)/middleware/wireless/framework/Common                                         \
    $(K32W061_SDK_ROOT)/middleware/wireless/framework/Lists                                          \
    $(K32W061_SDK_ROOT)/middleware/wireless/framework/PDM/Include                                    \
    $(K32W061_SDK_ROOT)/middleware/wireless/framework/MemManager/Interface                           \
    $(CHIP_ROOT)/third_party/openthread/repo/examples/platforms

# Add the location of CHIP libraries to application link action.
STD_LDFLAGS += -L$(CHIP_OUTPUT_DIR)/lib

# Add CHIP libraries to standard libraries list.
STD_LIBS +=       \
    -lDeviceLayer \
    -lCHIP        \
    -lInetLayer   \
    -lSystemLayer \
    -llwip        \
    -lmbedtls

# Add the appropriate CHIP target as a prerequisite to all application
# compilation targets to ensure that CHIP gets built and its header
# files installed prior to compiling any dependent source files.
STD_COMPILE_PREREQUISITES += install-chip

# Add the CHIP libraries as prerequisites for linking the application.
STD_LINK_PREREQUISITES +=                   \
    $(CHIP_OUTPUT_DIR)/lib/libDeviceLayer.a \
    $(CHIP_OUTPUT_DIR)/lib/libCHIP.a        \
    $(CHIP_OUTPUT_DIR)/lib/libInetLayer.a   \
    $(CHIP_OUTPUT_DIR)/lib/libSystemLayer.a \
    $(CHIP_OUTPUT_DIR)/lib/liblwip.a        \
    $(CHIP_OUTPUT_DIR)/lib/libmbedtls.a

# ==================================================
# Late-bound build rules for CHIP
# ==================================================

# Add CHIPBuildRules to the list of late-bound build rules that
# will be evaluated when GenerateBuildRules is called.
LATE_BOUND_RULES += CHIPBuildRules

# Rules for configuring, building and installing CHIP.
define CHIPBuildRules

.PHONY : config-chip .check-config-chip build-chip install-chip clean-chip

.check-config-chip : | $(CHIP_OUTPUT_DIR)
	$(NO_ECHO)echo $(CHIP_ROOT)/configure $(CHIP_CONFIGURE_OPTIONS) > $(CHIP_OUTPUT_DIR)/config.args.tmp; \
	(test -r $(CHIP_OUTPUT_DIR)/config.args && cmp -s $(CHIP_OUTPUT_DIR)/config.args.tmp $(CHIP_OUTPUT_DIR)/config.args) || \
	    mv $(CHIP_OUTPUT_DIR)/config.args.tmp $(CHIP_OUTPUT_DIR)/config.args; \
	 rm -f $(CHIP_OUTPUT_DIR)/config.args.tmp;

$(CHIP_OUTPUT_DIR)/config.args : .check-config-chip
	@: # Null action required to work around make's crazy timestamp caching behavior.

$(CHIP_ROOT)/configure : $(CHIP_ROOT)/configure.ac
	@echo "$(HDR_PREFIX)BOOTSTRAP CHIP..."
	$(NO_ECHO)(cd $(CHIP_ROOT) && ./bootstrap)

$(CHIP_OUTPUT_DIR)/config.status : $(CHIP_ROOT)/configure $(CHIP_OUTPUT_DIR)/config.args
	@echo "$(HDR_PREFIX)CONFIGURE CHIP..."
	$(NO_ECHO)(cd $(CHIP_OUTPUT_DIR) && $(CHIP_ROOT)/configure $(CHIP_CONFIGURE_OPTIONS))

config-chip : $(CHIP_OUTPUT_DIR)/config.status | $(OPENTHREAD_PREREQUISITE)

build-chip : config-chip
	@echo "$(HDR_PREFIX)BUILD CHIP..."
	$(NO_ECHO)MAKEFLAGS= make -C $(CHIP_OUTPUT_DIR) --no-print-directory all V=$(VERBOSE)

install-chip : | build-chip
	@echo "$(HDR_PREFIX)INSTALL CHIP..."
	$(NO_ECHO)MAKEFLAGS= make -C $(CHIP_OUTPUT_DIR) --no-print-directory install V=$(VERBOSE)

clean-chip:
	@echo "$(HDR_PREFIX)RM $(CHIP_OUTPUT_DIR)"
	$(NO_ECHO)rm -rf $(CHIP_OUTPUT_DIR)

$(CHIP_OUTPUT_DIR) :
	@echo "$(HDR_PREFIX)MKDIR $$@"
	$(NO_ECHO)mkdir -p "$$@"

endef
# ==================================================
# CHIP-specific help definitions
# ==================================================

define TargetHelp +=


  config-chip          Run the CHIP configure script.

  build-chip           Build the CHIP libraries.

  install-chip         Install CHIP libraries and headers in
                        build output directory for use by application.

  clean-chip           Clean all build outputs produced by the CHIP
                        build process.
endef
