blob: 7c7a4a356b854b9153ccbf066eabeeb31db9794c [file] [log] [blame]
# Copyright 2021 The Chromium OS Authors. All rights reserved.
# Distributed under the terms of the GNU General Public License v2
EAPI=7
CROS_WORKON_COMMIT="eddffb488e6b0e8ba6309122b37b341057179416"
CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "60fa47aebd6ebfb702012849bd560717fceddcd4" "509fcdecd3a70e50e5aa4e48d65de2dbd6decdb9" "4be8d3ae5664634825afc2e6e4b8c24816ee9b9e" "7093536475612fadc6a0afe16b8f5f4f4251e4c2" "f481c437e0dbbacc4832a55dfc3fda4c078162b2" "29d52c6d2464057e3fde8214a173f96d96f3b267" "2b7909959649540a63997338914ec45cf9c7d07c" "aae8bf048bbe1147ff2aa47f59de29bad1b6355d" "527abd7a988a45572305a6c44b5324d0d9cf8be2" "8a9ef8758fbc933dbbb61914e0a924d6fd9626f6" "6c730fa6bc9c00d204b80c4944f1951b8f35a48e")
CROS_WORKON_PROJECT="chromiumos/platform2"
CROS_WORKON_LOCALNAME="platform2"
CROS_WORKON_SUBTREE=".gn common-mk metrics camera/build camera/common camera/features camera/gpu camera/include camera/mojo chromeos-config iioservice/libiioservice_ipc iioservice/mojo"
CROS_WORKON_OUTOFTREE_BUILD="1"
CROS_WORKON_INCREMENTAL_BUILD="1"
PLATFORM_SUBDIR="camera/common"
inherit cros-camera cros-constants cros-workon platform
DESCRIPTION="Chrome OS camera common libraries."
LICENSE="BSD-Google"
KEYWORDS="*"
# 'camera_feature_*' and 'ipu6*' are passed to and used in BUILD.gn files.
IUSE="camera_feature_auto_framing camera_feature_face_detection camera_feature_hdrnet camera_feature_portrait_mode ipu6 ipu6ep ipu6se qualcomm_camx"
# Auto face framing depends on the face detection feature.
REQUIRED_USE="camera_feature_auto_framing? ( camera_feature_face_detection )"
BDEPEND="virtual/pkgconfig"
# TODO: Remove the conflicting packages
CONFLICTING_PACKAGES="
!media-libs/cros-camera-libcab
!media-libs/cros-camera-libcam_gpu_algo
!media-libs/cros-camera-libcamera_common
!media-libs/cros-camera-libcamera_connector
!media-libs/cros-camera-libcamera_exif
!media-libs/cros-camera-libcamera_ipc
!media-libs/cros-camera-libcamera_timezone
!media-libs/cros-camera-libcamera_v4l2_device
!media-libs/cros-camera-libcbm
!media-libs/cros-camera-libjda
"
RDEPEND="
${CONFLICTING_PACKAGES}
chromeos-base/chromeos-config-tools:=
chromeos-base/cros-camera-android-deps:=
media-libs/cros-camera-libfs:=
media-libs/libexif:=
media-libs/libsync:=
media-libs/minigbm:=
virtual/libudev:=
virtual/opengles:=
x11-libs/libdrm:=
"
DEPEND="
${RDEPEND}
>=chromeos-base/metrics-0.0.1-r3152:=
media-libs/cros-camera-libcamera_connector_headers:=
media-libs/libyuv:=
x11-base/xorg-proto:=
x11-drivers/opengles-headers:=
"
src_configure() {
cros_optimize_package_for_speed
platform_src_configure
}
src_install() {
# Install the sandboxed algorithm service.
dobin "${OUT}"/cros_camera_algo
insinto /etc/init
doins init/cros-camera-algo.conf
insinto /etc/dbus-1/system.d
doins dbus/CrosCameraAlgo.conf
insinto /usr/share/policy
newins "seccomp_filter/cros-camera-algo-${ARCH}.policy" cros-camera-algo.policy
# The sandboxed GPU service is used by Portrait Mode feature, IPU6SE
# and Qualcomm Camx camera HAL.
if use camera_feature_portrait_mode || use ipu6se || use qualcomm_camx; then
insinto /etc/init
doins init/cros-camera-gpu-algo.conf
insinto /usr/share/policy
newins "seccomp_filter/cros-camera-gpu-algo-${ARCH}.policy" cros-camera-gpu-algo.policy
fi
# Install libcros_camera required by the camera HAL implementations.
insinto /usr/include/cros-camera/
doins -r ../include/cros-camera/*
# TODO(crbug.com/1197394): Remove after the issue is resolved.
camera_mojo_files=$(find "${OUT}"/gen/include/camera/mojo -name '*.mojom.h')
einfo "${camera_mojo_files}"
insinto /usr/include/cros-camera/mojo/camera
doins -r "${OUT}"/gen/include/camera/mojo
insinto /usr/include/cros-camera/mojo/iioservice
doins -r "${OUT}"/gen/include/iioservice/mojo
dolib.so "${OUT}"/lib/libcros_camera.so
dolib.a "${OUT}"/libcros_camera_mojom.a
# Project Pita libraries need libcamera_connector.so to run.
dosym libcros_camera.so /usr/"$(get_libdir)"/libcamera_connector.so
insinto /usr/"$(get_libdir)"/pkgconfig
doins "${OUT}"/obj/camera/common/libcros_camera.pc
local fuzzer_component_id="167281"
platform_fuzzer_install "${S}"/OWNERS \
"${OUT}"/camera_still_capture_processor_impl_fuzzer \
--comp "${fuzzer_component_id}"
platform_src_install
}
platform_pkg_test() {
local cros_camera_tests=(
camera_buffer_pool_test
camera_face_detection_test
camera_hal3_helpers_test
cbm_test
embed_file_toc_test
future_test
zsl_helper_test
)
local test_bin
for test_bin in "${cros_camera_tests[@]}"; do
platform_test run "${OUT}/${test_bin}"
done
}