mailarchive of the ptxdist mailing list
 help / color / mirror / Atom feed
From: Michael Olbrich <m.olbrich@pengutronix.de>
To: ptxdist@pengutronix.de
Subject: Re: [ptxdist] [PATCH v2] opencv: add new package
Date: Mon, 31 Mar 2014 09:45:45 +0200	[thread overview]
Message-ID: <20140331074545.GE10959@pengutronix.de> (raw)
In-Reply-To: <1396118944.4914.27.camel@mars>

On Sat, Mar 29, 2014 at 07:49:04PM +0100, Christoph Fritz wrote:
> 
> Signed-off-by: Christoph Fritz <chf.fritz@googlemail.com>
> ---
> v2: use correct email of J.Weitzel
> 
>  rules/opencv.in   |  168 ++++++++++++++++++++++++++++++++++++++++++++++
>  rules/opencv.make |  193 +++++++++++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 361 insertions(+)
>  create mode 100644 rules/opencv.in
>  create mode 100644 rules/opencv.make
> 
> diff --git a/rules/opencv.in b/rules/opencv.in
> new file mode 100644
> index 0000000..1319232
> --- /dev/null
> +++ b/rules/opencv.in
> @@ -0,0 +1,168 @@
> +## SECTION=multimedia_libs
> +
> +menuconfig OPENCV
> +	bool
> +	prompt "opencv"
> +	select HOST_CMAKE
> +	select GCCLIBS_CXX
> +	select ZLIB
> +	select LIBPNG
> +	select LIBJPEG
> +	select V4L_UTILS

Are you sure this is always needed and not just for v4l2 support?
And probably only with WITH_LIBV4L. And in that case you also need to
select V4L_UTILS_LIBV4L2.
For embedded use cases it often makes sense to explicitly not use libv4l,
because the colorspace conversions in software add unexpected overhead, so
this should be a separate option (see GST_PLUGINS_GOOD1_GST_V4L2_LIBV4L2).

> +	help
> +	 Open Source Computer Vision Library
> +
> +if OPENCV
> +
> +config OPENCV_CALIB3D
> +	bool
> +	prompt "calib3d"
> +	select OPENCV_FEATURES2D
> +	help
> +	 Camera Calibration and 3D Reconstruction
> +
> +config OPENCV_CONTRIB
> +	bool
> +	prompt "contrib"
> +	select OPENCV_CALIB3D
> +	select OPENCV_IMGPROC
> +	select OPENCV_ML
> +	select OPENCV_OBJDETECT
> +	select OPENCV_VIDEO
> +	help
> +	 Contributed/Experimental Stuff
> +
> +config OPENCV_FEATURES2D
> +	bool
> +	prompt "features2d"
> +	select OPENCV_FLANN
> +	select OPENCV_IMGPROC
> +	help
> +	 2D Features Framework
> +
> +config OPENCV_FLANN
> +	bool
> +	prompt "flann"
> +	help
> +	 Clustering and Search in Multi-Dimensional Spaces
> +
> +config OPENCV_GPU
> +	bool
> +	prompt "gpu"
> +	select OPENCV_LEGACY
> +	select OPENCV_PHOTO
> +	select OPENCV_OBJDETECT
> +	help
> +	 GPU-accelerated Computer Vision
> +
> +config OPENCV_HIGHGUI
> +	bool
> +	prompt "highgui"
> +	select OPENCV_IMGPROC
> +	help
> +	 High-level GUI and Media I/O
> +
> +config OPENCV_IMGPROC
> +	bool
> +	prompt "imgproc"
> +	help
> +	 Image Processing
> +
> +config OPENCV_LEGACY
> +	bool
> +	prompt "legacy"
> +	select OPENCV_CALIB3D
> +	select OPENCV_ML
> +	select OPENCV_VIDEO
> +	help
> +	 Deprecated stuff
> +
> +config OPENCV_ML
> +	bool
> +	prompt "ml"
> +	help
> +	 Machine Learning
> +
> +config OPENCV_NONFREE
> +	bool
> +	prompt "nonfree"
> +	select OPENCV_CALIB3D
> +	select OPENCV_IMGPROC
> +	select OPENCV_FEATURES2D
> +	help
> +	 Non-free functionality
> +
> +config OPENCV_OBJDETECT
> +	bool
> +	prompt "objdetect"
> +	select OPENCV_IMGPROC
> +	help
> +	 Object Detection
> +
> +config OPENCV_PHOTO
> +	bool
> +	prompt "photo"
> +	select OPENCV_IMGPROC
> +	help
> +	 Computational Photography
> +
> +config OPENCV_STITCHING
> +	bool
> +	prompt "stitching"
> +	select OPENCV_CALIB3D
> +	select OPENCV_FEATURES2D
> +	select OPENCV_OBJDETECT
> +	help
> +	 Images stitching
> +
> +config OPENCV_SUPERRES
> +	bool
> +	prompt "superres"
> +	select OPENCV_IMGPROC
> +	select OPENCV_VIDEO
> +	help
> +	 Super Resolution
> +
> +config OPENCV_VIDEO
> +	bool
> +	prompt "video"
> +	select OPENCV_IMGPROC
> +	help
> +	 Video Analysis
> +
> +config OPENCV_VIDEOSTAB
> +	bool
> +	prompt "videostab"
> +	select OPENCV_CALIB3D
> +	select OPENCV_FEATURES2D
> +	select OPENCV_HIGHGUI
> +	select OPENCV_OBJDETECT
> +	select OPENCV_PHOTO
> +	select OPENCV_VIDEO
> +	help
> +	 Video Stabilization
> +
> +config OPENCV_GSTREAMER
> +	bool
> +	prompt "gstreamer"
> +	select GSTREAMER

