diff options
Diffstat (limited to 'source/hal/source/components/stdout/CMakeLists.txt')
-rw-r--r-- | source/hal/source/components/stdout/CMakeLists.txt | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/source/hal/source/components/stdout/CMakeLists.txt b/source/hal/source/components/stdout/CMakeLists.txt new file mode 100644 index 0000000..f1e26ff --- /dev/null +++ b/source/hal/source/components/stdout/CMakeLists.txt @@ -0,0 +1,110 @@ +#---------------------------------------------------------------------------- +# Copyright (c) 2022 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 +# +# 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. +#---------------------------------------------------------------------------- + +######################################################### +# Wrapper for enabling stdout and stderr facility # +######################################################### +# This is a wrapper around the UART module for CMSDK # +# and PL011 UART drivers with retarget functions. # +######################################################### + +cmake_minimum_required(VERSION 3.15.6) + +project(stdout + DESCRIPTION "Standard output and err redirection over UART" + LANGUAGES C CXX) + + +set(STDOUT_RETARGET OFF CACHE BOOL "Retarget stdout/err to UART") + +# Interface library for standard output: +set(STDOUT_IFACE_TARGET stdout_iface) +add_library(${STDOUT_IFACE_TARGET} INTERFACE) +target_include_directories(${STDOUT_IFACE_TARGET} INTERFACE include) + +if (STDOUT_RETARGET) + + set(STDOUT_COMPONENT_CMSDK stdout_retarget_cmsdk) + set(STDOUT_COMPONENT_PL011 stdout_retarget_pl011) + + add_library(${STDOUT_COMPONENT_CMSDK} STATIC) + add_library(${STDOUT_COMPONENT_PL011} STATIC) + + # Check prerequisites + ## Core platform directory is required to add the UART library project. + if (NOT DEFINED CORE_PLATFORM_DIR) + message(FATAL_ERROR "CORE_PLATFORM_DIR undefined") + endif() + + ## UART0_BASE is the base address for UART configuration. The platform + ## should define it prior to including this library. + if (NOT DEFINED UART0_BASE) + message(WARNING "UART0_BASE undefined, default will be used.") + endif() + + ## Platform component: UART + add_subdirectory(${CORE_PLATFORM_DIR}/drivers/uart ${CMAKE_BINARY_DIR}/uart) + + ## Component sources - public + target_sources(${STDOUT_COMPONENT_CMSDK} + PUBLIC + source/retarget.c) + + ## Component sources - public + target_sources(${STDOUT_COMPONENT_PL011} + PUBLIC + source/retarget.c) + + # Link + target_link_libraries(${STDOUT_COMPONENT_CMSDK} + PUBLIC + ${STDOUT_IFACE_TARGET} + ethosu_uart_cmsdk_apb) + + target_link_libraries(${STDOUT_COMPONENT_PL011} + PUBLIC + ${STDOUT_IFACE_TARGET} + ethosu_uart_pl011) + + # Display status + message(STATUS "CMAKE_CURRENT_SOURCE_DIR: " ${CMAKE_CURRENT_SOURCE_DIR}) + message(STATUS "*******************************************************") + message(STATUS "Library: " ${STDOUT_COMPONENT_CMSDK}) + message(STATUS "Library: " ${STDOUT_COMPONENT_PL011}) + message(STATUS "*******************************************************") + +else() + + # Create static library for retarget (stdout/err over UART) + set(STDOUT_COMPONENT stdout) + add_library(${STDOUT_COMPONENT} STATIC) + + ## Component sources - public + target_sources(${STDOUT_COMPONENT} + PUBLIC + source/user_input.c) + + target_link_libraries(${STDOUT_COMPONENT} + PUBLIC + ${STDOUT_IFACE_TARGET}) + + # Display status + message(STATUS "CMAKE_CURRENT_SOURCE_DIR: " ${CMAKE_CURRENT_SOURCE_DIR}) + message(STATUS "*******************************************************") + message(STATUS "Library: " ${STDOUT_COMPONENT}) + message(STATUS "*******************************************************") +endif() |