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

#
#   @file
#         Makefile for building the CHIP K32W Lock Example Application.
#

PROJECT_ROOT := $(realpath .)

CHIP_ROOT ?= $(realpath $(PROJECT_ROOT)/third_party/connectedhomeip)
BUILD_SUPPORT_DIR = $(CHIP_ROOT)/config/k32w

include $(BUILD_SUPPORT_DIR)/k32w061-app.mk
include $(BUILD_SUPPORT_DIR)/k32w061-chip.mk

APP = chip-k32w061-lock-example

SRCS = \
    $(PROJECT_ROOT)/main/main.cpp                                                                         \
    $(PROJECT_ROOT)/main/AppTask.cpp                                                                      \
    $(PROJECT_ROOT)/main/BoltLockManager.cpp                                                              \
    $(PROJECT_ROOT)/main/LEDWidget.cpp                                                                    \
    $(PROJECT_ROOT)/main/ZclCallbacks.cpp                                                                 \
    $(PROJECT_ROOT)/main/support/FreeRtosMbedtlsMutex.c                                                   \
    ${CHIP_ROOT}/src/app/util/af-event.cpp                                                                \
    $(CHIP_ROOT)/src/app/util/attribute-size.c                                                            \
    $(CHIP_ROOT)/src/app/util/attribute-storage.c                                                         \
    $(CHIP_ROOT)/src/app/util/attribute-table.c                                                           \
    $(CHIP_ROOT)/src/app/util/chip-response.cpp                                                           \
    $(CHIP_ROOT)/src/app/util/client-api.c                                                                \
    $(CHIP_ROOT)/src/app/util/ember-print.cpp                                                             \
    $(CHIP_ROOT)/src/app/util/message.c                                                                   \
    $(CHIP_ROOT)/src/app/util/process-cluster-message.c                                                   \
    $(CHIP_ROOT)/src/app/util/process-global-message.c                                                    \
    $(CHIP_ROOT)/src/app/util/util.c                                                                      \
    $(CHIP_ROOT)/src/app/clusters/on-off-server/on-off.c                                                  \
    $(CHIP_ROOT)/examples/common/chip-app-server/DataModelHandler.cpp                                     \
    $(CHIP_ROOT)/examples/common/chip-app-server/Server.cpp                                               \
    $(CHIP_ROOT)/examples/lock-app/lock-common/gen/call-command-handler.c                                 \
    $(CHIP_ROOT)/examples/lock-app/lock-common/gen/callback-stub.c                                        \
    $(CHIP_ROOT)/examples/lock-app/lock-common/gen/znet-bookkeeping.c                                     \
    $(K32W061_SDK_ROOT)/rtos/amazon-freertos/lib/FreeRTOS/tasks.c                                         \
    $(K32W061_SDK_ROOT)/rtos/amazon-freertos/lib/FreeRTOS/portable/MemMang/heap_3.c                       \
    $(K32W061_SDK_ROOT)/rtos/amazon-freertos/lib/FreeRTOS/list.c                                          \
    $(K32W061_SDK_ROOT)/rtos/amazon-freertos/lib/FreeRTOS/portable/GCC/ARM_CM3/port.c                     \
    $(K32W061_SDK_ROOT)/rtos/amazon-freertos/lib/FreeRTOS/queue.c                                         \
    $(K32W061_SDK_ROOT)/rtos/amazon-freertos/lib/FreeRTOS/timers.c                                        \
    $(K32W061_SDK_ROOT)/rtos/amazon-freertos/lib/FreeRTOS/event_groups.c                                  \
    $(K32W061_SDK_ROOT)/middleware/wireless/framework/PDM/pdm_port.c                                      \
    $(K32W061_SDK_ROOT)/middleware/wireless/framework/FunctionLib/FunctionLib.c                           \
    $(K32W061_SDK_ROOT)/middleware/wireless/framework/Flash/Internal/Flash_Adapter.c                      \
    $(K32W061_SDK_ROOT)/middleware/wireless/framework/Panic/Source/Panic.c                                \
    $(K32W061_SDK_ROOT)/middleware/wireless/framework/OSAbstraction/Source/fsl_os_abstraction_free_rtos.c \
    $(K32W061_SDK_ROOT)/middleware/wireless/framework/Reset/Reset.c                                       \
    $(K32W061_SDK_ROOT)/middleware/wireless/framework/LED/Source/LED.c                                    \
    $(K32W061_SDK_ROOT)/middleware/wireless/framework/Keyboard/Source/Keyboard.c                          \
    $(K32W061_SDK_ROOT)/middleware/wireless/framework/GPIO/GPIO_Adapter.c                                 \
    $(K32W061_SDK_ROOT)/middleware/wireless/framework/TimersManager/Source/TimersManager.c                \
    $(K32W061_SDK_ROOT)/middleware/wireless/framework/TimersManager/Source/TMR_Adapter.c                  \
    $(K32W061_SDK_ROOT)/boards/k32w061dk6/wireless_examples/openthread/reed/bm/board_utility.c            \
    $(K32W061_SDK_ROOT)/boards/k32w061dk6/wireless_examples/openthread/reed/bm/board.c                    \
    $(K32W061_SDK_ROOT)/boards/k32w061dk6/wireless_examples/openthread/reed/bm/hardware_init.c            \
    $(K32W061_SDK_ROOT)/devices/K32W061/drivers/fsl_common.c                                              \
    $(K32W061_SDK_ROOT)/devices/K32W061/drivers/fsl_inputmux.c                                            \
    $(K32W061_SDK_ROOT)/devices/K32W061/drivers/fsl_pint.c                                                \
    $(K32W061_SDK_ROOT)/devices/K32W061/drivers/fsl_reset.c

