From e510afcdd921fe2e66d74eb43dfc1f309d111422 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EC=98=A4=ED=98=95=EC=84=9D/On-Device=20Lab=28SR=29/Staff?= =?utf8?q?=20Engineer/=EC=82=BC=EC=84=B1=EC=A0=84=EC=9E=90?= Date: Thu, 7 Nov 2019 16:21:18 +0900 Subject: [PATCH] [runtime] Use target overlay directory for acl (#8812) Use overlay directory to install acl on build process For test, copy acl library to runtime library directory on runtime install process Signed-off-by: Hyeongseok Oh --- Makefile.template | 12 ++++++--- infra/cmake/packages/ARMComputeConfig.cmake | 39 +++++++++++------------------ infra/nnfw/CMakeLists.txt | 2 ++ 3 files changed, 26 insertions(+), 27 deletions(-) diff --git a/Makefile.template b/Makefile.template index fcb24ea..21bdb12 100644 --- a/Makefile.template +++ b/Makefile.template @@ -97,6 +97,7 @@ INSTALL_FOLDER=$(WORKFOLDER)/out BUILD_ALIAS=$(WORKHOME)/obj INSTALL_ALIAS=$(WORKHOME)/out +OVERLAY_FOLDER?=$(CURDIR)/$(WORKDIR)/overlay INSTALL_PATH?=$(CURDIR)/$(WORKDIR)/out TIMESTAMP_CONFIGURE=$(WORKDIR)/CONFIGURE @@ -130,6 +131,7 @@ configure_internal: -DCMAKE_BUILD_TYPE=$(BUILD_TYPE_LC) -DTARGET_ARCH=$(TARGET_ARCH_LC) \ -DHOST_OS=$(HOST_OS) \ -DTARGET_OS=$(TARGET_OS) \ + -DNNFW_OVERLAY_DIR=$(OVERLAY_FOLDER) \ $(OPTIONS) touch $(TIMESTAMP_CONFIGURE) @@ -145,13 +147,17 @@ install_internal: ln -s $(INSTALL_FOLDER) $(INSTALL_ALIAS) touch $(TIMESTAMP_INSTALL) -build_test_suite: install_internal +install_internal_acl: +# Workaround to install acl for test (ignore error when there is no file to copy) + cp $(OVERLAY_FOLDER)/lib/* $(INSTALL_ALIAS)/lib || true + +build_test_suite: install_internal install_internal_acl @echo "packaging test suite" @rm -rf $(INSTALL_ROOT)/test-suite.tar.gz @tar -zcf test-suite.tar.gz tests/scripts tests/framework infra $(INSTALL_ALIAS) --dereference @mv test-suite.tar.gz $(INSTALL_ROOT)/. -build_coverage_suite: install_internal +build_coverage_suite: install_internal install_internal_acl @echo "packaging test-coverage suite" @rm -rf $(INSTALL_ROOT)/coverage-suite.tar.gz @find Product -name "*.gcno" > include_lists.txt @@ -173,4 +179,4 @@ $(TIMESTAMP_CONFIGURE): configure_internal $(TIMESTAMP_BUILD): $(TIMESTAMP_CONFIGURE) build_internal -$(TIMESTAMP_INSTALL): $(TIMESTAMP_BUILD) install_internal +$(TIMESTAMP_INSTALL): $(TIMESTAMP_BUILD) install_internal install_internal_acl diff --git a/infra/cmake/packages/ARMComputeConfig.cmake b/infra/cmake/packages/ARMComputeConfig.cmake index 8ed487a..99be6b7 100644 --- a/infra/cmake/packages/ARMComputeConfig.cmake +++ b/infra/cmake/packages/ARMComputeConfig.cmake @@ -5,9 +5,11 @@ function(_ARMCompute_Import) find_path(INCLUDE_DIR NAMES arm_compute/core/ITensor.h PATHS ${ARMCompute_INCLUDE_SEARCH_PATHS}) - find_library(CORE_LIBRARY NAMES arm_compute_core PATHS ${ARMCompute_LIB_SEARCH_PATHS}) - find_library(RUNTIME_LIBRARY NAMES arm_compute PATHS ${ARMCompute_LIB_SEARCH_PATHS}) - find_library(GRAPH_LIBRARY NAMES arm_compute_graph PATHS ${ARMCompute_LIB_SEARCH_PATHS}) + find_library(CORE_LIBRARY NAMES arm_compute_core PATHS ${ARMCompute_LIB_SEARCH_PATHS} CMAKE_FIND_ROOT_PATH_BOTH) + find_library(RUNTIME_LIBRARY NAMES arm_compute PATHS ${ARMCompute_LIB_SEARCH_PATHS} CMAKE_FIND_ROOT_PATH_BOTH) + find_library(GRAPH_LIBRARY NAMES arm_compute_graph PATHS ${ARMCompute_LIB_SEARCH_PATHS} CMAKE_FIND_ROOT_PATH_BOTH) + + message(STATUS "Search acl in ${ARMCompute_LIB_SEARCH_PATHS}") if(NOT INCLUDE_DIR) nnas_find_package(ARMComputeSource QUIET) @@ -18,31 +20,20 @@ function(_ARMCompute_Import) set(INCLUDE_DIR ${ARMComputeSource_DIR} ${ARMComputeSource_DIR}/include) endif(NOT INCLUDE_DIR) - # NOTE '${CMAKE_INSTALL_PREFIX}/lib' should be searched as CI server places - # pre-built ARM compute libraries on this directory - if(NOT CORE_LIBRARY AND EXISTS ${CMAKE_INSTALL_PREFIX}/lib/libarm_compute_core.so) - set(CORE_LIBRARY ${CMAKE_INSTALL_PREFIX}/lib/libarm_compute_core.so) - endif() - if(NOT CORE_LIBRARY) set(ARMCompute_FOUND FALSE PARENT_SCOPE) + message(STATUS "Cannot find libarm_compute_core.so") return() endif() - if(NOT RUNTIME_LIBRARY AND EXISTS ${CMAKE_INSTALL_PREFIX}/lib/libarm_compute.so) - set(RUNTIME_LIBRARY ${CMAKE_INSTALL_PREFIX}/lib/libarm_compute.so) - endif() - if(NOT RUNTIME_LIBRARY) + message(STATUS "Cannot find libarm_compute.so") set(ARMCompute_FOUND FALSE PARENT_SCOPE) return() endif() - if(NOT GRAPH_LIBRARY AND EXISTS ${CMAKE_INSTALL_PREFIX}/lib/libarm_compute_graph.so) - set(GRAPH_LIBRARY ${CMAKE_INSTALL_PREFIX}/lib/libarm_compute_graph.so) - endif() - if(NOT GRAPH_LIBRARY) + message(STATUS "Cannot find libarm_compute_graph.so") set(ARMCompute_FOUND FALSE PARENT_SCOPE) return() endif() @@ -92,9 +83,9 @@ endfunction(_ARMCompute_Check) # Let's build and install ARMCompute libraries # NOTE This function silently returns on error -function(_ARMCompute_Build ARMCompute_PREFIX) +function(_ARMCompute_Build ARMCompute_INSTALL_PREFIX) ### Check whether library exists - _ARMCompute_Check(ARMCompute_FOUND ${ARMCompute_PREFIX}) + _ARMCompute_Check(ARMCompute_FOUND ${ARMCompute_INSTALL_PREFIX}) if(ARMCompute_FOUND) return() @@ -176,18 +167,18 @@ function(_ARMCompute_Build ARMCompute_PREFIX) # Install ARMCompute libraries # Ps. CI server will copy below installed libraries to target device to test. - execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory "${ARMCompute_PREFIX}" + execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory "${ARMCompute_INSTALL_PREFIX}" WORKING_DIRECTORY ${ARMComputeSource_DIR} RESULT_VARIABLE ARMCompute_BUILD) - execute_process(COMMAND ${CMAKE_COMMAND} -E copy "build/${BUILD_DIR}/libarm_compute_core.so" "${ARMCompute_PREFIX}" - COMMAND ${CMAKE_COMMAND} -E copy "build/${BUILD_DIR}/libarm_compute.so" "${ARMCompute_PREFIX}" - COMMAND ${CMAKE_COMMAND} -E copy "build/${BUILD_DIR}/libarm_compute_graph.so" "${ARMCompute_PREFIX}" + execute_process(COMMAND ${CMAKE_COMMAND} -E copy "build/${BUILD_DIR}/libarm_compute_core.so" "${ARMCompute_INSTALL_PREFIX}" + COMMAND ${CMAKE_COMMAND} -E copy "build/${BUILD_DIR}/libarm_compute.so" "${ARMCompute_INSTALL_PREFIX}" + COMMAND ${CMAKE_COMMAND} -E copy "build/${BUILD_DIR}/libarm_compute_graph.so" "${ARMCompute_INSTALL_PREFIX}" WORKING_DIRECTORY ${ARMComputeSource_DIR} RESULT_VARIABLE ARMCompute_BUILD) endfunction(_ARMCompute_Build) -set(ARMCompute_PREFIX ${CMAKE_INSTALL_PREFIX}/lib) +set(ARMCompute_PREFIX ${NNFW_OVERLAY_DIR}/lib) # This is a workaround for CI issues # Ps. CI server will copy below installed libraries to target device to test. diff --git a/infra/nnfw/CMakeLists.txt b/infra/nnfw/CMakeLists.txt index adfd2af..5858e94 100644 --- a/infra/nnfw/CMakeLists.txt +++ b/infra/nnfw/CMakeLists.txt @@ -19,6 +19,8 @@ set(NNAS_EXTERNALS_DIR ) set(NNAS_OVERLAY_DIR "${CMAKE_BINARY_DIR}/overlay" CACHE INTERNAL "Where locally built external dependencies are installed") +set(NNFW_OVERLAY_DIR "${CMAKE_BINARY_DIR}/overlay" CACHE + INTERNAL "Where locally built external dependencies for target are installed") # This allows find_package to access configurations installed inside overlay list(APPEND CMAKE_PREFIX_PATH "${NNAS_OVERLAY_DIR}") -- 2.7.4