#---------------------------------------------------------------------------- # SPDX-FileCopyrightText: Copyright 2022-2023 Arm Limited and/or its affiliates # 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. #---------------------------------------------------------------------------- function(set_platform_global_defaults) message(STATUS "Platform: Native (Linux based x86_64/aarch64 system)") if (NOT DEFINED CMAKE_TOOLCHAIN_FILE) set(CMAKE_TOOLCHAIN_FILE ${CMAKE_TOOLCHAIN_DIR}/native-gcc.cmake CACHE FILEPATH "Toolchain file") endif() set(PLATFORM_DRIVERS_DIR "${HAL_PLATFORM_DIR}/native" PARENT_SCOPE) set(TEST_TPIP ${DOWNLOAD_DEP_DIR}/test) file(MAKE_DIRECTORY ${TEST_TPIP}) set(TEST_TPIP_INCLUDE ${TEST_TPIP}/include) file(MAKE_DIRECTORY ${TEST_TPIP_INCLUDE}) set(CATCH_HEADER_URL "https://github.com/catchorg/Catch2/releases/download/v2.13.5/catch.hpp") set(CATCH_HEADER_MD5 b43c586fe617aefdee3e480e9fa8f370) include(FetchContent) FetchContent_Declare(catch2-header-download URL ${CATCH_HEADER_URL} URL_HASH MD5=${CATCH_HEADER_MD5} DOWNLOAD_DIR ${TEST_TPIP_INCLUDE} DOWNLOAD_NO_EXTRACT ON ) FetchContent_MakeAvailable(catch2-header-download) add_library(mlek-catch2 INTERFACE) target_include_directories(mlek-catch2 INTERFACE ${TEST_TPIP_INCLUDE}) add_dependencies(mlek-catch2 catch2-header-download) add_library(mlek::Catch2 ALIAS mlek-catch2) endfunction() function(platform_custom_post_build) set(oneValueArgs TARGET_NAME) cmake_parse_arguments(PARSED "" "${oneValueArgs}" "" ${ARGN} ) # If native build tests set(TEST_SRC_USE_CASE "") foreach(USE_CASES_TESTS_SEARCH_DIR ${USE_CASES_TESTS_SEARCH_DIR_LIST}) if (EXISTS ${USE_CASES_TESTS_SEARCH_DIR}/${use_case}) message(STATUS "Found tests for use-case ${use_case} at ${USE_CASES_TESTS_SEARCH_DIR}/${use_case}.") set(TEST_SRC_USE_CASE ${USE_CASES_TESTS_SEARCH_DIR}) break() endif () endforeach() # Add tests only if they exists for the usecase if (NOT ${TEST_SRC_USE_CASE} STREQUAL "") set(TEST_RESOURCES_INCLUDE "${TEST_SRCS}/utils/" "${TEST_SRC_USE_CASE}/${use_case}/include/" ) # Define Test sources and new target to run unit tests file(GLOB_RECURSE TEST_SOURCES "${TEST_SRCS}/common/*.cpp" "${TEST_SRCS}/common/*.cc" "${TEST_SRCS}/utils/*.cc" "${TEST_SRCS}/utils/*.cpp" "${TEST_SRC_USE_CASE}/${use_case}/*.cpp" "${TEST_SRC_USE_CASE}/${use_case}/*.cc" "${TEST_SRC_USE_CASE}/${use_case}/*.c" "${TEST_SRC_USE_CASE}/${use_case}/**/*.cpp" "${TEST_SRC_USE_CASE}/${use_case}/**/*.cc" "${TEST_SRC_USE_CASE}/${use_case}/**/*.c" ) set(TEST_SRC_GEN_DIR ${CMAKE_BINARY_DIR}/generated/${use_case}/tests/src) set(TEST_INC_GEN_DIR ${CMAKE_BINARY_DIR}/generated/${use_case}/tests/include) file(MAKE_DIRECTORY ${TEST_SRC_GEN_DIR} ${TEST_INC_GEN_DIR}) set(${use_case}_DEFAULT_TEST_DATA_DIR ${DEFAULT_TEST_DATA_DIR} CACHE PATH "") # Generate test data files to be included in x86 tests generate_test_data_code( INPUT_DIR "${${use_case}_DEFAULT_TEST_DATA_DIR}" DESTINATION_SRC ${TEST_SRC_GEN_DIR} DESTINATION_HDR ${TEST_INC_GEN_DIR} NAMESPACE "test" ) file(GLOB_RECURSE TEST_SOURCES_GEN "${TEST_SRC_GEN_DIR}/*.cc" "${TEST_SRC_GEN_DIR}/**/*.cc" ) message(STATUS "Adding ${TEST_SOURCES_GEN} to test sources") list(APPEND TEST_SOURCES ${TEST_SOURCES_GEN}) list(APPEND TEST_RESOURCES_INCLUDE ${TEST_INC_GEN_DIR}) set(TEST_TARGET_NAME "${use_case}_tests") add_executable(${TEST_TARGET_NAME} ${TEST_SOURCES}) target_include_directories(${TEST_TARGET_NAME} PRIVATE ${TEST_RESOURCES_INCLUDE}) target_link_libraries(${TEST_TARGET_NAME} PRIVATE ${UC_LIB_NAME} mlek::Catch2) target_compile_definitions(${TEST_TARGET_NAME} PRIVATE "ACTIVATION_BUF_SZ=${${use_case}_ACTIVATION_BUF_SZ}" TESTS) add_test(NAME "${use_case}-tests" COMMAND ${TEST_TARGET_NAME}) endif () endfunction()