INC_DIRS = \
    $(K32W061_SDK_ROOT)/rtos/amazon-freertos/lib/include                                                  \
    $(K32W061_SDK_ROOT)/rtos/amazon-freertos/lib/include/private                                          \
    $(K32W061_SDK_ROOT)/rtos/amazon-freertos/lib/FreeRTOS/portable/GCC/ARM_CM3                            \
    $(K32W061_SDK_ROOT)/rtos/amazon-freertos/lib/third_party/unity/src                                    \
    $(K32W061_SDK_ROOT)/rtos/amazon-freertos/lib/include/                                                 \
    $(K32W061_SDK_ROOT)/middleware/wireless/framework/OSAbstraction/Interface                             \
    $(K32W061_SDK_ROOT)/middleware/wireless/framework/FunctionLib/                                        \
    $(K32W061_SDK_ROOT)/middleware/wireless/framework/Flash/Internal/                                     \
    $(K32W061_SDK_ROOT)/middleware/wireless/framework/Panic/Interface/                                    \
    $(K32W061_SDK_ROOT)/middleware/wireless/framework/LED/Interface/                                      \
    $(K32W061_SDK_ROOT)/middleware/wireless/framework/Keyboard/Interface/                                 \
    $(K32W061_SDK_ROOT)/middleware/wireless/framework/TimersManager/Interface/                            \
    $(K32W061_SDK_ROOT)/middleware/wireless/framework/RNG/Interface/                                      \
    $(K32W061_SDK_ROOT)/middleware/wireless/framework/GPIO/                                               \
    $(K32W061_SDK_ROOT)/middleware/wireless/framework/XCVR/DK6/                                           \
    $(K32W061_SDK_ROOT)/boards/k32w061dk6/wireless_examples/openthread/reed/bm/                           \
    $(K32W061_SDK_ROOT)/devices/K32W061/drivers/                                                          \
    $(K32W061_SDK_ROOT)/components/serial_manager/                                                        \
    $(PROJECT_ROOT)                                                                                       \
    $(PROJECT_ROOT)/src                                                                                   \
    $(PROJECT_ROOT)/main                                                                                  \
    $(PROJECT_ROOT)/main/include                                                                          \
    $(CHIP_ROOT)/examples/lock-app/lock-common/                                                           \
    $(CHIP_ROOT)/examples/common/chip-app-server/include/                                                 \
    $(CHIP_ROOT)/src/include/                                                                             \
    $(CHIP_ROOT)/src/lib                                                                                  \
    $(CHIP_ROOT)/src/                                                                                     \
    $(CHIP_ROOT)/src/app/util                                                                             \
    $(CHIP_ROOT)/src/system                                                                               \
    $(CHIP_ROOT)/third_party/openthread/repo/src/core