This must be
	select GSTREAMER	if OPENCV_GSTREAMER
in the main option. Otherwise it wont work.

> +	help
> +	 Gstreamer Support
> +
> +config OPENCV_V4L
> +	bool
> +	prompt "v4l"
> +	select OPENCV_VIDEO
> +	help
> +	 Video4Linux Support
> +
> +config OPENCV_QT
> +	bool
> +	prompt "qt"
> +	select QT4
> +	select QT4_BUILD_QTESTLIB
> +	select QT4_BUILD_GUI
> +	select QT4_STL

Here as well

> +	help
> +	 QT GUI Support
> +endif
> diff --git a/rules/opencv.make b/rules/opencv.make
> new file mode 100644
> index 0000000..ce72f16
> --- /dev/null
> +++ b/rules/opencv.make
> @@ -0,0 +1,193 @@
> +# -*-makefile-*-
> +#
> +# Copyright (C) 2014 by Christoph Fritz <chf.fritz@googlemail.com>
> +# Copyright (C) 2013 by Jan Weitzel <J.Weitzel@phytec.de>
> +# loosely based on work by Roman Dosek <formatsh@gmail.com>
> +#
> +# See CREDITS for details about who has contributed to this project.
> +#
> +# For further information about the PTXdist project and license conditions
> +# see the README file.
> +#
> +
> +#
> +# We provide this package
> +#
> +PACKAGES-$(PTXCONF_OPENCV) += opencv
> +
> +#
> +# Paths and names
> +#
> +
> +OPENCV_VERSION	:= 2.4.8
> +OPENCV_MD5	:= 50cc1433b3654074206f5b3dbfd49848
> +OPENCV		:= opencv-$(OPENCV_VERSION)
> +OPENCV_SUFFIX	:= zip
> +OPENCV_URL	:= $(call ptx/mirror, SF, opencvlibrary/opencv-unix/$(OPENCV_VERSION)/$(OPENCV).$(OPENCV_SUFFIX))
> +OPENCV_SOURCE	:= $(SRCDIR)/$(OPENCV).$(OPENCV_SUFFIX)
> +OPENCV_DIR	:= $(BUILDDIR)/$(OPENCV)
> +OPENCV_LICENSE	:= BSD
> +
> +# ----------------------------------------------------------------------------
> +# Prepare
> +# ----------------------------------------------------------------------------
> +
> +OPENCV_CONF_TOOL	:= cmake
> +
> +OPENCV_CONF_OPT	:= $(CROSS_CMAKE_USR)
> +OPENCV_CONF_OPT += \
> +	-DANT_EXECUTABLE:FILEPATH= \
> +	-DPYTHON_EXECUTABLE= \
> +	-DBUILD_DOCS:BOOL=OFF \
> +	-DBUILD_EXAMPLES:BOOL=OFF \
> +	-DBUILD_PACKAGE:BOOL=OFF \
> +	-DCMAKE_BUILD_TYPE=Release \
> +	-DBUILD_SHARED_LIBS:BOOL=ON \
> +	-DBUILD_TESTS=OFF \
> +	-DBUILD_PERF_TESTS=OFF \
> +	-DBUILD_WITH_DEBUG_INFO=OFF \
> +	-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF \
> +	-DCMAKE_SKIP_RPATH=OFF \
> +	-DCMAKE_USE_RELATIVE_PATHS=OFF \
> +	-DENABLE_FAST_MATH=ON \
> +	-DENABLE_NOISY_WARNINGS=OFF \
> +	-DENABLE_OMIT_FRAME_POINTER=ON \
> +	-DENABLE_PRECOMPILED_HEADERS=OFF \
> +	-DENABLE_PROFILING=OFF \
> +	-DENABLE_SOLUTION_FOLDERS=OFF \
> +	-DOPENCV_CAN_BREAK_BINARY_COMPATIBILITY=ON \
> +	-DWITH_GTK:BOOL=OFF \
> +	-DWITH_TBB:BOOL=OFF \
> +	-DWITH_TIFF:BOOL=OFF \
> +	-DCMAKE_VERBOSE:BOOL=OFF \
> +	-DWITH_CUDA:BOOL=OFF \
> +	-DWITH_EIGEN:BOOL=OFF \
> +	-DENABLE_NEON:BOOL=OFF \

