aboutsummaryrefslogtreecommitdiff
path: root/graphics/opencv/Makefile
blob: 180d1a26afc7631eeef70530b35680a9fd13c3a7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
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>