blob: 292f902baf72dbfb2c9606d063ca0e40feb38a06 [file] [log] [blame]
#
# Copyright (c) 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.
# Generate Zephyr version files for backward compatibility
file(STRINGS "$ENV{ZEPHYR_BASE}/VERSION" ZEPHYR_VERSION_STRING REGEX "[0-9]+")
string(REGEX REPLACE "[^0-9;]" "" ZEPHYR_VERSION_STRING "${ZEPHYR_VERSION_STRING}")
string(REPLACE ";" "." ZEPHYR_VERSION_STRING "${ZEPHYR_VERSION_STRING}")
file(WRITE "${CMAKE_BINARY_DIR}/modules/chip-module/zephyr_version.gni" "ZEPHYR_VERSION_STRING = \"${ZEPHYR_VERSION_STRING}\"\n")
if(${ZEPHYR_VERSION_STRING} MATCHES "^3\\.3")
set(ZEPHYR_VERSION_OVERLAY_FILE "${CMAKE_BINARY_DIR}/zephyr_version.conf")
file(WRITE ${ZEPHYR_VERSION_OVERLAY_FILE} "CONFIG_ZEPHYR_VERSION_3_3=y\n")
function(add_compile_definitions)
foreach(flag IN LISTS ARGN)
add_definitions(-D${flag})
list(APPEND MATTER_CFLAGS "-D${flag}")
endforeach()
set(MATTER_CFLAGS "${MATTER_CFLAGS}" PARENT_SCOPE)
endfunction()
# Add required MbedTLS defines for Zephyr 3.3
add_compile_definitions(MBEDTLS_HKDF_C MBEDTLS_X509_CREATE_C MBEDTLS_X509_CSR_WRITE_C)
endif()
string(REPLACE "_retention" "" BASE_BOARD ${BOARD})
string(REGEX REPLACE "_v[0-9]+" "" BASE_BOARD ${BASE_BOARD})
if(NOT FLASH_SIZE)
if(${BASE_BOARD} MATCHES "tlsr9118bdk40d")
set(FLASH_SIZE "4m")
else()
set(FLASH_SIZE "2m")
endif()
endif()
message(STATUS "Flash memory size is set to: " ${FLASH_SIZE} "b")
if(${TLNK_MARS_BOARD} MATCHES y)
set(MARS_BOOT_DTC_OVERLAY_FILE "${CHIP_ROOT}/src/platform/telink/${BASE_BOARD}_mars_boot.overlay")
if(NOT EXISTS "${MARS_BOOT_DTC_OVERLAY_FILE}")
message(FATAL_ERROR "${MARS_BOOT_DTC_OVERLAY_FILE} doesn't exist")
endif()
set(MARS_DTC_OVERLAY_FILE "${CHIP_ROOT}/src/platform/telink/${BOARD}_mars.overlay")
if(NOT EXISTS "${MARS_DTC_OVERLAY_FILE}")
message(FATAL_ERROR "${MARS_DTC_OVERLAY_FILE} doesn't exist")
endif()
set(MARS_CONF_OVERLAY_FILE "${CHIP_ROOT}/src/platform/telink/${BOARD}_mars.conf")
if(NOT EXISTS "${MARS_CONF_OVERLAY_FILE}")
message(FATAL_ERROR "${MARS_CONF_OVERLAY_FILE} doesn't exist")
endif()
else()
unset(MARS_BOOT_DTC_OVERLAY_FILE)
unset(MARS_DTC_OVERLAY_FILE)
unset(MARS_CONF_OVERLAY_FILE)
endif()
if(${CONFIG_TFLM_FEATURE} MATCHES y)
set(TFLM_OVERLAY_FILE "${CHIP_ROOT}/src/platform/telink/${BASE_BOARD}_tflm.overlay")
if(NOT EXISTS "${TFLM_OVERLAY_FILE}")
message(FATAL_ERROR "${TFLM_OVERLAY_FILE} doesn't exist")
endif()
set(TFLM_CONF_OVERLAY_FILE "${CHIP_ROOT}/src/platform/telink/${BASE_BOARD}_tflm.conf")
if(NOT EXISTS "${TFLM_CONF_OVERLAY_FILE}")
message(FATAL_ERROR "${TFLM_CONF_OVERLAY_FILE} doesn't exist")
endif()
else()
unset(TFLM_OVERLAY_FILE)
unset(TFLM_CONF_OVERLAY_FILE)
endif()
if(${TLNK_USB_DONGLE} MATCHES y)
set(USB_BOOT_DTC_OVERLAY_FILE "${CHIP_ROOT}/src/platform/telink/${BASE_BOARD}_usb_boot.overlay")
if(NOT EXISTS "${USB_BOOT_DTC_OVERLAY_FILE}")
message(FATAL_ERROR "${USB_BOOT_DTC_OVERLAY_FILE} doesn't exist")
endif()
set(USB_DTC_OVERLAY_FILE "${CHIP_ROOT}/src/platform/telink/${BOARD}_usb.overlay")
if(NOT EXISTS "${USB_DTC_OVERLAY_FILE}")
message(FATAL_ERROR "${USB_DTC_OVERLAY_FILE} doesn't exist")
endif()
set(USB_CONF_OVERLAY_FILE "${CHIP_ROOT}/src/platform/telink/${BOARD}_usb.conf")
if(NOT EXISTS "${USB_CONF_OVERLAY_FILE}")
message(FATAL_ERROR "${USB_CONF_OVERLAY_FILE} doesn't exist")
endif()
else()
unset(USB_BOOT_DTC_OVERLAY_FILE)
unset(USB_DTC_OVERLAY_FILE)
unset(USB_CONF_OVERLAY_FILE)
endif()
if(${CONFIG_COMPRESS_LZMA} MATCHES y)
set(BOOT_CONF_OVERLAY_FILE "${CHIP_ROOT}/config/telink/app/bootloader_compress_lzma.conf")
else()
set(BOOT_CONF_OVERLAY_FILE "${CHIP_ROOT}/config/telink/app/bootloader.conf")
endif()
if(NOT EXISTS "${BOOT_CONF_OVERLAY_FILE}")
message(FATAL_ERROR "${BOOT_CONF_OVERLAY_FILE} doesn't exist")
endif()
if((${CONFIG_USB_TELINK_B9X} MATCHES y) OR (${CONFIG_USB_TELINK_TLX} MATCHES y))
set(BOOT_USB_CONF_OVERLAY_FILE "${CHIP_ROOT}/config/telink/app/bootloader_usb.conf")
if(NOT EXISTS "${BOOT_USB_CONF_OVERLAY_FILE}")
message(FATAL_ERROR "${BOOT_USB_CONF_OVERLAY_FILE} doesn't exist")
endif()
else()
unset(BOOT_USB_CONF_OVERLAY_FILE)
endif()
set(GLOBAL_BOOT_CONF_OVERLAY_FILE "${BOOT_CONF_OVERLAY_FILE} ${BOOT_USB_CONF_OVERLAY_FILE}")
set(LOCAL_DTC_OVERLAY_FILE "${CMAKE_CURRENT_SOURCE_DIR}/boards/${BASE_BOARD}.overlay")
if(NOT EXISTS "${LOCAL_DTC_OVERLAY_FILE}")
message(STATUS "${LOCAL_DTC_OVERLAY_FILE} doesn't exist")
unset(LOCAL_DTC_OVERLAY_FILE)
endif()
set(GLOBAL_BOOT_DTC_OVERLAY_FILE "${CHIP_ROOT}/src/platform/telink/${BASE_BOARD}.overlay")
if(NOT EXISTS "${GLOBAL_BOOT_DTC_OVERLAY_FILE}")
message(STATUS "${GLOBAL_BOOT_DTC_OVERLAY_FILE} doesn't exist")
unset(GLOBAL_BOOT_DTC_OVERLAY_FILE)
endif()
set(GLOBAL_DTC_OVERLAY_FILE "${CHIP_ROOT}/src/platform/telink/${BOARD}.overlay")
if(NOT EXISTS "${GLOBAL_DTC_OVERLAY_FILE}")
message(STATUS "${GLOBAL_DTC_OVERLAY_FILE} doesn't exist")
unset(GLOBAL_DTC_OVERLAY_FILE)
endif()
set(FLASH_DTC_OVERLAY_FILE "${CHIP_ROOT}/src/platform/telink/${BASE_BOARD}_${FLASH_SIZE}_flash.overlay")
if(NOT EXISTS "${FLASH_DTC_OVERLAY_FILE}")
message(STATUS "${FLASH_DTC_OVERLAY_FILE} doesn't exist")
unset(FLASH_DTC_OVERLAY_FILE)
endif()
if(DTC_OVERLAY_FILE)
set(DTC_OVERLAY_FILE
"${DTC_OVERLAY_FILE} ${GLOBAL_DTC_OVERLAY_FILE} ${USB_DTC_OVERLAY_FILE} ${MARS_DTC_OVERLAY_FILE} ${FLASH_DTC_OVERLAY_FILE} ${LOCAL_DTC_OVERLAY_FILE} ${TFLM_OVERLAY_FILE}"
CACHE STRING "" FORCE
)
else()
set(DTC_OVERLAY_FILE ${GLOBAL_DTC_OVERLAY_FILE} ${USB_DTC_OVERLAY_FILE} ${MARS_DTC_OVERLAY_FILE} ${FLASH_DTC_OVERLAY_FILE} ${LOCAL_DTC_OVERLAY_FILE} ${TFLM_OVERLAY_FILE})
endif()
if(NOT CONF_FILE)
set(CONF_FILE ${USB_CONF_OVERLAY_FILE} ${MARS_CONF_OVERLAY_FILE} ${ZEPHYR_VERSION_OVERLAY_FILE} prj.conf ${TFLM_CONF_OVERLAY_FILE})
endif()
# Load NCS/Zephyr build system
list(APPEND ZEPHYR_EXTRA_MODULES ${CHIP_ROOT}/config/telink/chip-module)
find_package(Zephyr HINTS $ENV{ZEPHYR_BASE})