freebsd-ports/graphics/opencv/Makefile
Tobias C. Berner b5ce2eb869 graphics/opencv: fix VTK option
As VTK is built with Qt5 support, bring in the required
dependencies for the build system.

Submitted by:	Oleg Sidorkin <osidorkin@gmail.com>
PR:		261519
2022-01-28 12:42:16 +01:00

233 lines
7.2 KiB
Makefile

PORTNAME= opencv
DISTVERSION= 4.5.5
PORTREVISION= 1
CATEGORIES= graphics
MAINTAINER= tcberner@FreeBSD.org
COMMENT= Open Source Computer Vision library
LICENSE= BSD3CLAUSE
LICENSE_FILE= ${WRKSRC}/LICENSE
LIB_DEPENDS= libfreetype.so:print/freetype2 \
libgflags.so:devel/gflags \
libglog.so:devel/glog \
libharfbuzz.so:print/harfbuzz \
libhdf5.so:science/hdf5
USES= cmake compiler:c++14-lang cpe localbase:ldflags pkgconfig
USE_GITHUB= yes
GH_ACCOUNT= WeChatCV:wechat
GH_PROJECT= opencv_contrib:contrib \
ade:ade \
opencv_3rdparty:extra_mod_3rdparty_boost_descr \
opencv_3rdparty:extra_mod_3rdparty_vgg \
opencv_3rdparty:wechat \
opencv_3rdparty:face \
opencv_3rdparty:ippicv
GH_TAGNAME= v0.1.1f:ade \
34e4206aef44d50e6bbcd0ab06354b52e7466d26:extra_mod_3rdparty_boost_descr \
fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d:extra_mod_3rdparty_vgg \
a8b69ccc738421293254aec5ddb38bd523503252:wechat \
8afa57abc8229d611c4937165d20e2a2d9fc5a12:face \
a56b6ac6f030c312b2dce17430eef13aed9af274:ippicv
CMAKE_ON= OPENCV_GENERATE_PKGCONFIG
CMAKE_OFF= OPENCV_GENERATE_SETUPVARS \
BUILD_opencv_python2 \
BUILD_TESTS \
WITH_TESSERACT
CMAKE_ARGS= -DOPENCV_EXTRA_MODULES_PATH="${WRKSRC}/contrib/modules"
DATADIR= ${PREFIX}/share/${PORTNAME}4
PLIST_SUB= SHLIB_VER=${DISTVERSION}
OPTIONS_DEFINE= EIGEN GDAL GDCM HARDENING JAVA LTO OPENCL PATENTED PROTOBUF PYTHON TBB
OPTIONS_GROUP= GUI IMAGE VIDEO
OPTIONS_GROUP_GUI= GTK3 VTK
OPTIONS_GROUP_IMAGE= GPHOTO2 JPEG OPENEXR PNG TIFF
OPTIONS_GROUP_VIDEO= DC1394 FFMPEG GSTREAMER V4L VULKAN WEBP XINE
OPTIONS_SINGLE= BLAS
OPTIONS_SINGLE_BLAS= ATLAS OPENBLAS NOBLAS
OPTIONS_RADIO= JPEG2K
OPTIONS_RADIO_JPEG2K= JASPER OPENJPEG
OPTIONS_DEFAULT= EIGEN GDAL GDCM OPENCL PROTOBUF PYTHON \
DC1394 GSTREAMER V4L VULKAN WEBP \
GPHOTO2 JPEG OPENEXR PNG TIFF \
OPENBLAS \
OPENJPEG
OPTIONS_SUB= yes
# Normal options (EIGEN GDAL GDCM HARDENING JAVA LTO OPENCL PATENTED PROTOBUF PYTHON TBB)
EIGEN_DESC= Add Eigen v3 Support, builds sfm modules
EIGEN_CMAKE_BOOL= WITH_EIGEN
EIGEN_USES= eigen:3
GDAL_DESC= Add Geospatial Data Abstraction Library Support
GDAL_CMAKE_BOOL= WITH_GDAL
GDAL_LIB_DEPENDS= libgdal.so:graphics/gdal
GDCM_DESC= Add Open source DICOM library Support
GDCM_CMAKE_BOOL= WITH_GDCM
GDCM_LIB_DEPENDS= libgdcmMSFF.so:devel/gdcm
HARDENING_DESC= Enables Build Hardening
HARDENING_CMAKE_BOOL= ENABLE_BUILD_HARDENING
JAVA_DESC= Enable Java Support
JAVA_BUILD_DEPENDS= ant:devel/apache-ant
JAVA_CMAKE_BOOL= BUILD_opencv_java BUILD_opencv_java_bindings_generator BUILD_JAVA
JAVA_MAKE_ENV= JAVACMD=${JAVA}
JAVA_USE= JAVA=yes
LTO_DESC= Enables Link Time Optimizations
LTO_CMAKE_BOOL= ENABLE_THIN_LTO
OPENCL_DESC= Add OpenCL Support
OPENCL_CMAKE_BOOL= WITH_OPENCL
OPENCL_BUILD_DEPENDS= opencl>=0:devel/opencl
OPENCL_RUN_DEPENDS= opencl>=0:devel/opencl
PATENTED_DESC= Enable patented 2d feature detection USE AT OWN RISK
PATENTED_CMAKE_BOOL= OPENCV_ENABLE_NONFREE
PROTOBUF_DESC= Enable protobuf support, builds dnn modules
PROTOBUF_CMAKE_BOOL= WITH_PROTOBUF
PROTOBUF_LIB_DEPENDS= libprotobuf.so:devel/protobuf
PYTHON_DESC= Enable Python Support 3.6 or greater
PYTHON_BUILD_DEPENDS= ${PYNUMPY}
PYTHON_RUN_DEPENDS= ${PYNUMPY}
PYTHON_USES= python:3.6+
PYTHON_CMAKE_BOOL= BUILD_opencv_python3
PYTHON_CMAKE_ON= -DOPENCV_PYTHON3_INSTALL_PATH=${PYTHON_SITELIBDIR}
TBB_DESC= Add Intel Threading Building Blocks Support
TBB_CMAKE_BOOL= WITH_TBB
TBB_LIB_DEPENDS= libtbb.so:devel/tbb
###
# GUI group options (GTK3 VTK)
GTK3_USES= gnome
GTK3_USE= gnome=gtk30
GTK3_CMAKE_BOOL= WITH_GTK
VTK_DESC= Include VTK library support (build opencv_viz module)
VTK_CMAKE_BOOL= WITH_VTK
VTK_LIB_DEPENDS= libvtkCommonCore-9.1.so:math/vtk9
VTK_USES= qt:5
VTK_USE= QT=buildtools_build,qmake_build
###
# IMAGE group options (GPHOTO2 JPEG OPENEXR PNG TIFF)
GPHOTO2_DESC= Add Gphoto2 Support
GPHOTO2_CMAKE_BOOL= WITH_GPHOTO2
GPHOTO2_LIB_DEPENDS= libgphoto2.so:graphics/libgphoto2
JPEG_DESC= Add LibJpeg Support
JPEG_CMAKE_BOOL= WITH_JPEG
JPEG_USES= jpeg
OPENEXR_DESC= Add OpenEXR Support
OPENEXR_CMAKE_BOOL= WITH_OPENEXR
OPENEXR_LIB_DEPENDS= libOpenEXR.so:graphics/openexr
PNG_DESC= Add LibPNG Support
PNG_CMAKE_BOOL= WITH_PNG
PNG_LIB_DEPENDS= libpng16.so:graphics/png
TIFF_DESC= Add LibTIFF Support
TIFF_CMAKE_BOOL= WITH_TIFF
TIFF_LIB_DEPENDS= libtiff.so:graphics/tiff
###
# VIDEO group options (DC1394 FFMPEG GSTREAMER V4L VULKAN WEBP XINE)
DC1394_DESC= IEEE 1394 camera support
DC1394_CMAKE_BOOL= WITH_1394
DC1394_LIB_DEPENDS= libdc1394.so:multimedia/libdc1394
FFMPEG_DESC= Link with ffmpeg
FFMPEG_CMAKE_BOOL= WITH_FFMPEG
FFMPEG_LIB_DEPENDS= libavcodec.so:multimedia/ffmpeg
GSTREAMER_DESC= Add GSTREAMER Support
GSTREAMER_CMAKE_BOOL= WITH_GSTREAMER
GSTREAMER_USE= GSTREAMER1=yes
V4L_DESC= Enable support for Video for Linux
V4L_CMAKE_BOOL= WITH_V4L WITH_LIBV4L
V4L_BUILD_DEPENDS= ${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat
V4L_LIB_DEPENDS= libv4l2.so:multimedia/libv4l
VULKAN_DESC= Add Vulkan Support
VULKAN_CMAKE_BOOL= WITH_VULKAN
VULKAN_CMAKE_ON= -DVULKAN_INCLUDE_DIRS=${LOCALBASE}/include
VULKAN_BUILD_DEPENDS= vulkan-headers>0:graphics/vulkan-headers
WEBP_DESC= Add Webp Support
WEBP_CMAKE_BOOL= WITH_WEBP
WEBP_LIB_DEPENDS= libwebp.so:graphics/webp
XINE_DESC= Add Xine Support
XINE_CMAKE_BOOL= WITH_XINE
XINE_LIB_DEPENDS= libxine.so:multimedia/libxine
###
# BLAS group options (ATLAS OPENBLAS NOBLAS)
ATLAS_DESC= ATLAS blas implementation with lapacke
ATLAS_USES= blaslapack:atlas
ATLAS_LIB_DEPENDS= liblapacke.so:math/lapacke
OPENBLAS_DESC= OpenBLAS blas implementation with lapacke
OPENBLAS_USES= blaslapack:openblas
OPENBLAS_LIB_DEPENDS= liblapacke.so:math/lapacke
NOBLAS_DESC= Disable support for lapack/blas
NOBLAS_CMAKE_BOOL_OFF= WITH_LAPACK
###
# JPEG2K group options (JASPER OPENJPEG)
JASPER_DESC= Add Jasper Support for JPEG2000
JASPER_CMAKE_BOOL= WITH_JASPER
JASPER_LIB_DEPENDS= libjasper.so:graphics/jasper
OPENJPEG_DESC= Add OpenJPEG Support for JPEG2000, OpenCV preferred
OPENJPEG_CMAKE_BOOL= WITH_OPENJPEG
OPENJPEG_LIB_DEPENDS= libopenjp2.so:graphics/openjpeg
###
_IPPICV_i386= ippicv/ippicv_2020_lnx_ia32_20191018_general.tgz
_IPPICV_amd64= ippicv/ippicv_2020_lnx_intel64_20191018_general.tgz
post-extract:
# Handle contrib
${MV} ${WRKSRC_contrib} ${WRKSRC}/contrib
# Handle prefetched ade modul
${MKDIR} ${BUILD_WRKSRC}/3rdparty/ade
${MV} ${WRKSRC_ade} ${BUILD_WRKSRC}/3rdparty/ade
# Handle prefetched xfeatures2d
${MKDIR} ${BUILD_WRKSRC}/downloads/xfeatures2d
${CP} ${WRKSRC_extra_mod_3rdparty_boost_descr}/* ${BUILD_WRKSRC}/downloads/xfeatures2d
${CP} ${WRKSRC_extra_mod_3rdparty_vgg}/* ${BUILD_WRKSRC}/downloads/xfeatures2d
# Handle prefetched wechat
${MKDIR} ${BUILD_WRKSRC}/downloads/wechat_qrcode
${CP} ${WRKSRC_wechat}/* ${BUILD_WRKSRC}/downloads/wechat_qrcode/
# Handle Face
${MKDIR} ${BUILD_WRKSRC}/share/opencv4/testdata/cv/face
${CP} ${WRKSRC_face}/* ${BUILD_WRKSRC}/share/opencv4/testdata/cv/face
# Handle ippicv
.if defined(_IPPICV_${ARCH})
${MKDIR} ${BUILD_WRKSRC}/3rdparty/ippicv
(cd ${BUILD_WRKSRC}/3rdparty/ippicv && ${EXTRACT_CMD} -xf ${WRKSRC_ippicv}/${_IPPICV_${ARCH}})
.endif
post-patch:
${REINPLACE_CMD} -e 's|/usr/lib/atlas-base|${LOCALBASE}/lib|g' ${WRKSRC}/cmake/OpenCVFindAtlas.cmake
${REINPLACE_CMD} -e 's|/usr/include/atlas|${LOCALBASE}/include|g' ${WRKSRC}/cmake/OpenCVFindAtlas.cmake
.include <bsd.port.mk>