[PATCH 06/10] utils: codegen: gen-header.sh: Generate libcamera.h based on meson.build

Dan Scally dan.scally at ideasonboard.com
Thu Aug 15 00:19:46 CEST 2024


On 09/08/2024 01:59, Laurent Pinchart wrote:
> The libcamera.h header is a top-level library header that contains every
> other libcamera header. It is currently generated by listing the files
> in include/libcamera/ and dropping the .in suffix from template files.
> This assumes a 1:1 mapping between generate header file names and the
> name of their templates.
>
> Drop that assumption and make the libcamera.h generation based on the
> libcamera public headers listed in meson.build. This makes the
> libcamera.h header generation more future-proof.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---

Makes sense to me:

Reviewed-by: Daniel Scally <dan.scally at ideasonboard.com>

>   include/libcamera/meson.build | 20 ++++++++++----------
>   utils/codegen/gen-header.sh   |  7 +++----
>   2 files changed, 13 insertions(+), 14 deletions(-)
>
> diff --git a/include/libcamera/meson.build b/include/libcamera/meson.build
> index 36de1c2a393c..87b9a9412fe7 100644
> --- a/include/libcamera/meson.build
> +++ b/include/libcamera/meson.build
> @@ -107,16 +107,6 @@ formats_h = custom_target('formats_h',
>                             install_dir : libcamera_headers_install_dir)
>   libcamera_public_headers += formats_h
>   
> -# libcamera.h
> -libcamera_h = custom_target('gen-header',
> -                            input : 'meson.build',
> -                            output : 'libcamera.h',
> -                            command : [gen_header, meson.current_source_dir(), '@OUTPUT@'],
> -                            install : true,
> -                            install_dir : libcamera_headers_install_dir)
> -
> -libcamera_public_headers += libcamera_h
> -
>   # version.h
>   version = libcamera_version.split('.')
>   libcamera_version_config = configuration_data()
> @@ -129,3 +119,13 @@ version_h = configure_file(input : 'version.h.in',
>                              configuration : libcamera_version_config,
>                              install_dir : libcamera_headers_install_dir)
>   libcamera_public_headers += version_h
> +
> +# libcamera.h
> +libcamera_h = custom_target('gen-header',
> +                            input : 'meson.build',
> +                            output : 'libcamera.h',
> +                            command : [gen_header, '@OUTPUT@', libcamera_public_headers],
> +                            install : true,
> +                            install_dir : libcamera_headers_install_dir)
> +
> +libcamera_public_headers += libcamera_h
> diff --git a/utils/codegen/gen-header.sh b/utils/codegen/gen-header.sh
> index d4692758eeb4..c78f085992ef 100755
> --- a/utils/codegen/gen-header.sh
> +++ b/utils/codegen/gen-header.sh
> @@ -1,7 +1,7 @@
>   #!/bin/sh
>   
> -src_dir="$1"
> -dst_file="$2"
> +dst_file="$1"
> +shift
>   
>   cat <<EOF > "$dst_file"
>   /* SPDX-License-Identifier: LGPL-2.1-or-later */
> @@ -16,9 +16,8 @@ cat <<EOF > "$dst_file"
>   
>   EOF
>   
> -headers=$(for header in "$src_dir"/*.h "$src_dir"/*.h.in ; do
> +headers=$(for header in "$@" ; do
>   	header=$(basename "$header")
> -	header="${header%.in}"
>   	echo "$header"
>   done | sort)
>   


More information about the libcamera-devel mailing list