blob: 0539af8bf6a1bae52ba001405aa3e76732199a59 [file] [log] [blame]
# Copyright (c) 2021-2024 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.
from builders.ameba import AmebaApp, AmebaBoard, AmebaBuilder
from builders.android import AndroidApp, AndroidBoard, AndroidBuilder, AndroidProfile
from builders.asr import ASRApp, ASRBoard, ASRBuilder
from builders.bouffalolab import BouffalolabApp, BouffalolabBoard, BouffalolabBuilder
from builders.cc32xx import cc32xxApp, cc32xxBuilder
from builders.cyw30739 import Cyw30739App, Cyw30739Board, Cyw30739Builder
from builders.efr32 import Efr32App, Efr32Board, Efr32Builder
from builders.esp32 import Esp32App, Esp32Board, Esp32Builder
from builders.genio import GenioApp, GenioBuilder
from builders.host import HostApp, HostBoard, HostBuilder, HostCryptoLibrary, HostFuzzingType
from builders.imx import IMXApp, IMXBuilder
from builders.infineon import InfineonApp, InfineonBoard, InfineonBuilder
from builders.mbed import MbedApp, MbedBoard, MbedBuilder, MbedProfile
from builders.mw320 import MW320App, MW320Builder
from builders.nrf import NrfApp, NrfBoard, NrfConnectBuilder
from builders.nuttx import NuttXApp, NuttXBoard, NuttXBuilder
from builders.nxp import NxpApp, NxpBoard, NxpBoardVariant, NxpBuilder, NxpBuildSystem, NxpOsUsed
from builders.openiotsdk import OpenIotSdkApp, OpenIotSdkBuilder, OpenIotSdkCryptoBackend
from builders.qpg import QpgApp, QpgBoard, QpgBuilder
from builders.stm32 import stm32App, stm32Board, stm32Builder
from builders.telink import TelinkApp, TelinkBoard, TelinkBuilder
from builders.ti import TIApp, TIBoard, TIBuilder
from builders.tizen import TizenApp, TizenBoard, TizenBuilder
from .target import BuildTarget, TargetPart
def BuildHostTestRunnerTarget():
target = BuildTarget(HostBoard.NATIVE.PlatformName(), HostBuilder)
target.AppendFixedTargets([
TargetPart(HostBoard.NATIVE.BoardName(), board=HostBoard.NATIVE),
])
target.AppendFixedTargets([
TargetPart('efr32-test-runner', app=HostApp.EFR32_TEST_RUNNER)
])
target.AppendModifier('clang', use_clang=True)
return target
def BuildHostFakeTarget():
target = BuildTarget(HostBoard.NATIVE.PlatformName(), HostBuilder)
target.AppendFixedTargets([
TargetPart('fake', board=HostBoard.FAKE),
])
target.AppendFixedTargets([
TargetPart('tests', app=HostApp.TESTS),
])
target.AppendModifier(
"mbedtls", crypto_library=HostCryptoLibrary.MBEDTLS).ExceptIfRe('-boringssl')
target.AppendModifier(
"boringssl", crypto_library=HostCryptoLibrary.BORINGSSL).ExceptIfRe('-mbedtls')
target.AppendModifier("asan", use_asan=True).ExceptIfRe("-tsan")
target.AppendModifier("tsan", use_tsan=True).ExceptIfRe("-asan")
target.AppendModifier("ubsan", use_ubsan=True)
target.AppendModifier("libfuzzer", fuzzing_type=HostFuzzingType.LIB_FUZZER).OnlyIfRe(
"-clang").ExceptIfRe('-ossfuzz')
target.AppendModifier("ossfuzz", fuzzing_type=HostFuzzingType.OSS_FUZZ).OnlyIfRe(
"-clang").ExceptIfRe('-libfuzzer')
target.AppendModifier("pw-fuzztest", fuzzing_type=HostFuzzingType.PW_FUZZTEST).OnlyIfRe(
"-clang").ExceptIfRe('-(libfuzzer|ossfuzz|asan)')
target.AppendModifier('coverage', use_coverage=True).OnlyIfRe(
'-(chip-tool|all-clusters)')
target.AppendModifier('dmalloc', use_dmalloc=True)
target.AppendModifier('clang', use_clang=True)
return target
def BuildHostTarget():
native_board_name = HostBoard.NATIVE.BoardName()
cross_compile = (HostBoard.NATIVE.PlatformName() == 'linux') and (
native_board_name != HostBoard.ARM64.BoardName())
target = BuildTarget(HostBoard.NATIVE.PlatformName(), HostBuilder)
board_parts = [
TargetPart(native_board_name, board=HostBoard.NATIVE),
]
if cross_compile:
board_parts.append(TargetPart(
'arm64', board=HostBoard.ARM64).OnlyIfRe('-(clang|nodeps)'))
target.AppendFixedTargets(board_parts)
# Add all the applications
app_parts = [
TargetPart('rpc-console',
app=HostApp.RPC_CONSOLE).OnlyIfRe(f'{native_board_name}-'),
TargetPart('all-clusters', app=HostApp.ALL_CLUSTERS),
TargetPart('all-clusters-minimal', app=HostApp.ALL_CLUSTERS_MINIMAL),
TargetPart('chip-tool', app=HostApp.CHIP_TOOL),
TargetPart('thermostat', app=HostApp.THERMOSTAT),
# TODO: controllers depending on a datamodel is odd. For now fix compile dependencies on ember.
TargetPart('java-matter-controller', app=HostApp.JAVA_MATTER_CONTROLLER, data_model_interface="disabled"),
TargetPart('kotlin-matter-controller', app=HostApp.KOTLIN_MATTER_CONTROLLER, data_model_interface="disabled"),
TargetPart('minmdns', app=HostApp.MIN_MDNS),
TargetPart('light', app=HostApp.LIGHT),
TargetPart('light-data-model-no-unique-id', app=HostApp.LIGHT_DATA_MODEL_NO_UNIQUE_ID),
TargetPart('lock', app=HostApp.LOCK),
TargetPart('shell', app=HostApp.SHELL),
TargetPart('ota-provider', app=HostApp.OTA_PROVIDER, enable_ble=False),
TargetPart('ota-requestor', app=HostApp.OTA_REQUESTOR,
enable_ble=False),
TargetPart('simulated-app1', app=HostApp.SIMULATED_APP1,
enable_ble=False),
TargetPart('simulated-app2', app=HostApp.SIMULATED_APP2,
enable_ble=False),
TargetPart('python-bindings', app=HostApp.PYTHON_BINDINGS),
TargetPart('tv-app', app=HostApp.TV_APP),
TargetPart('tv-casting-app', app=HostApp.TV_CASTING),
TargetPart('bridge', app=HostApp.BRIDGE),
TargetPart('fabric-admin', app=HostApp.FABRIC_ADMIN).OnlyIfRe("-rpc"),
TargetPart('fabric-bridge', app=HostApp.FABRIC_BRIDGE).OnlyIfRe("-rpc"),
TargetPart('tests', app=HostApp.TESTS),
TargetPart('chip-cert', app=HostApp.CERT_TOOL),
TargetPart('address-resolve-tool', app=HostApp.ADDRESS_RESOLVE),
TargetPart('contact-sensor', app=HostApp.CONTACT_SENSOR),
TargetPart('dishwasher', app=HostApp.DISHWASHER),
TargetPart('microwave-oven', app=HostApp.MICROWAVE_OVEN),
TargetPart('refrigerator', app=HostApp.REFRIGERATOR),
TargetPart('rvc', app=HostApp.RVC),
TargetPart('air-purifier', app=HostApp.AIR_PURIFIER),
TargetPart('lit-icd', app=HostApp.LIT_ICD),
TargetPart('air-quality-sensor', app=HostApp.AIR_QUALITY_SENSOR),
TargetPart('network-manager', app=HostApp.NETWORK_MANAGER),
TargetPart('energy-management', app=HostApp.ENERGY_MANAGEMENT),
TargetPart('water-leak-detector', app=HostApp.WATER_LEAK_DETECTOR),
]
if (HostBoard.NATIVE.PlatformName() == 'darwin'):
app_parts.append(TargetPart('darwin-framework-tool',
app=HostApp.CHIP_TOOL_DARWIN))
target.AppendFixedTargets(app_parts)
target.AppendModifier('nodeps', enable_ble=False, enable_wifi=False, enable_thread=False,
crypto_library=HostCryptoLibrary.MBEDTLS, use_clang=True).ExceptIfRe('-(clang|noble|boringssl|mbedtls)')
target.AppendModifier('nlfaultinject', use_nl_fault_injection=True)
target.AppendModifier('platform-mdns', use_platform_mdns=True)
target.AppendModifier('minmdns-verbose', minmdns_high_verbosity=True)
target.AppendModifier('libnl', minmdns_address_policy="libnl")
target.AppendModifier(
'same-event-loop', separate_event_loop=False).OnlyIfRe('-(chip-tool|darwin-framework-tool)')
target.AppendModifier(
'no-interactive', interactive_mode=False).OnlyIfRe('-chip-tool')
target.AppendModifier("ipv6only", enable_ipv4=False)
target.AppendModifier("no-ble", enable_ble=False)
target.AppendModifier("no-wifi", enable_wifi=False)
target.AppendModifier("no-thread", enable_thread=False)
target.AppendModifier('no-shell', disable_shell=True)
target.AppendModifier(
"mbedtls", crypto_library=HostCryptoLibrary.MBEDTLS).ExceptIfRe('-boringssl')
target.AppendModifier(
"boringssl", crypto_library=HostCryptoLibrary.BORINGSSL).ExceptIfRe('-mbedtls')
target.AppendModifier("asan", use_asan=True).ExceptIfRe("-tsan")
target.AppendModifier("tsan", use_tsan=True).ExceptIfRe("-asan")
target.AppendModifier("ubsan", use_ubsan=True)
target.AppendModifier("libfuzzer", fuzzing_type=HostFuzzingType.LIB_FUZZER).OnlyIfRe(
"-clang").ExceptIfRe('-ossfuzz')
target.AppendModifier("ossfuzz", fuzzing_type=HostFuzzingType.OSS_FUZZ).OnlyIfRe(
"-clang").ExceptIfRe('-libfuzzer')
target.AppendModifier("pw-fuzztest", fuzzing_type=HostFuzzingType.PW_FUZZTEST).OnlyIfRe(
"-clang").ExceptIfRe('-(libfuzzer|ossfuzz|asan)')
target.AppendModifier('coverage', use_coverage=True).OnlyIfRe(
'-(chip-tool|all-clusters|tests)')
target.AppendModifier('dmalloc', use_dmalloc=True)
target.AppendModifier('clang', use_clang=True)
target.AppendModifier('test', extra_tests=True)
target.AppendModifier('rpc', enable_rpcs=True)
target.AppendModifier('with-ui', imgui_ui=True)
target.AppendModifier('evse-test-event', enable_test_event_triggers=['EVSE']).OnlyIfRe('-energy-management')
target.AppendModifier('enable-dnssd-tests', enable_dnssd_tests=True).OnlyIfRe('-tests')
target.AppendModifier('disable-dnssd-tests', enable_dnssd_tests=False).OnlyIfRe('-tests')
target.AppendModifier('chip-casting-simplified', chip_casting_simplified=True).OnlyIfRe('-tv-casting-app')
target.AppendModifier('data-model-check', data_model_interface="check").ExceptIfRe('-data-model-(enabled|disabled)')
target.AppendModifier('data-model-disabled', data_model_interface="disabled").ExceptIfRe('-data-model-(check|enabled)')
target.AppendModifier('data-model-enabled', data_model_interface="enabled").ExceptIfRe('-data-model-(check|disabled)')
target.AppendModifier('check-failure-die', chip_data_model_check_die_on_failure=True).OnlyIfRe('-data-model-check')
return target
def BuildEsp32Target():
target = BuildTarget('esp32', Esp32Builder)
# boards
target.AppendFixedTargets([
TargetPart('m5stack', board=Esp32Board.M5Stack),
TargetPart('c3devkit', board=Esp32Board.C3DevKit),
TargetPart('devkitc', board=Esp32Board.DevKitC),
TargetPart('qemu', board=Esp32Board.QEMU).OnlyIfRe('-tests'),
])
# applications
target.AppendFixedTargets([
TargetPart('all-clusters', app=Esp32App.ALL_CLUSTERS),
TargetPart('all-clusters-minimal', app=Esp32App.ALL_CLUSTERS_MINIMAL),
TargetPart('energy-management', app=Esp32App.ENERGY_MANAGEMENT),
TargetPart('ota-provider', app=Esp32App.OTA_PROVIDER),
TargetPart('ota-requestor', app=Esp32App.OTA_REQUESTOR),
TargetPart('shell', app=Esp32App.SHELL),
TargetPart('light', app=Esp32App.LIGHT),
TargetPart('lock', app=Esp32App.LOCK),
TargetPart('bridge', app=Esp32App.BRIDGE),
TargetPart('temperature-measurement',
app=Esp32App.TEMPERATURE_MEASUREMENT),
TargetPart('ota-requestor', app=Esp32App.OTA_REQUESTOR),
TargetPart('tests', app=Esp32App.TESTS).OnlyIfRe('-qemu-'),
])
target.AppendModifier('rpc', enable_rpcs=True)
target.AppendModifier('ipv6only', enable_ipv4=False)
target.AppendModifier('tracing', enable_insights_trace=True).OnlyIfRe("light")
target.AppendModifier('data-model-disabled', data_model_interface="disabled").ExceptIfRe('-data-model-enabled')
target.AppendModifier('data-model-enabled', data_model_interface="enabled").ExceptIfRe('-data-model-disabled')
return target
def BuildEfr32Target():
target = BuildTarget('efr32', Efr32Builder)
# board
target.AppendFixedTargets([
TargetPart('brd2704b', board=Efr32Board.BRD2704B),
TargetPart('brd4316a', board=Efr32Board.BRD4316A),
TargetPart('brd4317a', board=Efr32Board.BRD4317A),
TargetPart('brd4318a', board=Efr32Board.BRD4318A),
TargetPart('brd4319a', board=Efr32Board.BRD4319A),
TargetPart('brd4186a', board=Efr32Board.BRD4186A),
TargetPart('brd4187a', board=Efr32Board.BRD4187A),
TargetPart('brd2601b', board=Efr32Board.BRD2601B),
TargetPart('brd4187c', board=Efr32Board.BRD4187C),
TargetPart('brd4186c', board=Efr32Board.BRD4186C),
TargetPart('brd2703a', board=Efr32Board.BRD2703A),
TargetPart('brd4338a', board=Efr32Board.BRD4338A, enable_wifi=True, enable_917_soc=True),
TargetPart('brd2605a', board=Efr32Board.BRD2605A, enable_wifi=True, enable_917_soc=True),
])
# apps
target.AppendFixedTargets([
TargetPart('window-covering', app=Efr32App.WINDOW_COVERING),
TargetPart('switch', app=Efr32App.SWITCH),
TargetPart('unit-test', app=Efr32App.UNIT_TEST),
TargetPart('light', app=Efr32App.LIGHT),
TargetPart('lock', app=Efr32App.LOCK),
TargetPart('thermostat', app=Efr32App.THERMOSTAT),
TargetPart('pump', app=Efr32App.PUMP),
TargetPart('air-quality-sensor-app', app=Efr32App.AIR_QUALITY_SENSOR)
])
target.AppendModifier('rpc', enable_rpcs=True)
target.AppendModifier('with-ota-requestor', enable_ota_requestor=True)
target.AppendModifier('icd', enable_icd=True)
target.AppendModifier('low-power', enable_low_power=True).OnlyIfRe('-icd')
target.AppendModifier('shell', chip_build_libshell=True)
target.AppendModifier('no-logging', chip_logging=False)
target.AppendModifier('openthread-mtd', chip_openthread_ftd=False)
target.AppendModifier('heap-monitoring',
enable_heap_monitoring=True)
target.AppendModifier('no-openthread-cli', enable_openthread_cli=False)
target.AppendModifier(
'show-qr-code', show_qr_code=True).ExceptIfRe('-low-power')
target.AppendModifier('wifi', enable_wifi=True)
target.AppendModifier('rs9116', enable_rs9116=True).OnlyIfRe('-wifi')
target.AppendModifier('wf200', enable_wf200=True).OnlyIfRe('-wifi')
target.AppendModifier('siwx917', enable_917_ncp=True).OnlyIfRe('-wifi')
target.AppendModifier('ipv4', enable_wifi_ipv4=True).OnlyIfRe('-wifi')
target.AppendModifier('additional-data-advertising',
enable_additional_data_advertising=True)
target.AppendModifier('use-ot-lib', enable_ot_lib=True).ExceptIfRe(
'-(wifi|use-ot-coap-lib)')
target.AppendModifier('use-ot-coap-lib', enable_ot_coap_lib=True).ExceptIfRe(
'-(wifi|use-ot-lib)')
target.AppendModifier('no-version', no_version=True)
target.AppendModifier('skip-rps-generation', use_rps_extension=False)
return target
def BuildNrfNativeTarget():
target = BuildTarget('nrf', NrfConnectBuilder)
target.AppendFixedTargets([
TargetPart('native-posix-64-tests',
board=NrfBoard.NATIVE_POSIX_64, app=NrfApp.UNIT_TESTS),
])
return target
def BuildNrfTarget():
target = BuildTarget('nrf', NrfConnectBuilder)
# board
target.AppendFixedTargets([
TargetPart('nrf5340dk', board=NrfBoard.NRF5340DK),
TargetPart('nrf52840dk', board=NrfBoard.NRF52840DK),
TargetPart('nrf52840dongle').OnlyIfRe('-(all-clusters|light)'),
])
# apps
target.AppendFixedTargets([
TargetPart('all-clusters', app=NrfApp.ALL_CLUSTERS),
TargetPart('all-clusters-minimal', app=NrfApp.ALL_CLUSTERS_MINIMAL),
TargetPart('lock', app=NrfApp.LOCK),
TargetPart('light', app=NrfApp.LIGHT),
TargetPart('light-switch', app=NrfApp.SWITCH),
TargetPart('shell', app=NrfApp.SHELL),
TargetPart('pump', app=NrfApp.PUMP),
TargetPart('pump-controller', app=NrfApp.PUMP_CONTROLLER),
TargetPart('window-covering', app=NrfApp.WINDOW_COVERING),
])
target.AppendModifier('rpc', enable_rpcs=True)
target.AppendModifier('data-model-disabled', use_data_model_interface=False).ExceptIfRe('-data-model-enabled')
target.AppendModifier('data-model-enabled', use_data_model_interface=True).ExceptIfRe('-data-model-disabled')
return target
def BuildNuttXTarget():
target = BuildTarget('nuttx', NuttXBuilder)
# Boards
target.AppendFixedTargets([
TargetPart('x64', board=NuttXBoard.SIM),
])
# Apps
target.AppendFixedTargets([
TargetPart('light', app=NuttXApp.LIGHT),
])
return target
def BuildAndroidTarget():
target = BuildTarget('android', AndroidBuilder)
# board
target.AppendFixedTargets([
TargetPart('arm', board=AndroidBoard.ARM),
TargetPart('arm64', board=AndroidBoard.ARM64),
TargetPart('x86', board=AndroidBoard.X86),
TargetPart('x64', board=AndroidBoard.X64),
TargetPart('androidstudio-arm',
board=AndroidBoard.AndroidStudio_ARM).OnlyIfRe('chip-tool'),
TargetPart('androidstudio-arm64',
board=AndroidBoard.AndroidStudio_ARM64).OnlyIfRe('chip-tool'),
TargetPart('androidstudio-x86',
board=AndroidBoard.AndroidStudio_X86).OnlyIfRe('chip-tool'),
TargetPart('androidstudio-x64',
board=AndroidBoard.AndroidStudio_X64).OnlyIfRe('chip-tool'),
])
# apps
target.AppendFixedTargets([
TargetPart('chip-tool', app=AndroidApp.CHIP_TOOL),
TargetPart('chip-test', app=AndroidApp.CHIP_TEST),
TargetPart('tv-server', app=AndroidApp.TV_SERVER),
TargetPart('tv-casting-app', app=AndroidApp.TV_CASTING_APP),
TargetPart('java-matter-controller',
app=AndroidApp.JAVA_MATTER_CONTROLLER),
TargetPart('kotlin-matter-controller',
app=AndroidApp.KOTLIN_MATTER_CONTROLLER),
TargetPart('virtual-device-app',
app=AndroidApp.VIRTUAL_DEVICE_APP),
])
# Modifiers
target.AppendModifier('no-debug', profile=AndroidProfile.RELEASE)
return target
def BuildMbedTarget():
target = BuildTarget('mbed', MbedBuilder)
# board
target.AppendFixedTargets([
TargetPart('CY8CPROTO_062_4343W', board=MbedBoard.CY8CPROTO_062_4343W),
])
# apps
target.AppendFixedTargets([
TargetPart('lock', app=MbedApp.LOCK),
TargetPart('light', app=MbedApp.LIGHT),
TargetPart('all-clusters', app=MbedApp.ALL_CLUSTERS),
TargetPart('all-clusters-minimal', app=MbedApp.ALL_CLUSTERS_MINIMAL),
TargetPart('pigweed', app=MbedApp.PIGWEED),
TargetPart('ota-requestor', app=MbedApp.OTA_REQUESTOR),
TargetPart('shell', app=MbedApp.SHELL),
])
# Modifiers
target.AppendModifier('release', profile=MbedProfile.RELEASE).ExceptIfRe(
'-(develop|debug)')
target.AppendModifier('develop', profile=MbedProfile.DEVELOP).ExceptIfRe(
'-(release|debug)')
target.AppendModifier('debug', profile=MbedProfile.DEBUG).ExceptIfRe(
'-(release|develop)')
target.AppendModifier('data-model-disabled', data_model_interface="disabled").ExceptIfRe('-data-model-enabled')
target.AppendModifier('data-model-enabled', data_model_interface="enabled").ExceptIfRe('-data-model-disabled')
return target
def BuildInfineonTarget():
target = BuildTarget('infineon', InfineonBuilder)
# board
target.AppendFixedTargets([
TargetPart('psoc6', board=InfineonBoard.PSOC6BOARD)
])
# apps
target.AppendFixedTargets([
TargetPart('lock', app=InfineonApp.LOCK),
TargetPart('light', app=InfineonApp.LIGHT),
TargetPart('all-clusters', app=InfineonApp.ALL_CLUSTERS),
TargetPart('all-clusters-minimal',
app=InfineonApp.ALL_CLUSTERS_MINIMAL),
])
# modifiers
target.AppendModifier('ota', enable_ota_requestor=True)
target.AppendModifier('updateimage', update_image=True)
target.AppendModifier('trustm', enable_trustm=True)
return target
def BuildAmebaTarget():
target = BuildTarget('ameba', AmebaBuilder)
# board
target.AppendFixedTargets([
TargetPart('amebad', board=AmebaBoard.AMEBAD),
])
# apps
target.AppendFixedTargets([
TargetPart('all-clusters', app=AmebaApp.ALL_CLUSTERS),
TargetPart('all-clusters-minimal', app=AmebaApp.ALL_CLUSTERS_MINIMAL),
TargetPart('light', app=AmebaApp.LIGHT),
TargetPart('light-switch', app=AmebaApp.LIGHT_SWITCH),
TargetPart('pigweed', app=AmebaApp.PIGWEED),
])
return target
def BuildASRTarget():
target = BuildTarget('asr', ASRBuilder)
# board
target.AppendFixedTargets([
TargetPart('asr582x', board=ASRBoard.ASR582X),
TargetPart('asr595x', board=ASRBoard.ASR595X),
TargetPart('asr550x', board=ASRBoard.ASR550X),
])
# apps
target.AppendFixedTargets([
TargetPart('all-clusters', app=ASRApp.ALL_CLUSTERS),
TargetPart('all-clusters-minimal', app=ASRApp.ALL_CLUSTERS_MINIMAL),
TargetPart('lighting', app=ASRApp.LIGHT),
TargetPart('light-switch', app=ASRApp.LIGHT_SWITCH),
TargetPart('lock', app=ASRApp.LOCK),
TargetPart('bridge', app=ASRApp.BRIDGE),
TargetPart('temperature-measurement', app=ASRApp.TEMPERATURE_MEASUREMENT),
TargetPart('thermostat', app=ASRApp.THERMOSTAT),
TargetPart('ota-requestor', app=ASRApp.OTA_REQUESTOR),
TargetPart('dishwasher', app=ASRApp.DISHWASHER),
TargetPart('refrigerator', app=ASRApp.REFRIGERATOR),
])
# modifiers
target.AppendModifier('ota', enable_ota_requestor=True)
target.AppendModifier('shell', chip_build_libshell=True)
target.AppendModifier('no_logging', chip_logging=False)
target.AppendModifier('factory', enable_factory=True)
target.AppendModifier('rotating_id', enable_rotating_device_id=True)
target.AppendModifier('rio', enable_lwip_ip6_hook=True)
return target
def BuildNxpTarget():
target = BuildTarget('nxp', NxpBuilder)
# boards
target.AppendFixedTargets([
TargetPart('k32w0', board=NxpBoard.K32W0),
TargetPart('k32w1', board=NxpBoard.K32W1),
TargetPart('rw61x', board=NxpBoard.RW61X),
TargetPart('rw61x_eth', board=NxpBoard.RW61X_ETH),
TargetPart('mcxw71', board=NxpBoard.MCXW71)
])
# OS
target.AppendFixedTargets([
TargetPart('zephyr', os_env=NxpOsUsed.ZEPHYR).OnlyIfRe('rw61x'),
TargetPart('freertos', os_env=NxpOsUsed.FREERTOS),
])
# apps
target.AppendFixedTargets([
TargetPart('lighting', app=NxpApp.LIGHTING).OnlyIfRe('(k32w0|k32w1|mcxw71)'),
TargetPart('contact-sensor', app=NxpApp.CONTACT).OnlyIfRe('(k32w0|k32w1|mcxw71)'),
TargetPart('lock-app', app=NxpApp.LOCK_APP).OnlyIfRe('(k32w1|mcxw71)'),
TargetPart('all-clusters', app=NxpApp.ALLCLUSTERS).OnlyIfRe('rw61x'),
TargetPart('laundry-washer', app=NxpApp.LAUNDRYWASHER).OnlyIfRe('rw61x'),
TargetPart('thermostat', app=NxpApp.THERMOSTAT).OnlyIfRe('rw61x')
])
target.AppendModifier(name="factory", enable_factory_data=True)
target.AppendModifier(name="low-power", low_power=True).OnlyIfRe('contact-sensor')
target.AppendModifier(name="lit", enable_lit=True).OnlyIfRe('contact-sensor')
target.AppendModifier(name="fro32k", use_fro32k=True).OnlyIfRe('k32w0')
target.AppendModifier(name="smu2", smu2=True).OnlyIfRe('(k32w1|mcxw71)-freertos-lighting')
target.AppendModifier(name="dac-conversion", convert_dac_pk=True).OnlyIfRe('factory').ExceptIfRe('(k32w0|rw61x)')
target.AppendModifier(name="rotating-id", enable_rotating_id=True).ExceptIfRe('rw61x')
target.AppendModifier(name="sw-v2", has_sw_version_2=True)
target.AppendModifier(name="ota", enable_ota=True).ExceptIfRe('zephyr')
target.AppendModifier(name="wifi", enable_wifi=True).OnlyIfRe('rw61x')
target.AppendModifier(name="ethernet", enable_ethernet=True).OnlyIfRe('rw61x_eth-zephyr')
target.AppendModifier(name="thread", enable_thread=True).ExceptIfRe('zephyr')
target.AppendModifier(name="matter-shell", enable_shell=True).ExceptIfRe('k32w0|k32w1')
target.AppendModifier('data-model-disabled', data_model_interface="disabled").ExceptIfRe('-data-model-enabled')
target.AppendModifier('data-model-enabled', data_model_interface="enabled").ExceptIfRe('-data-model-disabled')
target.AppendModifier(name="factory-build", enable_factory_data_build=True).OnlyIfRe('rw61x')
target.AppendModifier(name="frdm", board_variant=NxpBoardVariant.FRDM).OnlyIfRe('rw61x')
target.AppendModifier(name="cmake", build_system=NxpBuildSystem.CMAKE).OnlyIfRe('rw61x')
return target
def BuildCC13x4Target():
target = BuildTarget('ti', TIBuilder)
# board
target.AppendFixedTargets([
TargetPart('cc13x4_26x4', board=TIBoard.LP_EM_CC1354P10_6)
])
target.AppendFixedTargets([
TargetPart('lighting', app=TIApp.LIGHTING),
TargetPart('lock', app=TIApp.LOCK, openthread_ftd=True),
TargetPart('pump', app=TIApp.PUMP, openthread_ftd=False),
TargetPart('pump-controller', app=TIApp.PUMP_CONTROLLER,
openthread_ftd=False),
])
target.AppendModifier(name="mtd", openthread_ftd=False)
target.AppendModifier(name="ftd", openthread_ftd=True)
return target
def Buildcc32xxTarget():
target = BuildTarget('cc32xx', cc32xxBuilder)
# apps
target.AppendFixedTargets([
TargetPart('lock', app=cc32xxApp.LOCK),
TargetPart('air-purifier', app=cc32xxApp.AIR_PURIFIER),
])
return target
def BuildCyw30739Target():
target = BuildTarget('cyw30739', Cyw30739Builder)
# board
target.AppendFixedTargets([
TargetPart('cyw30739b2_p5_evk_01', board=Cyw30739Board.CYW30739B2_P5_EVK_01),
TargetPart('cyw30739b2_p5_evk_02', board=Cyw30739Board.CYW30739B2_P5_EVK_02),
TargetPart('cyw30739b2_p5_evk_03', board=Cyw30739Board.CYW30739B2_P5_EVK_03),
TargetPart('cyw930739m2evb_01', board=Cyw30739Board.CYW930739M2EVB_01),
TargetPart('cyw930739m2evb_02', board=Cyw30739Board.CYW930739M2EVB_02),
])
# apps
target.AppendFixedTargets([
TargetPart('light', app=Cyw30739App.LIGHT),
TargetPart('light-switch', app=Cyw30739App.LIGHT_SWITCH),
TargetPart('lock', app=Cyw30739App.LOCK),
TargetPart('thermostat', app=Cyw30739App.THERMOSTAT),
])
return target
def BuildQorvoTarget():
target = BuildTarget('qpg', QpgBuilder)
# board
target.AppendFixedTargets([
TargetPart('qpg6105', board=QpgBoard.QPG6105),
])
# apps
target.AppendFixedTargets([
TargetPart('lock', app=QpgApp.LOCK),
TargetPart('light', app=QpgApp.LIGHT),
TargetPart('shell', app=QpgApp.SHELL),
TargetPart('persistent-storage', app=QpgApp.PERSISTENT_STORAGE),
TargetPart('light-switch', app=QpgApp.LIGHT_SWITCH),
TargetPart('thermostat', app=QpgApp.THERMOSTAT),
])
target.AppendModifier('updateimage', update_image=True)
target.AppendModifier('data-model-disabled', data_model_interface="disabled").ExceptIfRe('-data-model-enabled')
target.AppendModifier('data-model-enabled', data_model_interface="enabled").ExceptIfRe('-data-model-disabled')
return target
def BuildStm32Target():
target = BuildTarget('stm32', stm32Builder)
# board
target.AppendFixedTargets([
TargetPart('STM32WB5MM-DK', board=stm32Board.STM32WB55XX),
])
# apps
target.AppendFixedTargets([
TargetPart('light', app=stm32App.LIGHT),
])
return target
def BuildTizenTarget():
target = BuildTarget('tizen', TizenBuilder)
# board
target.AppendFixedTargets([
TargetPart('arm', board=TizenBoard.ARM),
])
# apps
target.AppendFixedTargets([
TargetPart('all-clusters', app=TizenApp.ALL_CLUSTERS),
TargetPart('all-clusters-minimal', app=TizenApp.ALL_CLUSTERS_MINIMAL),
TargetPart('chip-tool', app=TizenApp.CHIP_TOOL),
TargetPart('light', app=TizenApp.LIGHT),
TargetPart('tests', app=TizenApp.TESTS),
])
target.AppendModifier("no-ble", enable_ble=False)
target.AppendModifier("no-thread", enable_thread=False)
target.AppendModifier("no-wifi", enable_wifi=False)
target.AppendModifier("asan", use_asan=True)
target.AppendModifier("ubsan", use_ubsan=True)
target.AppendModifier('with-ui', with_ui=True)
return target
def BuildBouffalolabTarget():
target = BuildTarget('bouffalolab', BouffalolabBuilder)
# Boards
target.AppendFixedTargets([
TargetPart('BL602DK',
board=BouffalolabBoard.BL602_IoT_Matter_V1, module_type="BL602"),
TargetPart('BL704LDK', board=BouffalolabBoard.BL704LDK, module_type="BL704L"),
TargetPart('BL706DK',
board=BouffalolabBoard.BL706DK, module_type="BL706C-22"),
TargetPart('BL602-NIGHT-LIGHT',
board=BouffalolabBoard.BL602_NIGHT_LIGHT, module_type="BL602"),
TargetPart('BL706-NIGHT-LIGHT',
board=BouffalolabBoard.BL706_NIGHT_LIGHT, module_type="BL706C-22"),
TargetPart('BL602-IoT-Matter-V1',
board=BouffalolabBoard.BL602_IoT_Matter_V1, module_type="BL602"),
TargetPart('XT-ZB6-DevKit', board=BouffalolabBoard.XT_ZB6_DevKit,
module_type="BL706C-22"),
])
# Apps
target.AppendFixedTargets([
TargetPart('light', app=BouffalolabApp.LIGHT),
])
target.AppendModifier('ethernet', enable_ethernet=True)
target.AppendModifier('wifi', enable_wifi=True)
target.AppendModifier('thread', enable_thread=True)
target.AppendModifier('easyflash', enable_easyflash=True)
target.AppendModifier('littlefs', enable_littlefs=True)
target.AppendModifier('shell', enable_shell=True)
target.AppendModifier('mfd', enable_mfd=True)
target.AppendModifier('rotating_device_id', enable_rotating_device_id=True)
target.AppendModifier('rpc', enable_rpcs=True)
target.AppendModifier('cdc', enable_cdc=True)
target.AppendModifier('mot', use_matter_openthread=True)
target.AppendModifier('resetCnt', enable_resetCnt=True)
target.AppendModifier('memmonitor', enable_heap_monitoring=True)
target.AppendModifier('115200', baudrate=115200)
target.AppendModifier('fp', enable_frame_ptr=True)
return target
def BuildIMXTarget():
target = BuildTarget('imx', IMXBuilder)
target.AppendFixedTargets([
TargetPart('chip-tool', app=IMXApp.CHIP_TOOL),
TargetPart('lighting-app', app=IMXApp.LIGHT),
TargetPart('thermostat', app=IMXApp.THERMOSTAT),
TargetPart('all-clusters-app', app=IMXApp.ALL_CLUSTERS),
TargetPart('all-clusters-minimal-app',
app=IMXApp.ALL_CLUSTERS_MINIMAL),
TargetPart('ota-provider-app', app=IMXApp.OTA_PROVIDER),
])
target.AppendModifier('release', release=True)
return target
def BuildMW320Target():
target = BuildTarget('mw320', MW320Builder)
target.AppendFixedTargets(
[TargetPart('all-clusters-app', app=MW320App.ALL_CLUSTERS)])
return target
def BuildGenioTarget():
target = BuildTarget('genio', GenioBuilder)
target.AppendFixedTargets([TargetPart('lighting-app', app=GenioApp.LIGHT)])
return target
def BuildTelinkTarget():
target = BuildTarget('telink', TelinkBuilder)
target.AppendFixedTargets([
TargetPart('tlsr9118bdk40d', board=TelinkBoard.TLRS9118BDK40D),
TargetPart('tlsr9518adk80d', board=TelinkBoard.TLSR9518ADK80D),
TargetPart('tlsr9528a', board=TelinkBoard.TLSR9528A),
TargetPart('tlsr9528a_retention', board=TelinkBoard.TLSR9528A_RETENTION),
TargetPart('tlsr9258a', board=TelinkBoard.TLSR9258A),
TargetPart('tlsr9258a_retention', board=TelinkBoard.TLSR9258A_RETENTION),
])
target.AppendFixedTargets([
TargetPart('air-quality-sensor', app=TelinkApp.AIR_QUALITY_SENSOR),
TargetPart('all-clusters', app=TelinkApp.ALL_CLUSTERS),
TargetPart('all-clusters-minimal', app=TelinkApp.ALL_CLUSTERS_MINIMAL),
TargetPart('bridge', app=TelinkApp.BRIDGE),
TargetPart('contact-sensor', app=TelinkApp.CONTACT_SENSOR),
TargetPart('light', app=TelinkApp.LIGHT),
TargetPart('light-switch', app=TelinkApp.SWITCH),
TargetPart('lock', app=TelinkApp.LOCK),
TargetPart('ota-requestor', app=TelinkApp.OTA_REQUESTOR),
TargetPart('pump', app=TelinkApp.PUMP),
TargetPart('pump-controller', app=TelinkApp.PUMP_CONTROLLER),
TargetPart('shell', app=TelinkApp.SHELL),
TargetPart('smoke-co-alarm', app=TelinkApp.SMOKE_CO_ALARM),
TargetPart('temperature-measurement',
app=TelinkApp.TEMPERATURE_MEASUREMENT),
TargetPart('thermostat', app=TelinkApp.THERMOSTAT),
TargetPart('window-covering', app=TelinkApp.WINDOW_COVERING),
])
target.AppendModifier('ota', enable_ota=True)
target.AppendModifier('dfu', enable_dfu=True)
target.AppendModifier('shell', enable_shell=True)
target.AppendModifier('rpc', enable_rpcs=True)
target.AppendModifier('factory-data', enable_factory_data=True)
target.AppendModifier('4mb', enable_4mb_flash=True)
target.AppendModifier('mars', mars_board_config=True)
target.AppendModifier('usb', usb_board_config=True)
target.AppendModifier('data-model-disabled', use_data_model_interface=False).ExceptIfRe('-data-model-enabled')
target.AppendModifier('data-model-enabled', use_data_model_interface=True).ExceptIfRe('-data-model-disabled')
return target
def BuildOpenIotSdkTargets():
target = BuildTarget('openiotsdk', OpenIotSdkBuilder)
target.AppendFixedTargets([
TargetPart('shell', app=OpenIotSdkApp.SHELL),
TargetPart('lock', app=OpenIotSdkApp.LOCK),
])
# Modifiers
target.AppendModifier('mbedtls', crypto=OpenIotSdkCryptoBackend.MBEDTLS).ExceptIfRe('-(psa)')
target.AppendModifier('psa', crypto=OpenIotSdkCryptoBackend.PSA).ExceptIfRe('-(mbedtls)')
return target
BUILD_TARGETS = [
BuildAmebaTarget(),
BuildASRTarget(),
BuildAndroidTarget(),
BuildBouffalolabTarget(),
Buildcc32xxTarget(),
BuildCC13x4Target(),
BuildCyw30739Target(),
BuildEfr32Target(),
BuildEsp32Target(),
BuildGenioTarget(),
BuildHostFakeTarget(),
BuildHostTarget(),
BuildHostTestRunnerTarget(),
BuildIMXTarget(),
BuildInfineonTarget(),
BuildNxpTarget(),
BuildMbedTarget(),
BuildMW320Target(),
BuildNrfTarget(),
BuildNrfNativeTarget(),
BuildNuttXTarget(),
BuildQorvoTarget(),
BuildStm32Target(),
BuildTizenTarget(),
BuildTelinkTarget(),
BuildOpenIotSdkTargets(),
]