| # Copyright (c) 2021 Project CHIP Authors |
| # Copyright 2023 NXP |
| # |
| # 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. |
| |
| import("//build_overrides/build.gni") |
| import("//build_overrides/chip.gni") |
| import("//build_overrides/nxp_sdk.gni") |
| import("//build_overrides/openthread.gni") |
| import("${chip_root}/src/platform/device.gni") |
| |
| #allows to get common NXP SDK gn options |
| import("${nxp_sdk_build_root}/nxp_sdk.gni") |
| |
| # Allows to get various RT gn options |
| import("${nxp_sdk_build_root}/${nxp_sdk_name}/rt_sdk.gni") |
| |
| import("${chip_root}/src/platform/nxp/${nxp_platform}/args.gni") |
| import( |
| "${nxp_sdk_build_root}/${nxp_sdk_name}/${rt_platform}/${rt_platform}.gni") |
| import("${nxp_sdk_build_root}/${nxp_sdk_name}/nxp_executable.gni") |
| |
| assert(current_os == "freertos") |
| assert(target_os == "freertos") |
| assert(nxp_platform == "rt/rw61x") |
| |
| declare_args() { |
| # Allows to start the tcp download test app |
| tcp_download = false |
| |
| # Allows to start the wifi connect test app |
| wifi_connect = false |
| |
| # The 2 params below are used only if tcp_download or wifi_connect are true, otherwise they're unused. |
| wifi_ssid = "" |
| wifi_password = "" |
| |
| # Setup discriminator as argument |
| setup_discriminator = 3840 |
| } |
| |
| example_platform_dir = "${chip_root}/examples/platform/nxp/${nxp_platform}" |
| common_example_dir = "${chip_root}/examples/platform/nxp/common" |
| |
| if (tcp_download == true && wifi_connect == true) { |
| assert("Cannot enable tcp_download and wifi_connect at the same time!") |
| } |
| |
| # Use NXP custom zap files for laundry-washer device-type |
| app_common_folder = "laundry-washer-app/nxp/zap" |
| |
| # Create here the SDK instance. |
| # Particular sources/defines/includes could be added/changed depending on the target application. |
| rt_sdk("sdk") { |
| defines = [] |
| |
| # To be moved, temporary mbedtls config fix to build app with factory data |
| if (chip_enable_secure_dac_private_key_storage == 1) { |
| defines += [ |
| "MBEDTLS_NIST_KW_C", |
| "MBEDTLS_PSA_CRYPTO_CLIENT", |
| ] |
| } |
| |
| cflags = [] |
| public_deps = [] |
| public_configs = [] |
| sources = [] |
| include_dirs = [] |
| |
| # Indicate paths to default board files |
| include_dirs += [ "${example_platform_dir}/board/" ] |
| sources += [ "${example_platform_dir}/board/pin_mux.c" ] |
| sources += [ "${example_platform_dir}/board/hardware_init.c" ] |
| sources += [ "${example_platform_dir}/board/clock_config.c" ] |
| sources += [ "${example_platform_dir}/board/board.c" ] |
| sources += [ "${example_platform_dir}/board/peripherals.c" ] |
| |
| # Indicate the path to CHIPProjectConfig.h |
| include_dirs += [ "include/config" ] |
| |
| # Indicate the default path to FreeRTOSConfig.h |
| include_dirs += [ "${example_platform_dir}/app/project_include/freeRTOS" ] |
| |
| # Indicate the default path to OpenThreadConfig.h |
| include_dirs += [ "${example_platform_dir}/app/project_include/openthread" ] |
| |
| # For matter with BR feature, increase FreeRTOS heap size |
| if (chip_enable_wifi && chip_enable_openthread) { |
| defines += [ "configTOTAL_HEAP_SIZE=(size_t)(160 * 1024)" ] |
| } |
| |
| defines += [ |
| "CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR=${setup_discriminator}", |
| ] |
| } |
| |
| # Create the SDK driver instance. |
| # Particular sources/defines/includes could be added to add other drivers not available in the default sdk driver template |
| rw61x_sdk_drivers("sdk_driver") { |
| } |
| |
| rt_executable("laundry-washer") { |
| output_name = "chip-rw61x-laundry-washer-example" |
| |
| defines = [ |
| "CONFIG_RENDEZVOUS_MODE=7", |
| "CONFIG_APP_FREERTOS_OS=1", |
| ] |
| |
| if (chip_enable_openthread) { |
| defines += [ "CONFIG_NET_L2_OPENTHREAD=1" ] |
| } |
| |
| include_dirs = [ |
| "../../common/main/include", |
| "../../common/main", |
| "${chip_root}/examples/all-clusters-app/all-clusters-common/include", |
| "${chip_root}/examples/providers/", |
| ] |
| |
| sources = [ |
| "${chip_root}/examples/all-clusters-app/all-clusters-common/src/binding-handler.cpp", |
| "${chip_root}/examples/providers/DeviceInfoProviderImpl.cpp", |
| "../../common/main/AppTask.cpp", |
| "../../common/main/DeviceCallbacks.cpp", |
| "../../common/main/ZclCallbacks.cpp", |
| "../../common/main/include/AppEvent.h", |
| "../../common/main/include/AppTask.h", |
| "../../common/main/include/DeviceCallbacks.h", |
| "../../common/main/main.cpp", |
| ] |
| |
| if (chip_enable_secure_dac_private_key_storage == 1) { |
| sources += [ |
| "${example_platform_dir}/factory_data/source/AppFactoryDataExample.cpp", |
| ] |
| } else { |
| sources += [ |
| "${common_example_dir}/factory_data/source/AppFactoryDataDefaultImpl.cpp", |
| ] |
| } |
| |
| # App common files |
| include_dirs += [ |
| "${common_example_dir}/icd/include", |
| "${common_example_dir}/matter_button/include", |
| "${common_example_dir}/matter_cli/include", |
| "${common_example_dir}/device_manager/include", |
| "${common_example_dir}/device_callbacks/include", |
| "${common_example_dir}/app_task/include", |
| "${common_example_dir}/factory_data/include", |
| ] |
| |
| sources += [ |
| "${common_example_dir}/app_task/source/AppTaskBase.cpp", |
| "${common_example_dir}/app_task/source/AppTaskFreeRTOS.cpp", |
| "${common_example_dir}/device_callbacks/source/CommonDeviceCallbacks.cpp", |
| "${common_example_dir}/device_manager/source/CHIPDeviceManager.cpp", |
| "${common_example_dir}/icd/source/ICDUtil.cpp", |
| "${common_example_dir}/matter_button/source/AppMatterButtonEmpty.cpp", |
| "${common_example_dir}/matter_cli/source/AppMatterCli.cpp", |
| ] |
| |
| deps = [ "${chip_root}/examples/${app_common_folder}" ] |
| |
| sources += [ |
| "${chip_root}/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp", |
| "${chip_root}/examples/all-clusters-app/all-clusters-common/src/laundry-washer-controls-delegate-impl.cpp", |
| "${chip_root}/examples/all-clusters-app/all-clusters-common/src/laundry-washer-mode.cpp", |
| "${chip_root}/examples/all-clusters-app/all-clusters-common/src/smco-stub.cpp", |
| "${chip_root}/examples/all-clusters-app/all-clusters-common/src/static-supported-modes-manager.cpp", |
| "${chip_root}/examples/all-clusters-app/all-clusters-common/src/static-supported-temperature-levels.cpp", |
| "../../common/main/operational-state-delegate-impl.cpp", |
| ] |
| |
| if (chip_enable_matter_cli) { |
| defines += [ "ENABLE_CHIP_SHELL" ] |
| deps += [ |
| "${chip_root}/examples/shell/shell_common:shell_common", |
| "${chip_root}/src/lib/shell:shell", |
| ] |
| } |
| |
| if (chip_enable_ota_requestor) { |
| include_dirs += [ "${common_example_dir}/ota_requestor/include" ] |
| sources += [ |
| "${common_example_dir}/ota_requestor/source/OTARequestorInitiator.cpp", |
| "${common_example_dir}/ota_requestor/source/OTARequestorInitiatorCommon.cpp", |
| ] |
| } |
| |
| if (wifi_connect) { |
| defines += [ |
| "WIFI_CONNECT_TASK=1", |
| "WIFI_CONNECT=1", |
| ] |
| |
| if (!chip_enable_matter_cli) { |
| assert(wifi_ssid != "" && wifi_password != "", |
| "WiFi SSID and password must be specified at build time!") |
| } |
| |
| if (wifi_ssid != "") { |
| defines += [ "WIFI_SSID=\"${wifi_ssid}\"" ] |
| } |
| |
| if (wifi_password != "") { |
| defines += [ "WIFI_PASSWORD=\"${wifi_password}\"" ] |
| } |
| |
| include_dirs += [ "${common_example_dir}/wifi_connect/include" ] |
| sources += [ "${common_example_dir}/wifi_connect/source/WifiConnect.cpp" ] |
| } |
| |
| if (tcp_download) { |
| defines += [ "CONFIG_CHIP_TCP_DOWNLOAD=1" ] |
| defines += [ |
| "WIFI_CONNECT=1", |
| "WIFI_SSID=\"${wifi_ssid}\"", |
| "WIFI_PASSWORD=\"${wifi_password}\"", |
| ] |
| |
| include_dirs += [ "${common_example_dir}/tcp_download_test/include" ] |
| sources += |
| [ "${common_example_dir}/tcp_download_test/source/TcpDownload.cpp" ] |
| } |
| |
| # In case a dedicated assert function needs to be supported the flag sdk_fsl_assert_support should be set to false |
| # The would add to the build a dedicated application assert implementation. |
| if (!sdk_fsl_assert_support) { |
| sources += [ "${common_example_dir}/app_assert/source/AppAssert.cpp" ] |
| } |
| |
| cflags = [ "-Wconversion" ] |
| |
| ldscript = "${example_platform_dir}/app/ldscripts/RW610_flash.ld" |
| |
| inputs = [ ldscript ] |
| |
| ldflags = [ |
| "-T" + rebase_path(ldscript, root_build_dir), |
| "-fno-common", |
| "-Wl,--defsym=__stack_size__=2048", |
| "-ffreestanding", |
| "-fno-builtin", |
| "-mapcs", |
| "-u qspiflash_config", |
| "-u image_vector_table", |
| "-u boot_data", |
| "-u dcd_data", |
| "-Wl,-print-memory-usage", |
| "-Wl,--no-warn-rwx-segments", |
| ] |
| |
| if (chip_enable_ota_requestor) { |
| if (no_mcuboot) { |
| # If "no_mcuboot" is set to true, the application will be linked at the base of the flash. |
| print( |
| "Warning : The OTA Requestor is enabled without MCUBoot. This will prevent the application from applying software updates.") |
| } else { |
| # we need to reserve enough space for the bootloader (MCUBoot) |
| # MCUBoot requires 0x20000 Bytes to be reserved at the base of the flash |
| # Consequently, some sections will need to be shifted |
| ldflags += [ "-Wl,--defsym=__m_mcuboot_size__=0x20000" ] |
| } |
| } |
| |
| output_dir = root_out_dir |
| } |
| |
| group("rw61x") { |
| deps = [ ":laundry-washer" ] |
| } |
| |
| group("default") { |
| deps = [ ":rw61x" ] |
| } |