blob: 1c0d897f3a2b2dd02f3c262c6f00cb9143493f3f [file] [log] [blame]
# Copyright 2018 The Chromium OS Authors. All rights reserved.
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: cros-camera.eclass
# @MAINTAINER:
# Chromium OS Camera Team
# @BUGREPORTS:
# Please report bugs via http://crbug.com/new (with label Build)
# @VCSURL: https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/master/eclass/@ECLASS@
# @BLURB: helper eclass for building Chromium package in src/platform2/camera
# @DESCRIPTION:
# Packages in src/platform2/camera are in active development. We want builds
# to be incremental and fast. This centralized the logic needed for this.
# @ECLASS-VARIABLE: CROS_CAMERA_TESTS
# @DESCRIPTION:
# An array of tests to run when FEATURES=test is set.
: ${CROS_CAMERA_TESTS:=}
inherit multilib platform
# @FUNCTION: cros-camera_doheader
# @USAGE: <header files...>
# @DESCRIPTION:
# Install the given header files to /usr/include/cros-camera.
cros-camera_doheader() {
(
insinto "/usr/include/cros-camera"
doins "$@"
)
}
# @FUNCTION: cros-camera_dohal
# @USAGE: <source HAL file> <destination HAL file>
# @DESCRIPTION:
# Install the given camera HAL library to /usr/lib/camera_hal or
# /usr/lib64/camera_hal, depending on the architecture and/or platform.
cros-camera_dohal() {
[[ $# -eq 2 ]] || die "Usage: ${FUNCNAME} <src> <dst>"
local src=$1
local dst=$2
(
insinto "/usr/$(get_libdir)/camera_hal"
newins "${src}" "${dst}"
)
}
# @FUNCTION: cros-camera_dopc
# @USAGE: <pkg-config template file>
# @DESCRIPTION:
# Generate the pkg-config file by replacing @INCLUDE_DIR@, @LIB_DIR@, and
# @LIBCHROME_VERS@ with the values detected at build time, then install the
# generated pkg-config file.
cros-camera_dopc() {
[[ $# -eq 1 ]] || die "Usage: ${FUNCNAME} <pc file template>"
local in_pc_file=$1
local out_pc_file="${WORKDIR}/${in_pc_file##*/}"
out_pc_file="${out_pc_file%%.template}"
local include_dir="/usr/include/cros-camera"
local lib_dir="/usr/$(get_libdir)"
sed -e "s|@INCLUDE_DIR@|${include_dir}|" -e "s|@LIB_DIR@|${lib_dir}|" \
-e "s|@LIBCHROME_VERS@|$(libchrome_ver)|" \
"${in_pc_file}" > "${out_pc_file}"
(
insinto "${lib_dir}/pkgconfig"
doins "${out_pc_file}"
)
}
platform_pkg_test() {
local test_bin
for test_bin in "${CROS_CAMERA_TESTS[@]}"; do
platform_test "run" "${OUT}/${test_bin}"
done
}