111 lines
4.2 KiB
Python
111 lines
4.2 KiB
Python
# (c) 2025 by Stephan Menzel
|
|
# Licensed under the Apache License, Version 2.0.
|
|
# See attached file LICENSE for full details
|
|
|
|
from pathlib import Path
|
|
|
|
from build_functions.build_utils import print_banner
|
|
from common.azure import write_package_version_batch
|
|
from common.cmake import cmake_build_install
|
|
from common.git_helpers import clone_git_tag
|
|
import common.settings
|
|
from package.package_info import get_package_info
|
|
|
|
|
|
def build_opencv(prefix: Path | str, sbom: dict):
|
|
print_banner("Building OpenCV")
|
|
|
|
package_info = get_package_info("opencv")
|
|
package_info.add_to_sbom(sbom)
|
|
|
|
eigen_install_path = package_info.dependency_path("eigen")
|
|
zlib_install_path = package_info.dependency_path("zlib")
|
|
|
|
opencv_cmake_args = [
|
|
# Those two undocumented lines are necessary to make the install target use the correct
|
|
# subdir for the libraries
|
|
# ("OpenCV_ARCH:STRING", "x64"),
|
|
# ("OpenCV_RUNTIME:STRING", "vc17"),
|
|
|
|
("BUILD_SHARED_LIBS:BOOL", "OFF"),
|
|
("BUILD_TESTS:BOOL", "OFF"),
|
|
("BUILD_PERF_TESTS:BOOL", "OFF"),
|
|
("BUILD_WITH_STATIC_CRT:BOOL", "OFF"),
|
|
|
|
("BUILD_OPENJPEG:BOOL", "OFF"),
|
|
("BUILD_IPP_IW:BOOL", "OFF"),
|
|
("BUILD_ITT:BOOL", "OFF"),
|
|
("BUILD_JASPER:BOOL", "OFF"),
|
|
("BUILD_JPEG:BOOL", "OFF"),
|
|
("BUILD_ITT:BOOL", "OFF"),
|
|
("BUILD_JAVA:BOOL", "OFF"),
|
|
("BUILD_PNG:BOOL", "OFF"),
|
|
("BUILD_PROTOBUF:BOOL", "OFF"),
|
|
("BUILD_TIFF:BOOL", "OFF"),
|
|
("BUILD_WEBP:BOOL", "OFF"),
|
|
("BUILD_VTK:BOOL", "OFF"),
|
|
("BUILD_ZLIB:BOOL", "OFF"),
|
|
|
|
("BUILD_opencv_apps:BOOL", "OFF"),
|
|
("BUILD_opencv_calib3d:BOOL", "OFF"),
|
|
("BUILD_opencv_dnn:BOOL", "OFF"),
|
|
("BUILD_opencv_features2d:BOOL", "OFF"),
|
|
("BUILD_opencv_flann:BOOL", "OFF"),
|
|
("BUILD_opencv_imgcodecs:BOOL", "ON"),
|
|
("BUILD_opencv_java_bindings_generator:BOOL", "OFF"),
|
|
("BUILD_opencv_js_bindings_generator:BOOL", "OFF"),
|
|
("BUILD_opencv_objc_bindings_generator:BOOL", "OFF"),
|
|
("BUILD_opencv_objdetect:BOOL", "OFF"),
|
|
("BUILD_opencv_ml:BOOL", "OFF"),
|
|
("BUILD_opencv_photo:BOOL", "OFF"),
|
|
("BUILD_opencv_python3:BOOL", "OFF"),
|
|
("BUILD_opencv_python_bindings_generator:BOOL", "OFF"),
|
|
("BUILD_opencv_python_tests:BOOL", "OFF"),
|
|
|
|
("DNN_ENABLE_PLUGINS:BOOL", "OFF"),
|
|
("HIGHGUI_ENABLE_PLUGINS:BOOL", "OFF"),
|
|
|
|
("WITH_ADE:BOOL", "OFF"),
|
|
("WITH_DIRECTML:BOOL", "OFF"),
|
|
("WITH_DIRECTX:BOOL", "OFF"),
|
|
("WITH_DSHOW:BOOL", "OFF"),
|
|
("WITH_EIGEN:BOOL", "ON"),
|
|
("Eigen3_DIR:PATH", str(eigen_install_path / "share" / "eigen3" / "cmake")),
|
|
|
|
("WITH_FLATBUFFERS:BOOL", "OFF"),
|
|
("WITH_WITH_GSTREAMER", "OFF"),
|
|
("WITH_IMGCODEC_HDR:BOOL", "OFF"),
|
|
("WITH_IMGCODEC_PFM:BOOL", "OFF"),
|
|
("WITH_IMGCODEC_PXM:BOOL", "OFF"),
|
|
("WITH_IMGCODEC_SUNRASTER:BOOL", "OFF"),
|
|
("WITH_IPP:BOOL", "OFF"),
|
|
("WITH_ITT:BOOL", "OFF"),
|
|
("WITH_JASPER:BOOL", "OFF"),
|
|
("WITH_JPEG:BOOL", "OFF"),
|
|
("WITH_LAPACK:BOOL", "OFF"),
|
|
("WITH_MSMF:BOOL", "OFF"),
|
|
("WITH_MSMF_DXVA:BOOL", "OFF"),
|
|
("WITH_OBSENSOR:BOOL", "OFF"),
|
|
("WITH_OPENCL:BOOL", "OFF"),
|
|
("WITH_OPENCLAMDBLAS:BOOL", "OFF"),
|
|
("WITH_OPENCLAMDFFT:BOOL", "OFF"),
|
|
("WITH_OPENEXR:BOOL", "OFF"),
|
|
("WITH_OPENJPEG:BOOL", "OFF"),
|
|
("WITH_PNG:BOOL", "OFF"),
|
|
("WITH_PROTOBUF:BOOL", "OFF"),
|
|
("WITH_TIFF:BOOL", "OFF"),
|
|
("WITH_WEBP:BOOL", "OFF"),
|
|
("WITH_WIN32UI:BOOL", "OFF"),
|
|
("WITH_VTK:BOOL", "OFF"),
|
|
|
|
("ZLIB_ROOT:PATH", str(zlib_install_path)),
|
|
("ZLIB_USE_STATIC_LIBS:BOOL", "ON"), # doesn't appear to do its job
|
|
("ZLIB_LIBRARY_RELEASE:FILEPATH", str(zlib_install_path / "lib" / common.settings.zlib_static_lib_name)),
|
|
("ZLIB_LIBRARY_DEBUG:FILEPATH", str(zlib_install_path / "lib" / common.settings.zlib_static_lib_name))
|
|
]
|
|
opencv_dir = clone_git_tag(package_info, recursive=False)
|
|
install_dir = cmake_build_install(opencv_dir, package_info, cmake_args=opencv_cmake_args)
|
|
write_package_version_batch(package_info.version)
|
|
return install_dir
|
|
|