We have ARCH_ARM_NEON for that.

> +	-DENABLE_VFPV3:BOOL=OFF \
> +	-DWITH_GIGEAPI:BOOL=OFF \
> +	-DINSTALL_CREATE_DISTRIB:BOOL=OFF \
> +	-DINSTALL_C_EXAMPLES:BOOL=OFF \
> +	-DINSTALL_PYTHON_EXAMPLES:BOOL=OFF \
> +	-DINSTALL_TO_MANGLED_PATHS:BOOL=OFF \
> +	-DOPENCV_EXTRA_MODULES_PATH:PATH= \
> +	-DOPENCV_WARNINGS_ARE_ERRORS:BOOL=OFF \
> +	-DWITH_OPENEXR:BOOL=OFF \
> +	-DWITH_PVAPI:BOOL=OFF \
> +	-DWITH_1394:BOOL=OFF \
> +	-DWITH_CUBLAS:BOOL=OFF \
> +	-DWITH_CUDA:BOOL=OFF \
> +	-DWITH_CUFFT:BOOL=OFF \
> +	-DWITH_FFMPEG:BOOL=OFF \
> +	-DWITH_JASPER:BOOL=OFF \
> +	-DWITH_JPEG:BOOL=ON \
> +	-DWITH_PNG:BOOL=ON \
> +	-DWITH_NVCUVID:BOOL=OFF \
> +	-DWITH_OPENCL:BOOL=OFF \
> +	-DWITH_OPENCLAMDBLAS:BOOL=OFF \
> +	-DWITH_OPENCLAMDFFT:BOOL=OFF \
> +	-DWITH_OPENEXR:BOOL=OFF \
> +	-DWITH_OPENMP:BOOL=OFF \
> +	-DWITH_OPENNI:BOOL=OFF \
> +	-DWITH_PVAPI:BOOL=OFF \
> +	-DWITH_TBB:BOOL=OFF \
> +	-DWITH_UNICAP:BOOL=OFF \
> +	-DWITH_XIMEA:BOOL=OFF \
> +	-DWITH_XINE:BOOL=OFF \
> +
> +OPENCV_CONF_OPT += \

one option works just fine.

