blob: c165fac8614ad337559979fc5ffe316e7ba18fc1 [file] [log] [blame]
Julian Halleff4b282020-11-23 18:24:12 +01001#-------------------------------------------------------------------------------
Imre Kis7cbf6a22021-01-25 18:50:35 +01002# Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
Julian Halleff4b282020-11-23 18:24:12 +01003#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6#-------------------------------------------------------------------------------
7cmake_minimum_required(VERSION 3.16)
8include(../../deployment.cmake REQUIRED)
9
10#-------------------------------------------------------------------------------
11# The CMakeLists.txt for building the ts-service-test deployment for linux-pc
12#
13# Used for building and running service level tests in a native PC enviroment.
14# Tests can be run by running the built executable called "ts-service-test"
15#-------------------------------------------------------------------------------
16include(${TS_ROOT}/environments/linux-pc/env.cmake)
17project(trusted-services LANGUAGES CXX C)
Imre Kis7cbf6a22021-01-25 18:50:35 +010018
Julian Halla7e76c82021-04-14 11:12:11 +010019# Prevents symbols in the ts-service-test executable overriding symbols with
20# with same name in libts during dyanmic linking performed by the program
21# loader. This avoid psa crypto api symbols provided by the mbedcrypto
22# library from being overridden by the same symbols in the ts-service-test
23# executable.
24set(CMAKE_C_VISIBILITY_PRESET hidden)
25
Imre Kis7cbf6a22021-01-25 18:50:35 +010026# Preparing firmware-test-build by including it
27include(${TS_ROOT}/external/firmware_test_builder/FirmwareTestBuilder.cmake)
28
29include(CTest)
30include(UnitTest)
31
32set(COVERAGE FALSE CACHE BOOL "Enable code coverage measurement")
33set(UNIT_TEST_PROJECT_PATH ${TS_ROOT} CACHE PATH "Path of the project directory")
34set(CMAKE_CXX_STANDARD 11)
35
36unit_test_init_cpputest()
37
38if (COVERAGE)
39 include(Coverage)
40
41 set(COVERAGE_FILE "coverage.info")
42 set(TS_SERVICE_TEST_COVERAGE_FILE "ts-service-test-coverage.info" CACHE PATH "Path of coverage info file")
43 set(TS_SERVICE_TEST_COVERAGE_REPORT_DIR "${CMAKE_CURRENT_BINARY_DIR}/ts-service-coverage-report" CACHE PATH "Directory of coverage report")
44
45 # Collecting coverage
46 coverage_generate(
47 NAME "ts-service test"
48 SOURCE_DIR ${TS_ROOT}
49 BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}
50 OUTPUT_FILE ${COVERAGE_FILE}
51 )
52
53 # Filtering project file coverage
54 coverage_filter(
55 INPUT_FILE ${COVERAGE_FILE}
56 OUTPUT_FILE ${TS_SERVICE_TEST_COVERAGE_FILE}
57 INCLUDE_DIRECTORY ${UNIT_TEST_PROJECT_PATH}/components
58 )
59
60 # Coverage report
61 coverage_generate_report(
62 INPUT_FILE ${TS_SERVICE_TEST_COVERAGE_FILE}
63 OUTPUT_DIRECTORY ${TS_SERVICE_TEST_COVERAGE_REPORT_DIR}
64 )
65endif()
66
67unit_test_add_suite(
68 NAME ts-service-test
69)
70
Julian Halleff4b282020-11-23 18:24:12 +010071target_include_directories(ts-service-test PRIVATE "${TOP_LEVEL_INCLUDE_DIRS}")
72
73#-------------------------------------------------------------------------------
julhal013ec4c322021-02-05 17:30:49 +000074# Components that are specific to deployment in the linux-pc environment.
75#
76#-------------------------------------------------------------------------------
77add_components(
78 TARGET "ts-service-test"
79 BASE_DIR ${TS_ROOT}
80 COMPONENTS
Julian Hallcaa4af82021-05-19 12:02:36 +010081 "components/service/test_runner/client/cpp"
julhal013ec4c322021-02-05 17:30:49 +000082 "components/service/test_runner/test/service"
83)
84
85#-------------------------------------------------------------------------------
Julian Halleff4b282020-11-23 18:24:12 +010086# Extend with components that are common across all deployments of
87# ts-service-test
88#
89#-------------------------------------------------------------------------------
90include(../ts-service-test.cmake REQUIRED)