1SUMMARY="Open Source Computer Vision Library"
2DESCRIPTION="A collection of algorithms and sample code for various \
3computer vision problems."
4HOMEPAGE="https://opencv.org/"
5COPYRIGHT="2000-2016, Intel Corporation
6	2009-2011, Willow Garage Inc.
7	2009-2016, NVIDIA Corporation
8	2010-2013, Advanced Micro Devices, Inc.
9	2015-2016, OpenCV Foundation
10	2015-2016, Itseez Inc."
11LICENSE="BSD (3-clause)"
12REVISION="15"
13SOURCE_URI="https://github.com/opencv/opencv/archive/$portVersion.tar.gz"
14SOURCE_FILENAME="opencv-$portVersion.tar.gz"
15CHECKSUM_SHA256="4eef85759d5450b183459ff216b4c0fa43e87a4f6aa92c8af649f89336f002ec"
16SOURCE_DIR="opencv-$portVersion"
17PATCHES="opencv3-$portVersion.patchset"
18
19ARCHITECTURES="all !x86_gcc2"
20SECONDARY_ARCHITECTURES="x86"
21
22# On x86_gcc2 we don't want to install the commands in bin/<arch>/, but in bin/.
23commandSuffix=$secondaryArchSuffix
24if [ "$targetArchitecture" = x86_gcc2 ]; then
25	commandSuffix=
26fi
27
28portVersionCompat="$portVersion compat >= ${portVersion%%.*}"
29libVersion="$portVersion"
30libVersionCompat="$libVersion compat >= ${libVersion%.*}"
31
32# pythonVersion="3.10"
33
34PROVIDES="
35	opencv3$secondaryArchSuffix = $portVersionCompat
36	lib:libopencv_calib3d$secondaryArchSuffix = $libVersionCompat
37	lib:libopencv_core$secondaryArchSuffix = $libVersionCompat
38	lib:libopencv_dnn$secondaryArchSuffix = $libVersionCompat
39	lib:libopencv_features2d$secondaryArchSuffix = $libVersionCompat
40	lib:libopencv_flann$secondaryArchSuffix = $libVersionCompat
41	lib:libopencv_highgui$secondaryArchSuffix = $libVersionCompat
42	lib:libopencv_imgcodecs$secondaryArchSuffix = $libVersionCompat
43	lib:libopencv_imgproc$secondaryArchSuffix = $libVersionCompat
44	lib:libopencv_ml$secondaryArchSuffix = $libVersionCompat
45	lib:libopencv_objdetect$secondaryArchSuffix = $libVersionCompat
46	lib:libopencv_photo$secondaryArchSuffix = $libVersionCompat
47	lib:libopencv_shape$secondaryArchSuffix = $libVersionCompat
48	lib:libopencv_stitching$secondaryArchSuffix = $libVersionCompat
49	lib:libopencv_superres$secondaryArchSuffix = $libVersionCompat
50	lib:libopencv_video$secondaryArchSuffix = $libVersionCompat
51	lib:libopencv_videoio$secondaryArchSuffix = $libVersionCompat
52	lib:libopencv_videostab$secondaryArchSuffix = $libVersionCompat
53	"
54REQUIRES="
55	haiku$secondaryArchSuffix
56	lib:libavcodec$secondaryArchSuffix
57	lib:libavformat$secondaryArchSuffix
58	lib:libavutil$secondaryArchSuffix
59	lib:libfreetype$secondaryArchSuffix
60	lib:libgdal$secondaryArchSuffix
61	lib:libGL$secondaryArchSuffix
62	lib:libglib_2.0$secondaryArchSuffix
63	lib:libGLU$secondaryArchSuffix
64	lib:libgphoto2$secondaryArchSuffix
65	lib:libgstapp_1.0$secondaryArchSuffix
66	lib:libgstreamer_1.0$secondaryArchSuffix
67	lib:libgstvideo_1.0$secondaryArchSuffix
68	lib:libhalf_2_4$secondaryArchSuffix
69	lib:libharfbuzz$secondaryArchSuffix
70	lib:libhdf5$secondaryArchSuffix
71	lib:libiex_2_4$secondaryArchSuffix
72	lib:libilmimf_2_4$secondaryArchSuffix
73	lib:libilmthread_2_4$secondaryArchSuffix
74	lib:libimath_2_4$secondaryArchSuffix
75	lib:libintl$secondaryArchSuffix
76	lib:libjasper$secondaryArchSuffix
77	lib:libjpeg$secondaryArchSuffix
78	lib:liblapack$secondaryArchSuffix
79	lib:libopenblas$secondaryArchSuffix
80	lib:libpng16$secondaryArchSuffix
81	lib:libQt5Concurrent$secondaryArchSuffix
82	lib:libQt5Core$secondaryArchSuffix
83	lib:libQt5Gui$secondaryArchSuffix
84	lib:libQt5Test$secondaryArchSuffix
85	lib:libQt5Widgets$secondaryArchSuffix
86	lib:libswscale$secondaryArchSuffix
87	lib:libswresample$secondaryArchSuffix
88	lib:libtiff$secondaryArchSuffix
89	lib:libwebp$secondaryArchSuffix
90	lib:libz$secondaryArchSuffix
91	"
92
93PROVIDES_tools="
94	opencv3${secondaryArchSuffix}_tools = $portVersionCompat
95	cmd:opencv_annotation$commandSuffix = $portVersion
96	cmd:opencv_createsamples$commandSuffix = $portVersion
97	cmd:opencv_interactive_calibration$commandSuffix = $portVersion
98	cmd:opencv_traincascade$commandSuffix = $portVersion
99	cmd:opencv_version$commandSuffix = $portVersion
100	cmd:opencv_visualisation$commandSuffix = $portVersion
101	cmd:opencv_waldboost_detector$commandSuffix = $portVersion
102	"
103REQUIRES_tools="
104	haiku$secondaryArchSuffix
105	opencv3$secondaryArchSuffix == $portVersion base
106	"
107
108BUILD_REQUIRES="
109	haiku${secondaryArchSuffix}_devel
110	devel:cblas$secondaryArchSuffix
111	devel:eigen$secondaryArchSuffix
112	devel:libavcodec$secondaryArchSuffix >= 58
113	devel:libavformat$secondaryArchSuffix >= 58
114	devel:libavutil$secondaryArchSuffix >= 56
115#	devel:libcaffe$secondaryArchSuffix
116	devel:libexif$secondaryArchSuffix
117	devel:libfreetype$secondaryArchSuffix
118	devel:libgdal$secondaryArchSuffix
119#	devel:libgflags$secondaryArchSuffix
120	devel:libGL$secondaryArchSuffix
121	devel:libglib_2.0$secondaryArchSuffix
122	devel:libglog$secondaryArchSuffix
123	devel:libGLU$secondaryArchSuffix
124	devel:libgphoto2$secondaryArchSuffix
125	devel:libgstapp_1.0$secondaryArchSuffix
126	devel:libgstreamer_1.0$secondaryArchSuffix
127	devel:libgstvideo_1.0$secondaryArchSuffix
128	devel:libharfbuzz$secondaryArchSuffix
129	devel:libhdf5$secondaryArchSuffix
130	devel:libilmimf_2_4$secondaryArchSuffix
131	devel:libintl$secondaryArchSuffix
132	devel:libjasper$secondaryArchSuffix
133	devel:libjpeg$secondaryArchSuffix
134	devel:liblapack$secondaryArchSuffix
135	devel:libopenblas$secondaryArchSuffix
136	devel:libopencl_headers$secondaryArchSuffix
137	devel:liborc_0.4$secondaryArchSuffix
138	devel:libpng16$secondaryArchSuffix
139#	devel:libprotobuf$secondaryArchSuffix
140	devel:libQt5Concurrent$secondaryArchSuffix
141	devel:libQt5Core$secondaryArchSuffix
142	devel:libQt5Gui$secondaryArchSuffix
143	devel:libQt5Test$secondaryArchSuffix
144	devel:libQt5Widgets$secondaryArchSuffix
145	devel:libswscale$secondaryArchSuffix >= 5
146#	devel:libswresample$secondaryArchSuffix >= 3
147#	devel:libtesseract$secondaryArchSuffix
148	devel:libtiff$secondaryArchSuffix >= 5
149	devel:libwebp$secondaryArchSuffix >= 7
150	devel:libz$secondaryArchSuffix
151	"
152BUILD_PREREQUIRES="
153#	cmd:ant
154	cmd:cmake
155	cmd:doxygen
156#	cmd:f2py${pythonVersion}
157	cmd:gcc$secondaryArchSuffix
158#	cmd:javac
159#	cmd:jni
160	cmd:ld$secondaryArchSuffix
161	cmd:make
162#	cmd:matlab # maybe later
163	cmd:pkg_config$secondaryArchSuffix
164#	cmd:python${pythonVersion}
165	"
166
167defineDebugInfoPackage opencv3$secondaryArchSuffix \
168	$libDir/libopencv_calib3d.so.$libVersion \
169	$libDir/libopencv_core.so.$libVersion \
170	$libDir/libopencv_dnn.so.$libVersion \
171	$libDir/libopencv_features2d.so.$libVersion \
172	$libDir/libopencv_flann.so.$libVersion \
173	$libDir/libopencv_highgui.so.$libVersion \
174	$libDir/libopencv_imgcodecs.so.$libVersion \
175	$libDir/libopencv_imgproc.so.$libVersion \
176	$libDir/libopencv_ml.so.$libVersion \
177	$libDir/libopencv_objdetect.so.$libVersion \
178	$libDir/libopencv_photo.so.$libVersion \
179	$libDir/libopencv_shape.so.$libVersion \
180	$libDir/libopencv_stitching.so.$libVersion \
181	$libDir/libopencv_superres.so.$libVersion \
182	$libDir/libopencv_video.so.$libVersion \
183	$libDir/libopencv_videoio.so.$libVersion \
184	$libDir/libopencv_videostab.so.$libVersion
185
186BUILD()
187{
188	mkdir -p build_haiku && cd build_haiku
189
190	local ARCH_SUBDIR=
191	if [ -n "$secondaryArchSuffix" ]; then
192		ARCH_SUBDIR="$secondaryArchSuffix/"
193	fi
194
195	cmake .. \
196		-DWITH_GDAL=ON \
197		-DWITH_IPP=OFF \
198		-DWITH_LAPACK=OFF \
199		-DWITH_OPENGL=OFF \
200		-DWITH_QT=ON \
201		-DWITH_EIGEN=ON \
202		-DCMAKE_BUILD_TYPE=Release \
203		-DCMAKE_SKIP_RPATH=ON \
204		-DENABLE_PIC=OFF \
205		-DOPENCV_ENABLE_NONFREE=ON \
206		-DOPENCV_WARNINGS_ARE_ERRORS=OFF \
207		-DCMAKE_INSTALL_PREFIX:PATH="$prefix" \
208		-DOPENCV_OTHER_INSTALL_PATH:PATH="$dataDir" \
209		-DOpenBLAS_INCLUDE_DIR="$portPackageLinksDir/openblas${secondaryArchSuffix}_devel/develop/headers/$ARCH_SUBDIR" \
210		-DOpenBLAS_LIB="$portPackageLinksDir/openblas${secondaryArchSuffix}_devel/develop/lib/$ARCH_SUBDIR" \
211		-DBUILD_TESTS=OFF -Wno-dev
212
213	export DISABLE_ASLR=1
214
215	make $jobArgs
216}
217
218INSTALL()
219{
220	cd build_haiku
221
222	make install
223
224	if [ -n "$secondaryArchSuffix" ]; then
225		mkdir -p $libDir
226		mv $prefix/lib/*.so* $libDir
227	fi
228
229	prepareInstalledDevelLibs libopencv_calib3d \
230		libopencv_core \
231		libopencv_dnn \
232		libopencv_features2d \
233		libopencv_flann \
234		libopencv_highgui \
235		libopencv_imgcodecs \
236		libopencv_imgproc \
237		libopencv_ml \
238		libopencv_objdetect \
239		libopencv_photo \
240		libopencv_shape \
241		libopencv_stitching \
242		libopencv_superres \
243		libopencv_video \
244		libopencv_videoio \
245		libopencv_videostab
246
247	rm -rf $prefix/{share,include}
248	rm -rf $dataDir/OpenCV
249	rm -rf $prefix/lib/pkgconfig
250	rm -rf $libDir/cmake $developDir
251
252	# tools package
253	packageEntries tools \
254		$prefix/bin
255}
256