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

Paul Elder paul.elder at ideasonboard.com
Thu Aug 15 04:51:16 CEST 2024


On Fri, Aug 09, 2024 at 03:59:10AM +0300, 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>

Reviewed-by: Paul Elder <paul.elder 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