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

Message ID 20240809005914.20662-7-laurent.pinchart@ideasonboard.com
State Accepted
Headers show
Series
  • libcamera: Improve code generation for controls
Related show

Commit Message

Laurent Pinchart Aug. 9, 2024, 12:59 a.m. UTC
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@ideasonboard.com>
---
 include/libcamera/meson.build | 20 ++++++++++----------
 utils/codegen/gen-header.sh   |  7 +++----
 2 files changed, 13 insertions(+), 14 deletions(-)

Comments

Dan Scally Aug. 14, 2024, 10:19 p.m. UTC | #1
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@ideasonboard.com>
> ---

Makes sense to me:

Reviewed-by: Daniel Scally <dan.scally@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)
>
Dan Scally Aug. 14, 2024, 10:29 p.m. UTC | #2
Ah, but I forgot to mention:

On 14/08/2024 23:19, Dan Scally wrote:
>
> 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
s/generate/generated
>> name of their templates.
>>
>> Drop that assumption and make the libcamera.h generation based on the
>> libcamera public headers listed in meson.build. 


perhaps "and base the libcamera.h generation on the"?

>> This makes the
>> libcamera.h header generation more future-proof.
>>
>> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>> ---
>
> Makes sense to me:
>
> Reviewed-by: Daniel Scally <dan.scally@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)
Paul Elder Aug. 15, 2024, 2:51 a.m. UTC | #3
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@ideasonboard.com>

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

Patch
diff mbox series

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)