[{"id":30755,"web_url":"https://patchwork.libcamera.org/comment/30755/","msgid":"<3cc6404c-d8c7-42fa-9ca6-c63b5129e320@ideasonboard.com>","date":"2024-08-12T14:53:16","subject":"Re: [PATCH 04/10] meson: Move all code generation scripts to\n\tutils/codegen/","submitter":{"id":156,"url":"https://patchwork.libcamera.org/api/people/156/","name":"Dan Scally","email":"dan.scally@ideasonboard.com"},"content":"Hi Laurent - thanks for the tidy-up\n\nOn 09/08/2024 01:59, Laurent Pinchart wrote:\n> We have multiple code generation scripts in utils/, mixed with other\n> miscellaneous utilities, as well as a larger code base based on mojom in\n> utils/ipc/. To make code sharing easier between the generator scripts,\n> without creating a mess in the utils/ directory, move all the code\n> generation code to utils/codegen/.\n>\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\nReviewed-by: Daniel Scally <dan.scally@ideasonboard.com>\n> ---\n>   include/libcamera/internal/meson.build              |  2 +-\n>   utils/{ => codegen}/gen-controls.py                 |  0\n>   utils/{ => codegen}/gen-formats.py                  |  0\n>   utils/{ => codegen}/gen-header.sh                   |  0\n>   utils/{ => codegen}/gen-ipa-pub-key.py              |  0\n>   utils/{tracepoints => codegen}/gen-tp-header.py     |  0\n>   utils/{ => codegen}/ipc/extract-docs.py             |  0\n>   utils/{ => codegen}/ipc/generate.py                 |  0\n>   utils/{ => codegen}/ipc/generators/__init__.py      |  0\n>   .../libcamera_templates/core_ipa_interface.h.tmpl   |  0\n>   .../libcamera_templates/core_ipa_serializer.h.tmpl  |  0\n>   .../libcamera_templates/definition_functions.tmpl   |  0\n>   .../ipc/generators/libcamera_templates/meson.build  |  0\n>   .../libcamera_templates/module_ipa_interface.h.tmpl |  0\n>   .../libcamera_templates/module_ipa_proxy.cpp.tmpl   |  0\n>   .../libcamera_templates/module_ipa_proxy.h.tmpl     |  0\n>   .../module_ipa_proxy_worker.cpp.tmpl                |  0\n>   .../module_ipa_serializer.h.tmpl                    |  0\n>   .../libcamera_templates/proxy_functions.tmpl        |  0\n>   .../generators/libcamera_templates/serializer.tmpl  |  0\n>   utils/{ => codegen}/ipc/generators/meson.build      |  0\n>   .../ipc/generators/mojom_libcamera_generator.py     |  0\n>   utils/{ => codegen}/ipc/meson.build                 |  0\n>   utils/{ => codegen}/ipc/mojo/README                 |  0\n>   utils/{ => codegen}/ipc/mojo/public/LICENSE         |  0\n>   .../{ => codegen}/ipc/mojo/public/tools/.style.yapf |  0\n>   utils/{ => codegen}/ipc/mojo/public/tools/BUILD.gn  |  0\n>   .../ipc/mojo/public/tools/bindings/BUILD.gn         |  0\n>   .../ipc/mojo/public/tools/bindings/README.md        |  0\n>   .../mojo/public/tools/bindings/checks/__init__.py   |  0\n>   .../tools/bindings/checks/mojom_attributes_check.py |  0\n>   .../checks/mojom_attributes_check_unittest.py       |  0\n>   .../bindings/checks/mojom_definitions_check.py      |  0\n>   .../checks/mojom_interface_feature_check.py         |  0\n>   .../mojom_interface_feature_check_unittest.py       |  0\n>   .../bindings/checks/mojom_restrictions_check.py     |  0\n>   .../checks/mojom_restrictions_checks_unittest.py    |  0\n>   .../mojo/public/tools/bindings/concatenate-files.py |  0\n>   .../concatenate_and_replace_closure_exports.py      |  0\n>   .../public/tools/bindings/gen_data_files_list.py    |  0\n>   .../public/tools/bindings/generate_type_mappings.py |  0\n>   .../public/tools/bindings/minify_with_terser.py     |  0\n>   .../ipc/mojo/public/tools/bindings/mojom.gni        |  0\n>   .../tools/bindings/mojom_bindings_generator.py      |  0\n>   .../bindings/mojom_bindings_generator_unittest.py   |  0\n>   .../tools/bindings/validate_typemap_config.py       |  0\n>   .../ipc/mojo/public/tools/mojom/BUILD.gn            |  0\n>   .../ipc/mojo/public/tools/mojom/README.md           |  0\n>   .../tools/mojom/check_stable_mojom_compatibility.py |  0\n>   .../check_stable_mojom_compatibility_unittest.py    |  0\n>   .../ipc/mojo/public/tools/mojom/const_unittest.py   |  0\n>   .../ipc/mojo/public/tools/mojom/enum_unittest.py    |  0\n>   .../ipc/mojo/public/tools/mojom/feature_unittest.py |  0\n>   .../ipc/mojo/public/tools/mojom/mojom/BUILD.gn      |  0\n>   .../ipc/mojo/public/tools/mojom/mojom/__init__.py   |  0\n>   .../ipc/mojo/public/tools/mojom/mojom/error.py      |  0\n>   .../ipc/mojo/public/tools/mojom/mojom/fileutil.py   |  0\n>   .../public/tools/mojom/mojom/fileutil_unittest.py   |  0\n>   .../public/tools/mojom/mojom/generate/__init__.py   |  0\n>   .../mojo/public/tools/mojom/mojom/generate/check.py |  0\n>   .../public/tools/mojom/mojom/generate/generator.py  |  0\n>   .../mojom/mojom/generate/generator_unittest.py      |  0\n>   .../public/tools/mojom/mojom/generate/module.py     |  0\n>   .../tools/mojom/mojom/generate/module_unittest.py   |  0\n>   .../mojo/public/tools/mojom/mojom/generate/pack.py  |  0\n>   .../tools/mojom/mojom/generate/pack_unittest.py     |  0\n>   .../tools/mojom/mojom/generate/template_expander.py |  0\n>   .../public/tools/mojom/mojom/generate/translate.py  |  0\n>   .../mojom/mojom/generate/translate_unittest.py      |  0\n>   .../mojo/public/tools/mojom/mojom/parse/__init__.py |  0\n>   .../ipc/mojo/public/tools/mojom/mojom/parse/ast.py  |  0\n>   .../public/tools/mojom/mojom/parse/ast_unittest.py  |  0\n>   .../tools/mojom/mojom/parse/conditional_features.py |  0\n>   .../mojom/parse/conditional_features_unittest.py    |  0\n>   .../mojo/public/tools/mojom/mojom/parse/lexer.py    |  0\n>   .../tools/mojom/mojom/parse/lexer_unittest.py       |  0\n>   .../mojo/public/tools/mojom/mojom/parse/parser.py   |  0\n>   .../tools/mojom/mojom/parse/parser_unittest.py      |  0\n>   .../ipc/mojo/public/tools/mojom/mojom_parser.py     |  0\n>   .../public/tools/mojom/mojom_parser_test_case.py    |  0\n>   .../public/tools/mojom/mojom_parser_unittest.py     |  0\n>   .../public/tools/mojom/stable_attribute_unittest.py |  0\n>   .../ipc/mojo/public/tools/mojom/union_unittest.py   |  0\n>   .../tools/mojom/version_compatibility_unittest.py   |  0\n>   .../mojo/public/tools/run_all_python_unittests.py   |  0\n>   utils/{ => codegen}/ipc/parser.py                   |  0\n>   utils/{ => codegen}/ipc/tools/README                |  0\n>   .../ipc/tools/diagnosis/crbug_1001171.py            |  0\n>   utils/codegen/meson.build                           | 13 +++++++++++++\n>   utils/meson.build                                   | 10 +---------\n>   utils/tracepoints/meson.build                       |  5 -----\n>   91 files changed, 15 insertions(+), 15 deletions(-)\n>   rename utils/{ => codegen}/gen-controls.py (100%)\n>   rename utils/{ => codegen}/gen-formats.py (100%)\n>   rename utils/{ => codegen}/gen-header.sh (100%)\n>   rename utils/{ => codegen}/gen-ipa-pub-key.py (100%)\n>   rename utils/{tracepoints => codegen}/gen-tp-header.py (100%)\n>   rename utils/{ => codegen}/ipc/extract-docs.py (100%)\n>   rename utils/{ => codegen}/ipc/generate.py (100%)\n>   rename utils/{ => codegen}/ipc/generators/__init__.py (100%)\n>   rename utils/{ => codegen}/ipc/generators/libcamera_templates/core_ipa_interface.h.tmpl (100%)\n>   rename utils/{ => codegen}/ipc/generators/libcamera_templates/core_ipa_serializer.h.tmpl (100%)\n>   rename utils/{ => codegen}/ipc/generators/libcamera_templates/definition_functions.tmpl (100%)\n>   rename utils/{ => codegen}/ipc/generators/libcamera_templates/meson.build (100%)\n>   rename utils/{ => codegen}/ipc/generators/libcamera_templates/module_ipa_interface.h.tmpl (100%)\n>   rename utils/{ => codegen}/ipc/generators/libcamera_templates/module_ipa_proxy.cpp.tmpl (100%)\n>   rename utils/{ => codegen}/ipc/generators/libcamera_templates/module_ipa_proxy.h.tmpl (100%)\n>   rename utils/{ => codegen}/ipc/generators/libcamera_templates/module_ipa_proxy_worker.cpp.tmpl (100%)\n>   rename utils/{ => codegen}/ipc/generators/libcamera_templates/module_ipa_serializer.h.tmpl (100%)\n>   rename utils/{ => codegen}/ipc/generators/libcamera_templates/proxy_functions.tmpl (100%)\n>   rename utils/{ => codegen}/ipc/generators/libcamera_templates/serializer.tmpl (100%)\n>   rename utils/{ => codegen}/ipc/generators/meson.build (100%)\n>   rename utils/{ => codegen}/ipc/generators/mojom_libcamera_generator.py (100%)\n>   rename utils/{ => codegen}/ipc/meson.build (100%)\n>   rename utils/{ => codegen}/ipc/mojo/README (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/LICENSE (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/.style.yapf (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/BUILD.gn (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/bindings/BUILD.gn (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/bindings/README.md (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/bindings/checks/__init__.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/bindings/checks/mojom_attributes_check.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/bindings/checks/mojom_attributes_check_unittest.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/bindings/checks/mojom_definitions_check.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/bindings/checks/mojom_interface_feature_check.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/bindings/checks/mojom_interface_feature_check_unittest.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/bindings/checks/mojom_restrictions_check.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/bindings/checks/mojom_restrictions_checks_unittest.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/bindings/concatenate-files.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/bindings/concatenate_and_replace_closure_exports.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/bindings/gen_data_files_list.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/bindings/generate_type_mappings.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/bindings/minify_with_terser.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/bindings/mojom.gni (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/bindings/mojom_bindings_generator.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/bindings/mojom_bindings_generator_unittest.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/bindings/validate_typemap_config.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/BUILD.gn (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/README.md (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/check_stable_mojom_compatibility.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/check_stable_mojom_compatibility_unittest.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/const_unittest.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/enum_unittest.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/feature_unittest.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/mojom/BUILD.gn (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/mojom/__init__.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/mojom/error.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/mojom/fileutil.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/mojom/fileutil_unittest.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/mojom/generate/__init__.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/mojom/generate/check.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/mojom/generate/generator.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/mojom/generate/generator_unittest.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/mojom/generate/module.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/mojom/generate/module_unittest.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/mojom/generate/pack.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/mojom/generate/pack_unittest.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/mojom/generate/template_expander.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/mojom/generate/translate.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/mojom/generate/translate_unittest.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/mojom/parse/__init__.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/mojom/parse/ast.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/mojom/parse/ast_unittest.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/mojom/parse/conditional_features.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/mojom/parse/lexer.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/mojom/parse/parser.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/mojom/parse/parser_unittest.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/mojom_parser.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/mojom_parser_test_case.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/mojom_parser_unittest.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/stable_attribute_unittest.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/union_unittest.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/mojom/version_compatibility_unittest.py (100%)\n>   rename utils/{ => codegen}/ipc/mojo/public/tools/run_all_python_unittests.py (100%)\n>   rename utils/{ => codegen}/ipc/parser.py (100%)\n>   rename utils/{ => codegen}/ipc/tools/README (100%)\n>   rename utils/{ => codegen}/ipc/tools/diagnosis/crbug_1001171.py (100%)\n>   create mode 100644 utils/codegen/meson.build\n>   delete mode 100644 utils/tracepoints/meson.build\n>\n> diff --git a/include/libcamera/internal/meson.build b/include/libcamera/internal/meson.build\n> index 39230facc8a4..1c5eef9cab80 100644\n> --- a/include/libcamera/internal/meson.build\n> +++ b/include/libcamera/internal/meson.build\n> @@ -48,7 +48,7 @@ tracepoints_h = custom_target(\n>       'tp_header',\n>       input : ['tracepoints.h.in', tracepoint_files],\n>       output : 'tracepoints.h',\n> -    command : [gen_tracepoints_header, include_build_dir, '@OUTPUT@', '@INPUT@'],\n> +    command : [gen_tracepoints, include_build_dir, '@OUTPUT@', '@INPUT@'],\n>   )\n>   \n>   libcamera_internal_headers += tracepoints_h\n> diff --git a/utils/gen-controls.py b/utils/codegen/gen-controls.py\n> similarity index 100%\n> rename from utils/gen-controls.py\n> rename to utils/codegen/gen-controls.py\n> diff --git a/utils/gen-formats.py b/utils/codegen/gen-formats.py\n> similarity index 100%\n> rename from utils/gen-formats.py\n> rename to utils/codegen/gen-formats.py\n> diff --git a/utils/gen-header.sh b/utils/codegen/gen-header.sh\n> similarity index 100%\n> rename from utils/gen-header.sh\n> rename to utils/codegen/gen-header.sh\n> diff --git a/utils/gen-ipa-pub-key.py b/utils/codegen/gen-ipa-pub-key.py\n> similarity index 100%\n> rename from utils/gen-ipa-pub-key.py\n> rename to utils/codegen/gen-ipa-pub-key.py\n> diff --git a/utils/tracepoints/gen-tp-header.py b/utils/codegen/gen-tp-header.py\n> similarity index 100%\n> rename from utils/tracepoints/gen-tp-header.py\n> rename to utils/codegen/gen-tp-header.py\n> diff --git a/utils/ipc/extract-docs.py b/utils/codegen/ipc/extract-docs.py\n> similarity index 100%\n> rename from utils/ipc/extract-docs.py\n> rename to utils/codegen/ipc/extract-docs.py\n> diff --git a/utils/ipc/generate.py b/utils/codegen/ipc/generate.py\n> similarity index 100%\n> rename from utils/ipc/generate.py\n> rename to utils/codegen/ipc/generate.py\n> diff --git a/utils/ipc/generators/__init__.py b/utils/codegen/ipc/generators/__init__.py\n> similarity index 100%\n> rename from utils/ipc/generators/__init__.py\n> rename to utils/codegen/ipc/generators/__init__.py\n> diff --git a/utils/ipc/generators/libcamera_templates/core_ipa_interface.h.tmpl b/utils/codegen/ipc/generators/libcamera_templates/core_ipa_interface.h.tmpl\n> similarity index 100%\n> rename from utils/ipc/generators/libcamera_templates/core_ipa_interface.h.tmpl\n> rename to utils/codegen/ipc/generators/libcamera_templates/core_ipa_interface.h.tmpl\n> diff --git a/utils/ipc/generators/libcamera_templates/core_ipa_serializer.h.tmpl b/utils/codegen/ipc/generators/libcamera_templates/core_ipa_serializer.h.tmpl\n> similarity index 100%\n> rename from utils/ipc/generators/libcamera_templates/core_ipa_serializer.h.tmpl\n> rename to utils/codegen/ipc/generators/libcamera_templates/core_ipa_serializer.h.tmpl\n> diff --git a/utils/ipc/generators/libcamera_templates/definition_functions.tmpl b/utils/codegen/ipc/generators/libcamera_templates/definition_functions.tmpl\n> similarity index 100%\n> rename from utils/ipc/generators/libcamera_templates/definition_functions.tmpl\n> rename to utils/codegen/ipc/generators/libcamera_templates/definition_functions.tmpl\n> diff --git a/utils/ipc/generators/libcamera_templates/meson.build b/utils/codegen/ipc/generators/libcamera_templates/meson.build\n> similarity index 100%\n> rename from utils/ipc/generators/libcamera_templates/meson.build\n> rename to utils/codegen/ipc/generators/libcamera_templates/meson.build\n> diff --git a/utils/ipc/generators/libcamera_templates/module_ipa_interface.h.tmpl b/utils/codegen/ipc/generators/libcamera_templates/module_ipa_interface.h.tmpl\n> similarity index 100%\n> rename from utils/ipc/generators/libcamera_templates/module_ipa_interface.h.tmpl\n> rename to utils/codegen/ipc/generators/libcamera_templates/module_ipa_interface.h.tmpl\n> diff --git a/utils/ipc/generators/libcamera_templates/module_ipa_proxy.cpp.tmpl b/utils/codegen/ipc/generators/libcamera_templates/module_ipa_proxy.cpp.tmpl\n> similarity index 100%\n> rename from utils/ipc/generators/libcamera_templates/module_ipa_proxy.cpp.tmpl\n> rename to utils/codegen/ipc/generators/libcamera_templates/module_ipa_proxy.cpp.tmpl\n> diff --git a/utils/ipc/generators/libcamera_templates/module_ipa_proxy.h.tmpl b/utils/codegen/ipc/generators/libcamera_templates/module_ipa_proxy.h.tmpl\n> similarity index 100%\n> rename from utils/ipc/generators/libcamera_templates/module_ipa_proxy.h.tmpl\n> rename to utils/codegen/ipc/generators/libcamera_templates/module_ipa_proxy.h.tmpl\n> diff --git a/utils/ipc/generators/libcamera_templates/module_ipa_proxy_worker.cpp.tmpl b/utils/codegen/ipc/generators/libcamera_templates/module_ipa_proxy_worker.cpp.tmpl\n> similarity index 100%\n> rename from utils/ipc/generators/libcamera_templates/module_ipa_proxy_worker.cpp.tmpl\n> rename to utils/codegen/ipc/generators/libcamera_templates/module_ipa_proxy_worker.cpp.tmpl\n> diff --git a/utils/ipc/generators/libcamera_templates/module_ipa_serializer.h.tmpl b/utils/codegen/ipc/generators/libcamera_templates/module_ipa_serializer.h.tmpl\n> similarity index 100%\n> rename from utils/ipc/generators/libcamera_templates/module_ipa_serializer.h.tmpl\n> rename to utils/codegen/ipc/generators/libcamera_templates/module_ipa_serializer.h.tmpl\n> diff --git a/utils/ipc/generators/libcamera_templates/proxy_functions.tmpl b/utils/codegen/ipc/generators/libcamera_templates/proxy_functions.tmpl\n> similarity index 100%\n> rename from utils/ipc/generators/libcamera_templates/proxy_functions.tmpl\n> rename to utils/codegen/ipc/generators/libcamera_templates/proxy_functions.tmpl\n> diff --git a/utils/ipc/generators/libcamera_templates/serializer.tmpl b/utils/codegen/ipc/generators/libcamera_templates/serializer.tmpl\n> similarity index 100%\n> rename from utils/ipc/generators/libcamera_templates/serializer.tmpl\n> rename to utils/codegen/ipc/generators/libcamera_templates/serializer.tmpl\n> diff --git a/utils/ipc/generators/meson.build b/utils/codegen/ipc/generators/meson.build\n> similarity index 100%\n> rename from utils/ipc/generators/meson.build\n> rename to utils/codegen/ipc/generators/meson.build\n> diff --git a/utils/ipc/generators/mojom_libcamera_generator.py b/utils/codegen/ipc/generators/mojom_libcamera_generator.py\n> similarity index 100%\n> rename from utils/ipc/generators/mojom_libcamera_generator.py\n> rename to utils/codegen/ipc/generators/mojom_libcamera_generator.py\n> diff --git a/utils/ipc/meson.build b/utils/codegen/ipc/meson.build\n> similarity index 100%\n> rename from utils/ipc/meson.build\n> rename to utils/codegen/ipc/meson.build\n> diff --git a/utils/ipc/mojo/README b/utils/codegen/ipc/mojo/README\n> similarity index 100%\n> rename from utils/ipc/mojo/README\n> rename to utils/codegen/ipc/mojo/README\n> diff --git a/utils/ipc/mojo/public/LICENSE b/utils/codegen/ipc/mojo/public/LICENSE\n> similarity index 100%\n> rename from utils/ipc/mojo/public/LICENSE\n> rename to utils/codegen/ipc/mojo/public/LICENSE\n> diff --git a/utils/ipc/mojo/public/tools/.style.yapf b/utils/codegen/ipc/mojo/public/tools/.style.yapf\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/.style.yapf\n> rename to utils/codegen/ipc/mojo/public/tools/.style.yapf\n> diff --git a/utils/ipc/mojo/public/tools/BUILD.gn b/utils/codegen/ipc/mojo/public/tools/BUILD.gn\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/BUILD.gn\n> rename to utils/codegen/ipc/mojo/public/tools/BUILD.gn\n> diff --git a/utils/ipc/mojo/public/tools/bindings/BUILD.gn b/utils/codegen/ipc/mojo/public/tools/bindings/BUILD.gn\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/bindings/BUILD.gn\n> rename to utils/codegen/ipc/mojo/public/tools/bindings/BUILD.gn\n> diff --git a/utils/ipc/mojo/public/tools/bindings/README.md b/utils/codegen/ipc/mojo/public/tools/bindings/README.md\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/bindings/README.md\n> rename to utils/codegen/ipc/mojo/public/tools/bindings/README.md\n> diff --git a/utils/ipc/mojo/public/tools/bindings/checks/__init__.py b/utils/codegen/ipc/mojo/public/tools/bindings/checks/__init__.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/bindings/checks/__init__.py\n> rename to utils/codegen/ipc/mojo/public/tools/bindings/checks/__init__.py\n> diff --git a/utils/ipc/mojo/public/tools/bindings/checks/mojom_attributes_check.py b/utils/codegen/ipc/mojo/public/tools/bindings/checks/mojom_attributes_check.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/bindings/checks/mojom_attributes_check.py\n> rename to utils/codegen/ipc/mojo/public/tools/bindings/checks/mojom_attributes_check.py\n> diff --git a/utils/ipc/mojo/public/tools/bindings/checks/mojom_attributes_check_unittest.py b/utils/codegen/ipc/mojo/public/tools/bindings/checks/mojom_attributes_check_unittest.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/bindings/checks/mojom_attributes_check_unittest.py\n> rename to utils/codegen/ipc/mojo/public/tools/bindings/checks/mojom_attributes_check_unittest.py\n> diff --git a/utils/ipc/mojo/public/tools/bindings/checks/mojom_definitions_check.py b/utils/codegen/ipc/mojo/public/tools/bindings/checks/mojom_definitions_check.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/bindings/checks/mojom_definitions_check.py\n> rename to utils/codegen/ipc/mojo/public/tools/bindings/checks/mojom_definitions_check.py\n> diff --git a/utils/ipc/mojo/public/tools/bindings/checks/mojom_interface_feature_check.py b/utils/codegen/ipc/mojo/public/tools/bindings/checks/mojom_interface_feature_check.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/bindings/checks/mojom_interface_feature_check.py\n> rename to utils/codegen/ipc/mojo/public/tools/bindings/checks/mojom_interface_feature_check.py\n> diff --git a/utils/ipc/mojo/public/tools/bindings/checks/mojom_interface_feature_check_unittest.py b/utils/codegen/ipc/mojo/public/tools/bindings/checks/mojom_interface_feature_check_unittest.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/bindings/checks/mojom_interface_feature_check_unittest.py\n> rename to utils/codegen/ipc/mojo/public/tools/bindings/checks/mojom_interface_feature_check_unittest.py\n> diff --git a/utils/ipc/mojo/public/tools/bindings/checks/mojom_restrictions_check.py b/utils/codegen/ipc/mojo/public/tools/bindings/checks/mojom_restrictions_check.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/bindings/checks/mojom_restrictions_check.py\n> rename to utils/codegen/ipc/mojo/public/tools/bindings/checks/mojom_restrictions_check.py\n> diff --git a/utils/ipc/mojo/public/tools/bindings/checks/mojom_restrictions_checks_unittest.py b/utils/codegen/ipc/mojo/public/tools/bindings/checks/mojom_restrictions_checks_unittest.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/bindings/checks/mojom_restrictions_checks_unittest.py\n> rename to utils/codegen/ipc/mojo/public/tools/bindings/checks/mojom_restrictions_checks_unittest.py\n> diff --git a/utils/ipc/mojo/public/tools/bindings/concatenate-files.py b/utils/codegen/ipc/mojo/public/tools/bindings/concatenate-files.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/bindings/concatenate-files.py\n> rename to utils/codegen/ipc/mojo/public/tools/bindings/concatenate-files.py\n> diff --git a/utils/ipc/mojo/public/tools/bindings/concatenate_and_replace_closure_exports.py b/utils/codegen/ipc/mojo/public/tools/bindings/concatenate_and_replace_closure_exports.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/bindings/concatenate_and_replace_closure_exports.py\n> rename to utils/codegen/ipc/mojo/public/tools/bindings/concatenate_and_replace_closure_exports.py\n> diff --git a/utils/ipc/mojo/public/tools/bindings/gen_data_files_list.py b/utils/codegen/ipc/mojo/public/tools/bindings/gen_data_files_list.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/bindings/gen_data_files_list.py\n> rename to utils/codegen/ipc/mojo/public/tools/bindings/gen_data_files_list.py\n> diff --git a/utils/ipc/mojo/public/tools/bindings/generate_type_mappings.py b/utils/codegen/ipc/mojo/public/tools/bindings/generate_type_mappings.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/bindings/generate_type_mappings.py\n> rename to utils/codegen/ipc/mojo/public/tools/bindings/generate_type_mappings.py\n> diff --git a/utils/ipc/mojo/public/tools/bindings/minify_with_terser.py b/utils/codegen/ipc/mojo/public/tools/bindings/minify_with_terser.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/bindings/minify_with_terser.py\n> rename to utils/codegen/ipc/mojo/public/tools/bindings/minify_with_terser.py\n> diff --git a/utils/ipc/mojo/public/tools/bindings/mojom.gni b/utils/codegen/ipc/mojo/public/tools/bindings/mojom.gni\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/bindings/mojom.gni\n> rename to utils/codegen/ipc/mojo/public/tools/bindings/mojom.gni\n> diff --git a/utils/ipc/mojo/public/tools/bindings/mojom_bindings_generator.py b/utils/codegen/ipc/mojo/public/tools/bindings/mojom_bindings_generator.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/bindings/mojom_bindings_generator.py\n> rename to utils/codegen/ipc/mojo/public/tools/bindings/mojom_bindings_generator.py\n> diff --git a/utils/ipc/mojo/public/tools/bindings/mojom_bindings_generator_unittest.py b/utils/codegen/ipc/mojo/public/tools/bindings/mojom_bindings_generator_unittest.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/bindings/mojom_bindings_generator_unittest.py\n> rename to utils/codegen/ipc/mojo/public/tools/bindings/mojom_bindings_generator_unittest.py\n> diff --git a/utils/ipc/mojo/public/tools/bindings/validate_typemap_config.py b/utils/codegen/ipc/mojo/public/tools/bindings/validate_typemap_config.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/bindings/validate_typemap_config.py\n> rename to utils/codegen/ipc/mojo/public/tools/bindings/validate_typemap_config.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/BUILD.gn b/utils/codegen/ipc/mojo/public/tools/mojom/BUILD.gn\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/BUILD.gn\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/BUILD.gn\n> diff --git a/utils/ipc/mojo/public/tools/mojom/README.md b/utils/codegen/ipc/mojo/public/tools/mojom/README.md\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/README.md\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/README.md\n> diff --git a/utils/ipc/mojo/public/tools/mojom/check_stable_mojom_compatibility.py b/utils/codegen/ipc/mojo/public/tools/mojom/check_stable_mojom_compatibility.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/check_stable_mojom_compatibility.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/check_stable_mojom_compatibility.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/check_stable_mojom_compatibility_unittest.py b/utils/codegen/ipc/mojo/public/tools/mojom/check_stable_mojom_compatibility_unittest.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/check_stable_mojom_compatibility_unittest.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/check_stable_mojom_compatibility_unittest.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/const_unittest.py b/utils/codegen/ipc/mojo/public/tools/mojom/const_unittest.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/const_unittest.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/const_unittest.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/enum_unittest.py b/utils/codegen/ipc/mojo/public/tools/mojom/enum_unittest.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/enum_unittest.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/enum_unittest.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/feature_unittest.py b/utils/codegen/ipc/mojo/public/tools/mojom/feature_unittest.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/feature_unittest.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/feature_unittest.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/mojom/BUILD.gn b/utils/codegen/ipc/mojo/public/tools/mojom/mojom/BUILD.gn\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/mojom/BUILD.gn\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/mojom/BUILD.gn\n> diff --git a/utils/ipc/mojo/public/tools/mojom/mojom/__init__.py b/utils/codegen/ipc/mojo/public/tools/mojom/mojom/__init__.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/mojom/__init__.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/mojom/__init__.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/mojom/error.py b/utils/codegen/ipc/mojo/public/tools/mojom/mojom/error.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/mojom/error.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/mojom/error.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/mojom/fileutil.py b/utils/codegen/ipc/mojo/public/tools/mojom/mojom/fileutil.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/mojom/fileutil.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/mojom/fileutil.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/mojom/fileutil_unittest.py b/utils/codegen/ipc/mojo/public/tools/mojom/mojom/fileutil_unittest.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/mojom/fileutil_unittest.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/mojom/fileutil_unittest.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/mojom/generate/__init__.py b/utils/codegen/ipc/mojo/public/tools/mojom/mojom/generate/__init__.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/mojom/generate/__init__.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/mojom/generate/__init__.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/mojom/generate/check.py b/utils/codegen/ipc/mojo/public/tools/mojom/mojom/generate/check.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/mojom/generate/check.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/mojom/generate/check.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/mojom/generate/generator.py b/utils/codegen/ipc/mojo/public/tools/mojom/mojom/generate/generator.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/mojom/generate/generator.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/mojom/generate/generator.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/mojom/generate/generator_unittest.py b/utils/codegen/ipc/mojo/public/tools/mojom/mojom/generate/generator_unittest.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/mojom/generate/generator_unittest.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/mojom/generate/generator_unittest.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/mojom/generate/module.py b/utils/codegen/ipc/mojo/public/tools/mojom/mojom/generate/module.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/mojom/generate/module.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/mojom/generate/module.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/mojom/generate/module_unittest.py b/utils/codegen/ipc/mojo/public/tools/mojom/mojom/generate/module_unittest.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/mojom/generate/module_unittest.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/mojom/generate/module_unittest.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/mojom/generate/pack.py b/utils/codegen/ipc/mojo/public/tools/mojom/mojom/generate/pack.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/mojom/generate/pack.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/mojom/generate/pack.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/mojom/generate/pack_unittest.py b/utils/codegen/ipc/mojo/public/tools/mojom/mojom/generate/pack_unittest.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/mojom/generate/pack_unittest.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/mojom/generate/pack_unittest.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/mojom/generate/template_expander.py b/utils/codegen/ipc/mojo/public/tools/mojom/mojom/generate/template_expander.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/mojom/generate/template_expander.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/mojom/generate/template_expander.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/mojom/generate/translate.py b/utils/codegen/ipc/mojo/public/tools/mojom/mojom/generate/translate.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/mojom/generate/translate.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/mojom/generate/translate.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/mojom/generate/translate_unittest.py b/utils/codegen/ipc/mojo/public/tools/mojom/mojom/generate/translate_unittest.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/mojom/generate/translate_unittest.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/mojom/generate/translate_unittest.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/mojom/parse/__init__.py b/utils/codegen/ipc/mojo/public/tools/mojom/mojom/parse/__init__.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/mojom/parse/__init__.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/mojom/parse/__init__.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/mojom/parse/ast.py b/utils/codegen/ipc/mojo/public/tools/mojom/mojom/parse/ast.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/mojom/parse/ast.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/mojom/parse/ast.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/mojom/parse/ast_unittest.py b/utils/codegen/ipc/mojo/public/tools/mojom/mojom/parse/ast_unittest.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/mojom/parse/ast_unittest.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/mojom/parse/ast_unittest.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/mojom/parse/conditional_features.py b/utils/codegen/ipc/mojo/public/tools/mojom/mojom/parse/conditional_features.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/mojom/parse/conditional_features.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/mojom/parse/conditional_features.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py b/utils/codegen/ipc/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/mojom/parse/conditional_features_unittest.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/mojom/parse/lexer.py b/utils/codegen/ipc/mojo/public/tools/mojom/mojom/parse/lexer.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/mojom/parse/lexer.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/mojom/parse/lexer.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py b/utils/codegen/ipc/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/mojom/parse/lexer_unittest.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/mojom/parse/parser.py b/utils/codegen/ipc/mojo/public/tools/mojom/mojom/parse/parser.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/mojom/parse/parser.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/mojom/parse/parser.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/mojom/parse/parser_unittest.py b/utils/codegen/ipc/mojo/public/tools/mojom/mojom/parse/parser_unittest.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/mojom/parse/parser_unittest.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/mojom/parse/parser_unittest.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/mojom_parser.py b/utils/codegen/ipc/mojo/public/tools/mojom/mojom_parser.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/mojom_parser.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/mojom_parser.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/mojom_parser_test_case.py b/utils/codegen/ipc/mojo/public/tools/mojom/mojom_parser_test_case.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/mojom_parser_test_case.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/mojom_parser_test_case.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/mojom_parser_unittest.py b/utils/codegen/ipc/mojo/public/tools/mojom/mojom_parser_unittest.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/mojom_parser_unittest.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/mojom_parser_unittest.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/stable_attribute_unittest.py b/utils/codegen/ipc/mojo/public/tools/mojom/stable_attribute_unittest.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/stable_attribute_unittest.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/stable_attribute_unittest.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/union_unittest.py b/utils/codegen/ipc/mojo/public/tools/mojom/union_unittest.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/union_unittest.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/union_unittest.py\n> diff --git a/utils/ipc/mojo/public/tools/mojom/version_compatibility_unittest.py b/utils/codegen/ipc/mojo/public/tools/mojom/version_compatibility_unittest.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/mojom/version_compatibility_unittest.py\n> rename to utils/codegen/ipc/mojo/public/tools/mojom/version_compatibility_unittest.py\n> diff --git a/utils/ipc/mojo/public/tools/run_all_python_unittests.py b/utils/codegen/ipc/mojo/public/tools/run_all_python_unittests.py\n> similarity index 100%\n> rename from utils/ipc/mojo/public/tools/run_all_python_unittests.py\n> rename to utils/codegen/ipc/mojo/public/tools/run_all_python_unittests.py\n> diff --git a/utils/ipc/parser.py b/utils/codegen/ipc/parser.py\n> similarity index 100%\n> rename from utils/ipc/parser.py\n> rename to utils/codegen/ipc/parser.py\n> diff --git a/utils/ipc/tools/README b/utils/codegen/ipc/tools/README\n> similarity index 100%\n> rename from utils/ipc/tools/README\n> rename to utils/codegen/ipc/tools/README\n> diff --git a/utils/ipc/tools/diagnosis/crbug_1001171.py b/utils/codegen/ipc/tools/diagnosis/crbug_1001171.py\n> similarity index 100%\n> rename from utils/ipc/tools/diagnosis/crbug_1001171.py\n> rename to utils/codegen/ipc/tools/diagnosis/crbug_1001171.py\n> diff --git a/utils/codegen/meson.build b/utils/codegen/meson.build\n> new file mode 100644\n> index 000000000000..7dd312e16559\n> --- /dev/null\n> +++ b/utils/codegen/meson.build\n> @@ -0,0 +1,13 @@\n> +# SPDX-License-Identifier: CC0-1.0\n> +\n> +## Code generation\n> +\n> +py_modules += ['jinja2', 'yaml']\n> +\n> +gen_controls = files('gen-controls.py')\n> +gen_formats = files('gen-formats.py')\n> +gen_header = files('gen-header.sh')\n> +gen_ipa_pub_key = files('gen-ipa-pub-key.py')\n> +gen_tracepoints = files('gen-tp-header.py')\n> +\n> +subdir('ipc')\n> diff --git a/utils/meson.build b/utils/meson.build\n> index 8e28ada7165a..95d657ac965f 100644\n> --- a/utils/meson.build\n> +++ b/utils/meson.build\n> @@ -1,15 +1,7 @@\n>   # SPDX-License-Identifier: CC0-1.0\n>   \n> -subdir('ipc')\n> +subdir('codegen')\n>   subdir('ipu3')\n> -subdir('tracepoints')\n> -\n> -## Code generation\n> -py_modules += ['yaml']\n> -gen_controls = files('gen-controls.py')\n> -gen_formats = files('gen-formats.py')\n> -gen_header = files('gen-header.sh')\n>   \n>   ## Module signing\n>   gen_ipa_priv_key = files('gen-ipa-priv-key.sh')\n> -gen_ipa_pub_key = files('gen-ipa-pub-key.py')\n> diff --git a/utils/tracepoints/meson.build b/utils/tracepoints/meson.build\n> deleted file mode 100644\n> index 807230fc092d..000000000000\n> --- a/utils/tracepoints/meson.build\n> +++ /dev/null\n> @@ -1,5 +0,0 @@\n> -# SPDX-License-Identifier: CC0-1.0\n> -\n> -py_modules += ['jinja2']\n> -\n> -gen_tracepoints_header = find_program('./gen-tp-header.py')","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 7DF7EBE173\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 12 Aug 2024 14:53:22 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8A114633BF;\n\tMon, 12 Aug 2024 16:53:21 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 7517D63369\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 12 Aug 2024 16:53:19 +0200 (CEST)","from [192.168.0.43]\n\t(cpc141996-chfd3-2-0-cust928.12-3.cable.virginm.net [86.13.91.161])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id E3EF06B5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 12 Aug 2024 16:52:22 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"pPAkRq3a\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1723474343;\n\tbh=I7aBam1997mgWiTEPxwPpiGsPBxT75cAYDbhdS1y4/s=;\n\th=Date:Subject:To:References:From:In-Reply-To:From;\n\tb=pPAkRq3axkQ4tBud0lbu25RITT02VYT4fHZM2XDRJJbvnAV7t1sHohvrplWgeJzAk\n\tPFQsXMwGOt20rmB3JePOQPGf2bYC4br8kQOsgw0Tr9HNZobk7ce3kYGICiswdS5ivZ\n\tIjrFGLZthQwMy/b3Aan/RuXxL2qy3Jn+NCDAz6p0=","Message-ID":"<3cc6404c-d8c7-42fa-9ca6-c63b5129e320@ideasonboard.com>","Date":"Mon, 12 Aug 2024 15:53:16 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 04/10] meson: Move all code generation scripts to\n\tutils/codegen/","To":"libcamera-devel@lists.libcamera.org","References":"<20240809005914.20662-1-laurent.pinchart@ideasonboard.com>\n\t<20240809005914.20662-5-laurent.pinchart@ideasonboard.com>","Content-Language":"en-US","From":"Dan Scally <dan.scally@ideasonboard.com>","Autocrypt":"addr=dan.scally@ideasonboard.com; keydata=\n\t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","In-Reply-To":"<20240809005914.20662-5-laurent.pinchart@ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":30828,"web_url":"https://patchwork.libcamera.org/comment/30828/","msgid":"<Zr1fTrSTu9_vLxsg@pyrite.rasen.tech>","date":"2024-08-15T01:52:14","subject":"Re: [PATCH 04/10] meson: Move all code generation scripts to\n\tutils/codegen/","submitter":{"id":17,"url":"https://patchwork.libcamera.org/api/people/17/","name":"Paul Elder","email":"paul.elder@ideasonboard.com"},"content":"On Fri, Aug 09, 2024 at 03:59:08AM +0300, Laurent Pinchart wrote:\n> We have multiple code generation scripts in utils/, mixed with other\n> miscellaneous utilities, as well as a larger code base based on mojom in\n> utils/ipc/. To make code sharing easier between the generator scripts,\n> without creating a mess in the utils/ directory, move all the code\n> generation code to utils/codegen/.\n> \n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nReviewed-by: Paul Elder <paul.elder@ideasonboard.com>\n\n<snip>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 09933BDB13\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 15 Aug 2024 01:52:23 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 1AAFE633BD;\n\tThu, 15 Aug 2024 03:52:22 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 30DC163382\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 15 Aug 2024 03:52:21 +0200 (CEST)","from pyrite.rasen.tech (h175-177-049-024.catv02.itscom.jp\n\t[175.177.49.24])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 24D91A34;\n\tThu, 15 Aug 2024 03:51:21 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"TYgBFtqn\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1723686683;\n\tbh=2qGYezjubLNgy6DHuy81cgBHO6DMZxrl70WSyGEQfpQ=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=TYgBFtqnE8ME/oTfkBZbeptgcxLPf6+YZw071E0EGf5u/bc1UWwztiKZM7Q/NReL+\n\tdTTGbj5zBgrR3I+eDsct+ni0YCTYuBtKJ8KIiaXWCTsJMGHobTOjG5zemq9QmE9Itg\n\tv3UPEMCyLQE4XPYrMU4pqd0Nai2NmT2ro8KK8uj0=","Date":"Thu, 15 Aug 2024 10:52:14 +0900","From":"Paul Elder <paul.elder@ideasonboard.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH 04/10] meson: Move all code generation scripts to\n\tutils/codegen/","Message-ID":"<Zr1fTrSTu9_vLxsg@pyrite.rasen.tech>","References":"<20240809005914.20662-1-laurent.pinchart@ideasonboard.com>\n\t<20240809005914.20662-5-laurent.pinchart@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20240809005914.20662-5-laurent.pinchart@ideasonboard.com>","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]