| #---------------------------------------------------------------------------- |
| # SPDX-FileCopyrightText: Copyright 2024 Arm Limited and/or its |
| # affiliates <open-source-office@arm.com> |
| # SPDX-License-Identifier: Apache-2.0 |
| # |
| # 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. |
| #---------------------------------------------------------------------------- |
| |
| # For any CMake project wrapping ml-embedded-eval-kit, it should include this before |
| # to get the default directory settings and set up the environment. |
| include_guard(GLOBAL) |
| |
| # Variables used by all other scripts |
| set(MLEK_ROOT ${CMAKE_CURRENT_LIST_DIR}) |
| set(MLEK_SCRIPTS_DIR ${MLEK_ROOT}/scripts) |
| set(MLEK_DEPENDENCY_ROOT_DIR ${MLEK_ROOT}/dependencies) |
| set(MLEK_HAL_PLATFORM_DIR ${MLEK_ROOT}/source/hal/source/platform) |
| set(MLEK_DOWNLOAD_DEP_DIR ${CMAKE_BINARY_DIR}/dependencies) |
| set(MLEK_CMAKE_TOOLCHAIN_DIR ${MLEK_SCRIPTS_DIR}/cmake/toolchains) |
| set(MLEK_CORE_PLATFORM_DIR ${MLEK_DEPENDENCY_ROOT_DIR}/core-platform) |
| |
| # The list of directories where platform build configurations are searched for. |
| # Any project including this file, should append to this list before inclusion |
| # to allow searching additional directories for target configurations. |
| list(APPEND MLEK_PLATFORM_BUILD_CONFIG_DIRS ${MLEK_SCRIPTS_DIR}/cmake/platforms) |
| |
| # Append to CMAKE_MODULE_PATH to allow top level scripts to find and include |
| # utility functions. |
| list(APPEND CMAKE_MODULE_PATH |
| "${MLEK_SCRIPTS_DIR}/cmake" |
| "${MLEK_SCRIPTS_DIR}/cmake/configuration_options" |
| "${MLEK_SCRIPTS_DIR}/cmake/timing_adapter") |
| |
| # Include source generator. |
| include(source_gen_utils) |
| |
| # Enable testing - allows top level to add tests. |
| enable_testing() |
| |
| # Check that the source and build directories are different. |
| if (${CMAKE_BINARY_DIR} STREQUAL ${CMAKE_SOURCE_DIR}) |
| message(FATAL_ERROR "Source and build are in the same directory") |
| else() |
| message(STATUS "Source directory: ${CMAKE_SOURCE_DIR}") |
| message(STATUS "Binary directory: ${CMAKE_BINARY_DIR}") |
| endif() |
| |
| # Include common configuration options. |
| include(common_opts) |
| |
| # Check if the resources_downloaded needs update. |
| check_update_public_resources(${RESOURCES_PATH}) |
| |
| # Find the platform's build configuration and then add it. |
| add_platform_build_configuration(TARGET_PLATFORM ${TARGET_PLATFORM}) |
| set_platform_global_defaults() |
| |
| message(STATUS "Using CMAKE_TOOLCHAIN_FILE: ${CMAKE_TOOLCHAIN_FILE}") |
| |
| # Make sure the following options are defined before proceeding. |
| assert_defined(LOG_LEVEL) |
| assert_defined(TENSORFLOW_SRC_PATH) |
| assert_defined(TARGET_PLATFORM) |
| assert_defined(USE_CASE_BUILD) |
| assert_defined(CPU_PROFILE_ENABLED) |
| assert_defined(CMAKE_TOOLCHAIN_FILE) |
| |
| # Explicit policy definitions. |
| if(POLICY CMP0123) |
| cmake_policy(SET CMP0123 NEW) |
| endif() |