openbsd-ports/graphics/opencv/Makefile
zhuk 59e21bf682 Fix two build problems in OpenCV, triggered after recent changes in
ports tree (that doesn't meant that those problems come from lands other
than OpenCV itself):

1. Stop exporting opencv_java target: noone links to the libopencv_java.so,
   anyway, and it breaks find_package(OpenCV) when opencv-java is absent.
   The actual broken port was Digikam on i386 (yes, due to some funny
   reasons, this didn't trigger on amd64).

2. Switch to gstreamer1 since OpenCV picks it up nowadays, if the former
   is found. WANTLIB updates included.

Initial report and testing by sthen@.

Okays:
   (1) by dcoppa@, sthen@ (implicit) and Rafael Sadowski (MAINTAINER).
   (2) by sthen@ (implicit).
2015-01-30 21:38:37 +00:00

177 lines
5.2 KiB
Makefile

# $OpenBSD: Makefile,v 1.34 2015/01/30 21:38:37 zhuk Exp $
ONLY_FOR_ARCHS = ${GCC4_ARCHS}
ONLY_FOR_ARCHS-java = amd64 i386
SHARED_ONLY = Yes
CATEGORIES = graphics devel
COMMENT-docs = OpenCV documentation and examples
COMMENT-main = library of programming functions for real time cv
COMMENT-java = Java bindings for OpenCV
V = 2.4.10
DISTNAME = opencv-$V
PKGNAME-main = ${PKGNAME}
PKGNAME-docs = opencv-docs-$V
PKGNAME-java = opencv-java-$V
REVISION-main = 1
REVISION-java = 0
HOMEPAGE = http://www.opencv.org/
MAINTAINER = Rafael Sadowski <rafael@sizeofvoid.org>
SHARED_LIBS = opencv_calib3d 1.0 #1.1
SHARED_LIBS += opencv_contrib 1.0 #1.1
SHARED_LIBS += opencv_core 1.0 #1.1
SHARED_LIBS += opencv_features2d 1.0 #1.1
SHARED_LIBS += opencv_flann 1.0 #1.1
SHARED_LIBS += opencv_gpu 1.0 #1.1
SHARED_LIBS += opencv_highgui 1.0 #1.1
SHARED_LIBS += opencv_imgproc 1.0 #1.1
SHARED_LIBS += opencv_legacy 1.0 #1.1
SHARED_LIBS += opencv_ml 1.0 #1.1
SHARED_LIBS += opencv_nonfree 0.0 #0.1
SHARED_LIBS += opencv_objdetect 1.0 #1.1
SHARED_LIBS += opencv_photo 0.0 #0.1
SHARED_LIBS += opencv_stitching 0.0 #0.1
SHARED_LIBS += opencv_superres 0.0 #0.1
SHARED_LIBS += opencv_ts 0.0 #0.1
SHARED_LIBS += opencv_video 1.0 #1.1
SHARED_LIBS += opencv_videostab 0.0 #0.1
SHARED_LIBS += opencv_ocl 0.0 #2.4
EXTRACT_SUFX = .zip
MASTER_SITES = ${MASTER_SITE_SOURCEFORGE:=opencvlibrary/}
WANTLIB-main = Half Iex IlmImf IlmThread Imath X11 Xcomposite Xcursor
WANTLIB-main += Xdamage Xext Xfixes Xi Xinerama Xrandr Xrender atk-1.0
WANTLIB-main += avcodec avformat avutil bz2 c cairo fontconfig
WANTLIB-main += freetype gdk-x11-2.0 gdk_pixbuf-2.0 gio-2.0 glib-2.0
WANTLIB-main += gobject-2.0 gstapp-1.0 gstbase-1.0 gstpbutils-1.0
WANTLIB-main += gstreamer-1.0 gstriff-1.0 gstvideo-1.0 gthread-2.0 gtk-x11-2.0
WANTLIB-main += jasper jpeg m pango-1.0 pangocairo-1.0
WANTLIB-main += pangoft2-1.0 png pthread stdc++ swscale tiff xml2 z
WANTLIB-main += ${MODGETTEXT_WANTLIB} ${MODPY_WANTLIB}
WANTLIB-docs =
WANTLIB-java = m pthread stdc++
WANTLIB-java += opencv_calib3d opencv_contrib opencv_core
WANTLIB-java += opencv_features2d opencv_flann opencv_highgui
WANTLIB-java += opencv_imgproc opencv_ml opencv_objdetect
WANTLIB-java += opencv_photo opencv_video
WANTLIB-java += opencv_gpu opencv_legacy opencv_nonfree opencv_ocl
MULTI_PACKAGES = -main -docs -java
PSEUDO_FLAVORS = no_docs no_java
FLAVOR ?=
# "patents" means containing some patented algorithms, see
# http://docs.opencv.org/modules/nonfree/doc/nonfree.html
# As some source modules include this functionality, we couldn't
# just subpackage "nonfree". Excluding this, here we have a usual
# BSDL
PERMIT_PACKAGE_FTP = Yes
PERMIT_PACKAGE_CDROM = patents
PERMIT_PACKAGE_CDROM-docs = Yes
.include <bsd.port.arch.mk>
MODULES = devel/cmake \
devel/gettext \
lang/python
BUILD_DEPENDS = devel/doxygen \
math/py-numpy
RUN_DEPENDS-main = math/py-numpy
RUN_DEPENDS-docs = ${BUILD_PKGPATH},-main
RUN_DEPENDS-java = ${MODJAVA_RUN_DEPENDS}
LIB_DEPENDS-main = ${LIB_DEPENDS} \
${MODPY_LIB_DEPENDS} \
multimedia/gstreamer1/plugins-base \
x11/gtk+2 \
graphics/ffmpeg \
graphics/ilmbase \
graphics/jpeg \
graphics/openexr \
graphics/png \
graphics/tiff
LIB_DEPENDS-docs =
LIB_DEPENDS-java = ${BUILD_PKGPATH},-main=${V}
# XXX PIE cannot be produced due to problems with inline assembly.
# Since OpenCV is mostly used as a library, switch to PIC.
.if ${ARCH:Mi386}
CONFIGURE_ENV = CFLAGS="${CFLAGS} -fPIC" \
CXXFLAGS="${CXXFLAGS} -fPIC"
.endif
# ATM opencv requires V4L1 compat, ask them to change it,
# then see WITH_V4L below.
CONFIGURE_ARGS = -DBUILD_opencv_nonfree:Bool=On \
-DWITH_1394:Bool=Off \
-DWITH_CUDA:Bool=Off \
-DWITH_EIGEN:Bool=Off \
-DWITH_FFMPEG:Bool=On \
-DWITH_GSTREAMER:Bool=On \
-DWITH_GTK:Bool=On \
-DWITH_JPEG:Bool=On \
-DWITH_PNG:Bool=On \
-DWITH_TIFF:Bool=On \
-DWITH_V4L:Bool=Off
.if ${BUILD_PACKAGES:M-java}
MODULES += java
MODJAVA_VER = 1.7+
BUILD_DEPENDS += devel/apache-ant
.else
# Safe: Java will be detected, if present, but won't be used
CONFIGURE_ARGS += -DBUILD_opencv_java:Bool=Off
.endif
.if ${BUILD_PACKAGES:M-docs}
BUILD_DEPENDS += textproc/py-sphinx
ALL_TARGET = all html_docs
CONFIGURE_ARGS += -DBUILD_DOCS:Bool=On \
-DBUILD_EXAMPLES:Bool=On \
-DINSTALL_C_EXAMPLES:Bool=On \
-DINSTALL_PYTHON_EXAMPLES:Bool=On
.else
CONFIGURE_ARGS += -DBUILD_DOCS:Bool=Off \
-DBUILD_EXAMPLES:Bool=Off \
-DINSTALL_PYTHON_EXAMPLES:Bool=Off
.endif
CONFIG_ADJ_CMD = perl -pi
.for _l _v in ${SHARED_LIBS}
CONFIG_ADJ_CMD += -e 's,lib${_l}.so([^.]),lib${_l}.so.${_v}$$1,g;'
.endfor
DOCDIR = ${PREFIX}/share/doc/OpenCV
post-patch:
perl -pi -e 's@^.*(#\s*include)@$$1@' \
${WRKSRC}/samples/cpp/tutorial_code/core/how_to_scan_images/how_to_scan_images.cpp
post-install:
${CONFIG_ADJ_CMD} ${PREFIX}/share/OpenCV/OpenCVConfig.cmake
${MODPY_BIN} ${MODPY_LIBDIR}/compileall.py ${WRKINST}${MODPY_SITEPKG}
.if ${BUILD_PACKAGES:M-docs}
rm -Rf ${DOCDIR}
mv ${PREFIX}/share/OpenCV/doc ${DOCDIR}
cp -R ${WRKBUILD}/doc/_html ${DOCDIR}/html
.endif
do-test:
@cd ${WRKBUILD}/bin; \
failed=false; \
for t in opencv_test*; do \
echo "RUNNING TEST: $$t" >&2; \
./$$t || failed=true; \
done; \
$$failed
.include <bsd.port.mk>