From c01da459e63461dc0ecfe855fd3254c938689386 Mon Sep 17 00:00:00 2001 From: Matthew Sloyan Date: Mon, 23 Jan 2023 10:20:04 +0000 Subject: Refactor TOSA Common to be built without enabling the TOSA Reference backend * The only way to build TOSA common was to enable ARMNNTOSAREF. * Only include and link the required headers/libraries for TOSA Common. * Remove duplicate include_directories calls. Signed-off-by: Matthew Sloyan Change-Id: Ia5a19bf5b0bb903be0248ac550439df1e8ac5aa7 --- CMakeLists.txt | 20 +++++++++++--------- cmake/GlobalConfig.cmake | 20 +++++++++++++++++--- src/backends/tosaCommon/CMakeLists.txt | 6 +----- src/backends/tosaCommon/common.cmake | 4 ++-- src/backends/tosaReference/CMakeLists.txt | 7 +------ 5 files changed, 32 insertions(+), 25 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 476e080442..9eab90afef 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -508,34 +508,36 @@ endif() # Flatbuffers is not included in armnn if the armnnSerializer is not present # Required to target link both flatbuffers and tosa_serialization_lib to armnn -if (ARMNNTOSAREF) +if(ARMNNTOSACOMMON) if (FLATBUFFERS_LIBRARY) target_link_libraries(armnn PUBLIC ${FLATBUFFERS_LIBRARY}) else() # Use PATH_SUFFIXES to help find separate libs for debug/release on Windows builds find_library(FLATBUFFERS_LIBRARY_DEBUG NAMES flatbuffers - HINTS ${FLATBUFFERS_BUILD_DIR} - PATH_SUFFIXES "Debug") + HINTS ${FLATBUFFERS_BUILD_DIR} + PATH_SUFFIXES "Debug") find_library(FLATBUFFERS_LIBRARY_RELEASE NAMES flatbuffers - HINTS ${FLATBUFFERS_BUILD_DIR} - PATH_SUFFIXES "Release") + HINTS ${FLATBUFFERS_BUILD_DIR} + PATH_SUFFIXES "Release") target_link_libraries(armnn PUBLIC - debug ${FLATBUFFERS_LIBRARY_DEBUG} - optimized ${FLATBUFFERS_LIBRARY_RELEASE}) + debug ${FLATBUFFERS_LIBRARY_DEBUG} + optimized ${FLATBUFFERS_LIBRARY_RELEASE}) endif() if (TOSA_SERIALIZATION_LIB) target_link_libraries(armnn PUBLIC -Wl,--whole-archive ${TOSA_SERIALIZATION_LIB} -Wl,--no-whole-archive) else() find_library(TOSA_SERIALIZATION_LIB - NAMES libtosa_serialization_lib.a tosa_serialization_lib - HINTS ${TOSA_SERIALIZATION_LIB_ROOT}/lib /usr/local/lib /usr/lib) + NAMES libtosa_serialization_lib.a tosa_serialization_lib + HINTS ${TOSA_SERIALIZATION_LIB_ROOT}/lib /usr/local/lib /usr/lib) message(STATUS "TOSA serialization library set to ${TOSA_SERIALIZATION_LIB}") target_link_libraries(armnn PUBLIC -Wl,--whole-archive ${TOSA_SERIALIZATION_LIB} -Wl,--no-whole-archive) endif() +endif() +if (ARMNNTOSAREF) if (TOSA_REFERENCE_MODEL_LIB) target_link_libraries(armnn PUBLIC -Wl,--whole-archive ${TOSA_REFERENCE_MODEL_LIB} -Wl,--no-whole-archive) else() diff --git a/cmake/GlobalConfig.cmake b/cmake/GlobalConfig.cmake index e9eb0a9757..0c35422544 100644 --- a/cmake/GlobalConfig.cmake +++ b/cmake/GlobalConfig.cmake @@ -376,9 +376,13 @@ if(ARMNNREF) add_definitions(-DARMNNREF_ENABLED) endif() -# ArmNN TOSA reference backend +# If a backend requires TOSA common, add it here. if(ARMNNTOSAREF) - # Locate the includes for the TOSA serialization library. + set(ARMNNTOSACOMMON ON) +endif() + +if(ARMNNTOSACOMMON) + # Locate the includes for the TOSA serialization library as it is needed for TOSA common and TOSA backends. message(STATUS "TOSA serialization library root set to ${TOSA_SERIALIZATION_LIB_ROOT}") find_path(TOSA_SERIALIZATION_LIB_INCLUDE tosa_serialization_handler.h @@ -390,13 +394,23 @@ if(ARMNNTOSAREF) HINTS ${TOSA_SERIALIZATION_LIB_ROOT}/lib /usr/local/lib /usr/lib) message(STATUS "TOSA serialization library set to ${TOSA_SERIALIZATION_LIB}") - # Next, locate the includes for the TOSA Reference Model. + # Include required headers for TOSA Serialization Library + include_directories(SYSTEM ${FLATBUFFERS_INCLUDE_PATH}) + include_directories(SYSTEM ${PROJECT_SOURCE_DIR}/third-party/half) + include_directories(SYSTEM ${TOSA_SERIALIZATION_LIB_INCLUDE}) +endif() + +# ArmNN TOSA reference backend +if(ARMNNTOSAREF) + # Locate the includes for the TOSA Reference Model, which is specific to the TOSA Reference Backend. message(STATUS "TOSA Reference Model root set to ${TOSA_REFERENCE_MODEL_ROOT}") find_path(TOSA_REFERENCE_MODEL_INCLUDE model_runner.h HINTS ${TOSA_REFERENCE_MODEL_ROOT}/include) message(STATUS "TOSA Reference Model include directory located at: ${TOSA_REFERENCE_MODEL_INCLUDE}") + include_directories(SYSTEM ${TOSA_REFERENCE_MODEL_INCLUDE}) + find_library(TOSA_REFERENCE_MODEL_LIB NAMES tosa_reference_model_lib.a tosa_reference_model_lib HINTS ${TOSA_REFERENCE_MODEL_ROOT}/lib /usr/local/lib /usr/lib) diff --git a/src/backends/tosaCommon/CMakeLists.txt b/src/backends/tosaCommon/CMakeLists.txt index 1b1cc55eab..4a9cd574a9 100644 --- a/src/backends/tosaCommon/CMakeLists.txt +++ b/src/backends/tosaCommon/CMakeLists.txt @@ -1,12 +1,8 @@ # -# Copyright © 2022 Arm Ltd and Contributors. All rights reserved. +# Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved. # SPDX-License-Identifier: MIT # -include_directories(SYSTEM ${FLATBUFFERS_INCLUDE_PATH}) -include_directories(SYSTEM ${PROJECT_SOURCE_DIR}/third-party/half) -include_directories(SYSTEM ${TOSA_SERIALIZATION_LIB_INCLUDE}) - list(APPEND armnnTosaBackend_sources TosaMappings.hpp TosaMappings.cpp diff --git a/src/backends/tosaCommon/common.cmake b/src/backends/tosaCommon/common.cmake index f15c063700..3823cf1d72 100644 --- a/src/backends/tosaCommon/common.cmake +++ b/src/backends/tosaCommon/common.cmake @@ -1,9 +1,9 @@ # -# Copyright © 2022 Arm Ltd and Contributors. All rights reserved. +# Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved. # SPDX-License-Identifier: MIT # -if(ARMNNTOSAREF) +if(ARMNNTOSACOMMON) add_subdirectory(${PROJECT_SOURCE_DIR}/src/backends/tosaCommon) list(APPEND armnnLibraries armnnTosaBackend) list(APPEND armnnLibraries armnnTosaBackendOperators) diff --git a/src/backends/tosaReference/CMakeLists.txt b/src/backends/tosaReference/CMakeLists.txt index c053def50f..35393cc915 100644 --- a/src/backends/tosaReference/CMakeLists.txt +++ b/src/backends/tosaReference/CMakeLists.txt @@ -1,13 +1,8 @@ # -# Copyright © 2022 Arm Ltd and Contributors. All rights reserved. +# Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved. # SPDX-License-Identifier: MIT # -include_directories(SYSTEM ${FLATBUFFERS_INCLUDE_PATH}) -include_directories(SYSTEM ${PROJECT_SOURCE_DIR}/third-party/half) -include_directories(SYSTEM ${TOSA_SERIALIZATION_LIB_INCLUDE}) -include_directories(SYSTEM ${TOSA_REFERENCE_MODEL_INCLUDE}) - if(ARMNNTOSAREF) list(APPEND armnnTosaRefBackend_sources TosaRefBackend.cpp -- cgit v1.2.1