config BR2_PACKAGE_LIBCAMERA_ARCH_SUPPORTS
	bool
	default y
	# Invalid packing size of ControlValue struct on m68k
	depends on BR2_m68k

menuconfig BR2_PACKAGE_LIBCAMERA
	bool "libcamera"
	depends on BR2_PACKAGE_LIBCAMERA_ARCH_SUPPORTS
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_TOOLCHAIN_HAS_THREADS
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17
	depends on !BR2_STATIC_LIBS # gnutls
	depends on BR2_USE_WCHAR # gnutls
	select BR2_PACKAGE_GNUTLS
	select BR2_PACKAGE_LIBCAMERA_PIPELINE_UVCVIDEO if !BR2_PACKAGE_LIBCAMERA_HAS_PIPELINE
	help
	  libcamera provides a software stack to support
	  complex devices that need heavy hardware image
	  processing operations.

	  http://www.libcamera.org/

if BR2_PACKAGE_LIBCAMERA

config BR2_PACKAGE_LIBCAMERA_V4L2
	bool "libcamera v4l2 compatibility layer"
	help
	  libcamera v4l2 compatibility layer

config BR2_PACKAGE_LIBCAMERA_HAS_PIPELINE
	bool

config BR2_PACKAGE_LIBCAMERA_PIPELINE_IPU3
	bool "ipu3 pipeline"
	select BR2_PACKAGE_LIBCAMERA_HAS_PIPELINE
	help
	  Pipeline for Intel IPU3.

config BR2_PACKAGE_LIBCAMERA_PIPELINE_RASPBERRYPI
	bool "raspberrypi pipeline"
	depends on BR2_USE_WCHAR # boost (already enforced for gnutls)
	select BR2_PACKAGE_BOOST
	select BR2_PACKAGE_LIBCAMERA_HAS_PIPELINE
	help
	  Pipeline for Raspberry Pi devices.

config BR2_PACKAGE_LIBCAMERA_PIPELINE_RKISP1
	bool "rkisp1 pipeline"
	select BR2_PACKAGE_LIBCAMERA_HAS_PIPELINE
	help
	  Pipeline for Rockchip ISP1.

config BR2_PACKAGE_LIBCAMERA_PIPELINE_SIMPLE
	bool "simple pipeline"
	select BR2_PACKAGE_LIBCAMERA_HAS_PIPELINE
	help
	  Pipeline for simple pipelines.

config BR2_PACKAGE_LIBCAMERA_PIPELINE_UVCVIDEO
	bool "uvcvideo pipeline"
	help
	  Pipeline for uvcvideo devices.

config BR2_PACKAGE_LIBCAMERA_PIPELINE_VIMC
	bool "vimc pipeline"
	select BR2_PACKAGE_LIBCAMERA_HAS_PIPELINE
	help
	  Pipeline for the vimc device.

endif # BR2_PACKAGE_LIBCAMERA

comment "libcamera needs a toolchain w/ C++, threads, wchar, dynamic library, gcc >= 7"
	depends on BR2_PACKAGE_LIBCAMERA_ARCH_SUPPORTS
	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \
		!BR2_TOOLCHAIN_GCC_AT_LEAST_7 || BR2_STATIC_LIBS || !BR2_USE_WCHAR
