meta-intel/dynamic-layers/openembedded-layer/recipes-support/opencv/files/0008-Simplify-searching-for-firmware-files.patch
Martin Jansa 1a669124ec dldt-inference-engine: use firmware files from SRC_URI
* use the files from SRC_URI instead of fetching them during
  configure
* use the firmware files CMake would download during configure
  when not provided already, I haven't found any changelog to
  find out what's the difference between
  firmware_ma2x8x_784.zip   firmware_ma2x8x_mdk_R9.8.zip
  firmware_ma2450_759W.zip  firmware_ma2450_784.zip
  firmware_mv0262_784.zip   firmware_mv0262_mdk_R9.8.zip
  so to be safe use whatever CMake does and what I was testing
  on raspberrypi4 before (because of missing this fix).

  -- Downloading from https://download.01.org/opencv/2019/openvinotoolkit/R3/inference_engine/firmware_ma2450_759W.zip to dldt-inference-engine/2019r3-r0/git/inference-engine/temp/download/firmware_ma2450_759W.zip ...
  -- Downloading from https://download.01.org/opencv/2019/openvinotoolkit/R3/inference_engine/firmware_ma2x8x_mdk_R9.8.zip to dldt-inference-engine/2019r3-r0/git/inference-engine/temp/download/firmware_ma2x8x_mdk_R9.8.zip ...
  -- Downloading from https://download.01.org/opencv/2019/openvinotoolkit/R3/inference_engine/firmware_mv0262_mdk_R9.8.zip to dldt-inference-engine/2019r3-r0/git/inference-engine/temp/download/firmware_mv0262_mdk_R9.8.zip ...

* add PACKAGECONFIG verbose for VERBOSE_BUILD so it's easier
  to debug which firmware files are being used, in this case:
  log.do_configure will show:
  -- ma2450=../mvnc/MvNCAPI-ma2450.mvcmd
  -- ma2x8x=../mvnc/MvNCAPI-ma2x8x.mvcmd
  -- mv0262=../mvnc/MvNCAPI-mv0262.mvcmd

* the patch is very loosely based on the patch removed here:
  http://git.yoctoproject.org/cgit/cgit.cgi/meta-intel/diff/dynamic-layers/openembedded-layer/recipes-support/opencv/files/0003-Supply-firmware-at-build-time.patch?id=649456856dc38086e7d43d740d68198e3395b067
  but I've reworked it competely to simplify this mess :)

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
2019-10-25 10:05:14 +08:00

105 lines
3.8 KiB
Diff

From 1f6f05ae4d3fba95ccc34a4622d06b9d2bf88e80 Mon Sep 17 00:00:00 2001
From: Martin Jansa <Martin.Jansa@gmail.com>
Date: Fri, 27 Sep 2019 11:34:36 +0800
Subject: [PATCH] Simplify searching for firmware files
Disable runtime fetching when VPU_FIRMWARE_*_FILE variables are defined
and point to already fetched firmware instead.
Do it all in one foreach loop.
Upstream-Status: Submitted [https://github.com/opencv/dldt/pull/302]
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
inference-engine/cmake/vpu_dependencies.cmake | 63 ++++++-------------
1 file changed, 20 insertions(+), 43 deletions(-)
diff --git a/inference-engine/cmake/vpu_dependencies.cmake b/inference-engine/cmake/vpu_dependencies.cmake
index 1550163d..e0bc844e 100644
--- a/inference-engine/cmake/vpu_dependencies.cmake
+++ b/inference-engine/cmake/vpu_dependencies.cmake
@@ -4,52 +4,29 @@
set(VPU_SUPPORTED_SOC ma2450 ma2x8x mv0262)
-#
-# Default firmware packages
-#
-
-RESOLVE_DEPENDENCY(VPU_FIRMWARE_MA2450
- ARCHIVE_UNIFIED firmware_ma2450_759W.zip
- TARGET_PATH "${TEMP}/vpu/firmware/ma2450"
- ENVIRONMENT "VPU_FIRMWARE_MA2450"
- FOLDER)
-debug_message(STATUS "ma2450=" ${VPU_FIRMWARE_MA2450})
-
-RESOLVE_DEPENDENCY(VPU_FIRMWARE_MV0262
- ARCHIVE_UNIFIED firmware_mv0262_mdk_R9.8.zip
- TARGET_PATH "${TEMP}/vpu/firmware/mv0262"
- ENVIRONMENT "VPU_FIRMWARE_MV0262"
- FOLDER)
-debug_message(STATUS "mv0262=" ${VPU_FIRMWARE_MV0262})
-
-RESOLVE_DEPENDENCY(VPU_FIRMWARE_MA2X8X
- ARCHIVE_UNIFIED firmware_ma2x8x_mdk_R9.8.zip
- TARGET_PATH "${TEMP}/vpu/firmware/ma2x8x"
- ENVIRONMENT "VPU_FIRMWARE_MA2X8X"
- FOLDER)
-debug_message(STATUS "ma2x8x=" ${VPU_FIRMWARE_MA2X8X})
-
-#
-# CMake variables to override default firmware files
-#
-
foreach(soc IN LISTS VPU_SUPPORTED_SOC)
string(TOUPPER "${soc}" soc_upper)
- set(var_name VPU_FIRMWARE_${soc_upper}_FILE)
+ set(var_name_file VPU_FIRMWARE_${soc_upper}_FILE)
+ set(var_name VPU_FIRMWARE_${soc_upper})
+ set(var_name_zip firmware_${soc}_mdk_R9.8.zip)
+ if(${soc} STREQUAL "ma2450")
+ set(var_name_zip firmware_${soc}_759W.zip)
+ endif()
- find_file(${var_name} MvNCAPI-${soc}.mvcmd "${VPU_FIRMWARE_${soc_upper}}/mvnc")
- if(NOT ${var_name})
- message(FATAL_ERROR "[VPU] Missing ${soc} firmware")
+ if(NOT DEFINED ${var_name_file})
+ RESOLVE_DEPENDENCY(${var_name}
+ ARCHIVE_UNIFIED ${var_name_zip}
+ TARGET_PATH "${TEMP}/vpu/firmware/${soc}"
+ ENVIRONMENT "${var_name}"
+ FOLDER)
+ find_file(${var_name_file} NAMES "MvNCAPI-${soc}.mvcmd" PATHS "${VPU_FIRMWARE_${soc_upper}}/mvnc" NO_CMAKE_FIND_ROOT_PATH)
endif()
-endforeach()
-#
-# `vpu_copy_firmware` CMake target
-#
+ if(NOT ${var_name_file})
+ message(FATAL_ERROR "[VPU] Missing ${soc} firmware, MvNCAPI-${soc}.mvcmd not found in ${VPU_FIRMWARE_${soc_upper}}/mvnc env $ENV{${var_name}} ")
+ endif()
-foreach(soc IN LISTS VPU_SUPPORTED_SOC)
- string(TOUPPER "${soc}" soc_upper)
- set(var_name VPU_FIRMWARE_${soc_upper}_FILE)
+ debug_message(STATUS "${soc}=" ${${var_name_file}})
set(firmware_out_file "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/MvNCAPI-${soc}.mvcmd")
list(APPEND all_firmware_files ${firmware_out_file})
@@ -57,9 +34,9 @@ foreach(soc IN LISTS VPU_SUPPORTED_SOC)
add_custom_command(
OUTPUT ${firmware_out_file}
COMMAND
- ${CMAKE_COMMAND} -E copy ${${var_name}} ${firmware_out_file}
- MAIN_DEPENDENCY ${${var_name}}
- COMMENT "[VPU] Copy ${${var_name}} to ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}"
+ ${CMAKE_COMMAND} -E copy ${${var_name_file}} ${firmware_out_file}
+ MAIN_DEPENDENCY ${${var_name_file}}
+ COMMENT "[VPU] Copy ${${var_name_file}} to ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}"
VERBATIM)
endforeach()