Project import generated by Copybara.
GitOrigin-RevId: 612e50bb8db2ec3dc1c30049372d87a80c3848db
This commit is contained in:
Vendored
+139
-36
@@ -24,22 +24,22 @@ cc_library(
|
||||
visibility = ["//visibility:public"],
|
||||
deps = select({
|
||||
"//mediapipe:android_x86": [
|
||||
"@com_github_glog_glog_v_0_3_5//:glog",
|
||||
"@com_github_glog_glog_no_gflags//:glog",
|
||||
],
|
||||
"//mediapipe:android_x86_64": [
|
||||
"@com_github_glog_glog_v_0_3_5//:glog",
|
||||
"@com_github_glog_glog_no_gflags//:glog",
|
||||
],
|
||||
"//mediapipe:android_armeabi": [
|
||||
"@com_github_glog_glog_v_0_3_5//:glog",
|
||||
"@com_github_glog_glog_no_gflags//:glog",
|
||||
],
|
||||
"//mediapipe:android_arm": [
|
||||
"@com_github_glog_glog_v_0_3_5//:glog",
|
||||
"@com_github_glog_glog_no_gflags//:glog",
|
||||
],
|
||||
"//mediapipe:android_arm64": [
|
||||
"@com_github_glog_glog_v_0_3_5//:glog",
|
||||
"@com_github_glog_glog_no_gflags//:glog",
|
||||
],
|
||||
"//mediapipe:ios": [
|
||||
"@com_github_glog_glog_v_0_3_5//:glog",
|
||||
"@com_github_glog_glog_no_gflags//:glog",
|
||||
],
|
||||
"//mediapipe:macos": [
|
||||
"@com_github_glog_glog//:glog",
|
||||
@@ -53,37 +53,140 @@ cc_library(
|
||||
}),
|
||||
)
|
||||
|
||||
cc_library(
|
||||
name = "opencv",
|
||||
config_setting(
|
||||
name = "opencv_source_build",
|
||||
define_values = {
|
||||
"OPENCV": "source",
|
||||
},
|
||||
visibility = ["//visibility:public"],
|
||||
deps = select({
|
||||
"//mediapipe:android_x86": [
|
||||
"@android_opencv//:libopencv_x86",
|
||||
],
|
||||
"//mediapipe:android_x86_64": [
|
||||
"@android_opencv//:libopencv_x86_64",
|
||||
],
|
||||
"//mediapipe:android_armeabi": [
|
||||
"@android_opencv//:libopencv_armeabi-v7a",
|
||||
],
|
||||
"//mediapipe:android_arm": [
|
||||
"@android_opencv//:libopencv_armeabi-v7a",
|
||||
],
|
||||
"//mediapipe:android_arm64": [
|
||||
"@android_opencv//:libopencv_arm64-v8a",
|
||||
],
|
||||
"//mediapipe:ios": [
|
||||
"@ios_opencv//:opencv",
|
||||
],
|
||||
"//mediapipe:macos": [
|
||||
"@macos_opencv//:opencv",
|
||||
],
|
||||
"//mediapipe:windows": [
|
||||
"@windows_opencv//:opencv",
|
||||
],
|
||||
"//conditions:default": [
|
||||
"@linux_opencv//:opencv",
|
||||
],
|
||||
)
|
||||
|
||||
alias(
|
||||
name = "opencv",
|
||||
actual = select({
|
||||
":opencv_source_build": ":opencv_cmake",
|
||||
"//conditions:default": ":opencv_binary",
|
||||
}),
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
||||
|
||||
load("@rules_foreign_cc//tools/build_defs:cmake.bzl", "cmake_external")
|
||||
|
||||
# Note: this determines the order in which the libraries are passed to the
|
||||
# linker, so if library A depends on library B, library B must come _after_.
|
||||
# Hence core is at the bottom.
|
||||
OPENCV_MODULES = [
|
||||
"calib3d",
|
||||
"features2d",
|
||||
"highgui",
|
||||
"video",
|
||||
"videoio",
|
||||
"imgcodecs",
|
||||
"imgproc",
|
||||
"core",
|
||||
]
|
||||
|
||||
# Note: passing both BUILD_SHARED_LIBS=ON and BUILD_STATIC_LIBS=ON to cmake
|
||||
# still only builds the shared libraries, so we have to choose one or the
|
||||
# other. We build shared libraries by default, but this variable can be used
|
||||
# to switch to static libraries.
|
||||
OPENCV_SHARED_LIBS = True
|
||||
|
||||
OPENCV_SO_VERSION = "3.4"
|
||||
|
||||
cmake_external(
|
||||
name = "opencv_cmake",
|
||||
# Values to be passed as -Dkey=value on the CMake command line;
|
||||
# here are serving to provide some CMake script configuration options
|
||||
cache_entries = {
|
||||
"CMAKE_BUILD_TYPE": "Release",
|
||||
# The module list is always sorted alphabetically so that we do not
|
||||
# cause a rebuild when changing the link order.
|
||||
"BUILD_LIST": ",".join(sorted(OPENCV_MODULES)),
|
||||
"BUILD_TESTS": "OFF",
|
||||
"BUILD_PERF_TESTS": "OFF",
|
||||
"BUILD_EXAMPLES": "OFF",
|
||||
"BUILD_SHARED_LIBS": "ON" if OPENCV_SHARED_LIBS else "OFF",
|
||||
"WITH_ITT": "OFF",
|
||||
"WITH_JASPER": "OFF",
|
||||
"WITH_WEBP": "OFF",
|
||||
# When building tests, by default Bazel builds them in dynamic mode.
|
||||
# See https://docs.bazel.build/versions/master/be/c-cpp.html#cc_binary.linkstatic
|
||||
# For example, when building //mediapipe/calculators/video:opencv_video_encoder_calculator_test,
|
||||
# the dependency //mediapipe/framework/formats:image_frame_opencv will
|
||||
# be built as a shared library, which depends on a cv::Mat constructor,
|
||||
# and expects it to be provided by the main exacutable. The main
|
||||
# executable depends on libimage_frame_opencv.so and links in
|
||||
# libopencv_core.a, which contains cv::Mat. However, if
|
||||
# libopencv_core.a marks its symbols as hidden, then cv::Mat is in
|
||||
# opencv_video_encoder_calculator_test but it is not exported, so
|
||||
# libimage_frame_opencv.so fails to find it.
|
||||
"OPENCV_SKIP_VISIBILITY_HIDDEN": "ON" if not OPENCV_SHARED_LIBS else "OFF",
|
||||
# The COPY actions in modules/python/python_loader.cmake have issues with symlinks.
|
||||
# In any case, we don't use this.
|
||||
"OPENCV_SKIP_PYTHON_LOADER": "ON",
|
||||
# Need to set this too, for the same reason.
|
||||
"BUILD_opencv_python": "OFF",
|
||||
# Ccache causes issues in some of our CI setups. It's not clear that
|
||||
# ccache would be able to work across sandboxed Bazel builds, either.
|
||||
# In any case, Bazel does its own caching of the rule's outputs.
|
||||
"ENABLE_CCACHE": "OFF",
|
||||
},
|
||||
lib_source = "@opencv//:all",
|
||||
linkopts = [] if OPENCV_SHARED_LIBS else [
|
||||
# When using static libraries, the binary that eventually depends on the
|
||||
# libraries also needs to link in their dependencies, which therefore
|
||||
# have to be listed here.
|
||||
# This list depends on which dependencies CMake finds when it configures
|
||||
# the build, and so depends on what is installed on the local system.
|
||||
# After building, the linkopts for the current setup can be extracted
|
||||
# from lib/pkgconfig/opencv.pc in bazel-out
|
||||
"-ljpeg",
|
||||
"-lpng",
|
||||
"-lz",
|
||||
"-ltiff",
|
||||
"-lImath",
|
||||
"-lIlmImf",
|
||||
"-lIex",
|
||||
"-lHalf",
|
||||
"-lIlmThread",
|
||||
"-ldc1394",
|
||||
"-lavcodec",
|
||||
"-lavformat",
|
||||
"-lavutil",
|
||||
"-lswscale",
|
||||
"-lavresample",
|
||||
"-ldl",
|
||||
"-lm",
|
||||
"-lpthread",
|
||||
"-lrt",
|
||||
],
|
||||
shared_libraries = select({
|
||||
"@bazel_tools//src/conditions:darwin": ["libopencv_%s.%s.dylib" % (module, OPENCV_SO_VERSION) for module in OPENCV_MODULES],
|
||||
# Only the shared objects listed here will be linked in the directory
|
||||
# that Bazel adds to the RUNPATH of dependent executables. You cannot
|
||||
# list both the versioned and unversioned name of the .so, and the
|
||||
# versioned name is the one that the executables actually reference.
|
||||
"//conditions:default": ["libopencv_%s.so.%s" % (module, OPENCV_SO_VERSION) for module in OPENCV_MODULES],
|
||||
}) if OPENCV_SHARED_LIBS else None,
|
||||
static_libraries = [
|
||||
"libopencv_%s.a" % module
|
||||
for module in OPENCV_MODULES
|
||||
] if not OPENCV_SHARED_LIBS else None,
|
||||
)
|
||||
|
||||
alias(
|
||||
name = "opencv_binary",
|
||||
actual = select({
|
||||
"//mediapipe:android_x86": "@android_opencv//:libopencv_x86",
|
||||
"//mediapipe:android_x86_64": "@android_opencv//:libopencv_x86_64",
|
||||
"//mediapipe:android_armeabi": "@android_opencv//:libopencv_armeabi-v7a",
|
||||
"//mediapipe:android_arm": "@android_opencv//:libopencv_armeabi-v7a",
|
||||
"//mediapipe:android_arm64": "@android_opencv//:libopencv_arm64-v8a",
|
||||
"//mediapipe:ios": "@ios_opencv//:opencv",
|
||||
"//mediapipe:macos": "@macos_opencv//:opencv",
|
||||
"//mediapipe:windows": "@windows_opencv//:opencv",
|
||||
"//conditions:default": "@linux_opencv//:opencv",
|
||||
}),
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user