#
# Copyright (c) 2019-2021 Arm Limited. All rights reserved.
#
# 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
#
# 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.
#

add_library(message_process STATIC src/message_process.cpp)
target_include_directories(message_process PUBLIC include ${LINUX_DRIVER_STACK_PATH}/kernel)

target_link_libraries(message_process PRIVATE cmsis_device inference_process ethosu_mailbox ethosu_log)
if (CORE_SOFTWARE_ACCELERATOR STREQUAL "NPU")
    target_link_libraries(message_process PRIVATE ethosu_core_driver)
endif()