packages/multimedia/libcamera/Makefile

188 lines
5.8 KiB
Makefile

#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=libcamera
PKG_VERSION:=0.7.2
PKG_RELEASE:=2
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://git.libcamera.org/libcamera/libcamera.git
PKG_SOURCE_VERSION:=v$(PKG_VERSION)
PKG_MIRROR_HASH:=818205008b9e070ceb35d2bdc58d9d07c3313805d8fc99b8257331170f711d73
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=LGPL-2.1-or-later GPL-2.0-or-later
PKG_LICENSE_FILES:=LICENSES/LGPL-2.1-or-later.txt LICENSES/GPL-2.0-or-later.txt
PKG_CPE_ID:=cpe:/a:libcamera:libcamera
PKG_BUILD_DEPENDS:=python3/host python-jinja2/host python-ply/host python-yaml/host
PKG_BUILD_FLAGS:=no-mips16
MESON_USE_STAGING_PYTHON:=1
include $(INCLUDE_DIR)/package.mk
include ../../lang/python/python3-host.mk
include $(INCLUDE_DIR)/meson.mk
MESON_VARS += PYTHONPATH="$(HOST_PYTHON3PATH)"
# libcamera reads the ELF section headers of IPA modules, sstrip removes them
ifeq ($(CONFIG_NO_STRIP),)
STRIP:=$(TARGET_CROSS)strip --strip-unneeded
endif
define Package/libcamera/Default
SECTION:=multimedia
CATEGORY:=Multimedia
URL:=https://libcamera.org/
endef
define Package/libcamera
$(call Package/libcamera/Default)
TITLE:=Camera stack library
DEPENDS:=+libstdcpp +libatomic +libudev-zero +libyaml
endef
define Package/libcamera/description
libcamera provides a userspace camera stack with pipeline handlers for
ISPs and image sources, and image processing algorithms that run in
loadable IPA modules.
endef
define Package/libcamera-gst
$(call Package/libcamera/Default)
TITLE:=libcamera GStreamer plugin (libcamerasrc)
DEPENDS:=+libcamera +glib2 +libgstreamer1 +libgst1allocators +libgst1video
endef
define Package/libcamera-gst/description
The libcamerasrc GStreamer element, which captures from cameras
through libcamera.
endef
define Package/libcamera-v4l2
$(call Package/libcamera/Default)
TITLE:=libcamera V4L2 compatibility layer
DEPENDS:=+libcamera
endef
define Package/libcamera-v4l2/description
A preloadable library that lets V4L2 applications capture from
cameras through libcamera, and the libcamerify wrapper that loads it.
endef
define Package/libcamera-cam
$(call Package/libcamera/Default)
TITLE:=libcamera command line capture tool
DEPENDS:=+libcamera +libevent2 +libevent2-pthreads
endef
define Package/libcamera-cam/description
The cam utility lists cameras and captures frames through libcamera.
endef
# $(1) package suffix, $(2) title, $(3) module name, $(4) proxy name,
# $(5) tuning data directory
define LibcameraIPA
define Package/libcamera-ipa-$(1)
$$(call Package/libcamera/Default)
TITLE:=libcamera IPA module for $(2)
DEPENDS:=+libcamera
endef
define Package/libcamera-ipa-$(1)/description
The image processing algorithms and tuning data that libcamera uses
for $(2).
endef
define Package/libcamera-ipa-$(1)/install
$$(INSTALL_DIR) $$(1)/usr/lib/libcamera/ipa
$$(INSTALL_BIN) $$(PKG_INSTALL_DIR)/usr/lib/libcamera/ipa/ipa_$(3).so \
$$(1)/usr/lib/libcamera/ipa/
$$(INSTALL_DIR) $$(1)/usr/libexec/libcamera
$$(INSTALL_BIN) $$(PKG_INSTALL_DIR)/usr/libexec/libcamera/$(4)_ipa_proxy \
$$(1)/usr/libexec/libcamera/
$$(INSTALL_DIR) $$(1)/usr/share/libcamera/ipa/$(5)
$$(CP) $$(PKG_INSTALL_DIR)/usr/share/libcamera/ipa/$(5)/* \
$$(1)/usr/share/libcamera/ipa/$(5)/
endef
$$(eval $$(call BuildPackage,libcamera-ipa-$(1)))
endef
MESON_ARGS += \
-Dandroid=disabled \
-Dcam=enabled \
-Dcam-output-kms=disabled \
-Dcam-output-sdl2=disabled \
-Dcam-jpeg=disabled \
-Ddocumentation=disabled \
-Dgstreamer=enabled \
-Dipa-signing=disabled \
-Dipas=ipu3,mali-c55,rkisp1,rkisp2,rpi/vc4,softisp \
-Dlc-compliance=disabled \
-Dlibdw=disabled \
-Dlibunwind=disabled \
-Dapps-output-dng=disabled \
-Dpipelines=imx8-isi,ipu3,mali-c55,rkisp1,rkisp2,rpi/vc4,simple,uvcvideo \
-Dpycamera=disabled \
-Dqcam=disabled \
-Drpi-awb-nn=disabled \
-Dsoftisp-gpu=disabled \
-Dtest=false \
-Dtracing=disabled \
-Dudev=enabled \
-Dv4l2=enabled \
-Dwerror=false
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
$(CP) $(PKG_INSTALL_DIR)/usr/include/libcamera $(1)/usr/include/
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libcamera*.so* $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libcamera*.pc $(1)/usr/lib/pkgconfig/
endef
define Package/libcamera/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libcamera*.so.* $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/share/libcamera
$(CP) $(PKG_INSTALL_DIR)/usr/share/libcamera/pipeline $(1)/usr/share/libcamera/
endef
define Package/libcamera-gst/install
$(INSTALL_DIR) $(1)/usr/lib/gstreamer-1.0
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/gstreamer-1.0/libgstlibcamera.so \
$(1)/usr/lib/gstreamer-1.0/
endef
define Package/libcamera-v4l2/install
$(INSTALL_DIR) $(1)/usr/libexec/libcamera
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/libexec/libcamera/v4l2-compat.so \
$(1)/usr/libexec/libcamera/
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/libcamerify $(1)/usr/bin/
endef
define Package/libcamera-cam/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/cam $(1)/usr/bin/
endef
$(eval $(call BuildPackage,libcamera))
$(eval $(call BuildPackage,libcamera-gst))
$(eval $(call BuildPackage,libcamera-v4l2))
$(eval $(call BuildPackage,libcamera-cam))
$(eval $(call LibcameraIPA,ipu3,the Intel IPU3 ISP,ipu3,ipu3,ipu3))
$(eval $(call LibcameraIPA,mali-c55,the Arm Mali-C55 ISP,mali_c55,mali-c55,mali-c55))
$(eval $(call LibcameraIPA,rkisp1,the Rockchip ISP1,rkisp1,rkisp1,rkisp1))
$(eval $(call LibcameraIPA,rkisp2,the Rockchip ISP2,rkisp2,rkisp2,rkisp2))
$(eval $(call LibcameraIPA,rpi-vc4,the Raspberry Pi VC4 ISP,rpi_vc4,raspberrypi,rpi/vc4))
$(eval $(call LibcameraIPA,softisp,the software ISP,softisp,softisp,softisp))