blob: 0519ec14863a53146a232ada89de208853bae09d [file] [log] [blame]
alexander31ae9f02022-02-10 16:15:54 +00001#----------------------------------------------------------------------------
Liam Barrycca34a92023-11-03 15:49:34 +00002# SPDX-FileCopyrightText: Copyright 2022-2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
alexander31ae9f02022-02-10 16:15:54 +00003# SPDX-License-Identifier: Apache-2.0
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16#----------------------------------------------------------------------------
17
alexander31ae9f02022-02-10 16:15:54 +000018function(set_platform_global_defaults)
19 message(STATUS "Platform: Native (Linux based x86_64/aarch64 system)")
20 if (NOT DEFINED CMAKE_TOOLCHAIN_FILE)
21 set(CMAKE_TOOLCHAIN_FILE ${CMAKE_TOOLCHAIN_DIR}/native-gcc.cmake
22 CACHE FILEPATH "Toolchain file")
23 endif()
Kshitij Sisodiaa1256e32022-02-23 14:40:45 +000024 set(PLATFORM_DRIVERS_DIR "${HAL_PLATFORM_DIR}/native" PARENT_SCOPE)
alexandercb8a9872022-02-11 13:23:22 +000025 set(TEST_TPIP ${DOWNLOAD_DEP_DIR}/test)
26
27 file(MAKE_DIRECTORY ${TEST_TPIP})
28 set(TEST_TPIP_INCLUDE ${TEST_TPIP}/include)
29 file(MAKE_DIRECTORY ${TEST_TPIP_INCLUDE})
30
Liam Barrycca34a92023-11-03 15:49:34 +000031 set(CATCH_HEADER_URL "https://github.com/catchorg/Catch2/releases/download/v2.13.5/catch.hpp")
32 set(CATCH_HEADER_MD5 b43c586fe617aefdee3e480e9fa8f370)
alexandercb8a9872022-02-11 13:23:22 +000033
Kshitij Sisodiaee82c602022-12-29 11:53:23 +000034 include(FetchContent)
35 FetchContent_Declare(catch2-header-download
36 URL ${CATCH_HEADER_URL}
37 URL_HASH MD5=${CATCH_HEADER_MD5}
38 DOWNLOAD_DIR ${TEST_TPIP_INCLUDE}
39 DOWNLOAD_NO_EXTRACT ON
40 )
41 FetchContent_MakeAvailable(catch2-header-download)
42
43 add_library(mlek-catch2 INTERFACE)
44 target_include_directories(mlek-catch2
alexandercb8a9872022-02-11 13:23:22 +000045 INTERFACE
46 ${TEST_TPIP_INCLUDE})
Kshitij Sisodiaee82c602022-12-29 11:53:23 +000047 add_dependencies(mlek-catch2 catch2-header-download)
48 add_library(mlek::Catch2 ALIAS mlek-catch2)
alexandercb8a9872022-02-11 13:23:22 +000049
alexander31ae9f02022-02-10 16:15:54 +000050endfunction()
51
52function(platform_custom_post_build)
53 set(oneValueArgs TARGET_NAME)
54 cmake_parse_arguments(PARSED "" "${oneValueArgs}" "" ${ARGN} )
55
56
57 # If native build tests
58 set(TEST_SRC_USE_CASE "")
59 foreach(USE_CASES_TESTS_SEARCH_DIR ${USE_CASES_TESTS_SEARCH_DIR_LIST})
60
61 if (EXISTS ${USE_CASES_TESTS_SEARCH_DIR}/${use_case})
62 message(STATUS "Found tests for use-case ${use_case} at ${USE_CASES_TESTS_SEARCH_DIR}/${use_case}.")
63 set(TEST_SRC_USE_CASE ${USE_CASES_TESTS_SEARCH_DIR})
64 break()
65 endif ()
66 endforeach()
67
68 # Add tests only if they exists for the usecase
69 if (NOT ${TEST_SRC_USE_CASE} STREQUAL "")
70
71 set(TEST_RESOURCES_INCLUDE
72 "${TEST_SRCS}/utils/"
73 "${TEST_SRC_USE_CASE}/${use_case}/include/"
74 )
75
76 # Define Test sources and new target to run unit tests
77 file(GLOB_RECURSE TEST_SOURCES
78 "${TEST_SRCS}/common/*.cpp"
79 "${TEST_SRCS}/common/*.cc"
80 "${TEST_SRCS}/utils/*.cc"
81 "${TEST_SRCS}/utils/*.cpp"
82 "${TEST_SRC_USE_CASE}/${use_case}/*.cpp"
83 "${TEST_SRC_USE_CASE}/${use_case}/*.cc"
84 "${TEST_SRC_USE_CASE}/${use_case}/*.c"
85 "${TEST_SRC_USE_CASE}/${use_case}/**/*.cpp"
86 "${TEST_SRC_USE_CASE}/${use_case}/**/*.cc"
87 "${TEST_SRC_USE_CASE}/${use_case}/**/*.c"
88 )
89
90 set(TEST_SRC_GEN_DIR ${CMAKE_BINARY_DIR}/generated/${use_case}/tests/src)
91 set(TEST_INC_GEN_DIR ${CMAKE_BINARY_DIR}/generated/${use_case}/tests/include)
92 file(MAKE_DIRECTORY ${TEST_SRC_GEN_DIR} ${TEST_INC_GEN_DIR})
93
94 set(${use_case}_DEFAULT_TEST_DATA_DIR ${DEFAULT_TEST_DATA_DIR} CACHE PATH "")
95 # Generate test data files to be included in x86 tests
96 generate_test_data_code(
97 INPUT_DIR "${${use_case}_DEFAULT_TEST_DATA_DIR}"
98 DESTINATION_SRC ${TEST_SRC_GEN_DIR}
99 DESTINATION_HDR ${TEST_INC_GEN_DIR}
100 NAMESPACE "test"
101 )
102
103 file(GLOB_RECURSE TEST_SOURCES_GEN
104 "${TEST_SRC_GEN_DIR}/*.cc"
105 "${TEST_SRC_GEN_DIR}/**/*.cc"
106 )
107 message(STATUS "Adding ${TEST_SOURCES_GEN} to test sources")
108 list(APPEND TEST_SOURCES ${TEST_SOURCES_GEN})
109 list(APPEND TEST_RESOURCES_INCLUDE ${TEST_INC_GEN_DIR})
110
Eanna O Cathain19c91fe2022-06-08 15:05:22 +0100111 set(TEST_TARGET_NAME "${use_case}_tests")
alexander31ae9f02022-02-10 16:15:54 +0000112 add_executable(${TEST_TARGET_NAME} ${TEST_SOURCES})
alexandercb8a9872022-02-11 13:23:22 +0000113 target_include_directories(${TEST_TARGET_NAME} PRIVATE ${TEST_RESOURCES_INCLUDE})
Kshitij Sisodiaee82c602022-12-29 11:53:23 +0000114 target_link_libraries(${TEST_TARGET_NAME} PRIVATE ${UC_LIB_NAME} mlek::Catch2)
alexander31ae9f02022-02-10 16:15:54 +0000115 target_compile_definitions(${TEST_TARGET_NAME} PRIVATE
116 "ACTIVATION_BUF_SZ=${${use_case}_ACTIVATION_BUF_SZ}"
117 TESTS)
Liam Barrycca34a92023-11-03 15:49:34 +0000118 add_test(NAME "${use_case}-tests" COMMAND ${TEST_TARGET_NAME})
alexander31ae9f02022-02-10 16:15:54 +0000119 endif ()
Liam Barrycca34a92023-11-03 15:49:34 +0000120endfunction()