DepperDan/build_functions/build_opencv.py

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