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

Signed-off-by: Matthias Fend <matthias.f...@emfend.at>
---
 ...t-information-for-version-generation.patch |  29 ++++
 .../libcamera-2022-08-30-g68683d3811a8/series |   4 +
 rules/libcamera.in                            | 129 ++++++++++++++++
 rules/libcamera.make                          | 143 ++++++++++++++++++
 4 files changed, 305 insertions(+)
 create mode 100644 
patches/libcamera-2022-08-30-g68683d3811a8/0001-do-not-use-git-information-for-version-generation.patch
 create mode 100644 patches/libcamera-2022-08-30-g68683d3811a8/series
 create mode 100644 rules/libcamera.in
 create mode 100644 rules/libcamera.make

diff --git 
a/patches/libcamera-2022-08-30-g68683d3811a8/0001-do-not-use-git-information-for-version-generation.patch
 
b/patches/libcamera-2022-08-30-g68683d3811a8/0001-do-not-use-git-information-for-version-generation.patch
new file mode 100644
index 000000000..3e5c5ce68
--- /dev/null
+++ 
b/patches/libcamera-2022-08-30-g68683d3811a8/0001-do-not-use-git-information-for-version-generation.patch
@@ -0,0 +1,29 @@
+From: Matthias Fend <matthias.f...@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.f...@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-2022-08-30-g68683d3811a8/series 
b/patches/libcamera-2022-08-30-g68683d3811a8/series
new file mode 100644
index 000000000..6ca42eafc
--- /dev/null
+++ b/patches/libcamera-2022-08-30-g68683d3811a8/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..1f2d70aad
--- /dev/null
+++ b/rules/libcamera.in
@@ -0,0 +1,129 @@
+## SECTION=multimedia_libs
+
+menuconfig LIBCAMERA
+       bool
+       select HOST_MESON
+       select HOST_SYSTEM_PYTHON3
+       select HOST_SYSTEM_PYTHON3_JINJA2
+       select HOST_SYSTEM_PYTHON3_PYYAML
+       select HOST_SYSTEM_PYTHON3_PLY
+       select HOST_OPENSSL
+       select GNUTLS                           if 
LIBCAMERA_IPA_MODULE_SIGN_GNUTLS
+       select OPENSSL                          if 
LIBCAMERA_IPA_MODULE_SIGN_OPENSSL
+       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 LIBDRM                           if LIBCAMERA_CAM_KMS_SINK
+       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
+       prompt "libcamera                     "
+       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"
+
+if LIBCAMERA_CAM
+
+config LIBCAMERA_CAM_KMS_SINK
+       bool
+       prompt "Enable KMS sink"
+endif
+
+config LIBCAMERA_QCAM
+       bool
+       prompt "Install qcam test application"
+
+config LIBCAMERA_BACKTRACE
+       bool
+       prompt "Add support for backtraces"
+
+menu "Platforms"
+
+config LIBCAMERA_PIPELINE_IPU3
+       bool
+       prompt "ipu3 pipeline"
+
+config LIBCAMERA_IPA_IPU3
+       bool
+       default y
+       prompt "ipu3 IPA"
+       depends on LIBCAMERA_PIPELINE_IPU3
+
+config LIBCAMERA_PIPELINE_RASPBERRYPI
+       bool
+       prompt "raspberrypi pipeline"
+
+config LIBCAMERA_IPA_RASPBERRYPI
+       bool
+       default y
+       prompt "raspberrypi IPA"
+       depends on LIBCAMERA_PIPELINE_RASPBERRYPI
+
+config LIBCAMERA_PIPELINE_RKISP1
+       bool
+       prompt "rkisp1 pipeline"
+
+config LIBCAMERA_IPA_RKISP1
+       bool
+       default y
+       prompt "rkisp1 IPA"
+       depends on LIBCAMERA_PIPELINE_RKISP1
+
+config LIBCAMERA_PIPELINE_SIMPLE
+       bool
+       prompt "simple pipeline"
+
+config LIBCAMERA_PIPELINE_UVCVIDEO
+       bool
+       prompt "uvcvideo pipeline"
+
+config LIBCAMERA_PIPELINE_VIMC
+       bool
+       prompt "vimc pipeline"
+
+config LIBCAMERA_IPA_VIMC
+       bool
+       default y
+       prompt "vimc IPA"
+       depends on LIBCAMERA_PIPELINE_VIMC
+
+endmenu
+
+config LIBCAMERA_IPA_MODULE_SIGN
+       bool
+       default y
+       prompt "Enable IPA module signing"
+       help
+         Without IPA module signing, all IPA modules will be isolated in a
+         separate process. This adds an unnecessary extra overhead at runtime.
+
+if LIBCAMERA_IPA_MODULE_SIGN
+
+choice
+       prompt "Crypt provider"
+       default LIBCAMERA_IPA_MODULE_SIGN_GNUTLS
+
+config LIBCAMERA_IPA_MODULE_SIGN_GNUTLS
+       bool "gnutls"
+
+config LIBCAMERA_IPA_MODULE_SIGN_OPENSSL
+       bool "openssl (libcrypto)"
+
+endchoice
+
+endif
+
+endif
diff --git a/rules/libcamera.make b/rules/libcamera.make
new file mode 100644
index 000000000..a6560fb48
--- /dev/null
+++ b/rules/libcamera.make
@@ -0,0 +1,143 @@
+# -*-makefile-*-
+#
+# Copyright (C) 2022 by Matthias Fend <matthias.f...@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      := 2022-08-30-g68683d3811a8
+LIBCAMERA_MD5          := 2f5a985257a0797e0bd0b4182ef9bc9c
+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-or-later 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-y                                       :=
+LIBCAMERA_IPAS-$(PTXCONF_LIBCAMERA_IPA_IPU3)           += ipu3
+LIBCAMERA_IPASC-$(PTXCONF_LIBCAMERA_IPA_RASPBERRYPI)   += raspberrypi
+LIBCAMERA_IPASM-$(PTXCONF_LIBCAMERA_IPA_RASPBERRYPI)   += rpi
+LIBCAMERA_IPAS-$(PTXCONF_LIBCAMERA_IPA_RKISP1)         += rkisp1
+LIBCAMERA_IPAS-$(PTXCONF_LIBCAMERA_IPA_VIMC)           += vimc
+
+LIBCAMERA_IPASC-y      += $(LIBCAMERA_IPAS-y)
+LIBCAMERA_IPASM-y      += $(LIBCAMERA_IPAS-y)
+
+LIBCAMERA_PIPELINES-y                                          :=
+LIBCAMERA_PIPELINES-$(PTXCONF_LIBCAMERA_PIPELINE_IPU3)         += ipu3
+LIBCAMERA_PIPELINES-$(PTXCONF_LIBCAMERA_PIPELINE_RASPBERRYPI)  += raspberrypi
+LIBCAMERA_PIPELINES-$(PTXCONF_LIBCAMERA_PIPELINE_RKISP1)       += rkisp1
+LIBCAMERA_PIPELINES-$(PTXCONF_LIBCAMERA_PIPELINE_SIMPLE)       += simple
+LIBCAMERA_PIPELINES-$(PTXCONF_LIBCAMERA_PIPELINE_UVCVIDEO)     += uvcvideo
+LIBCAMERA_PIPELINES-$(PTXCONF_LIBCAMERA_PIPELINE_VIMC)         += vimc
+
+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=$(subst $(ptx/def/space),$(ptx/def/comma),$(strip 
$(LIBCAMERA_IPASC-y))) \
+       -Dlc-compliance=disabled \
+       -Dpipelines=$(subst $(ptx/def/space),$(ptx/def/comma),$(strip 
$(LIBCAMERA_PIPELINES-y))) \
+       -Dqcam=$(call ptx/endis,PTXCONF_LIBCAMERA_QCAM)d \
+       -Dtest=false \
+       -Dtracing=disabled \
+       -Dv4l2=false \
+       -Dpycamera=disabled
+
+# ----------------------------------------------------------------------------
+# Target-Install
+# ----------------------------------------------------------------------------
+
+define install_ipa
+       @$(call install_copy, libcamera, 0, 0, 0755, -, \
+               /usr/libexec/libcamera/$(strip $(1))_ipa_proxy)
+       @$(call install_alternative_tree, libcamera, 0, 0, \
+               /usr/share/libcamera/ipa/$(strip $(1)))
+endef
+
+define install_ipa_module_signed
+       # The IPA modules must not be stripped, otherwise the associated
+       # signatures will no longer be valid.
+       @$(call install_copy, libcamera, 0, 0, 0644, -, \
+               /usr/lib/libcamera/ipa_$(strip $(1)).so, n)
+       @$(call install_copy, libcamera, 0, 0, 0644, -, \
+               /usr/lib/libcamera/ipa_$(strip $(1)).so.sign)
+endef
+
+define install_ipa_module
+       @$(call install_copy, libcamera, 0, 0, 0644, -, \
+               /usr/lib/libcamera/ipa_$(strip $(1)).so)
+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.f...@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)
+
+       @$(foreach ipa,$(LIBCAMERA_IPASC-y), \
+               $(call install_ipa, $(ipa))$(ptx/nl))
+
+ifdef PTXCONF_LIBCAMERA_IPA_MODULE_SIGN
+       @$(foreach ipa_module,$(LIBCAMERA_IPASM-y), \
+               $(call install_ipa_module_signed, $(ipa_module))$(ptx/nl))
+else
+       @$(foreach ipa_module,$(LIBCAMERA_IPASM-y), \
+               $(call install_ipa_module, $(ipa_module))$(ptx/nl))
+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 via email to