<div dir="ltr"><div dir="ltr">Hi Laurent,all,</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, May 12, 2020 at 6:17 AM Giulio Benetti <<a href="mailto:giulio.benetti@micronovasrl.com">giulio.benetti@micronovasrl.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Laurent, All,<br>
<br>
Il 11/05/2020 19:37, Laurent Pinchart ha scritto:<br>
> Giulio, Fabrice, Nicolas, Show,<br>
> <br>
> You have contributed changes to meson.build files for libcamera in the<br>
> past, and those files didn't include an explicit license. This patch<br>
> fixes this issue. While we can discuss whether the meson.build files<br>
> meet the threshold of originality criteria necessary to receive<br>
> copyright protection, a simpler approach would be to receive your ack<br>
> for this change. Could you confirm if you're fine with this by replying<br>
> with an Acked-by tag ?<br></blockquote><div>Sure </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
It's ok for me so...<br>
<br>
> On Mon, May 11, 2020 at 08:30:22PM +0300, Laurent Pinchart wrote:<br>
>> In an attempt to clarify the license terms of all files in the libcamera<br>
>> project, the build system files deserve particular attention. While they<br>
>> describe how the binaries are created, they are not themselves<br>
>> transformed into any part of binary distributions of the software, and<br>
>> thus don't influece the copyright on the binary packages. They are<br>
>> however subject to copyright, and thus influence the distribution terms<br>
>> of the source packages.<br>
>><br>
>> Most of the meson.build files would not meet the threshold of<br>
>> originality criteria required for copyright protection. Some of the more<br>
>> complex meson.build files may be elligible for copyright protection. To<br>
>> avoid any ambiguity and uncertainty, state our intent to not assert<br>
>> copyrights on the build system files by putting them in the public<br>
>> domain with the CC0-1.0 license.<br>
>><br>
>> Signed-off-by: Laurent Pinchart <<a href="mailto:laurent.pinchart@ideasonboard.com" target="_blank">laurent.pinchart@ideasonboard.com</a>><br>
<br>
Acked-by: Giulio Benetti <<a href="mailto:giulio.benetti@micronovasrl.com" target="_blank">giulio.benetti@micronovasrl.com</a>><br></blockquote><div>Acked-by: Show Liu <<a href="mailto:show.liu@linaro.org">show.liu@linaro.org</a>> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Best regards<br>
-- <br>
Giulio Benetti<br>
CTO<br>
<br>
MICRONOVA SRL<br>
Sede: Via A. Niedda 3 - 35010 Vigonza (PD)<br>
Tel. 049/8931563 - Fax 049/8931346<br>
Cod.Fiscale - P.IVA 02663420285<br>
Capitale Sociale € 26.000 i.v.<br>
Iscritta al Reg. Imprese di Padova N. 02663420285<br>
Numero R.E.A. 258642<br>
<br>
>> ---<br>
>>   Documentation/meson.build                   |   2 +<br>
>>   LICENSES/CC0-1.0.txt                        | 119 ++++++++++++++++++++<br>
>>   include/android/meson.build                 |   2 +<br>
>>   include/ipa/meson.build                     |   2 +<br>
>>   include/libcamera/meson.build               |   2 +<br>
>>   include/meson.build                         |   2 +<br>
>>   meson.build                                 |   2 +<br>
>>   meson_options.txt                           |   2 +<br>
>>   src/android/meson.build                     |   2 +<br>
>>   src/cam/meson.build                         |   2 +<br>
>>   src/gstreamer/meson.build                   |   2 +<br>
>>   src/ipa/libipa/meson.build                  |   2 +<br>
>>   src/ipa/meson.build                         |   2 +<br>
>>   src/ipa/rkisp1/meson.build                  |   2 +<br>
>>   src/ipa/vimc/data/meson.build               |   2 +<br>
>>   src/ipa/vimc/meson.build                    |   2 +<br>
>>   src/libcamera/include/meson.build           |   2 +<br>
>>   src/libcamera/meson.build                   |   2 +<br>
>>   src/libcamera/pipeline/ipu3/meson.build     |   2 +<br>
>>   src/libcamera/pipeline/meson.build          |   2 +<br>
>>   src/libcamera/pipeline/rkisp1/meson.build   |   2 +<br>
>>   src/libcamera/pipeline/simple/meson.build   |   2 +<br>
>>   src/libcamera/pipeline/uvcvideo/meson.build |   2 +<br>
>>   src/libcamera/pipeline/vimc/meson.build     |   2 +<br>
>>   src/libcamera/proxy/meson.build             |   2 +<br>
>>   src/libcamera/proxy/worker/meson.build      |   2 +<br>
>>   src/meson.build                             |   2 +<br>
>>   src/qcam/meson.build                        |   2 +<br>
>>   src/v4l2/meson.build                        |   2 +<br>
>>   test/camera/meson.build                     |   2 +<br>
>>   test/controls/meson.build                   |   2 +<br>
>>   test/ipa/meson.build                        |   2 +<br>
>>   test/ipc/meson.build                        |   2 +<br>
>>   test/libtest/meson.build                    |   2 +<br>
>>   test/log/meson.build                        |   2 +<br>
>>   test/media_device/meson.build               |   2 +<br>
>>   test/meson.build                            |   2 +<br>
>>   test/pipeline/ipu3/meson.build              |   2 +<br>
>>   test/pipeline/meson.build                   |   2 +<br>
>>   test/pipeline/rkisp1/meson.build            |   2 +<br>
>>   test/process/meson.build                    |   2 +<br>
>>   test/serialization/meson.build              |   2 +<br>
>>   test/stream/meson.build                     |   2 +<br>
>>   test/v4l2_subdevice/meson.build             |   2 +<br>
>>   test/v4l2_videodevice/meson.build           |   2 +<br>
>>   utils/ipu3/meson.build                      |   2 +<br>
>>   utils/meson.build                           |   2 +<br>
>>   47 files changed, 211 insertions(+)<br>
>>   create mode 100644 LICENSES/CC0-1.0.txt<br>
>><br>
>> diff --git a/Documentation/meson.build b/Documentation/meson.build<br>
>> index c4e9892470de..b3b4f0b66f57 100644<br>
>> --- a/Documentation/meson.build<br>
>> +++ b/Documentation/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   doc_install_dir = join_paths(get_option('datadir'), 'doc',<br>
>>                                'libcamera-@0@'.format(libcamera_version))<br>
>>   <br>
>> diff --git a/LICENSES/CC0-1.0.txt b/LICENSES/CC0-1.0.txt<br>
>> new file mode 100644<br>
>> index 000000000000..a343ccd4335f<br>
>> --- /dev/null<br>
>> +++ b/LICENSES/CC0-1.0.txt<br>
>> @@ -0,0 +1,119 @@<br>
>> +Creative Commons Legal Code<br>
>> +<br>
>> +CC0 1.0 Universal CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES<br>
>> +NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE<br>
>> +AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION<br>
>> +ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE<br>
>> +OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS<br>
>> +LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION<br>
>> +OR WORKS PROVIDED HEREUNDER.<br>
>> +<br>
>> +Statement of Purpose<br>
>> +<br>
>> +The laws of most jurisdictions throughout the world automatically confer exclusive<br>
>> +Copyright and Related Rights (defined below) upon the creator and subsequent<br>
>> +owner(s) (each and all, an "owner") of an original work of authorship and/or<br>
>> +a database (each, a "Work").<br>
>> +<br>
>> +Certain owners wish to permanently relinquish those rights to a Work for the<br>
>> +purpose of contributing to a commons of creative, cultural and scientific<br>
>> +works ("Commons") that the public can reliably and without fear of later claims<br>
>> +of infringement build upon, modify, incorporate in other works, reuse and<br>
>> +redistribute as freely as possible in any form whatsoever and for any purposes,<br>
>> +including without limitation commercial purposes. These owners may contribute<br>
>> +to the Commons to promote the ideal of a free culture and the further production<br>
>> +of creative, cultural and scientific works, or to gain reputation or greater<br>
>> +distribution for their Work in part through the use and efforts of others.<br>
>> +<br>
>> +For these and/or other purposes and motivations, and without any expectation<br>
>> +of additional consideration or compensation, the person associating CC0 with<br>
>> +a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright<br>
>> +and Related Rights in the Work, voluntarily elects to apply CC0 to the Work<br>
>> +and publicly distribute the Work under its terms, with knowledge of his or<br>
>> +her Copyright and Related Rights in the Work and the meaning and intended<br>
>> +legal effect of CC0 on those rights.<br>
>> +<br>
>> +1. Copyright and Related Rights. A Work made available under CC0 may be protected<br>
>> +by copyright and related or neighboring rights ("Copyright and Related Rights").<br>
>> +Copyright and Related Rights include, but are not limited to, the following:<br>
>> +<br>
>> +i. the right to reproduce, adapt, distribute, perform, display, communicate,<br>
>> +and translate a Work;<br>
>> +<br>
>> +      ii. moral rights retained by the original author(s) and/or performer(s);<br>
>> +<br>
>> +iii. publicity and privacy rights pertaining to a person's image or likeness<br>
>> +depicted in a Work;<br>
>> +<br>
>> +iv. rights protecting against unfair competition in regards to a Work, subject<br>
>> +to the limitations in paragraph 4(a), below;<br>
>> +<br>
>> +v. rights protecting the extraction, dissemination, use and reuse of data<br>
>> +in a Work;<br>
>> +<br>
>> +vi. database rights (such as those arising under Directive 96/9/EC of the<br>
>> +European Parliament and of the Council of 11 March 1996 on the legal protection<br>
>> +of databases, and under any national implementation thereof, including any<br>
>> +amended or successor version of such directive); and<br>
>> +<br>
>> +vii. other similar, equivalent or corresponding rights throughout the world<br>
>> +based on applicable law or treaty, and any national implementations thereof.<br>
>> +<br>
>> +2. Waiver. To the greatest extent permitted by, but not in contravention of,<br>
>> +applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and<br>
>> +unconditionally waives, abandons, and surrenders all of Affirmer's Copyright<br>
>> +and Related Rights and associated claims and causes of action, whether now<br>
>> +known or unknown (including existing as well as future claims and causes of<br>
>> +action), in the Work (i) in all territories worldwide, (ii) for the maximum<br>
>> +duration provided by applicable law or treaty (including future time extensions),<br>
>> +(iii) in any current or future medium and for any number of copies, and (iv)<br>
>> +for any purpose whatsoever, including without limitation commercial, advertising<br>
>> +or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the<br>
>> +benefit of each member of the public at large and to the detriment of Affirmer's<br>
>> +heirs and successors, fully intending that such Waiver shall not be subject<br>
>> +to revocation, rescission, cancellation, termination, or any other legal or<br>
>> +equitable action to disrupt the quiet enjoyment of the Work by the public<br>
>> +as contemplated by Affirmer's express Statement of Purpose.<br>
>> +<br>
>> +3. Public License Fallback. Should any part of the Waiver for any reason be<br>
>> +judged legally invalid or ineffective under applicable law, then the Waiver<br>
>> +shall be preserved to the maximum extent permitted taking into account Affirmer's<br>
>> +express Statement of Purpose. In addition, to the extent the Waiver is so<br>
>> +judged Affirmer hereby grants to each affected person a royalty-free, non<br>
>> +transferable, non sublicensable, non exclusive, irrevocable and unconditional<br>
>> +license to exercise Affirmer's Copyright and Related Rights in the Work (i)<br>
>> +in all territories worldwide, (ii) for the maximum duration provided by applicable<br>
>> +law or treaty (including future time extensions), (iii) in any current or<br>
>> +future medium and for any number of copies, and (iv) for any purpose whatsoever,<br>
>> +including without limitation commercial, advertising or promotional purposes<br>
>> +(the "License"). The License shall be deemed effective as of the date CC0<br>
>> +was applied by Affirmer to the Work. Should any part of the License for any<br>
>> +reason be judged legally invalid or ineffective under applicable law, such<br>
>> +partial invalidity or ineffectiveness shall not invalidate the remainder of<br>
>> +the License, and in such case Affirmer hereby affirms that he or she will<br>
>> +not (i) exercise any of his or her remaining Copyright and Related Rights<br>
>> +in the Work or (ii) assert any associated claims and causes of action with<br>
>> +respect to the Work, in either case contrary to Affirmer's express Statement<br>
>> +of Purpose.<br>
>> +<br>
>> +   4. Limitations and Disclaimers.<br>
>> +<br>
>> +a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered,<br>
>> +licensed or otherwise affected by this document.<br>
>> +<br>
>> +b. Affirmer offers the Work as-is and makes no representations or warranties<br>
>> +of any kind concerning the Work, express, implied, statutory or otherwise,<br>
>> +including without limitation warranties of title, merchantability, fitness<br>
>> +for a particular purpose, non infringement, or the absence of latent or other<br>
>> +defects, accuracy, or the present or absence of errors, whether or not discoverable,<br>
>> +all to the greatest extent permissible under applicable law.<br>
>> +<br>
>> +c. Affirmer disclaims responsibility for clearing rights of other persons<br>
>> +that may apply to the Work or any use thereof, including without limitation<br>
>> +any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims<br>
>> +responsibility for obtaining any necessary consents, permissions or other<br>
>> +rights required for any use of the Work.<br>
>> +<br>
>> +d. Affirmer understands and acknowledges that Creative Commons is not a party<br>
>> +to this document and has no duty or obligation with respect to this CC0 or<br>
>> +use of the Work.<br>
>> diff --git a/include/android/meson.build b/include/android/meson.build<br>
>> index 69f1c38edada..da2504f2e493 100644<br>
>> --- a/include/android/meson.build<br>
>> +++ b/include/android/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   android_includes = ([<br>
>>       include_directories('hardware/libhardware/include/'),<br>
>>       include_directories('metadata/'),<br>
>> diff --git a/include/ipa/meson.build b/include/ipa/meson.build<br>
>> index 695a4183a0e8..3d5c0dd69bb4 100644<br>
>> --- a/include/ipa/meson.build<br>
>> +++ b/include/ipa/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   libcamera_ipa_api = files([<br>
>>       'ipa_controls.h',<br>
>>       'ipa_interface.h',<br>
>> diff --git a/include/libcamera/meson.build b/include/libcamera/meson.build<br>
>> index 23c01d3837ba..cea47eb83030 100644<br>
>> --- a/include/libcamera/meson.build<br>
>> +++ b/include/libcamera/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   libcamera_api = files([<br>
>>       'bound_method.h',<br>
>>       'buffer.h',<br>
>> diff --git a/include/meson.build b/include/meson.build<br>
>> index 42b2453445b5..4f41c9ceeb4c 100644<br>
>> --- a/include/meson.build<br>
>> +++ b/include/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   libcamera_include_dir = 'libcamera'<br>
>>   <br>
>>   subdir('android')<br>
>> diff --git a/meson.build b/meson.build<br>
>> index 59829e1942ca..e898782a28b0 100644<br>
>> --- a/meson.build<br>
>> +++ b/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   project('libcamera', 'c', 'cpp',<br>
>>       meson_version : '>= 0.47',<br>
>>       version : '0.0.0',<br>
>> diff --git a/meson_options.txt b/meson_options.txt<br>
>> index 166429f8583e..df0047a58a2d 100644<br>
>> --- a/meson_options.txt<br>
>> +++ b/meson_options.txt<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   option('android',<br>
>>           type : 'boolean',<br>
>>           value : false,<br>
>> diff --git a/src/android/meson.build b/src/android/meson.build<br>
>> index 5a5a332e6a6f..822cad621f01 100644<br>
>> --- a/src/android/meson.build<br>
>> +++ b/src/android/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   android_hal_sources = files([<br>
>>       'camera3_hal.cpp',<br>
>>       'camera_hal_manager.cpp',<br>
>> diff --git a/src/cam/meson.build b/src/cam/meson.build<br>
>> index 162d6333f94e..89e124fbae2a 100644<br>
>> --- a/src/cam/meson.build<br>
>> +++ b/src/cam/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   cam_sources = files([<br>
>>       'buffer_writer.cpp',<br>
>>       'capture.cpp',<br>
>> diff --git a/src/gstreamer/meson.build b/src/gstreamer/meson.build<br>
>> index e119e472cb58..c9f0c13d969d 100644<br>
>> --- a/src/gstreamer/meson.build<br>
>> +++ b/src/gstreamer/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   libcamera_gst_sources = [<br>
>>       'gstlibcamera-utils.cpp',<br>
>>       'gstlibcamera.cpp',<br>
>> diff --git a/src/ipa/libipa/meson.build b/src/ipa/libipa/meson.build<br>
>> index 6f3cd4866ce3..2262640517a0 100644<br>
>> --- a/src/ipa/libipa/meson.build<br>
>> +++ b/src/ipa/libipa/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   libipa_headers = files([<br>
>>       'ipa_interface_wrapper.h',<br>
>>   ])<br>
>> diff --git a/src/ipa/meson.build b/src/ipa/meson.build<br>
>> index cc3837ab8525..01b14c1c51df 100644<br>
>> --- a/src/ipa/meson.build<br>
>> +++ b/src/ipa/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   ipa_install_dir = join_paths(get_option('libdir'), 'libcamera')<br>
>>   ipa_data_dir = join_paths(get_option('datadir'), 'libcamera', 'ipa')<br>
>>   ipa_sysconf_dir = join_paths(get_option('sysconfdir'), 'libcamera', 'ipa')<br>
>> diff --git a/src/ipa/rkisp1/meson.build b/src/ipa/rkisp1/meson.build<br>
>> index d7127ea8d1e9..ed9a6b6b8ec8 100644<br>
>> --- a/src/ipa/rkisp1/meson.build<br>
>> +++ b/src/ipa/rkisp1/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   ipa_name = 'ipa_rkisp1'<br>
>>   <br>
>>   mod = shared_module(ipa_name,<br>
>> diff --git a/src/ipa/vimc/data/meson.build b/src/ipa/vimc/data/meson.build<br>
>> index c844926da7f2..6532662cfa94 100644<br>
>> --- a/src/ipa/vimc/data/meson.build<br>
>> +++ b/src/ipa/vimc/data/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   conf_files = files([<br>
>>       'vimc.conf',<br>
>>   ])<br>
>> diff --git a/src/ipa/vimc/meson.build b/src/ipa/vimc/meson.build<br>
>> index 22296a029642..8c9df854007a 100644<br>
>> --- a/src/ipa/vimc/meson.build<br>
>> +++ b/src/ipa/vimc/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   ipa_name = 'ipa_vimc'<br>
>>   <br>
>>   mod = shared_module(ipa_name,<br>
>> diff --git a/src/libcamera/include/meson.build b/src/libcamera/include/meson.build<br>
>> index 683d06133741..1f6af579cca2 100644<br>
>> --- a/src/libcamera/include/meson.build<br>
>> +++ b/src/libcamera/include/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   libcamera_headers = files([<br>
>>       'byte_stream_buffer.h',<br>
>>       'camera_controls.h',<br>
>> diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build<br>
>> index d8b4d7206aba..d42e9720dbd6 100644<br>
>> --- a/src/libcamera/meson.build<br>
>> +++ b/src/libcamera/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   libcamera_sources = files([<br>
>>       'bound_method.cpp',<br>
>>       'buffer.cpp',<br>
>> diff --git a/src/libcamera/pipeline/ipu3/meson.build b/src/libcamera/pipeline/ipu3/meson.build<br>
>> index 0ab766a257a0..0e8c5a14f2b3 100644<br>
>> --- a/src/libcamera/pipeline/ipu3/meson.build<br>
>> +++ b/src/libcamera/pipeline/ipu3/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   libcamera_sources += files([<br>
>>       'ipu3.cpp',<br>
>>   ])<br>
>> diff --git a/src/libcamera/pipeline/meson.build b/src/libcamera/pipeline/meson.build<br>
>> index 190ca5a8db92..46424493aa37 100644<br>
>> --- a/src/libcamera/pipeline/meson.build<br>
>> +++ b/src/libcamera/pipeline/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   foreach pipeline : get_option('pipelines')<br>
>>       subdir(pipeline)<br>
>>   endforeach<br>
>> diff --git a/src/libcamera/pipeline/rkisp1/meson.build b/src/libcamera/pipeline/rkisp1/meson.build<br>
>> index d04fb45223e7..1ab3964a6db1 100644<br>
>> --- a/src/libcamera/pipeline/rkisp1/meson.build<br>
>> +++ b/src/libcamera/pipeline/rkisp1/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   libcamera_sources += files([<br>
>>       'rkisp1.cpp',<br>
>>       'timeline.cpp',<br>
>> diff --git a/src/libcamera/pipeline/simple/meson.build b/src/libcamera/pipeline/simple/meson.build<br>
>> index 8372f24e3788..9c99b32f69f3 100644<br>
>> --- a/src/libcamera/pipeline/simple/meson.build<br>
>> +++ b/src/libcamera/pipeline/simple/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   libcamera_sources += files([<br>
>>       'converter.cpp',<br>
>>       'simple.cpp',<br>
>> diff --git a/src/libcamera/pipeline/uvcvideo/meson.build b/src/libcamera/pipeline/uvcvideo/meson.build<br>
>> index c19ae2389f48..a3c2efd424bf 100644<br>
>> --- a/src/libcamera/pipeline/uvcvideo/meson.build<br>
>> +++ b/src/libcamera/pipeline/uvcvideo/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   libcamera_sources += files([<br>
>>       'uvcvideo.cpp',<br>
>>   ])<br>
>> diff --git a/src/libcamera/pipeline/vimc/meson.build b/src/libcamera/pipeline/vimc/meson.build<br>
>> index 615ecd20f1a2..290eefb5d076 100644<br>
>> --- a/src/libcamera/pipeline/vimc/meson.build<br>
>> +++ b/src/libcamera/pipeline/vimc/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   libcamera_sources += files([<br>
>>       'vimc.cpp',<br>
>>   ])<br>
>> diff --git a/src/libcamera/proxy/meson.build b/src/libcamera/proxy/meson.build<br>
>> index 6c00d5f30ad2..bd804750748a 100644<br>
>> --- a/src/libcamera/proxy/meson.build<br>
>> +++ b/src/libcamera/proxy/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   libcamera_sources += files([<br>
>>       'ipa_proxy_linux.cpp',<br>
>>       'ipa_proxy_thread.cpp',<br>
>> diff --git a/src/libcamera/proxy/worker/meson.build b/src/libcamera/proxy/worker/meson.build<br>
>> index 839156f7591a..1b1bee5e0170 100644<br>
>> --- a/src/libcamera/proxy/worker/meson.build<br>
>> +++ b/src/libcamera/proxy/worker/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   ipa_proxy_sources = [<br>
>>       ['ipa_proxy_linux', 'ipa_proxy_linux_worker.cpp']<br>
>>   ]<br>
>> diff --git a/src/meson.build b/src/meson.build<br>
>> index c9c1008562b1..d69b4c1ea978 100644<br>
>> --- a/src/meson.build<br>
>> +++ b/src/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   if get_option('android')<br>
>>       subdir('android')<br>
>>   endif<br>
>> diff --git a/src/qcam/meson.build b/src/qcam/meson.build<br>
>> index 949ef6149c8a..045db52acf26 100644<br>
>> --- a/src/qcam/meson.build<br>
>> +++ b/src/qcam/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   qcam_sources = files([<br>
>>       '../cam/options.cpp',<br>
>>       '../cam/stream_options.cpp',<br>
>> diff --git a/src/v4l2/meson.build b/src/v4l2/meson.build<br>
>> index efab968f7729..fc1be82d1b02 100644<br>
>> --- a/src/v4l2/meson.build<br>
>> +++ b/src/v4l2/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   v4l2_compat_sources = files([<br>
>>       'v4l2_camera.cpp',<br>
>>       'v4l2_camera_proxy.cpp',<br>
>> diff --git a/test/camera/meson.build b/test/camera/meson.build<br>
>> index e2a6660a7a92..0395e7ddc7a4 100644<br>
>> --- a/test/camera/meson.build<br>
>> +++ b/test/camera/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   # Tests are listed in order of complexity.<br>
>>   # They are not alphabetically sorted.<br>
>>   camera_tests = [<br>
>> diff --git a/test/controls/meson.build b/test/controls/meson.build<br>
>> index 7fff2413007e..545fb03b16c6 100644<br>
>> --- a/test/controls/meson.build<br>
>> +++ b/test/controls/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   control_tests = [<br>
>>       [ 'control_info',               'control_info.cpp' ],<br>
>>       [ 'control_info_map',           'control_info_map.cpp' ],<br>
>> diff --git a/test/ipa/meson.build b/test/ipa/meson.build<br>
>> index f925c50a085e..ba672f3f9d8b 100644<br>
>> --- a/test/ipa/meson.build<br>
>> +++ b/test/ipa/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   ipa_test = [<br>
>>       ['ipa_module_test',     'ipa_module_test.cpp'],<br>
>>       ['ipa_interface_test',  'ipa_interface_test.cpp'],<br>
>> diff --git a/test/ipc/meson.build b/test/ipc/meson.build<br>
>> index cc46b41c7687..650df1d63444 100644<br>
>> --- a/test/ipc/meson.build<br>
>> +++ b/test/ipc/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   ipc_tests = [<br>
>>       [ 'unixsocket',  'unixsocket.cpp' ],<br>
>>   ]<br>
>> diff --git a/test/libtest/meson.build b/test/libtest/meson.build<br>
>> index 33565e0eb3b6..481f6d6baa61 100644<br>
>> --- a/test/libtest/meson.build<br>
>> +++ b/test/libtest/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   libtest_sources = files([<br>
>>       'buffer_source.cpp',<br>
>>       'camera_test.cpp',<br>
>> diff --git a/test/log/meson.build b/test/log/meson.build<br>
>> index 95f6c1a2ae4a..8cd664e04a00 100644<br>
>> --- a/test/log/meson.build<br>
>> +++ b/test/log/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   log_test = [<br>
>>       ['log_api',     'log_api.cpp'],<br>
>>       ['log_process', 'log_process.cpp'],<br>
>> diff --git a/test/media_device/meson.build b/test/media_device/meson.build<br>
>> index 6a0e468434b5..1dfcdd8bd744 100644<br>
>> --- a/test/media_device/meson.build<br>
>> +++ b/test/media_device/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   lib_mdev_test_sources = files([<br>
>>       'media_device_test.cpp',<br>
>>   ])<br>
>> diff --git a/test/meson.build b/test/meson.build<br>
>> index 5a45a85effd3..bd7da147c70e 100644<br>
>> --- a/test/meson.build<br>
>> +++ b/test/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   subdir('libtest')<br>
>>   <br>
>>   subdir('camera')<br>
>> diff --git a/test/pipeline/ipu3/meson.build b/test/pipeline/ipu3/meson.build<br>
>> index d02927c9af86..d062ecd269f2 100644<br>
>> --- a/test/pipeline/ipu3/meson.build<br>
>> +++ b/test/pipeline/ipu3/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   ipu3_test = [<br>
>>       ['ipu3_pipeline_test',            'ipu3_pipeline_test.cpp'],<br>
>>   ]<br>
>> diff --git a/test/pipeline/meson.build b/test/pipeline/meson.build<br>
>> index 157f789ceb25..6e7901fee38f 100644<br>
>> --- a/test/pipeline/meson.build<br>
>> +++ b/test/pipeline/meson.build<br>
>> @@ -1,2 +1,4 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   subdir('ipu3')<br>
>>   subdir('rkisp1')<br>
>> diff --git a/test/pipeline/rkisp1/meson.build b/test/pipeline/rkisp1/meson.build<br>
>> index d3f974964fc4..ece147b054e4 100644<br>
>> --- a/test/pipeline/rkisp1/meson.build<br>
>> +++ b/test/pipeline/rkisp1/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   rkisp1_test = [<br>
>>       ['rkisp1_pipeline_test',            'rkisp1_pipeline_test.cpp'],<br>
>>   ]<br>
>> diff --git a/test/process/meson.build b/test/process/meson.build<br>
>> index c4d83d6c8b39..c215fa7e6c12 100644<br>
>> --- a/test/process/meson.build<br>
>> +++ b/test/process/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   process_tests = [<br>
>>       [ 'process_test',  'process_test.cpp' ],<br>
>>   ]<br>
>> diff --git a/test/serialization/meson.build b/test/serialization/meson.build<br>
>> index d78d92e61887..a9d9cbcb7d80 100644<br>
>> --- a/test/serialization/meson.build<br>
>> +++ b/test/serialization/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   serialization_tests = [<br>
>>       [ 'control_serialization',    'control_serialization.cpp' ],<br>
>>   ]<br>
>> diff --git a/test/stream/meson.build b/test/stream/meson.build<br>
>> index 005f4aa4996a..2b9b29a9143b 100644<br>
>> --- a/test/stream/meson.build<br>
>> +++ b/test/stream/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   stream_tests = [<br>
>>       [ 'stream_formats', 'stream_formats.cpp' ],<br>
>>   ]<br>
>> diff --git a/test/v4l2_subdevice/meson.build b/test/v4l2_subdevice/meson.build<br>
>> index 0521984b2a78..5f0882ca9772 100644<br>
>> --- a/test/v4l2_subdevice/meson.build<br>
>> +++ b/test/v4l2_subdevice/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   v4l2_subdevice_tests = [<br>
>>     [ 'list_formats',             'list_formats.cpp'],<br>
>>     [ 'test_formats',             'test_formats.cpp'],<br>
>> diff --git a/test/v4l2_videodevice/meson.build b/test/v4l2_videodevice/meson.build<br>
>> index 685fcf6d16d7..b4bb30908027 100644<br>
>> --- a/test/v4l2_videodevice/meson.build<br>
>> +++ b/test/v4l2_videodevice/meson.build<br>
>> @@ -1,3 +1,5 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   # Tests are listed in order of complexity.<br>
>>   # They are not alphabetically sorted.<br>
>>   v4l2_videodevice_tests = [<br>
>> diff --git a/utils/ipu3/meson.build b/utils/ipu3/meson.build<br>
>> index 49c45856eea6..88049f589561 100644<br>
>> --- a/utils/ipu3/meson.build<br>
>> +++ b/utils/ipu3/meson.build<br>
>> @@ -1 +1,3 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   ipu3_unpack = executable('ipu3-unpack', 'ipu3-unpack.c')<br>
>> diff --git a/utils/meson.build b/utils/meson.build<br>
>> index f434c79c0ae3..c3cd9d69f887 100644<br>
>> --- a/utils/meson.build<br>
>> +++ b/utils/meson.build<br>
>> @@ -1 +1,3 @@<br>
>> +# SPDX-License-Identifier: CC0-1.0<br>
>> +<br>
>>   subdir('ipu3')<br>
> <br>
<br>
</blockquote></div></div>