> +	-DBUILD_opencv_apps:BOOL=OFF \
> +	-DBUILD_opencv_calib3d:BOOL=$(call ptx/ifdef,PTXCONF_OPENCV_CALIB3D,ON,OFF) \
> +	-DBUILD_opencv_contrib:BOOL=$(call ptx/ifdef,PTXCONF_OPENCV_CONTRIB,ON,OFF) \
> +	-DBUILD_opencv_core:BOOL=ON \
> +	-DBUILD_opencv_features2d:BOOL=$(call ptx/ifdef,PTXCONF_OPENCV_FEATURES2D,ON,OFF) \
> +	-DBUILD_opencv_flann:BOOL=$(call ptx/ifdef,PTXCONF_OPENCV_FLANN,ON,OFF) \
> +	-DBUILD_opencv_gpu:BOOL=$(call ptx/ifdef,PTXCONF_OPENCV_GPU,ON,OFF) \
> +	-DBUILD_opencv_highgui:BOOL=$(call ptx/ifdef,PTXCONF_OPENCV_HIGHGUI,ON,OFF) \
> +	-DBUILD_opencv_imgproc:BOOL=$(call ptx/ifdef,PTXCONF_OPENCV_IMGPROC,ON,OFF) \
> +	-DBUILD_opencv_legacy:BOOL=$(call ptx/ifdef,PTXCONF_OPENCV_LEGACY,ON,OFF) \
> +	-DBUILD_opencv_ml:BOOL=$(call ptx/ifdef,PTXCONF_OPENCV_ML,ON,OFF) \
> +	-DBUILD_opencv_nonfree:BOOL=$(call ptx/ifdef,PTXCONF_OPENCV_NONFREE,ON,OFF) \
> +	-DBUILD_opencv_objdetect:BOOL=$(call ptx/ifdef,PTXCONF_OPENCV_OBJDETECT,ON,OFF) \
> +	-DBUILD_opencv_photo:BOOL=$(call ptx/ifdef,PTXCONF_OPENCV_PHOTO,ON,OFF) \
> +	-DBUILD_opencv_stitching:BOOL=$(call ptx/ifdef,PTXCONF_OPENCV_STITCHING,ON,OFF) \
> +	-DBUILD_opencv_superres:BOOL=$(call ptx/ifdef,PTXCONF_OPENCV_SUPERRES,ON,OFF) \
> +	-DBUILD_opencv_ts:BOOL=OFF \
> +	-DBUILD_opencv_video:BOOL=$(call ptx/ifdef,PTXCONF_OPENCV_VIDEO,ON,OFF) \
> +	-DBUILD_opencv_videostab:BOOL=$(call ptx/ifdef,PTXCONF_OPENCV_VIDEOSTAB,ON,OFF) \
> +	-DBUILD_opencv_world:BOOL=OFF \
> +	-DWITH_GSTREAMER:BOOL=$(call ptx/ifdef,PTXCONF_OPENCV_GSTREAMER,ON,OFF) \
> +	-DWITH_LIBV4L:BOOL=$(call ptx/ifdef,PTXCONF_OPENCV_V4L,ON,OFF) \
> +	-DWITH_V4L:BOOL=$(call ptx/ifdef,PTXCONF_OPENCV_V4L,ON,OFF) \



> +	-DWITH_OPENGL:BOOL=OFF \
> +	-DWITH_QT:BOOL=$(call ptx/ifdef,PTXCONF_OPENCV_QT,ON,OFF)

This should be "... ,4,OFF)". We don't have Qt5 right now, but this way it
is clear what to use.

> +
> +# ----------------------------------------------------------------------------
> +# Target-Install
> +# ----------------------------------------------------------------------------
> +
> +$(STATEDIR)/opencv.targetinstall:
> +	@$(call targetinfo)
> +
> +	@$(call install_init, opencv)
> +	@$(call install_fixup, opencv, PRIORITY, optional)
> +	@$(call install_fixup, opencv, SECTION, base)
> +	@$(call install_fixup, opencv, AUTHOR, "Christoph Fritz <chf.fritz@googlemail.com>")
> +	@$(call install_fixup, opencv, DESCRIPTION, missing)
> +
> +
> +	@$(call install_lib, opencv, 0, 0, 0644, libopencv_core)
> +

Like Alex said, make this a list and install with foreach. The gst-plugins*
packages are also a good reference to see how it's done.

Michael

