1# SCMI server library is built from SCP-firmware source tree. 2# The firmware is made of a framework, a product and modules. 3# Only modules used by firmware must be built, as stated by 4# CFG_SCPFW_MOD_* switches. SCP-firmware needs a C source and 5# a header file to be generated to describe embedded modules. 6# This is done through cmake configuration of the package. 7# The toolchain build directive must also match the list of 8# embedded modules. 9 10scpfw-path = $(CFG_SCP_FIRMWARE) 11scpfw-product = optee/$(CFG_SCMI_SCPFW_PRODUCT) 12scpfw-out-path := $(out-dir)/$(libdir) 13 14scpfw-integ-version-maj = 2 15scpfw-integ-version-min = 14 16scpfw-integ-version-pat = 0 17scpfw-integ-version = $(scpfw-integ-version-maj).$(scpfw-integ-version-min).$(scpfw-integ-version-pat) 18 19srcs-y += scmi_server.c 20srcs-$(CFG_SCMI_SCPFW_FROM_DT) += scmi_server_scpfw.c 21incdirs-y += include 22 23# SCP-firmware cmake configuration generates header fwk_module_idx.h and 24# source files fwk_module_list.c needed for scp-firmware compilation. 25scpfw-cmake-flags-y = -DSCP_FIRMWARE_SOURCE_DIR:PATH=$(scpfw-product)/fw \ 26 -DSCP_LOG_LEVEL="TRACE" \ 27 -DDISABLE_CPPCHECK=1 \ 28 -DCFG_NUM_THREADS=$(CFG_NUM_THREADS) \ 29 -DSCP_OPTEE_DIR:PATH=$(CURDIR) 30 31# CMake does not need to check the cross compilation toolchain since we do not 32# compile any source file with CMake, we only generate some SCP-firmware 33# files. 34scpfw-cmake-flags-y += -DCMAKE_C_COMPILER_WORKS=1 35 36ifeq ($(cmd-echo-silent),true) 37scpfw-cmake-redirect = >/dev/null 38endif 39 40gensrcs-y += fwk_module_list 41force-gensrc-fwk_module_list := y 42produce-fwk_module_list = build/framework/src/fwk_module_list.c 43recipe-fwk_module_list = cmake -S $(scpfw-path) -B $(scpfw-out-path)/build \ 44 $(scpfw-cmake-flags-y) --log-level=WARNING $(scpfw-cmake-redirect) 45depends-fwk_module_list = $(scpfw-path)/product/$(scpfw-product)/fw/Firmware.cmake $(conf-file) 46# Include path of generated header file fwk_module_idx.h 47incdirs_ext-y += $(scpfw-out-path)/build/framework/include 48 49cppflags-lib-y += -DBUILD_VERSION_MAJOR=$(scpfw-integ-version-maj) \ 50 -DBUILD_VERSION_MINOR=$(scpfw-integ-version-min) \ 51 -DBUILD_VERSION_PATCH=$(scpfw-integ-version-pat) 52 53scpfw-impl-version := $(shell git -C $(scpfw-path) describe --tags --always --dirty=-dev 2>/dev/null || \ 54 echo Unknown_$(scpfw-integ-version)) 55cppflags-lib-y += -DBUILD_VERSION_DESCRIBE_STRING=\"$(scpfw-impl-version)\" 56 57cppflags-lib-y += -DFWK_LOG_LEVEL=$(CFG_SCPFW_LOG_LEVEL) 58ifneq ($(CFG_SCPFW_LOG_LEVEL),0) 59cppflags-lib-y += -DFMW_LOG_MINIMAL_BANNER=1 60endif 61 62cflags-lib-y += -Wno-cast-align \ 63 -Wno-nonnull-compare \ 64 -Wno-unused-parameter \ 65 -Wno-suggest-attribute=format \ 66 -Wno-declaration-after-statement 67 68# The below directives will be removed once SCP-firmware pull requests 69# 728 and 732 are merged. 70cflags-lib-y += -Wno-undef \ 71 -Wno-missing-prototypes \ 72 -Wno-missing-declarations \ 73 -Wno-unused-but-set-variable \ 74 -Wno-suggest-attribute=format 75 76# Notification implementation has strict aliasing issues 77cflags-lib-$(CFG_SCPFW_NOTIFICATION) += -Wno-strict-aliasing 78 79cppflags-lib-y += -DBUILD_HAS_SUB_SYSTEM_MODE=1 \ 80 -DBUILD_HAS_BASE_PROTOCOL 81 82cppflags-lib-$(CFG_SCPFW_NOTIFICATION) += -DBUILD_HAS_NOTIFICATION \ 83 -DBUILD_HAS_SCMI_NOTIFICATIONS 84 85cppflags-lib-$(CFG_SCPFW_FAST_CHANNELS) += -DBUILD_HAS_FAST_CHANNELS \ 86 -DBUILD_HAS_SCMI_FAST_CHANNELS 87 88cppflags-lib-$(CFG_SCPFW_CLOCK_TREE_MGMT) += -DBUILD_HAS_CLOCK_TREE_MGMT 89 90cppflags-lib-$(CFG_SCPFW_SCMI_PERF_FAST_CHANNELS) += -DBUILD_HAS_SCMI_PERF_FAST_CHANNELS 91 92cppflags-lib-$(CFG_SCPFW_SCMI_PERF_PROTOCOL_OPS) \ 93 += -DBUILD_HAS_SCMI_PERF_PROTOCOL_OPS 94 95cppflags-lib-$(CFG_SCPFW_SCMI_SENSOR_EVENTS) += -DBUILD_HAS_SCMI_SENSOR_EVENTS 96cppflags-lib-$(CFG_SCPFW_SCMI_SENSOR_V2) += -DBUILD_HAS_SCMI_SENSOR_V2 \ 97 -DBUILD_HAS_SENSOR_TIMESTAMP \ 98 -DBUILD_HAS_SENSOR_MULTI_AXIS \ 99 -DBUILD_HAS_SENSOR_EXT_ATTRIBS \ 100 -DBUILD_HAS_SENSOR_SIGNED_VALUE 101 102cppflags-lib-$(CFG_SCPFW_SENSOR_TIMESTAMP) += -DBUILD_HAS_SENSOR_TIMESTAMP 103cppflags-lib-$(CFG_SCPFW_SENSOR_MULTI_AXIS) += -DBUILD_HAS_SENSOR_MULTI_AXI 104cppflags-lib-$(CFG_SCPFW_SENSOR_EXT_ATTRIBS) += -DBUILD_HAS_SENSOR_EXT_ATTRIBS 105cppflags-lib-$(CFG_SCPFW_SENSOR_SIGNED_VALUE) += -DBUILD_HAS_SENSOR_SIGNED_VALUE 106cppflags-lib-$(CFG_SCPFW_INBAND_MSG_SUPPORT) += -DBUILD_HAS_INBAND_MSG_SUPPORT 107 108# Include SCP-firmware make files 109include $(scpfw-path)/product/optee/sub.mk 110 111