| # Copyright 2021 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| EAPI=7 |
| |
| CROS_WORKON_COMMIT="dbb1136242ba822d539eaf11493f3b68815adb7f" |
| CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "4be8d3ae5664634825afc2e6e4b8c24816ee9b9e" "835ea099c8643676eca960bb95a9349559008807" "60fa47aebd6ebfb702012849bd560717fceddcd4") |
| CROS_WORKON_PROJECT="chromiumos/platform2" |
| CROS_WORKON_LOCALNAME="../platform2" |
| CROS_WORKON_SUBTREE=".gn camera/build camera/libfs common-mk" |
| CROS_WORKON_OUTOFTREE_BUILD="1" |
| CROS_WORKON_INCREMENTAL_BUILD="1" |
| |
| PLATFORM_SUBDIR="camera/libfs" |
| |
| inherit cros-camera cros-workon platform |
| |
| DESCRIPTION="Camera Libraries File System which installs the prebuilt libraries." |
| |
| IUSE=" |
| camera_feature_auto_framing |
| camera_feature_face_detection |
| camera_feature_hdrnet |
| camera_feature_portrait_mode |
| march_alderlake |
| march_armv8 |
| march_bdver4 |
| march_corei7 |
| march_goldmont |
| march_silvermont |
| march_skylake |
| march_tigerlake |
| march_tremont |
| march_znver1 |
| ondevice_document_scanner |
| ondevice_document_scanner_dlc |
| " |
| |
| # Auto face framing depends on the face detection feature. |
| REQUIRED_USE=" |
| camera_feature_auto_framing? ( camera_feature_face_detection ) |
| ?? ( ondevice_document_scanner ondevice_document_scanner_dlc ) |
| " |
| |
| LOCAL_MIRROR="gs://chromeos-localmirror/distfiles" |
| PACAKGE_AUTOFRAMING="chromeos-camera-libautoframing-2022.07.26.tbz2" |
| PACKAGE_DOCUMENT_SCANNING="chromeos-document-scanning-lib-2022.08.05.tar.bz2" |
| PACAKGE_FACESSD="chromeos-facessd-lib-2021.10.27.tar.bz2" |
| PACKAGE_GCAM="chromeos-camera-libgcam-2022.02.24.tar.bz2" |
| PACKAGE_PORTRAIT_PROCESSOR_AMD64="portrait-processor-lib-x86_64-2020.04.06-unstripped.tbz2" |
| PACKAGE_PORTRAIT_PROCESSOR_ARM="portrait-processor-lib-armv7-2020.04.06-unstripped.tbz2" |
| |
| SRC_URI=" |
| camera_feature_auto_framing? ( |
| ${LOCAL_MIRROR}/${PACAKGE_AUTOFRAMING} |
| ) |
| ${LOCAL_MIRROR}/${PACKAGE_DOCUMENT_SCANNING} |
| ${LOCAL_MIRROR}/${PACAKGE_FACESSD} |
| camera_feature_hdrnet? ( |
| ${LOCAL_MIRROR}/${PACKAGE_GCAM} |
| ) |
| camera_feature_portrait_mode? ( |
| amd64? ( |
| ${LOCAL_MIRROR}/${PACKAGE_PORTRAIT_PROCESSOR_AMD64} |
| ) |
| arm? ( |
| ${LOCAL_MIRROR}/${PACKAGE_PORTRAIT_PROCESSOR_ARM} |
| ) |
| ) |
| " |
| |
| LICENSE="BSD-Google" |
| SLOT="0" |
| KEYWORDS="*" |
| |
| RDEPEND=" |
| !media-libs/cros-camera-document-scanning |
| !media-libs/cros-camera-effect-portrait-mode |
| !media-libs/cros-camera-facessd |
| !media-libs/cros-camera-libautoframing |
| !media-libs/cros-camera-libgcam |
| " |
| |
| src_unpack() { |
| default_src_unpack |
| platform_src_unpack |
| # Override unpacked data by files/* for local development. |
| if [[ "${PV}" == "9999" ]]; then |
| cp -r "${FILESDIR}"/* "${WORKDIR}" |
| fi |
| } |
| |
| install_lib() { |
| local lib_src_path="$1" |
| local so_files_path="$2" |
| shift 2 |
| |
| local lib_name=$(basename "${lib_src_path}") |
| |
| # For building binary, but won't be installed into the image. |
| insinto /build/share/cros_camera |
| doins "${lib_src_path}" |
| |
| # Put into the squashfs image without debug symbols. |
| $(tc-getSTRIP) -s "${lib_src_path}" -o "${so_files_path}/${lib_name}" |
| } |
| |
| src_install() { |
| insinto /etc/init |
| doins init/cros-camera-libfs.conf |
| |
| local arch_march=$(cros-camera_get_arch_march_path) |
| |
| local so_files_path="${WORKDIR}/camera_libs" |
| mkdir -p "${so_files_path}" |
| |
| local camera_g3_libs_path="${WORKDIR}/g3_libs.squash" |
| |
| # Move the required .so into the folder to prepare for compression. |
| if use camera_feature_auto_framing; then |
| install_lib "${WORKDIR}/libautoframing_cros.so" "${so_files_path}" |
| fi |
| if use ondevice_document_scanner; then |
| install_lib "${WORKDIR}/${arch_march}/libdocumentscanner.so" "${so_files_path}" |
| fi |
| install_lib "${WORKDIR}/${arch_march}/libfacessd_cros.so" "${so_files_path}" |
| if use camera_feature_hdrnet && (use march_skylake || use march_alderlake || use amd64); then |
| install_lib "${WORKDIR}/${arch_march}/libgcam_cros.so" "${so_files_path}" |
| fi |
| if use camera_feature_portrait_mode; then |
| install_lib "${WORKDIR}/libportrait_cros.so" "${so_files_path}" |
| fi |
| |
| # Compress the .so files to a single .squash file and install it. |
| mksquashfs "${so_files_path}" "${camera_g3_libs_path}" \ |
| -all-root -noappend -no-recovery -no-exports -exit-on-error \ |
| -no-progress -4k-align \ |
| -b 1M \ |
| -root-mode 0755 |
| insinto /usr/share/cros-camera |
| doins "${camera_g3_libs_path}" |
| keepdir /usr/share/cros-camera/libfs |
| |
| # For Document Scanning |
| insinto /usr/include/chromeos/libdocumentscanner/ |
| doins "${WORKDIR}"/document_scanner.h |
| |
| insinto /usr/include/cros-camera |
| doins "${WORKDIR}"/*.h |
| |
| # Install model file and anchor file |
| insinto /usr/share/cros-camera/ml_models |
| doins "${WORKDIR}"/*.pb "${WORKDIR}"/*.tflite |
| } |