> +ifdef PTXCONF_OPENCV_CALIB3D
> +	@$(call install_lib, opencv, 0, 0, 0644, libopencv_calib3d)
> +endif
> +ifdef PTXCONF_OPENCV_CONTRIB
> +	@$(call install_lib, opencv, 0, 0, 0644, libopencv_contrib)
> +endif
> +ifdef PTXCONF_OPENCV_FEATURES2D
> +	@$(call install_lib, opencv, 0, 0, 0644, libopencv_features2d)
> +endif
> +ifdef PTXCONF_OPENCV_FLANN
> +	@$(call install_lib, opencv, 0, 0, 0644, libopencv_flann)
> +endif
> +ifdef PTXCONF_OPENCV_GPU
> +	@$(call install_lib, opencv, 0, 0, 0644, libopencv_gpu)
> +endif
> +ifdef PTXCONF_OPENCV_HIGHGUI
> +	@$(call install_lib, opencv, 0, 0, 0644, libopencv_highgui)
> +endif
> +ifdef PTXCONF_OPENCV_IMGPROC
> +	@$(call install_lib, opencv, 0, 0, 0644, libopencv_imgproc)
> +endif
> +ifdef PTXCONF_OPENCV_LEGACY
> +	@$(call install_lib, opencv, 0, 0, 0644, libopencv_legacy)
> +endif
> +ifdef PTXCONF_OPENCV_ML
> +	@$(call install_lib, opencv, 0, 0, 0644, libopencv_ml)
> +endif
> +ifdef PTXCONF_OPENCV_NONFREE
> +	@$(call install_lib, opencv, 0, 0, 0644, libopencv_nonfree)
> +endif
> +ifdef PTXCONF_OPENCV_OBJDETECT
> +	@$(call install_lib, opencv, 0, 0, 0644, libopencv_objdetect)
> +endif
> +ifdef PTXCONF_OPENCV_PHOTO
> +	@$(call install_lib, opencv, 0, 0, 0644, libopencv_photo)
> +endif
> +ifdef PTXCONF_OPENCV_STITCHING
> +	@$(call install_lib, opencv, 0, 0, 0644, libopencv_stitching)
> +endif
> +ifdef PTXCONF_OPENCV_SUPERRES
> +	@$(call install_lib, opencv, 0, 0, 0644, libopencv_superres)
> +endif
> +ifdef PTXCONF_OPENCV_VIDEO
> +	@$(call install_lib, opencv, 0, 0, 0644, libopencv_video)
> +endif
> +ifdef PTXCONF_OPENCV_VIDEOSTAB
> +	@$(call install_lib, opencv, 0, 0, 0644, libopencv_videostab)
> +endif
> +
> +	@$(call install_finish, opencv)
> +
> +	@$(call touch)
> +
> +# vim: syntax=make
> -- 
> 1.7.10.4
> 
> 
> 
> -- 
> ptxdist mailing list
> ptxdist@pengutronix.de
> 

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

-- 
ptxdist mailing list
ptxdist@pengutronix.de

  parent reply	other threads:[~2014-03-31  7:45 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-29 18:41 [ptxdist] [PATCH] " Christoph Fritz
2014-03-29 18:49 ` [ptxdist] [PATCH v2] " Christoph Fritz
2014-03-31  6:11   ` Alexander Aring
2014-03-31  7:45   ` Michael Olbrich [this message]
2014-04-03 20:38     ` [ptxdist] [PATCH v3] " Christoph Fritz
2014-04-04  7:57       ` Alexander Aring
2014-04-04  9:19         ` Juergen Beisert
2014-04-04  9:21         ` [ptxdist] [PATCH v4] " Christoph Fritz
2014-04-04  9:57           ` Michael Olbrich
2014-03-31  6:02 ` [ptxdist] [PATCH] " Alexander Aring
2014-03-31  6:09 ` Alexander Aring
2014-03-31  8:33   ` Juergen Beisert
2014-03-31  8:44     ` Alexander Aring
2014-03-31  9:00     ` Alexander Aring

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140331074545.GE10959@pengutronix.de \
    --to=m.olbrich@pengutronix.de \
    --cc=ptxdist@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox