[{"id":30660,"web_url":"https://patchwork.libcamera.org/comment/30660/","msgid":"<172302875205.1687952.10200445576947329571@ping.linuxembedded.co.uk>","date":"2024-08-07T11:05:52","subject":"Re: [PATCH v5 06/18] libcamera: Split public and internal source\n\tarrays","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Laurent Pinchart (2024-08-05 15:36:42)\n> From: Daniel Scally <dan.scally@ideasonboard.com>\n> \n> Meson array variables hold lists of libcamera's source files. To help\n> facilitate the splitting of Doxygen generated documentation into\n> distinct public and internal versions, split those arrays to separate\n> public and internal variables.\n\nI actually like this patch a lot! - It makes it nice and explicit which\n'part' of libcamera any component is built into.\n\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n> \n> Signed-off-by: Daniel Scally <dan.scally@ideasonboard.com>\n> Co-developed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n> Changes since v4:\n> \n> - Drop the libcamera_base_sources and libcamera_sources variables to\n>   avoid incorrect usage in the future\n> - Move the libcamera_internal_headers split to a separate patch to ease\n>   review\n> ---\n>  Documentation/guides/pipeline-handler.rst     |  5 +-\n>  Documentation/meson.build                     |  6 ++-\n>  src/libcamera/base/meson.build                | 25 +++++----\n>  src/libcamera/converter/meson.build           |  2 +-\n>  src/libcamera/meson.build                     | 52 +++++++++++--------\n>  src/libcamera/pipeline/imx8-isi/meson.build   |  2 +-\n>  src/libcamera/pipeline/ipu3/meson.build       |  2 +-\n>  src/libcamera/pipeline/mali-c55/meson.build   |  2 +-\n>  src/libcamera/pipeline/rkisp1/meson.build     |  2 +-\n>  src/libcamera/pipeline/rpi/common/meson.build |  2 +-\n>  src/libcamera/pipeline/rpi/vc4/meson.build    |  2 +-\n>  src/libcamera/pipeline/simple/meson.build     |  2 +-\n>  src/libcamera/pipeline/uvcvideo/meson.build   |  2 +-\n>  src/libcamera/pipeline/vimc/meson.build       |  2 +-\n>  src/libcamera/proxy/meson.build               |  2 +-\n>  src/libcamera/sensor/meson.build              |  2 +-\n>  src/libcamera/software_isp/meson.build        |  2 +-\n>  17 files changed, 65 insertions(+), 49 deletions(-)\n> \n> diff --git a/Documentation/guides/pipeline-handler.rst b/Documentation/guides/pipeline-handler.rst\n> index 7e45cdb84b85..5aa09e90f419 100644\n> --- a/Documentation/guides/pipeline-handler.rst\n> +++ b/Documentation/guides/pipeline-handler.rst\n> @@ -151,13 +151,14 @@ integrates with the libcamera build system, and a *vivid.cpp* file that matches\n>  the name of the pipeline.\n>  \n>  In the *meson.build* file, add the *vivid.cpp* file as a build source for\n> -libcamera by adding it to the global meson ``libcamera_sources`` variable:\n> +libcamera by adding it to the global meson ``libcamera_internal_sources``\n> +variable:\n>  \n>  .. code-block:: none\n>  \n>     # SPDX-License-Identifier: CC0-1.0\n>  \n> -   libcamera_sources += files([\n> +   libcamera_internal_sources += files([\n>         'vivid.cpp',\n>     ])\n>  \n> diff --git a/Documentation/meson.build b/Documentation/meson.build\n> index 30d395234952..070420715bd1 100644\n> --- a/Documentation/meson.build\n> +++ b/Documentation/meson.build\n> @@ -31,12 +31,14 @@ if doxygen.found() and dot.found()\n>      doxygen_input = [\n>          doxyfile,\n>          libcamera_base_headers,\n> -        libcamera_base_sources,\n> +        libcamera_base_public_sources,\n> +        libcamera_base_internal_sources,\n>          libcamera_internal_headers,\n>          libcamera_ipa_headers,\n>          libcamera_ipa_interfaces,\n>          libcamera_public_headers,\n> -        libcamera_sources,\n> +        libcamera_public_sources,\n> +        libcamera_internal_sources,\n>          libipa_headers,\n>          libipa_sources,\n>      ]\n> diff --git a/src/libcamera/base/meson.build b/src/libcamera/base/meson.build\n> index 4a228d335ba4..a742dfdfeb24 100644\n> --- a/src/libcamera/base/meson.build\n> +++ b/src/libcamera/base/meson.build\n> @@ -1,25 +1,28 @@\n>  # SPDX-License-Identifier: CC0-1.0\n>  \n> -libcamera_base_sources = files([\n> -    'backtrace.cpp',\n> -    'class.cpp',\n> +libcamera_base_public_sources = files([\n>      'bound_method.cpp',\n> +    'class.cpp',\n> +    'flags.cpp',\n> +    'object.cpp',\n> +    'shared_fd.cpp',\n> +    'signal.cpp',\n> +    'unique_fd.cpp',\n> +])\n> +\n> +libcamera_base_internal_sources = files([\n> +    'backtrace.cpp',\n>      'event_dispatcher.cpp',\n>      'event_dispatcher_poll.cpp',\n>      'event_notifier.cpp',\n>      'file.cpp',\n> -    'flags.cpp',\n>      'log.cpp',\n>      'memfd.cpp',\n>      'message.cpp',\n>      'mutex.cpp',\n> -    'object.cpp',\n>      'semaphore.cpp',\n> -    'shared_fd.cpp',\n> -    'signal.cpp',\n>      'thread.cpp',\n>      'timer.cpp',\n> -    'unique_fd.cpp',\n>      'utils.cpp',\n>  ])\n>  \n> @@ -50,7 +53,11 @@ libcamera_base_deps = [\n>  libcamera_base_args = [ '-DLIBCAMERA_BASE_PRIVATE' ]\n>  \n>  libcamera_base_lib = shared_library('libcamera-base',\n> -                                    [libcamera_base_sources, libcamera_base_headers],\n> +                                    [\n> +                                        libcamera_base_public_sources,\n> +                                        libcamera_base_internal_sources,\n> +                                        libcamera_base_headers,\n> +                                    ],\n>                                      version : libcamera_version,\n>                                      soversion : libcamera_soversion,\n>                                      name_prefix : '',\n> diff --git a/src/libcamera/converter/meson.build b/src/libcamera/converter/meson.build\n> index 2aa72fe456a4..af1a80fec683 100644\n> --- a/src/libcamera/converter/meson.build\n> +++ b/src/libcamera/converter/meson.build\n> @@ -1,5 +1,5 @@\n>  # SPDX-License-Identifier: CC0-1.0\n>  \n> -libcamera_sources += files([\n> +libcamera_internal_sources += files([\n>          'converter_v4l2_m2m.cpp'\n>  ])\n> diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build\n> index 89504cee1146..deffff356091 100644\n> --- a/src/libcamera/meson.build\n> +++ b/src/libcamera/meson.build\n> @@ -1,14 +1,26 @@\n>  # SPDX-License-Identifier: CC0-1.0\n>  \n> -libcamera_sources = files([\n> -    'bayer_format.cpp',\n> -    'byte_stream_buffer.cpp',\n> +libcamera_public_sources = files([\n>      'camera.cpp',\n> -    'camera_controls.cpp',\n> -    'camera_lens.cpp',\n>      'camera_manager.cpp',\n>      'color_space.cpp',\n>      'controls.cpp',\n> +    'fence.cpp',\n> +    'framebuffer.cpp',\n> +    'framebuffer_allocator.cpp',\n> +    'geometry.cpp',\n> +    'orientation.cpp',\n> +    'pixel_format.cpp',\n> +    'request.cpp',\n> +    'stream.cpp',\n> +    'transform.cpp',\n> +])\n> +\n> +libcamera_internal_sources = files([\n> +    'bayer_format.cpp',\n> +    'byte_stream_buffer.cpp',\n> +    'camera_controls.cpp',\n> +    'camera_lens.cpp',\n>      'control_serializer.cpp',\n>      'control_validator.cpp',\n>      'converter.cpp',\n> @@ -16,11 +28,7 @@ libcamera_sources = files([\n>      'device_enumerator.cpp',\n>      'device_enumerator_sysfs.cpp',\n>      'dma_buf_allocator.cpp',\n> -    'fence.cpp',\n>      'formats.cpp',\n> -    'framebuffer.cpp',\n> -    'framebuffer_allocator.cpp',\n> -    'geometry.cpp',\n>      'ipa_controls.cpp',\n>      'ipa_data_serializer.cpp',\n>      'ipa_interface.cpp',\n> @@ -33,17 +41,12 @@ libcamera_sources = files([\n>      'mapped_framebuffer.cpp',\n>      'media_device.cpp',\n>      'media_object.cpp',\n> -    'orientation.cpp',\n>      'pipeline_handler.cpp',\n> -    'pixel_format.cpp',\n>      'process.cpp',\n>      'pub_key.cpp',\n> -    'request.cpp',\n>      'shared_mem_object.cpp',\n>      'source_paths.cpp',\n> -    'stream.cpp',\n>      'sysfs.cpp',\n> -    'transform.cpp',\n>      'v4l2_device.cpp',\n>      'v4l2_pixelformat.cpp',\n>      'v4l2_subdevice.cpp',\n> @@ -51,9 +54,9 @@ libcamera_sources = files([\n>      'yaml_parser.cpp',\n>  ])\n>  \n> -libcamera_sources += libcamera_public_headers\n> -libcamera_sources += libcamera_generated_ipa_headers\n> -libcamera_sources += libcamera_tracepoint_header\n> +libcamera_public_sources += libcamera_public_headers\n> +libcamera_internal_sources += libcamera_generated_ipa_headers\n> +libcamera_internal_sources += libcamera_tracepoint_header\n>  \n>  includes = [\n>      libcamera_includes,\n> @@ -104,14 +107,14 @@ endif\n>  if liblttng.found()\n>      tracing_enabled = true\n>      config_h.set('HAVE_TRACING', 1)\n> -    libcamera_sources += files(['tracepoints.cpp'])\n> +    libcamera_internal_sources += files(['tracepoints.cpp'])\n>  else\n>      tracing_enabled = false\n>  endif\n>  \n>  if libudev.found()\n>      config_h.set('HAVE_LIBUDEV', 1)\n> -    libcamera_sources += files([\n> +    libcamera_internal_sources += files([\n>          'device_enumerator_udev.cpp',\n>      ])\n>  endif\n> @@ -152,7 +155,7 @@ foreach mode, input_files : controls_mode_files\n>                                                  '-r', ranges_file, '@INPUT@'])\n>  endforeach\n>  \n> -libcamera_sources += control_sources\n> +libcamera_public_sources += control_sources\n>  \n>  gen_version = meson.project_source_root() / 'utils' / 'gen-version.sh'\n>  \n> @@ -163,7 +166,7 @@ version_cpp = vcs_tag(command : [gen_version, meson.project_build_root(), meson.\n>                        output : 'version.cpp',\n>                        fallback : meson.project_version())\n>  \n> -libcamera_sources += version_cpp\n> +libcamera_public_sources += version_cpp\n>  \n>  if ipa_sign_module\n>      ipa_pub_key_cpp = custom_target('ipa_pub_key_cpp',\n> @@ -171,7 +174,7 @@ if ipa_sign_module\n>                                      output : 'ipa_pub_key.cpp',\n>                                      command : [gen_ipa_pub_key, '@INPUT@', '@OUTPUT@'])\n>  \n> -    libcamera_sources += ipa_pub_key_cpp\n> +    libcamera_internal_sources += ipa_pub_key_cpp\n>  endif\n>  \n>  libcamera_deps += [\n> @@ -191,7 +194,10 @@ libcamera_deps += [\n>  # for the presence or abscence of the dynamic tag.\n>  \n>  libcamera = shared_library('libcamera',\n> -                           libcamera_sources,\n> +                           [\n> +                               libcamera_public_sources,\n> +                               libcamera_internal_sources,\n> +                           ],\n>                             version : libcamera_version,\n>                             soversion : libcamera_soversion,\n>                             name_prefix : '',\n> diff --git a/src/libcamera/pipeline/imx8-isi/meson.build b/src/libcamera/pipeline/imx8-isi/meson.build\n> index ffd0ce54ce92..b369b03141cb 100644\n> --- a/src/libcamera/pipeline/imx8-isi/meson.build\n> +++ b/src/libcamera/pipeline/imx8-isi/meson.build\n> @@ -1,5 +1,5 @@\n>  # SPDX-License-Identifier: CC0-1.0\n>  \n> -libcamera_sources += files([\n> +libcamera_internal_sources += files([\n>      'imx8-isi.cpp'\n>  ])\n> diff --git a/src/libcamera/pipeline/ipu3/meson.build b/src/libcamera/pipeline/ipu3/meson.build\n> index a1b0b31ac5bc..f2904b4a8929 100644\n> --- a/src/libcamera/pipeline/ipu3/meson.build\n> +++ b/src/libcamera/pipeline/ipu3/meson.build\n> @@ -1,6 +1,6 @@\n>  # SPDX-License-Identifier: CC0-1.0\n>  \n> -libcamera_sources += files([\n> +libcamera_internal_sources += files([\n>      'cio2.cpp',\n>      'frames.cpp',\n>      'imgu.cpp',\n> diff --git a/src/libcamera/pipeline/mali-c55/meson.build b/src/libcamera/pipeline/mali-c55/meson.build\n> index 30fd29b928d5..eba8e5a39054 100644\n> --- a/src/libcamera/pipeline/mali-c55/meson.build\n> +++ b/src/libcamera/pipeline/mali-c55/meson.build\n> @@ -1,5 +1,5 @@\n>  # SPDX-License-Identifier: CC0-1.0\n>  \n> -libcamera_sources += files([\n> +libcamera_internal_sources += files([\n>      'mali-c55.cpp'\n>  ])\n> diff --git a/src/libcamera/pipeline/rkisp1/meson.build b/src/libcamera/pipeline/rkisp1/meson.build\n> index cad66535c25f..d21a6ef96bef 100644\n> --- a/src/libcamera/pipeline/rkisp1/meson.build\n> +++ b/src/libcamera/pipeline/rkisp1/meson.build\n> @@ -1,6 +1,6 @@\n>  # SPDX-License-Identifier: CC0-1.0\n>  \n> -libcamera_sources += files([\n> +libcamera_internal_sources += files([\n>      'rkisp1.cpp',\n>      'rkisp1_path.cpp',\n>  ])\n> diff --git a/src/libcamera/pipeline/rpi/common/meson.build b/src/libcamera/pipeline/rpi/common/meson.build\n> index 8fb7e823279d..b2b1a0a61284 100644\n> --- a/src/libcamera/pipeline/rpi/common/meson.build\n> +++ b/src/libcamera/pipeline/rpi/common/meson.build\n> @@ -1,6 +1,6 @@\n>  # SPDX-License-Identifier: CC0-1.0\n>  \n> -libcamera_sources += files([\n> +libcamera_internal_sources += files([\n>      'delayed_controls.cpp',\n>      'pipeline_base.cpp',\n>      'rpi_stream.cpp',\n> diff --git a/src/libcamera/pipeline/rpi/vc4/meson.build b/src/libcamera/pipeline/rpi/vc4/meson.build\n> index 386e2296785a..9b37c2f089f2 100644\n> --- a/src/libcamera/pipeline/rpi/vc4/meson.build\n> +++ b/src/libcamera/pipeline/rpi/vc4/meson.build\n> @@ -1,6 +1,6 @@\n>  # SPDX-License-Identifier: CC0-1.0\n>  \n> -libcamera_sources += files([\n> +libcamera_internal_sources += files([\n>      'vc4.cpp',\n>  ])\n>  \n> diff --git a/src/libcamera/pipeline/simple/meson.build b/src/libcamera/pipeline/simple/meson.build\n> index 42b0896dff8b..dda3de9782e4 100644\n> --- a/src/libcamera/pipeline/simple/meson.build\n> +++ b/src/libcamera/pipeline/simple/meson.build\n> @@ -1,5 +1,5 @@\n>  # SPDX-License-Identifier: CC0-1.0\n>  \n> -libcamera_sources += files([\n> +libcamera_internal_sources += files([\n>      'simple.cpp',\n>  ])\n> diff --git a/src/libcamera/pipeline/uvcvideo/meson.build b/src/libcamera/pipeline/uvcvideo/meson.build\n> index a3c2efd424bf..a3a91074f916 100644\n> --- a/src/libcamera/pipeline/uvcvideo/meson.build\n> +++ b/src/libcamera/pipeline/uvcvideo/meson.build\n> @@ -1,5 +1,5 @@\n>  # SPDX-License-Identifier: CC0-1.0\n>  \n> -libcamera_sources += files([\n> +libcamera_internal_sources += files([\n>      'uvcvideo.cpp',\n>  ])\n> diff --git a/src/libcamera/pipeline/vimc/meson.build b/src/libcamera/pipeline/vimc/meson.build\n> index 290eefb5d076..868e2546a087 100644\n> --- a/src/libcamera/pipeline/vimc/meson.build\n> +++ b/src/libcamera/pipeline/vimc/meson.build\n> @@ -1,5 +1,5 @@\n>  # SPDX-License-Identifier: CC0-1.0\n>  \n> -libcamera_sources += files([\n> +libcamera_internal_sources += files([\n>      'vimc.cpp',\n>  ])\n> diff --git a/src/libcamera/proxy/meson.build b/src/libcamera/proxy/meson.build\n> index 00ae5a8ffa47..d7de518a0549 100644\n> --- a/src/libcamera/proxy/meson.build\n> +++ b/src/libcamera/proxy/meson.build\n> @@ -15,5 +15,5 @@ foreach mojom : ipa_mojoms\n>                                './' + '@INPUT@'\n>                            ])\n>  \n> -    libcamera_sources += proxy\n> +    libcamera_internal_sources += proxy\n>  endforeach\n> diff --git a/src/libcamera/sensor/meson.build b/src/libcamera/sensor/meson.build\n> index bf4b131a94b1..61234e950d04 100644\n> --- a/src/libcamera/sensor/meson.build\n> +++ b/src/libcamera/sensor/meson.build\n> @@ -1,6 +1,6 @@\n>  # SPDX-License-Identifier: CC0-1.0\n>  \n> -libcamera_sources += files([\n> +libcamera_internal_sources += files([\n>      'camera_sensor.cpp',\n>      'camera_sensor_properties.cpp',\n>  ])\n> diff --git a/src/libcamera/software_isp/meson.build b/src/libcamera/software_isp/meson.build\n> index f7c66e28f9b9..aac7eda7b5b3 100644\n> --- a/src/libcamera/software_isp/meson.build\n> +++ b/src/libcamera/software_isp/meson.build\n> @@ -7,7 +7,7 @@ if not softisp_enabled\n>      subdir_done()\n>  endif\n>  \n> -libcamera_sources += files([\n> +libcamera_internal_sources += files([\n>      'debayer.cpp',\n>      'debayer_cpu.cpp',\n>      'software_isp.cpp',\n> -- \n> Regards,\n> \n> Laurent Pinchart\n>","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 78827C323E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  7 Aug 2024 11:05:58 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 468D16338D;\n\tWed,  7 Aug 2024 13:05:57 +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 BE6366337E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  7 Aug 2024 13:05:55 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 9D0CE96C;\n\tWed,  7 Aug 2024 13:05:02 +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=\"MITpO2gr\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1723028702;\n\tbh=owKCegWGpZjmnhzJZbjCOUKc9H4g9wAH4i6+spTULK4=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=MITpO2grj3wJ+4ri+k/iygAWlPZeaBUDvhegkqtlTmm+uIbj1mM6QLlJDDLuRkk+z\n\tHSIRbWZkyfIWavMDSHNCv8Fd7LE4DsEu4TnLrVR7hu8cjgAJr9ya4nzWOuJ/plHohb\n\tqBGW3sW05md07H494Tbca2CfTHRps5Nx3b+wMRRA=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20240805143654.20870-7-laurent.pinchart@ideasonboard.com>","References":"<20240805143654.20870-1-laurent.pinchart@ideasonboard.com>\n\t<20240805143654.20870-7-laurent.pinchart@ideasonboard.com>","Subject":"Re: [PATCH v5 06/18] libcamera: Split public and internal source\n\tarrays","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Daniel Scally <dan.scally@ideasonboard.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Wed, 07 Aug 2024 12:05:52 +0100","Message-ID":"<172302875205.1687952.10200445576947329571@ping.linuxembedded.co.uk>","User-Agent":"alot/0.10","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>"}}]