LIBS = \
    -lopenthread-cli-ftd                                                                                  \
    -lopenthread-ftd                                                                                      \
    -lopenthread-k32w061_plat                                                                             \
    -lopenthread-k32w061_sdk                                                                              \
    $(K32W061_SDK_ROOT)/middleware/wireless/ieee-802.15.4/lib/libMiniMac.a                                \
    $(K32W061_SDK_ROOT)/middleware/wireless/framework/XCVR/lib/libRadio.a                                 \
    $(K32W061_SDK_ROOT)/middleware/wireless/framework/PDM/Library/libPDM.a                                \

DEFINES = \
    CPU_K32W061HN                                                                                         \
    CPU_JN518X                                                                                            \
    CPU_JN518X_REV=2                                                                                      \
    JENNIC_CHIP_FAMILY_NAME=_JN518x                                                                       \
    SDK_DEBUGCONSOLE=0                                                                                    \
    USE_RTOS=1                                                                                            \
    FSL_RTOS_FREE_RTOS=1                                                                                  \
    gUartDebugConsole_d=0                                                                                 \
    gUsePdm_d=1                                                                                           \
    gLEDSupported_d                                                                                       \
    gKeyBoardSupported_d                                                                                  \
    gPdmNbSegments=64                                                                                     \
    osCustomStartup=1                                                                                     \
    OM15082=1                                                                                             \
    gKBD_KeysCount_c=3                                                                                    \
    gLEDsOnTargetBoardCnt_c=2                                                                             \
    gLED_InvertedMode_d=1                                                                                 \
    ENABLE_RAM_VECTOR_TABLE=1                                                                             \
    gTMR_Enabled_d=1                                                                                      \
    gTimestamp_Enabled_d=0                                                                                \
    gMainThreadStackSize_c=2048                                                                           \
    K32W_LOG_ENABLED=1                                                                                    \
    CHIP_ENABLE_OPENTHREAD=1

CFLAGS = \
    --specs=nano.specs

LDFLAGS = \
    --specs=nano.specs

ifdef DEVICE_FIRMWARE_REVISION
DEFINES += \
    CHIP_DEVICE_CONFIG_DEVICE_FIRMWARE_REVISION=\"$(DEVICE_FIRMWARE_REVISION)\"
endif

# A product's firmware usually comes with two build "flavors":
# 1) a "development" build which typically enables debugging artifacts along with logging,
# and disables security and optimizations and
# 2) a "release" build which targets end-user devices
# and disables debugging artifacts and logging, and enables security and optimizations.
#
# To facilitate supporting these two build flavors, the sample app source code supports
# the build configuration option BUILD_RELEASE. By default, BUILD_RELEASE is not defined
# and a development build is produced. If make is invoked with BUILD_RELEASE=1, then
# a "pseudo-release" build is produced.
#
# We say "pseudo-release" build because the sample app is never to be used as-is
# as the firmware for an end-user device. However, since real products may start off with
# the sample app source code, we show how the BUILD_RELEASE build configuration option
# can be used to produce two build flavors (development and release) of the firmware.
#
# IMPORTANT: By no means does the use of BUILD_RELEASE in the sample app cover all key aspects that
# one should be concerned with (e.g. security, performance) when targeting real world end-user
# devices. This is simply provided for guidance on how to support two build flavors.

ifdef BUILD_RELEASE
    DEFINES += BUILD_RELEASE=1
    # Disable Thread logging.
    CHIP_DEFINES += CHIP_CONFIG_LOG_LEVEL=OT_LOG_LEVEL_NONE
else
    DEFINES += BUILD_RELEASE=0
    # Increase Tread logging level to INFO.
    CHIP_DEFINES += CHIP_CONFIG_LOG_LEVEL=OT_LOG_LEVEL_DEBG
endif

CHIP_PROJECT_CONFIG = $(PROJECT_ROOT)/main/include/CHIPProjectConfig.h

OPENTHREAD_CONFIGURE_OPTIONS += \
    --enable-child-supervision \
    --enable-jam-detection

LINKER_SCRIPT = $(PROJECT_ROOT)/main/ldscripts/chip-k32w061-lock-example.ld

$(call GenerateBuildRules)
