summaryrefslogtreecommitdiff
path: root/src/ipa/meson.build
blob: df385eae84d3e0dbf0dafe70553988d6ae844d5c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# SPDX-License-Identifier: CC0-1.0

ipa_install_dir = join_paths(get_option('libdir'), 'libcamera')
ipa_data_dir = join_paths(get_option('datadir'), 'libcamera', 'ipa')
ipa_sysconf_dir = join_paths(get_option('sysconfdir'), 'libcamera', 'ipa')

ipa_includes = [
    libcamera_includes,
]

config_h.set('IPA_CONFIG_DIR',
             '"' + join_paths(get_option('prefix'), ipa_sysconf_dir) +
             ':' + join_paths(get_option('prefix'), ipa_data_dir) + '"')

config_h.set('IPA_MODULE_DIR',
             '"' + join_paths(get_option('prefix'), ipa_install_dir) + '"')

subdir('libipa')

ipa_sign = files('ipa-sign.sh')

ipas = ['ipu3', 'raspberrypi', 'rkisp1', 'vimc']
ipa_names = []

foreach pipeline : pipelines
    if ipas.contains(pipeline)
        subdir(pipeline)
        ipa_names += join_paths(ipa_install_dir, ipa_name + '.so')
    endif
endforeach

if ipa_sign_module
    # Regenerate the signatures for all IPA modules. We can't simply install the
    # .sign files, as meson strips the DT_RPATH and DT_RUNPATH from binaries at
    # install time, which invalidates the signatures.
    meson.add_install_script('ipa-sign-install.sh',
                             ipa_priv_key.full_path(),
                             ipa_names)
endif
if [ $# != 1 ] ; then echo "Usage: $0 <kernel dir>" exit 1 fi header_dir="$(dirname "$(realpath "$0")")/../include/linux" kernel_dir="$1" # Bail out if the directory doesn't contain kernel sources line=$(head -3 "${kernel_dir}/Kbuild" 2>/dev/null | tail -1) if [ "$line" != "# Kbuild for top-level directory of the kernel" ] ; then echo "Directory ${kernel_dir} doesn't contain a kernel source tree" exit 1 fi if [ ! -d "${kernel_dir}/.git" ] ; then echo "Directory ${kernel_dir} doesn't contain a git tree" exit 1 fi # Check the kernel version, and reject dirty trees version=$(git -C "${kernel_dir}" describe --dirty) echo $version if echo "${version}" | grep -q dirty ; then echo "Kernel tree in ${kernel_dir} is dirty" exit 1 fi # Install the headers to a temporary directory install_dir=$(mktemp -d) if [ ! -d "${install_dir}" ] ; then echo "Failed to create temporary directory" exit 1 fi trap "rm -rf ${install_dir}" EXIT set -e make -C "${kernel_dir}" O="${install_dir}" headers_install set +e # Copy the headers headers=" drm/drm_fourcc.h linux/dma-buf.h linux/dma-heap.h linux/media-bus-format.h linux/media.h linux/rkisp1-config.h linux/v4l2-common.h linux/v4l2-controls.h linux/v4l2-mediabus.h linux/v4l2-subdev.h linux/videodev2.h " for header in $headers ; do name=$(basename "${header}") cp "${install_dir}/usr/include/${header}" "${header_dir}/${name}" done # The IPU3 header is a special case, as it's stored in staging. Handle it # manually. (cd "${install_dir}" ; "${kernel_dir}scripts/headers_install.sh" \ "${kernel_dir}/drivers/staging/media/ipu3/include/intel-ipu3.h" \ "${header_dir}/intel-ipu3.h") # Update the README file cat <<EOF > "${header_dir}/README" # SPDX-License-Identifier: CC0-1.0 Files in this directory are imported from ${version} of the Linux kernel. Do not modify them manually. EOF # Cleanup rm -rf "${install_dir}" cat <<EOF ---------------------------------------------------------------------- Kernel headers updated. Please review and up-port local changes before committing. ---------------------------------------------------------------------- EOF