mailarchive of the ptxdist mailing list
 help / color / mirror / Atom feed
From: Matthias Fend <matthias.fend@emfend.at>
To: ptxdist@pengutronix.de
Subject: [ptxdist] [PATCH 1/1] libcamera: new package
Date: Thu,  8 Sep 2022 09:29:18 +0200	[thread overview]
Message-ID: <20220908072918.406891-2-matthias.fend@emfend.at> (raw)
In-Reply-To: <20220908072918.406891-1-matthias.fend@emfend.at>

libcamera is an open source camera stack and framework for Linux, Android,
and ChromeOS.

Signed-off-by: Matthias Fend <matthias.fend@emfend.at>
---
 ...t-information-for-version-generation.patch |  29 ++++
 .../series                                    |   4 +
 rules/libcamera.in                            |  90 ++++++++++++
 rules/libcamera.make                          | 137 ++++++++++++++++++
 4 files changed, 260 insertions(+)
 create mode 100644 patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/0001-do-not-use-git-information-for-version-generation.patch
 create mode 100644 patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/series
 create mode 100644 rules/libcamera.in
 create mode 100644 rules/libcamera.make

diff --git a/patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/0001-do-not-use-git-information-for-version-generation.patch b/patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/0001-do-not-use-git-information-for-version-generation.patch
new file mode 100644
index 000000000..3e5c5ce68
--- /dev/null
+++ b/patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/0001-do-not-use-git-information-for-version-generation.patch
@@ -0,0 +1,29 @@
+From: Matthias Fend <matthias.fend@emfend.at>
+Date: Wed, 31 Aug 2022 16:54:20 +0200
+Subject: [PATCH] do not use git information for version generation
+
+Since libcamera is checked out without a git repo, git version reports the
+version of the BSP. Since this is obviously wrong, just use the project
+version.
+
+Signed-off-by: Matthias Fend <matthias.fend@emfend.at>
+---
+ meson.build | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index 72919102ad55..e333df59388d 100644
+--- a/meson.build
++++ b/meson.build
+@@ -20,9 +20,8 @@ libcamera_git_version = run_command('utils/gen-version.sh',
+                                     meson.project_build_root(),
+                                     meson.project_source_root(),
+                                     check: false).stdout().strip()
+-if libcamera_git_version == ''
+-    libcamera_git_version = meson.project_version()
+-endif
++
++libcamera_git_version = meson.project_version()
+ 
+ libcamera_version = libcamera_git_version.split('+')[0]
+ 
diff --git a/patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/series b/patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/series
new file mode 100644
index 000000000..6ca42eafc
--- /dev/null
+++ b/patches/libcamera-68683d3811a803aa087c38a2063cf64c8d084d49/series
@@ -0,0 +1,4 @@
+# generated by git-ptx-patches
+#tag:base --start-number 1
+0001-do-not-use-git-information-for-version-generation.patch
+# c3a57143ea9764ab95b84a7fb79896f4  - git-ptx-patches magic
diff --git a/rules/libcamera.in b/rules/libcamera.in
new file mode 100644
index 000000000..0a103fc51
--- /dev/null
+++ b/rules/libcamera.in
@@ -0,0 +1,90 @@
+## SECTION=multimedia_libs
+
+config LIBCAMERA
+	bool
+	prompt "libcamera"
+	select HOST_MESON
+	select HOST_SYSTEM_PYTHON3
+	select HOST_SYSTEM_PYTHON3_JINJA2
+	select HOST_SYSTEM_PYTHON3_PYYAML
+	select HOST_SYSTEM_PYTHON3_PLY
+	select GNUTLS
+	select UDEV_LIBUDEV
+	select LIBYAML
+	select LIBUNWIND			if LIBCAMERA_BACKTRACE
+	select GSTREAMER1			if LIBCAMERA_GSTREAMER
+	select GST_PLUGINS_BASE1		if LIBCAMERA_GSTREAMER
+	select LIBEVENT				if LIBCAMERA_CAM
+	select QT5				if LIBCAMERA_QCAM
+	select QT5_MODULE_QTBASE		if LIBCAMERA_QCAM
+	select QT5_MODULE_QTBASE_GUI		if LIBCAMERA_QCAM
+	select QT5_MODULE_QTBASE_WIDGETS	if LIBCAMERA_QCAM
+	help
+	  A complex camera support library for Linux, Android, and ChromeOS.
+
+if LIBCAMERA
+
+config LIBCAMERA_GSTREAMER
+	bool
+	prompt "install GStreamer plugin"
+
+config LIBCAMERA_CAM
+	bool
+	prompt "install cam test application"
+
+config LIBCAMERA_QCAM
+	bool
+	prompt "install qcam test application"
+
+config LIBCAMERA_BACKTRACE
+	bool
+	prompt "enable tracing support"
+
+endif
+
+menu "IPAs"
+
+config LIBCAMERA_IPA_IPU3
+	bool
+	prompt "ipu3"
+
+config LIBCAMERA_IPA_RASPBERRYPI
+	bool
+	prompt "raspberrypi"
+
+config LIBCAMERA_IPA_RKISP1
+	bool
+	prompt "rkisp1"
+
+config LIBCAMERA_IPA_VIMC
+	bool
+	prompt "vimc"
+endmenu
+
+menu "Pipelines"
+
+config LIBCAMERA_PIPELINE_IPU3
+	bool
+	prompt "ipu3"
+
+config LIBCAMERA_PIPELINE_RASPBERRYPI
+	bool
+	prompt "raspberrypi"
+
+config LIBCAMERA_PIPELINE_RKISP1
+	bool
+	prompt "rkisp1"
+
+config LIBCAMERA_PIPELINE_SIMPLE
+	bool
+	prompt "simple"
+
+config LIBCAMERA_PIPELINE_UVCVIDEO
+	bool
+	prompt "uvcvideo"
+
+config LIBCAMERA_PIPELINE_VIMC
+	bool
+	prompt "vimc"
+
+endmenu
diff --git a/rules/libcamera.make b/rules/libcamera.make
new file mode 100644
index 000000000..3ed9e2a71
--- /dev/null
+++ b/rules/libcamera.make
@@ -0,0 +1,137 @@
+# -*-makefile-*-
+#
+# Copyright (C) 2022 by Matthias Fend <matthias.fend@emfend.at>
+#
+# For further information about the PTXdist project and license conditions
+# see the README file.
+#
+
+#
+# We provide this package
+#
+PACKAGES-$(PTXCONF_LIBCAMERA) += libcamera
+
+#
+# Paths and names
+#
+LIBCAMERA_VERSION	:= 68683d3811a803aa087c38a2063cf64c8d084d49
+LIBCAMERA_MD5		:= 0a1c0f6656dae9dc338b46aab50d83f9
+LIBCAMERA		:= libcamera-$(LIBCAMERA_VERSION)
+LIBCAMERA_SUFFIX	:= tar.gz
+LIBCAMERA_URL		:= https://git.libcamera.org/libcamera/libcamera.git;tag=$(LIBCAMERA_VERSION)
+LIBCAMERA_SOURCE	:= $(SRCDIR)/$(LIBCAMERA).$(LIBCAMERA_SUFFIX)
+LIBCAMERA_DIR		:= $(BUILDDIR)/$(LIBCAMERA)
+LIBCAMERA_LICENSE	:= Apache-2.0 AND \
+			   BSD-2-Clause AND BSD-3-Clause AND \
+			   CC0-1.0 AND CC-BY-SA-4.0 AND \
+			   GPL-2.0-or-later AND GPL-2.0 WITH Linux-syscall-note AND \
+			   (GPL-2.0+ WITH Linux-syscall-note OR MIT) AND LGPL-2.1-or-later
+LIBCAMERA_LICENSE_FILES	:= file://LICENSES/Apache-2.0.txt;md5=3b83ef96387f14655fc854ddc3c6bd57 \
+			   file://LICENSES/BSD-2-Clause.txt;md5=63d6ee386b8aaba70b1bf15a79ca50f2 \
+			   file://LICENSES/BSD-3-Clause.txt;md5=954f4d71a37096249f837652a7f586c0 \
+			   file://LICENSES/CC0-1.0.txt;md5=6fd064768b8d61c31ddd0540570fbd33 \
+			   file://LICENSES/CC-BY-SA-4.0.txt;md5=598a2bb2d212cf9bc240fb554efcb169 \
+			   file://LICENSES/GPL-2.0-or-later.txt;md5=fed54355545ffd980b814dab4a3b312c \
+			   file://LICENSES/GPL-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+			   file://LICENSES/Linux-syscall-note.txt;md5=370f20aa0795bf47c9a50d8cee5a7cfb \
+			   file://LICENSES/GPL-2.0+.txt;md5=fed54355545ffd980b814dab4a3b312c \
+			   file://LICENSES/MIT.txt;md5=38aa75cf4c4c87f018227d5ec9638d75 \
+			   file://LICENSES/LGPL-2.1-or-later.txt;md5=2a4f4fd2128ea2f65047ee63fbca9f68
+
+# ----------------------------------------------------------------------------
+# Prepare
+# ----------------------------------------------------------------------------
+
+LIBCAMERA_IPAS		:=
+LIBCAMERA_IPAS		+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_IPA_IPU3,ipu3)
+LIBCAMERA_IPAS		+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_IPA_RASPBERRYPI,raspberrypi)
+LIBCAMERA_IPAS		+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_IPA_RKISP1,rkisp1)
+LIBCAMERA_IPAS		+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_IPA_VIMC,vimc)
+
+LIBCAMERA_IPAS		:= $(strip $(LIBCAMERA_IPAS))
+LIBCAMERA_IPAS		:= $(subst $(ptx/def/space),$(ptx/def/comma),$(LIBCAMERA_IPAS))
+
+LIBCAMERA_PIPELINES	:=
+LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_IPU3,ipu3)
+LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_RASPBERRYPI,raspberrypi)
+LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_RKISP1,rkisp1)
+LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_SIMPLE,simple)
+LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_UVCVIDEO,uvcvideo)
+LIBCAMERA_PIPELINES	+= $(call ptx/ifdef,PTXCONF_LIBCAMERA_PIPELINE_VIMC,vimc)
+
+LIBCAMERA_PIPELINES	:= $(strip $(LIBCAMERA_PIPELINES))
+LIBCAMERA_PIPELINES	:= $(subst $(ptx/def/space),$(ptx/def/comma),$(LIBCAMERA_PIPELINES))
+
+
+LIBCAMERA_CONF_TOOL	:= meson
+LIBCAMERA_CONF_OPT	:= \
+	$(CROSS_MESON_USR) \
+	-Dandroid=disabled \
+	-Dcam=$(call ptx/endis,PTXCONF_LIBCAMERA_CAM)d \
+	-Ddocumentation=disabled \
+	-Dgstreamer=$(call ptx/endis,PTXCONF_LIBCAMERA_GSTREAMER)d \
+	-Dipas=$(LIBCAMERA_IPAS) \
+	-Dlc-compliance=disabled \
+	-Dpipelines=$(LIBCAMERA_PIPELINES) \
+	-Dqcam=$(call ptx/endis,PTXCONF_LIBCAMERA_QCAM)d \
+	-Dtest=false \
+	-Dtracing=$(call ptx/endis,PTXCONF_LIBCAMERA_TRACING)d \
+	-Dv4l2=false \
+	-Dpycamera=disabled
+
+# ----------------------------------------------------------------------------
+# Target-Install
+# ----------------------------------------------------------------------------
+
+define install_ipa
+	@$(call install_copy, libcamera, 0, 0, 0644, -, /usr/lib/libcamera/ipa_$(strip $(1)).so, 0)
+	@$(call install_copy, libcamera, 0, 0, 0644, -, /usr/lib/libcamera/ipa_$(strip $(1)).so.sign)
+	@$(call install_copy, libcamera, 0, 0, 0755, -, /usr/libexec/libcamera/$(strip $(2))_ipa_proxy)
+	@$(call install_alternative_tree, libcamera, 0, 0, /usr/share/libcamera/ipa/$(strip $(2)))
+endef
+
+$(STATEDIR)/libcamera.targetinstall:
+	@$(call targetinfo)
+
+	@$(call install_init, libcamera)
+	@$(call install_fixup, libcamera, PRIORITY, optional)
+	@$(call install_fixup, libcamera, SECTION, base)
+	@$(call install_fixup, libcamera, AUTHOR, "Matthias Fend <matthias.fend@emfend.at>")
+	@$(call install_fixup, libcamera, DESCRIPTION, missing)
+
+	@$(call install_lib, libcamera, 0, 0, 0644, libcamera)
+	@$(call install_lib, libcamera, 0, 0, 0644, libcamera-base)
+
+ifdef PTXCONF_LIBCAMERA_IPA_IPU3
+	@$(call install_ipa, ipu3, ipu3)
+endif
+
+ifdef PTXCONF_LIBCAMERA_IPA_RASPBERRYPI
+	@$(call install_ipa, rpi, raspberrypi)
+endif
+
+ifdef PTXCONF_LIBCAMERA_IPA_RKISP1
+	@$(call install_ipa, rkisp1, rkisp1)
+endif
+
+ifdef PTXCONF_LIBCAMERA_IPA_VIMC
+	@$(call install_ipa, vimc, vimc)
+endif
+
+ifdef PTXCONF_LIBCAMERA_GSTREAMER
+	@$(call install_lib, libcamera, 0, 0, 0644, gstreamer-1.0/libgstlibcamera)
+endif
+
+ifdef PTXCONF_LIBCAMERA_CAM
+	@$(call install_copy, libcamera, 0, 0, 0755, -, /usr/bin/cam)
+endif
+
+ifdef PTXCONF_LIBCAMERA_QCAM
+	@$(call install_copy, libcamera, 0, 0, 0755, -, /usr/bin/qcam)
+endif
+
+	@$(call install_finish, libcamera)
+
+	@$(call touch)
+
+# vim: syntax=make
-- 
2.25.1




  reply	other threads:[~2022-09-08  7:30 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-08  7:29 [ptxdist] [PATCH 0/1] " Matthias Fend
2022-09-08  7:29 ` Matthias Fend [this message]
2022-09-09  9:46   ` [ptxdist] [PATCH 1/1] " Michael Olbrich
2022-09-10 12:27     ` Matthias Fend
2022-09-10 12:35       ` Michael Olbrich

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=20220908072918.406891-2-matthias.fend@emfend.at \
    --to=matthias.fend@emfend.at \
    --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