Added vcpkg build to CI (#17808)

This commit is contained in:
Ilya Lavrenov 2023-06-01 10:31:10 +04:00 committed by GitHub
parent ac26216869
commit 0b6b16c83a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 217 additions and 19 deletions

View File

@ -31,6 +31,13 @@ pr:
- 'tools/*' - 'tools/*'
- 'tests/layer_tests/*' - 'tests/layer_tests/*'
resources:
repositories:
- repository: vcpkg
type: github
endpoint: openvinotoolkit
name: microsoft/vcpkg
variables: variables:
- group: github - group: github
@ -48,9 +55,11 @@ jobs:
VSTS_HTTP_TIMEOUT: 200 VSTS_HTTP_TIMEOUT: 200
BUILD_TYPE: Release BUILD_TYPE: Release
OPENVINO_REPO_DIR: $(Build.Repository.LocalPath) OPENVINO_REPO_DIR: $(Build.Repository.LocalPath)
VCPKG_ROOT: $(OPENVINO_REPO_DIR)/../vcpkg
WORK_DIR: $(Pipeline.Workspace)/_w WORK_DIR: $(Pipeline.Workspace)/_w
BUILD_DIR: $(WORK_DIR)/build BUILD_DIR: $(WORK_DIR)/build
ANDROID_TOOLS: $(WORK_DIR)/android_tools ANDROID_TOOLS: $(WORK_DIR)/android_tools
ANDROID_NDK_HOME: $(WORK_DIR)/android_tools/ndk-bundle
ANDROID_SDK_VERSION: 29 ANDROID_SDK_VERSION: 29
ANDROID_ABI_CONFIG: arm64-v8a ANDROID_ABI_CONFIG: arm64-v8a
TMP_DIR: /mnt/tmp TMP_DIR: /mnt/tmp
@ -108,21 +117,25 @@ jobs:
displayName: 'Make dir' displayName: 'Make dir'
- checkout: self - checkout: self
clean: 'true'
submodules: 'true' submodules: 'true'
clean: 'true'
path: openvino path: openvino
- checkout: vcpkg
clean: 'true'
path: vcpkg
- script: | - script: |
set -e set -e
sudo -E $(OPENVINO_REPO_DIR)/install_build_dependencies.sh # generic dependencies
# Move into contrib install_build_dependencies.sh sudo -E apt --assume-yes install ccache scons default-jdk python3-pip ninja-build
sudo apt --assume-yes install scons crossbuild-essential-arm64 default-jdk # vcpkg requires cmake 3.19 or later
# Speed up build python3 -m pip install -U pip cmake
sudo apt -y --no-install-recommends install unzip # vcpkg's tool dependencies
wget https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-linux.zip sudo -E apt --assume-yes install curl zip unzip tar
unzip ninja-linux.zip # vcpkg tree of dependencies require extra packages
sudo cp -v ninja /usr/local/bin/ sudo -E apt --assume-yes install pkg-config linux-libc-dev
# Install Android SDK, NDK and TOOLS # Install Android SDK, NDK and Tools
sudo apt -y --no-install-recommends install unzip sudo apt -y --no-install-recommends install unzip
wget https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip wget https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip
unzip commandlinetools-linux-7583922_latest.zip unzip commandlinetools-linux-7583922_latest.zip
@ -130,19 +143,29 @@ jobs:
./cmdline-tools/bin/sdkmanager --sdk_root=$(ANDROID_TOOLS) --install "ndk-bundle" "platform-tools" "platforms;android-$(ANDROID_SDK_VERSION)" ./cmdline-tools/bin/sdkmanager --sdk_root=$(ANDROID_TOOLS) --install "ndk-bundle" "platform-tools" "platforms;android-$(ANDROID_SDK_VERSION)"
displayName: 'Install dependencies' displayName: 'Install dependencies'
- script: |
$(VCPKG_ROOT)/bootstrap-vcpkg.sh --disableMetrics
displayName: 'Build vcpkg'
- task: CMake@1 - task: CMake@1
inputs: inputs:
cmakeArgs: > cmakeArgs: >
-G "Ninja Multi-Config" -G Ninja
-DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_VERBOSE_MAKEFILE=ON
-DCMAKE_TOOLCHAIN_FILE=$(ANDROID_TOOLS)/ndk-bundle/build/cmake/android.toolchain.cmake -DCMAKE_BUILD_TYPE=$(BUILD_TYPE)
-DVCPKG_TARGET_TRIPLET=arm64-android
-DCMAKE_TOOLCHAIN_FILE=$(VCPKG_ROOT)/scripts/buildsystems/vcpkg.cmake
-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=$(ANDROID_NDK_HOME)/build/cmake/android.toolchain.cmake
-DCMAKE_COMPILE_WARNING_AS_ERROR=ON -DCMAKE_COMPILE_WARNING_AS_ERROR=ON
-DANDROID_ABI=$(ANDROID_ABI_CONFIG) -DANDROID_ABI=$(ANDROID_ABI_CONFIG)
-DANDROID_STL=c++_shared
-DANDROID_PLATFORM=$(ANDROID_SDK_VERSION) -DANDROID_PLATFORM=$(ANDROID_SDK_VERSION)
-DENABLE_PYTHON=OFF
-DENABLE_SYSTEM_OPENCL=ON
-DENABLE_SYSTEM_PROTOBUF=ON
-DENABLE_SYSTEM_PUGIXML=ON
-DENABLE_SYSTEM_SNAPPY=ON
-DENABLE_INTEL_GPU=ON
-DENABLE_TESTS=ON -DENABLE_TESTS=ON
-DCMAKE_CXX_LINKER_LAUNCHER=ccache
-DCMAKE_C_LINKER_LAUNCHER=ccache
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache
-S $(OPENVINO_REPO_DIR) -S $(OPENVINO_REPO_DIR)

View File

@ -24,9 +24,9 @@ endif()
ie_dependent_option (ENABLE_INTEL_GPU "GPU OpenCL-based plugin for OpenVINO Runtime" ${ENABLE_INTEL_GPU_DEFAULT} "X86_64 OR AARCH64;NOT APPLE;NOT WINDOWS_STORE;NOT WINDOWS_PHONE" OFF) ie_dependent_option (ENABLE_INTEL_GPU "GPU OpenCL-based plugin for OpenVINO Runtime" ${ENABLE_INTEL_GPU_DEFAULT} "X86_64 OR AARCH64;NOT APPLE;NOT WINDOWS_STORE;NOT WINDOWS_PHONE" OFF)
if (ANDROID OR (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0)) if (ANDROID OR (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0) OR NOT BUILD_SHARED_LIBS)
# oneDNN doesn't support old compilers and android builds for now, so we'll # oneDNN doesn't support old compilers and android builds for now, so we'll build GPU plugin without oneDNN
# build GPU plugin without oneDNN # also, in case of static build CPU's and GPU's oneDNNs will conflict, so we are disabling GPU's one in this case
set(ENABLE_ONEDNN_FOR_GPU_DEFAULT OFF) set(ENABLE_ONEDNN_FOR_GPU_DEFAULT OFF)
else() else()
set(ENABLE_ONEDNN_FOR_GPU_DEFAULT ON) set(ENABLE_ONEDNN_FOR_GPU_DEFAULT ON)
@ -55,7 +55,11 @@ Usage: -DSELECTIVE_BUILD=ON -DSELECTIVE_BUILD_STAT=/path/*.csv" OFF
ie_option (ENABLE_DOCS "Build docs using Doxygen" OFF) ie_option (ENABLE_DOCS "Build docs using Doxygen" OFF)
find_package(PkgConfig QUIET) if(NOT ANDROID)
# on Android build FindPkgConfig.cmake finds host system pkg-config, which is not appropriate
find_package(PkgConfig QUIET)
endif()
ie_dependent_option (ENABLE_PKGCONFIG_GEN "Enable openvino.pc pkg-config file generation" ON "LINUX OR APPLE;PkgConfig_FOUND;BUILD_SHARED_LIBS" OFF) ie_dependent_option (ENABLE_PKGCONFIG_GEN "Enable openvino.pc pkg-config file generation" ON "LINUX OR APPLE;PkgConfig_FOUND;BUILD_SHARED_LIBS" OFF)
# #

171
vcpkg.json Normal file
View File

@ -0,0 +1,171 @@
{
"$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json",
"name": "openvino",
"version": "2023.0.0",
"maintainers": "OpenVINO Developers <openvino@intel.com>",
"summary": "This is a port for Open Visual Inference And Optimization toolkit for AI inference",
"description": [
"Intel® Distribution of OpenVINO™ toolkit is an open-source toolkit for optimizing ",
"and deploying AI inference. It can be used to develop applications and solutions based ",
"on deep learning tasks, such as: emulation of human vision, automatic speech recognition, ",
"natural language processing, recommendation systems, etc. It provides high-performance ",
"and rich deployment options, from edge to cloud"
],
"homepage": "https://github.com/openvinotoolkit/openvino",
"documentation": "https://docs.openvino.ai/latest/index.html",
"license": "Apache-2.0",
"builtin-baseline": "838af19556a975f1755918a360b5f83909857f11",
"dependencies": [
"ade",
{
"name": "pkgconf",
"host": true
},
"pugixml",
{
"name": "tbb",
"$TODO": "Remove condition for Android once it's enabled",
"platform": "(static | osx) & !android",
"version>=": "2021.9.0#1"
},
{
"name": "tbb",
"features": [
"hwloc"
],
"$TODO": "Remove condition for static once static tbbbind can work in oneTBB",
"platform": "!static & !osx",
"version>=": "2021.9.0#1"
},
{
"name": "xbyak",
"platform": "!(arm | uwp)",
"version>=": "6.69"
}
],
"default-features": [
"default-features"
],
"features": {
"auto": {
"description": "Enables Auto plugin for inference"
},
"auto-batch": {
"description": "Enables Auto Batch plugin for inference, useful for throughput mode"
},
"cpu": {
"description": "Enables CPU plugin for inference",
"supports": "!(windows & arm)"
},
"default-features": {
"description": "Enables all default features",
"dependencies": [
{
"name": "openvino",
"features": [
"auto",
"auto-batch",
"hetero",
"ir",
"onnx",
"paddle",
"pytorch",
"tensorflow",
"tensorflow-lite"
]
},
{
"name": "openvino",
"features": [
"cpu"
],
"platform": "!(windows & arm)"
},
{
"name": "openvino",
"features": [
"gpu"
],
"platform": "(x64 | arm64) & !(arm64 & windows) & !(osx | uwp)"
}
]
},
"gpu": {
"description": "Enables GPU plugin for inference",
"supports": "(x64 | arm64) & !(arm64 & windows) & !(osx | uwp)",
"dependencies": [
"opencl"
]
},
"hetero": {
"description": "Enables Hetero plugin for inference"
},
"ir": {
"description": "Enables IR frontend for reading models in OpenVINO IR format"
},
"onnx": {
"description": "Enables ONNX frontend for reading models in ONNX format",
"dependencies": [
{
"name": "onnx",
"version>=": "1.13.1"
},
{
"name": "protobuf",
"version>=": "3.21.2"
},
{
"name": "protobuf",
"host": true,
"version>=": "3.21.2"
}
]
},
"paddle": {
"description": "Enables PaddlePaddle frontend for reading models in PaddlePaddle format",
"dependencies": [
{
"name": "protobuf",
"version>=": "3.21.2"
},
{
"name": "protobuf",
"host": true,
"version>=": "3.21.2"
}
]
},
"pytorch": {
"description": "Enables PyTorch frontend to convert models in PyTorch format"
},
"tensorflow": {
"description": "Enables TensorFlow frontend for reading models in TensorFlow format",
"dependencies": [
{
"name": "protobuf",
"version>=": "3.21.2"
},
{
"name": "protobuf",
"host": true,
"version>=": "3.21.2"
},
"snappy"
]
},
"tensorflow-lite": {
"description": "Enables TensorFlow Lite frontend for reading models in TensorFlow Lite format",
"dependencies": [
{
"name": "flatbuffers",
"version>=": "2.0.6"
},
{
"name": "flatbuffers",
"host": true,
"version>=": "2.0.6"
}
]
}
}
}