[libcamera-devel,v2] licenses: License all meson files under CC0-1.0

Message ID 20200511222721.5512-1-laurent.pinchart@ideasonboard.com
State Accepted
Commit 7a653369cb42e1611b884f4a16de60d1b60aa8e7
Headers show
Series
  • [libcamera-devel,v2] licenses: License all meson files under CC0-1.0
Related show

Commit Message

Laurent Pinchart May 11, 2020, 10:27 p.m. UTC
In an attempt to clarify the license terms of all files in the libcamera
project, the build system files deserve particular attention. While they
describe how the binaries are created, they are not themselves
transformed into any part of binary distributions of the software, and
thus don't influece the copyright on the binary packages. They are
however subject to copyright, and thus influence the distribution terms
of the source packages.

Most of the meson.build files would not meet the threshold of
originality criteria required for copyright protection. Some of the more
complex meson.build files may be elligible for copyright protection. To
avoid any ambiguity and uncertainty, state our intent to not assert
copyrights on the build system files by putting them in the public
domain with the CC0-1.0 license.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
Changes since v1:

- Added meson.build files from the Raspberry Pi pipeline handler
---
 Documentation/meson.build                     |   2 +
 LICENSES/CC0-1.0.txt                          | 119 ++++++++++++++++++
 include/android/meson.build                   |   2 +
 include/ipa/meson.build                       |   2 +
 include/libcamera/meson.build                 |   2 +
 include/meson.build                           |   2 +
 meson.build                                   |   2 +
 meson_options.txt                             |   2 +
 src/android/meson.build                       |   2 +
 src/cam/meson.build                           |   2 +
 src/gstreamer/meson.build                     |   2 +
 src/ipa/libipa/meson.build                    |   2 +
 src/ipa/meson.build                           |   2 +
 src/ipa/raspberrypi/meson.build               |   2 +
 src/ipa/rkisp1/meson.build                    |   2 +
 src/ipa/vimc/data/meson.build                 |   2 +
 src/ipa/vimc/meson.build                      |   2 +
 src/libcamera/include/meson.build             |   2 +
 src/libcamera/meson.build                     |   2 +
 src/libcamera/pipeline/ipu3/meson.build       |   2 +
 src/libcamera/pipeline/meson.build            |   2 +
 .../pipeline/raspberrypi/meson.build          |   2 +
 src/libcamera/pipeline/rkisp1/meson.build     |   2 +
 src/libcamera/pipeline/simple/meson.build     |   2 +
 src/libcamera/pipeline/uvcvideo/meson.build   |   2 +
 src/libcamera/pipeline/vimc/meson.build       |   2 +
 src/libcamera/proxy/meson.build               |   2 +
 src/libcamera/proxy/worker/meson.build        |   2 +
 src/meson.build                               |   2 +
 src/qcam/meson.build                          |   2 +
 src/v4l2/meson.build                          |   2 +
 test/camera/meson.build                       |   2 +
 test/controls/meson.build                     |   2 +
 test/ipa/meson.build                          |   2 +
 test/ipc/meson.build                          |   2 +
 test/libtest/meson.build                      |   2 +
 test/log/meson.build                          |   2 +
 test/media_device/meson.build                 |   2 +
 test/meson.build                              |   2 +
 test/pipeline/ipu3/meson.build                |   2 +
 test/pipeline/meson.build                     |   2 +
 test/pipeline/rkisp1/meson.build              |   2 +
 test/process/meson.build                      |   2 +
 test/serialization/meson.build                |   2 +
 test/stream/meson.build                       |   2 +
 test/v4l2_subdevice/meson.build               |   2 +
 test/v4l2_videodevice/meson.build             |   2 +
 utils/ipu3/meson.build                        |   2 +
 utils/meson.build                             |   2 +
 49 files changed, 215 insertions(+)
 create mode 100644 LICENSES/CC0-1.0.txt

Comments

Giulio Benetti May 11, 2020, 10:35 p.m. UTC | #1
Hi Laurent, All,

Il 12/05/2020 00:27, Laurent Pinchart ha scritto:
> In an attempt to clarify the license terms of all files in the libcamera
> project, the build system files deserve particular attention. While they
> describe how the binaries are created, they are not themselves
> transformed into any part of binary distributions of the software, and
> thus don't influece the copyright on the binary packages. They are
> however subject to copyright, and thus influence the distribution terms
> of the source packages.
> 
> Most of the meson.build files would not meet the threshold of
> originality criteria required for copyright protection. Some of the more
> complex meson.build files may be elligible for copyright protection. To
> avoid any ambiguity and uncertainty, state our intent to not assert
> copyrights on the build system files by putting them in the public
> domain with the CC0-1.0 license.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

Acked-by: Giulio Benetti <giulio.benetti@micronovasrl.com>

> ---
> Changes since v1:
> 
> - Added meson.build files from the Raspberry Pi pipeline handler
> ---
>   Documentation/meson.build                     |   2 +
>   LICENSES/CC0-1.0.txt                          | 119 ++++++++++++++++++
>   include/android/meson.build                   |   2 +
>   include/ipa/meson.build                       |   2 +
>   include/libcamera/meson.build                 |   2 +
>   include/meson.build                           |   2 +
>   meson.build                                   |   2 +
>   meson_options.txt                             |   2 +
>   src/android/meson.build                       |   2 +
>   src/cam/meson.build                           |   2 +
>   src/gstreamer/meson.build                     |   2 +
>   src/ipa/libipa/meson.build                    |   2 +
>   src/ipa/meson.build                           |   2 +
>   src/ipa/raspberrypi/meson.build               |   2 +
>   src/ipa/rkisp1/meson.build                    |   2 +
>   src/ipa/vimc/data/meson.build                 |   2 +
>   src/ipa/vimc/meson.build                      |   2 +
>   src/libcamera/include/meson.build             |   2 +
>   src/libcamera/meson.build                     |   2 +
>   src/libcamera/pipeline/ipu3/meson.build       |   2 +
>   src/libcamera/pipeline/meson.build            |   2 +
>   .../pipeline/raspberrypi/meson.build          |   2 +
>   src/libcamera/pipeline/rkisp1/meson.build     |   2 +
>   src/libcamera/pipeline/simple/meson.build     |   2 +
>   src/libcamera/pipeline/uvcvideo/meson.build   |   2 +
>   src/libcamera/pipeline/vimc/meson.build       |   2 +
>   src/libcamera/proxy/meson.build               |   2 +
>   src/libcamera/proxy/worker/meson.build        |   2 +
>   src/meson.build                               |   2 +
>   src/qcam/meson.build                          |   2 +
>   src/v4l2/meson.build                          |   2 +
>   test/camera/meson.build                       |   2 +
>   test/controls/meson.build                     |   2 +
>   test/ipa/meson.build                          |   2 +
>   test/ipc/meson.build                          |   2 +
>   test/libtest/meson.build                      |   2 +
>   test/log/meson.build                          |   2 +
>   test/media_device/meson.build                 |   2 +
>   test/meson.build                              |   2 +
>   test/pipeline/ipu3/meson.build                |   2 +
>   test/pipeline/meson.build                     |   2 +
>   test/pipeline/rkisp1/meson.build              |   2 +
>   test/process/meson.build                      |   2 +
>   test/serialization/meson.build                |   2 +
>   test/stream/meson.build                       |   2 +
>   test/v4l2_subdevice/meson.build               |   2 +
>   test/v4l2_videodevice/meson.build             |   2 +
>   utils/ipu3/meson.build                        |   2 +
>   utils/meson.build                             |   2 +
>   49 files changed, 215 insertions(+)
>   create mode 100644 LICENSES/CC0-1.0.txt
> 
> diff --git a/Documentation/meson.build b/Documentation/meson.build
> index c4e9892470de..b3b4f0b66f57 100644
> --- a/Documentation/meson.build
> +++ b/Documentation/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   doc_install_dir = join_paths(get_option('datadir'), 'doc',
>                                'libcamera-@0@'.format(libcamera_version))
>   
> diff --git a/LICENSES/CC0-1.0.txt b/LICENSES/CC0-1.0.txt
> new file mode 100644
> index 000000000000..a343ccd4335f
> --- /dev/null
> +++ b/LICENSES/CC0-1.0.txt
> @@ -0,0 +1,119 @@
> +Creative Commons Legal Code
> +
> +CC0 1.0 Universal CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES
> +NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE
> +AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION
> +ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE
> +OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS
> +LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION
> +OR WORKS PROVIDED HEREUNDER.
> +
> +Statement of Purpose
> +
> +The laws of most jurisdictions throughout the world automatically confer exclusive
> +Copyright and Related Rights (defined below) upon the creator and subsequent
> +owner(s) (each and all, an "owner") of an original work of authorship and/or
> +a database (each, a "Work").
> +
> +Certain owners wish to permanently relinquish those rights to a Work for the
> +purpose of contributing to a commons of creative, cultural and scientific
> +works ("Commons") that the public can reliably and without fear of later claims
> +of infringement build upon, modify, incorporate in other works, reuse and
> +redistribute as freely as possible in any form whatsoever and for any purposes,
> +including without limitation commercial purposes. These owners may contribute
> +to the Commons to promote the ideal of a free culture and the further production
> +of creative, cultural and scientific works, or to gain reputation or greater
> +distribution for their Work in part through the use and efforts of others.
> +
> +For these and/or other purposes and motivations, and without any expectation
> +of additional consideration or compensation, the person associating CC0 with
> +a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
> +and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
> +and publicly distribute the Work under its terms, with knowledge of his or
> +her Copyright and Related Rights in the Work and the meaning and intended
> +legal effect of CC0 on those rights.
> +
> +1. Copyright and Related Rights. A Work made available under CC0 may be protected
> +by copyright and related or neighboring rights ("Copyright and Related Rights").
> +Copyright and Related Rights include, but are not limited to, the following:
> +
> +i. the right to reproduce, adapt, distribute, perform, display, communicate,
> +and translate a Work;
> +
> +      ii. moral rights retained by the original author(s) and/or performer(s);
> +
> +iii. publicity and privacy rights pertaining to a person's image or likeness
> +depicted in a Work;
> +
> +iv. rights protecting against unfair competition in regards to a Work, subject
> +to the limitations in paragraph 4(a), below;
> +
> +v. rights protecting the extraction, dissemination, use and reuse of data
> +in a Work;
> +
> +vi. database rights (such as those arising under Directive 96/9/EC of the
> +European Parliament and of the Council of 11 March 1996 on the legal protection
> +of databases, and under any national implementation thereof, including any
> +amended or successor version of such directive); and
> +
> +vii. other similar, equivalent or corresponding rights throughout the world
> +based on applicable law or treaty, and any national implementations thereof.
> +
> +2. Waiver. To the greatest extent permitted by, but not in contravention of,
> +applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
> +unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
> +and Related Rights and associated claims and causes of action, whether now
> +known or unknown (including existing as well as future claims and causes of
> +action), in the Work (i) in all territories worldwide, (ii) for the maximum
> +duration provided by applicable law or treaty (including future time extensions),
> +(iii) in any current or future medium and for any number of copies, and (iv)
> +for any purpose whatsoever, including without limitation commercial, advertising
> +or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the
> +benefit of each member of the public at large and to the detriment of Affirmer's
> +heirs and successors, fully intending that such Waiver shall not be subject
> +to revocation, rescission, cancellation, termination, or any other legal or
> +equitable action to disrupt the quiet enjoyment of the Work by the public
> +as contemplated by Affirmer's express Statement of Purpose.
> +
> +3. Public License Fallback. Should any part of the Waiver for any reason be
> +judged legally invalid or ineffective under applicable law, then the Waiver
> +shall be preserved to the maximum extent permitted taking into account Affirmer's
> +express Statement of Purpose. In addition, to the extent the Waiver is so
> +judged Affirmer hereby grants to each affected person a royalty-free, non
> +transferable, non sublicensable, non exclusive, irrevocable and unconditional
> +license to exercise Affirmer's Copyright and Related Rights in the Work (i)
> +in all territories worldwide, (ii) for the maximum duration provided by applicable
> +law or treaty (including future time extensions), (iii) in any current or
> +future medium and for any number of copies, and (iv) for any purpose whatsoever,
> +including without limitation commercial, advertising or promotional purposes
> +(the "License"). The License shall be deemed effective as of the date CC0
> +was applied by Affirmer to the Work. Should any part of the License for any
> +reason be judged legally invalid or ineffective under applicable law, such
> +partial invalidity or ineffectiveness shall not invalidate the remainder of
> +the License, and in such case Affirmer hereby affirms that he or she will
> +not (i) exercise any of his or her remaining Copyright and Related Rights
> +in the Work or (ii) assert any associated claims and causes of action with
> +respect to the Work, in either case contrary to Affirmer's express Statement
> +of Purpose.
> +
> +   4. Limitations and Disclaimers.
> +
> +a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered,
> +licensed or otherwise affected by this document.
> +
> +b. Affirmer offers the Work as-is and makes no representations or warranties
> +of any kind concerning the Work, express, implied, statutory or otherwise,
> +including without limitation warranties of title, merchantability, fitness
> +for a particular purpose, non infringement, or the absence of latent or other
> +defects, accuracy, or the present or absence of errors, whether or not discoverable,
> +all to the greatest extent permissible under applicable law.
> +
> +c. Affirmer disclaims responsibility for clearing rights of other persons
> +that may apply to the Work or any use thereof, including without limitation
> +any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims
> +responsibility for obtaining any necessary consents, permissions or other
> +rights required for any use of the Work.
> +
> +d. Affirmer understands and acknowledges that Creative Commons is not a party
> +to this document and has no duty or obligation with respect to this CC0 or
> +use of the Work.
> diff --git a/include/android/meson.build b/include/android/meson.build
> index 69f1c38edada..da2504f2e493 100644
> --- a/include/android/meson.build
> +++ b/include/android/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   android_includes = ([
>       include_directories('hardware/libhardware/include/'),
>       include_directories('metadata/'),
> diff --git a/include/ipa/meson.build b/include/ipa/meson.build
> index 695a4183a0e8..3d5c0dd69bb4 100644
> --- a/include/ipa/meson.build
> +++ b/include/ipa/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   libcamera_ipa_api = files([
>       'ipa_controls.h',
>       'ipa_interface.h',
> diff --git a/include/libcamera/meson.build b/include/libcamera/meson.build
> index 23c01d3837ba..cea47eb83030 100644
> --- a/include/libcamera/meson.build
> +++ b/include/libcamera/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   libcamera_api = files([
>       'bound_method.h',
>       'buffer.h',
> diff --git a/include/meson.build b/include/meson.build
> index 42b2453445b5..4f41c9ceeb4c 100644
> --- a/include/meson.build
> +++ b/include/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   libcamera_include_dir = 'libcamera'
>   
>   subdir('android')
> diff --git a/meson.build b/meson.build
> index 59829e1942ca..e898782a28b0 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   project('libcamera', 'c', 'cpp',
>       meson_version : '>= 0.47',
>       version : '0.0.0',
> diff --git a/meson_options.txt b/meson_options.txt
> index 68f4f48004e5..badace151bb6 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   option('android',
>           type : 'boolean',
>           value : false,
> diff --git a/src/android/meson.build b/src/android/meson.build
> index 5a5a332e6a6f..822cad621f01 100644
> --- a/src/android/meson.build
> +++ b/src/android/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   android_hal_sources = files([
>       'camera3_hal.cpp',
>       'camera_hal_manager.cpp',
> diff --git a/src/cam/meson.build b/src/cam/meson.build
> index 162d6333f94e..89e124fbae2a 100644
> --- a/src/cam/meson.build
> +++ b/src/cam/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   cam_sources = files([
>       'buffer_writer.cpp',
>       'capture.cpp',
> diff --git a/src/gstreamer/meson.build b/src/gstreamer/meson.build
> index e119e472cb58..c9f0c13d969d 100644
> --- a/src/gstreamer/meson.build
> +++ b/src/gstreamer/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   libcamera_gst_sources = [
>       'gstlibcamera-utils.cpp',
>       'gstlibcamera.cpp',
> diff --git a/src/ipa/libipa/meson.build b/src/ipa/libipa/meson.build
> index 6f3cd4866ce3..2262640517a0 100644
> --- a/src/ipa/libipa/meson.build
> +++ b/src/ipa/libipa/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   libipa_headers = files([
>       'ipa_interface_wrapper.h',
>   ])
> diff --git a/src/ipa/meson.build b/src/ipa/meson.build
> index b103479c1cd0..64deb601054c 100644
> --- a/src/ipa/meson.build
> +++ b/src/ipa/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   ipa_install_dir = join_paths(get_option('libdir'), 'libcamera')
>   ipa_data_dir = join_paths(get_option('datadir'), 'libcamera', 'ipa')
>   ipa_sysconf_dir = join_paths(get_option('sysconfdir'), 'libcamera', 'ipa')
> diff --git a/src/ipa/raspberrypi/meson.build b/src/ipa/raspberrypi/meson.build
> index 2dece3a468e8..697902e95bc1 100644
> --- a/src/ipa/raspberrypi/meson.build
> +++ b/src/ipa/raspberrypi/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   ipa_name = 'ipa_rpi'
>   
>   rpi_ipa_deps = [
> diff --git a/src/ipa/rkisp1/meson.build b/src/ipa/rkisp1/meson.build
> index d7127ea8d1e9..ed9a6b6b8ec8 100644
> --- a/src/ipa/rkisp1/meson.build
> +++ b/src/ipa/rkisp1/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   ipa_name = 'ipa_rkisp1'
>   
>   mod = shared_module(ipa_name,
> diff --git a/src/ipa/vimc/data/meson.build b/src/ipa/vimc/data/meson.build
> index c844926da7f2..6532662cfa94 100644
> --- a/src/ipa/vimc/data/meson.build
> +++ b/src/ipa/vimc/data/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   conf_files = files([
>       'vimc.conf',
>   ])
> diff --git a/src/ipa/vimc/meson.build b/src/ipa/vimc/meson.build
> index 22296a029642..8c9df854007a 100644
> --- a/src/ipa/vimc/meson.build
> +++ b/src/ipa/vimc/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   ipa_name = 'ipa_vimc'
>   
>   mod = shared_module(ipa_name,
> diff --git a/src/libcamera/include/meson.build b/src/libcamera/include/meson.build
> index 683d06133741..1f6af579cca2 100644
> --- a/src/libcamera/include/meson.build
> +++ b/src/libcamera/include/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   libcamera_headers = files([
>       'byte_stream_buffer.h',
>       'camera_controls.h',
> diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build
> index d8b4d7206aba..d42e9720dbd6 100644
> --- a/src/libcamera/meson.build
> +++ b/src/libcamera/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   libcamera_sources = files([
>       'bound_method.cpp',
>       'buffer.cpp',
> diff --git a/src/libcamera/pipeline/ipu3/meson.build b/src/libcamera/pipeline/ipu3/meson.build
> index 0ab766a257a0..0e8c5a14f2b3 100644
> --- a/src/libcamera/pipeline/ipu3/meson.build
> +++ b/src/libcamera/pipeline/ipu3/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   libcamera_sources += files([
>       'ipu3.cpp',
>   ])
> diff --git a/src/libcamera/pipeline/meson.build b/src/libcamera/pipeline/meson.build
> index 190ca5a8db92..46424493aa37 100644
> --- a/src/libcamera/pipeline/meson.build
> +++ b/src/libcamera/pipeline/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   foreach pipeline : get_option('pipelines')
>       subdir(pipeline)
>   endforeach
> diff --git a/src/libcamera/pipeline/raspberrypi/meson.build b/src/libcamera/pipeline/raspberrypi/meson.build
> index 737857977831..fc117b77bdd1 100644
> --- a/src/libcamera/pipeline/raspberrypi/meson.build
> +++ b/src/libcamera/pipeline/raspberrypi/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   libcamera_sources += files([
>       'raspberrypi.cpp'
>   ])
> diff --git a/src/libcamera/pipeline/rkisp1/meson.build b/src/libcamera/pipeline/rkisp1/meson.build
> index d04fb45223e7..1ab3964a6db1 100644
> --- a/src/libcamera/pipeline/rkisp1/meson.build
> +++ b/src/libcamera/pipeline/rkisp1/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   libcamera_sources += files([
>       'rkisp1.cpp',
>       'timeline.cpp',
> diff --git a/src/libcamera/pipeline/simple/meson.build b/src/libcamera/pipeline/simple/meson.build
> index 8372f24e3788..9c99b32f69f3 100644
> --- a/src/libcamera/pipeline/simple/meson.build
> +++ b/src/libcamera/pipeline/simple/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   libcamera_sources += files([
>       'converter.cpp',
>       'simple.cpp',
> diff --git a/src/libcamera/pipeline/uvcvideo/meson.build b/src/libcamera/pipeline/uvcvideo/meson.build
> index c19ae2389f48..a3c2efd424bf 100644
> --- a/src/libcamera/pipeline/uvcvideo/meson.build
> +++ b/src/libcamera/pipeline/uvcvideo/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   libcamera_sources += files([
>       'uvcvideo.cpp',
>   ])
> diff --git a/src/libcamera/pipeline/vimc/meson.build b/src/libcamera/pipeline/vimc/meson.build
> index 615ecd20f1a2..290eefb5d076 100644
> --- a/src/libcamera/pipeline/vimc/meson.build
> +++ b/src/libcamera/pipeline/vimc/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   libcamera_sources += files([
>       'vimc.cpp',
>   ])
> diff --git a/src/libcamera/proxy/meson.build b/src/libcamera/proxy/meson.build
> index 6c00d5f30ad2..bd804750748a 100644
> --- a/src/libcamera/proxy/meson.build
> +++ b/src/libcamera/proxy/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   libcamera_sources += files([
>       'ipa_proxy_linux.cpp',
>       'ipa_proxy_thread.cpp',
> diff --git a/src/libcamera/proxy/worker/meson.build b/src/libcamera/proxy/worker/meson.build
> index 839156f7591a..1b1bee5e0170 100644
> --- a/src/libcamera/proxy/worker/meson.build
> +++ b/src/libcamera/proxy/worker/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   ipa_proxy_sources = [
>       ['ipa_proxy_linux', 'ipa_proxy_linux_worker.cpp']
>   ]
> diff --git a/src/meson.build b/src/meson.build
> index c9c1008562b1..d69b4c1ea978 100644
> --- a/src/meson.build
> +++ b/src/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   if get_option('android')
>       subdir('android')
>   endif
> diff --git a/src/qcam/meson.build b/src/qcam/meson.build
> index 949ef6149c8a..045db52acf26 100644
> --- a/src/qcam/meson.build
> +++ b/src/qcam/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   qcam_sources = files([
>       '../cam/options.cpp',
>       '../cam/stream_options.cpp',
> diff --git a/src/v4l2/meson.build b/src/v4l2/meson.build
> index efab968f7729..fc1be82d1b02 100644
> --- a/src/v4l2/meson.build
> +++ b/src/v4l2/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   v4l2_compat_sources = files([
>       'v4l2_camera.cpp',
>       'v4l2_camera_proxy.cpp',
> diff --git a/test/camera/meson.build b/test/camera/meson.build
> index e2a6660a7a92..0395e7ddc7a4 100644
> --- a/test/camera/meson.build
> +++ b/test/camera/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   # Tests are listed in order of complexity.
>   # They are not alphabetically sorted.
>   camera_tests = [
> diff --git a/test/controls/meson.build b/test/controls/meson.build
> index 7fff2413007e..545fb03b16c6 100644
> --- a/test/controls/meson.build
> +++ b/test/controls/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   control_tests = [
>       [ 'control_info',               'control_info.cpp' ],
>       [ 'control_info_map',           'control_info_map.cpp' ],
> diff --git a/test/ipa/meson.build b/test/ipa/meson.build
> index f925c50a085e..ba672f3f9d8b 100644
> --- a/test/ipa/meson.build
> +++ b/test/ipa/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   ipa_test = [
>       ['ipa_module_test',     'ipa_module_test.cpp'],
>       ['ipa_interface_test',  'ipa_interface_test.cpp'],
> diff --git a/test/ipc/meson.build b/test/ipc/meson.build
> index cc46b41c7687..650df1d63444 100644
> --- a/test/ipc/meson.build
> +++ b/test/ipc/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   ipc_tests = [
>       [ 'unixsocket',  'unixsocket.cpp' ],
>   ]
> diff --git a/test/libtest/meson.build b/test/libtest/meson.build
> index 33565e0eb3b6..481f6d6baa61 100644
> --- a/test/libtest/meson.build
> +++ b/test/libtest/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   libtest_sources = files([
>       'buffer_source.cpp',
>       'camera_test.cpp',
> diff --git a/test/log/meson.build b/test/log/meson.build
> index 95f6c1a2ae4a..8cd664e04a00 100644
> --- a/test/log/meson.build
> +++ b/test/log/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   log_test = [
>       ['log_api',     'log_api.cpp'],
>       ['log_process', 'log_process.cpp'],
> diff --git a/test/media_device/meson.build b/test/media_device/meson.build
> index 6a0e468434b5..1dfcdd8bd744 100644
> --- a/test/media_device/meson.build
> +++ b/test/media_device/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   lib_mdev_test_sources = files([
>       'media_device_test.cpp',
>   ])
> diff --git a/test/meson.build b/test/meson.build
> index 5a45a85effd3..bd7da147c70e 100644
> --- a/test/meson.build
> +++ b/test/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   subdir('libtest')
>   
>   subdir('camera')
> diff --git a/test/pipeline/ipu3/meson.build b/test/pipeline/ipu3/meson.build
> index d02927c9af86..d062ecd269f2 100644
> --- a/test/pipeline/ipu3/meson.build
> +++ b/test/pipeline/ipu3/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   ipu3_test = [
>       ['ipu3_pipeline_test',            'ipu3_pipeline_test.cpp'],
>   ]
> diff --git a/test/pipeline/meson.build b/test/pipeline/meson.build
> index 157f789ceb25..6e7901fee38f 100644
> --- a/test/pipeline/meson.build
> +++ b/test/pipeline/meson.build
> @@ -1,2 +1,4 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   subdir('ipu3')
>   subdir('rkisp1')
> diff --git a/test/pipeline/rkisp1/meson.build b/test/pipeline/rkisp1/meson.build
> index d3f974964fc4..ece147b054e4 100644
> --- a/test/pipeline/rkisp1/meson.build
> +++ b/test/pipeline/rkisp1/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   rkisp1_test = [
>       ['rkisp1_pipeline_test',            'rkisp1_pipeline_test.cpp'],
>   ]
> diff --git a/test/process/meson.build b/test/process/meson.build
> index c4d83d6c8b39..c215fa7e6c12 100644
> --- a/test/process/meson.build
> +++ b/test/process/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   process_tests = [
>       [ 'process_test',  'process_test.cpp' ],
>   ]
> diff --git a/test/serialization/meson.build b/test/serialization/meson.build
> index d78d92e61887..a9d9cbcb7d80 100644
> --- a/test/serialization/meson.build
> +++ b/test/serialization/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   serialization_tests = [
>       [ 'control_serialization',    'control_serialization.cpp' ],
>   ]
> diff --git a/test/stream/meson.build b/test/stream/meson.build
> index 005f4aa4996a..2b9b29a9143b 100644
> --- a/test/stream/meson.build
> +++ b/test/stream/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   stream_tests = [
>       [ 'stream_formats', 'stream_formats.cpp' ],
>   ]
> diff --git a/test/v4l2_subdevice/meson.build b/test/v4l2_subdevice/meson.build
> index 0521984b2a78..5f0882ca9772 100644
> --- a/test/v4l2_subdevice/meson.build
> +++ b/test/v4l2_subdevice/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   v4l2_subdevice_tests = [
>     [ 'list_formats',             'list_formats.cpp'],
>     [ 'test_formats',             'test_formats.cpp'],
> diff --git a/test/v4l2_videodevice/meson.build b/test/v4l2_videodevice/meson.build
> index 685fcf6d16d7..b4bb30908027 100644
> --- a/test/v4l2_videodevice/meson.build
> +++ b/test/v4l2_videodevice/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   # Tests are listed in order of complexity.
>   # They are not alphabetically sorted.
>   v4l2_videodevice_tests = [
> diff --git a/utils/ipu3/meson.build b/utils/ipu3/meson.build
> index 49c45856eea6..88049f589561 100644
> --- a/utils/ipu3/meson.build
> +++ b/utils/ipu3/meson.build
> @@ -1 +1,3 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   ipu3_unpack = executable('ipu3-unpack', 'ipu3-unpack.c')
> diff --git a/utils/meson.build b/utils/meson.build
> index f434c79c0ae3..c3cd9d69f887 100644
> --- a/utils/meson.build
> +++ b/utils/meson.build
> @@ -1 +1,3 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>   subdir('ipu3')
>
Kieran Bingham May 12, 2020, 8:02 a.m. UTC | #2
Hi Laurent,

On 11/05/2020 23:27, Laurent Pinchart wrote:
> In an attempt to clarify the license terms of all files in the libcamera
> project, the build system files deserve particular attention. While they
> describe how the binaries are created, they are not themselves
> transformed into any part of binary distributions of the software, and
> thus don't influece the copyright on the binary packages. They are

s/influece/influence/

> however subject to copyright, and thus influence the distribution terms
> of the source packages.
> 
> Most of the meson.build files would not meet the threshold of
> originality criteria required for copyright protection. Some of the more
> complex meson.build files may be elligible for copyright protection. To

s/elligible/eligible/

> avoid any ambiguity and uncertainty, state our intent to not assert
> copyrights on the build system files by putting them in the public
> domain with the CC0-1.0 license.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

This seems like a good option to me.

Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>

and for any meson.build files I have authored:

Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>

> ---
> Changes since v1:
> 
> - Added meson.build files from the Raspberry Pi pipeline handler

Do we need to get an explicit ack from Raspberry Pi here?

--
Kieran


> ---
>  Documentation/meson.build                     |   2 +
>  LICENSES/CC0-1.0.txt                          | 119 ++++++++++++++++++
>  include/android/meson.build                   |   2 +
>  include/ipa/meson.build                       |   2 +
>  include/libcamera/meson.build                 |   2 +
>  include/meson.build                           |   2 +
>  meson.build                                   |   2 +
>  meson_options.txt                             |   2 +
>  src/android/meson.build                       |   2 +
>  src/cam/meson.build                           |   2 +
>  src/gstreamer/meson.build                     |   2 +
>  src/ipa/libipa/meson.build                    |   2 +
>  src/ipa/meson.build                           |   2 +
>  src/ipa/raspberrypi/meson.build               |   2 +
>  src/ipa/rkisp1/meson.build                    |   2 +
>  src/ipa/vimc/data/meson.build                 |   2 +
>  src/ipa/vimc/meson.build                      |   2 +
>  src/libcamera/include/meson.build             |   2 +
>  src/libcamera/meson.build                     |   2 +
>  src/libcamera/pipeline/ipu3/meson.build       |   2 +
>  src/libcamera/pipeline/meson.build            |   2 +
>  .../pipeline/raspberrypi/meson.build          |   2 +
>  src/libcamera/pipeline/rkisp1/meson.build     |   2 +
>  src/libcamera/pipeline/simple/meson.build     |   2 +
>  src/libcamera/pipeline/uvcvideo/meson.build   |   2 +
>  src/libcamera/pipeline/vimc/meson.build       |   2 +
>  src/libcamera/proxy/meson.build               |   2 +
>  src/libcamera/proxy/worker/meson.build        |   2 +
>  src/meson.build                               |   2 +
>  src/qcam/meson.build                          |   2 +
>  src/v4l2/meson.build                          |   2 +
>  test/camera/meson.build                       |   2 +
>  test/controls/meson.build                     |   2 +
>  test/ipa/meson.build                          |   2 +
>  test/ipc/meson.build                          |   2 +
>  test/libtest/meson.build                      |   2 +
>  test/log/meson.build                          |   2 +
>  test/media_device/meson.build                 |   2 +
>  test/meson.build                              |   2 +
>  test/pipeline/ipu3/meson.build                |   2 +
>  test/pipeline/meson.build                     |   2 +
>  test/pipeline/rkisp1/meson.build              |   2 +
>  test/process/meson.build                      |   2 +
>  test/serialization/meson.build                |   2 +
>  test/stream/meson.build                       |   2 +
>  test/v4l2_subdevice/meson.build               |   2 +
>  test/v4l2_videodevice/meson.build             |   2 +
>  utils/ipu3/meson.build                        |   2 +
>  utils/meson.build                             |   2 +
>  49 files changed, 215 insertions(+)
>  create mode 100644 LICENSES/CC0-1.0.txt
> 
> diff --git a/Documentation/meson.build b/Documentation/meson.build
> index c4e9892470de..b3b4f0b66f57 100644
> --- a/Documentation/meson.build
> +++ b/Documentation/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  doc_install_dir = join_paths(get_option('datadir'), 'doc',
>                               'libcamera-@0@'.format(libcamera_version))
>  
> diff --git a/LICENSES/CC0-1.0.txt b/LICENSES/CC0-1.0.txt
> new file mode 100644
> index 000000000000..a343ccd4335f
> --- /dev/null
> +++ b/LICENSES/CC0-1.0.txt
> @@ -0,0 +1,119 @@
> +Creative Commons Legal Code
> +
> +CC0 1.0 Universal CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES
> +NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE
> +AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION
> +ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE
> +OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS
> +LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION
> +OR WORKS PROVIDED HEREUNDER.
> +
> +Statement of Purpose
> +
> +The laws of most jurisdictions throughout the world automatically confer exclusive
> +Copyright and Related Rights (defined below) upon the creator and subsequent
> +owner(s) (each and all, an "owner") of an original work of authorship and/or
> +a database (each, a "Work").
> +
> +Certain owners wish to permanently relinquish those rights to a Work for the
> +purpose of contributing to a commons of creative, cultural and scientific
> +works ("Commons") that the public can reliably and without fear of later claims
> +of infringement build upon, modify, incorporate in other works, reuse and
> +redistribute as freely as possible in any form whatsoever and for any purposes,
> +including without limitation commercial purposes. These owners may contribute
> +to the Commons to promote the ideal of a free culture and the further production
> +of creative, cultural and scientific works, or to gain reputation or greater
> +distribution for their Work in part through the use and efforts of others.
> +
> +For these and/or other purposes and motivations, and without any expectation
> +of additional consideration or compensation, the person associating CC0 with
> +a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
> +and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
> +and publicly distribute the Work under its terms, with knowledge of his or
> +her Copyright and Related Rights in the Work and the meaning and intended
> +legal effect of CC0 on those rights.
> +
> +1. Copyright and Related Rights. A Work made available under CC0 may be protected
> +by copyright and related or neighboring rights ("Copyright and Related Rights").
> +Copyright and Related Rights include, but are not limited to, the following:
> +
> +i. the right to reproduce, adapt, distribute, perform, display, communicate,
> +and translate a Work;
> +
> +      ii. moral rights retained by the original author(s) and/or performer(s);
> +
> +iii. publicity and privacy rights pertaining to a person's image or likeness
> +depicted in a Work;
> +
> +iv. rights protecting against unfair competition in regards to a Work, subject
> +to the limitations in paragraph 4(a), below;
> +
> +v. rights protecting the extraction, dissemination, use and reuse of data
> +in a Work;
> +
> +vi. database rights (such as those arising under Directive 96/9/EC of the
> +European Parliament and of the Council of 11 March 1996 on the legal protection
> +of databases, and under any national implementation thereof, including any
> +amended or successor version of such directive); and
> +
> +vii. other similar, equivalent or corresponding rights throughout the world
> +based on applicable law or treaty, and any national implementations thereof.
> +
> +2. Waiver. To the greatest extent permitted by, but not in contravention of,
> +applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
> +unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
> +and Related Rights and associated claims and causes of action, whether now
> +known or unknown (including existing as well as future claims and causes of
> +action), in the Work (i) in all territories worldwide, (ii) for the maximum
> +duration provided by applicable law or treaty (including future time extensions),
> +(iii) in any current or future medium and for any number of copies, and (iv)
> +for any purpose whatsoever, including without limitation commercial, advertising
> +or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the
> +benefit of each member of the public at large and to the detriment of Affirmer's
> +heirs and successors, fully intending that such Waiver shall not be subject
> +to revocation, rescission, cancellation, termination, or any other legal or
> +equitable action to disrupt the quiet enjoyment of the Work by the public
> +as contemplated by Affirmer's express Statement of Purpose.
> +
> +3. Public License Fallback. Should any part of the Waiver for any reason be
> +judged legally invalid or ineffective under applicable law, then the Waiver
> +shall be preserved to the maximum extent permitted taking into account Affirmer's
> +express Statement of Purpose. In addition, to the extent the Waiver is so
> +judged Affirmer hereby grants to each affected person a royalty-free, non
> +transferable, non sublicensable, non exclusive, irrevocable and unconditional
> +license to exercise Affirmer's Copyright and Related Rights in the Work (i)
> +in all territories worldwide, (ii) for the maximum duration provided by applicable
> +law or treaty (including future time extensions), (iii) in any current or
> +future medium and for any number of copies, and (iv) for any purpose whatsoever,
> +including without limitation commercial, advertising or promotional purposes
> +(the "License"). The License shall be deemed effective as of the date CC0
> +was applied by Affirmer to the Work. Should any part of the License for any
> +reason be judged legally invalid or ineffective under applicable law, such
> +partial invalidity or ineffectiveness shall not invalidate the remainder of
> +the License, and in such case Affirmer hereby affirms that he or she will
> +not (i) exercise any of his or her remaining Copyright and Related Rights
> +in the Work or (ii) assert any associated claims and causes of action with
> +respect to the Work, in either case contrary to Affirmer's express Statement
> +of Purpose.
> +
> +   4. Limitations and Disclaimers.
> +
> +a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered,
> +licensed or otherwise affected by this document.
> +
> +b. Affirmer offers the Work as-is and makes no representations or warranties
> +of any kind concerning the Work, express, implied, statutory or otherwise,
> +including without limitation warranties of title, merchantability, fitness
> +for a particular purpose, non infringement, or the absence of latent or other
> +defects, accuracy, or the present or absence of errors, whether or not discoverable,
> +all to the greatest extent permissible under applicable law.
> +
> +c. Affirmer disclaims responsibility for clearing rights of other persons
> +that may apply to the Work or any use thereof, including without limitation
> +any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims
> +responsibility for obtaining any necessary consents, permissions or other
> +rights required for any use of the Work.
> +
> +d. Affirmer understands and acknowledges that Creative Commons is not a party
> +to this document and has no duty or obligation with respect to this CC0 or
> +use of the Work.
> diff --git a/include/android/meson.build b/include/android/meson.build
> index 69f1c38edada..da2504f2e493 100644
> --- a/include/android/meson.build
> +++ b/include/android/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  android_includes = ([
>      include_directories('hardware/libhardware/include/'),
>      include_directories('metadata/'),
> diff --git a/include/ipa/meson.build b/include/ipa/meson.build
> index 695a4183a0e8..3d5c0dd69bb4 100644
> --- a/include/ipa/meson.build
> +++ b/include/ipa/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_ipa_api = files([
>      'ipa_controls.h',
>      'ipa_interface.h',
> diff --git a/include/libcamera/meson.build b/include/libcamera/meson.build
> index 23c01d3837ba..cea47eb83030 100644
> --- a/include/libcamera/meson.build
> +++ b/include/libcamera/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_api = files([
>      'bound_method.h',
>      'buffer.h',
> diff --git a/include/meson.build b/include/meson.build
> index 42b2453445b5..4f41c9ceeb4c 100644
> --- a/include/meson.build
> +++ b/include/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_include_dir = 'libcamera'
>  
>  subdir('android')
> diff --git a/meson.build b/meson.build
> index 59829e1942ca..e898782a28b0 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  project('libcamera', 'c', 'cpp',
>      meson_version : '>= 0.47',
>      version : '0.0.0',
> diff --git a/meson_options.txt b/meson_options.txt
> index 68f4f48004e5..badace151bb6 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  option('android',
>          type : 'boolean',
>          value : false,
> diff --git a/src/android/meson.build b/src/android/meson.build
> index 5a5a332e6a6f..822cad621f01 100644
> --- a/src/android/meson.build
> +++ b/src/android/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  android_hal_sources = files([
>      'camera3_hal.cpp',
>      'camera_hal_manager.cpp',
> diff --git a/src/cam/meson.build b/src/cam/meson.build
> index 162d6333f94e..89e124fbae2a 100644
> --- a/src/cam/meson.build
> +++ b/src/cam/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  cam_sources = files([
>      'buffer_writer.cpp',
>      'capture.cpp',
> diff --git a/src/gstreamer/meson.build b/src/gstreamer/meson.build
> index e119e472cb58..c9f0c13d969d 100644
> --- a/src/gstreamer/meson.build
> +++ b/src/gstreamer/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_gst_sources = [
>      'gstlibcamera-utils.cpp',
>      'gstlibcamera.cpp',
> diff --git a/src/ipa/libipa/meson.build b/src/ipa/libipa/meson.build
> index 6f3cd4866ce3..2262640517a0 100644
> --- a/src/ipa/libipa/meson.build
> +++ b/src/ipa/libipa/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libipa_headers = files([
>      'ipa_interface_wrapper.h',
>  ])
> diff --git a/src/ipa/meson.build b/src/ipa/meson.build
> index b103479c1cd0..64deb601054c 100644
> --- a/src/ipa/meson.build
> +++ b/src/ipa/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  ipa_install_dir = join_paths(get_option('libdir'), 'libcamera')
>  ipa_data_dir = join_paths(get_option('datadir'), 'libcamera', 'ipa')
>  ipa_sysconf_dir = join_paths(get_option('sysconfdir'), 'libcamera', 'ipa')
> diff --git a/src/ipa/raspberrypi/meson.build b/src/ipa/raspberrypi/meson.build
> index 2dece3a468e8..697902e95bc1 100644
> --- a/src/ipa/raspberrypi/meson.build
> +++ b/src/ipa/raspberrypi/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  ipa_name = 'ipa_rpi'
>  
>  rpi_ipa_deps = [
> diff --git a/src/ipa/rkisp1/meson.build b/src/ipa/rkisp1/meson.build
> index d7127ea8d1e9..ed9a6b6b8ec8 100644
> --- a/src/ipa/rkisp1/meson.build
> +++ b/src/ipa/rkisp1/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  ipa_name = 'ipa_rkisp1'
>  
>  mod = shared_module(ipa_name,
> diff --git a/src/ipa/vimc/data/meson.build b/src/ipa/vimc/data/meson.build
> index c844926da7f2..6532662cfa94 100644
> --- a/src/ipa/vimc/data/meson.build
> +++ b/src/ipa/vimc/data/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  conf_files = files([
>      'vimc.conf',
>  ])
> diff --git a/src/ipa/vimc/meson.build b/src/ipa/vimc/meson.build
> index 22296a029642..8c9df854007a 100644
> --- a/src/ipa/vimc/meson.build
> +++ b/src/ipa/vimc/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  ipa_name = 'ipa_vimc'
>  
>  mod = shared_module(ipa_name,
> diff --git a/src/libcamera/include/meson.build b/src/libcamera/include/meson.build
> index 683d06133741..1f6af579cca2 100644
> --- a/src/libcamera/include/meson.build
> +++ b/src/libcamera/include/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_headers = files([
>      'byte_stream_buffer.h',
>      'camera_controls.h',
> diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build
> index d8b4d7206aba..d42e9720dbd6 100644
> --- a/src/libcamera/meson.build
> +++ b/src/libcamera/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_sources = files([
>      'bound_method.cpp',
>      'buffer.cpp',
> diff --git a/src/libcamera/pipeline/ipu3/meson.build b/src/libcamera/pipeline/ipu3/meson.build
> index 0ab766a257a0..0e8c5a14f2b3 100644
> --- a/src/libcamera/pipeline/ipu3/meson.build
> +++ b/src/libcamera/pipeline/ipu3/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_sources += files([
>      'ipu3.cpp',
>  ])
> diff --git a/src/libcamera/pipeline/meson.build b/src/libcamera/pipeline/meson.build
> index 190ca5a8db92..46424493aa37 100644
> --- a/src/libcamera/pipeline/meson.build
> +++ b/src/libcamera/pipeline/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  foreach pipeline : get_option('pipelines')
>      subdir(pipeline)
>  endforeach
> diff --git a/src/libcamera/pipeline/raspberrypi/meson.build b/src/libcamera/pipeline/raspberrypi/meson.build
> index 737857977831..fc117b77bdd1 100644
> --- a/src/libcamera/pipeline/raspberrypi/meson.build
> +++ b/src/libcamera/pipeline/raspberrypi/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_sources += files([
>      'raspberrypi.cpp'
>  ])
> diff --git a/src/libcamera/pipeline/rkisp1/meson.build b/src/libcamera/pipeline/rkisp1/meson.build
> index d04fb45223e7..1ab3964a6db1 100644
> --- a/src/libcamera/pipeline/rkisp1/meson.build
> +++ b/src/libcamera/pipeline/rkisp1/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_sources += files([
>      'rkisp1.cpp',
>      'timeline.cpp',
> diff --git a/src/libcamera/pipeline/simple/meson.build b/src/libcamera/pipeline/simple/meson.build
> index 8372f24e3788..9c99b32f69f3 100644
> --- a/src/libcamera/pipeline/simple/meson.build
> +++ b/src/libcamera/pipeline/simple/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_sources += files([
>      'converter.cpp',
>      'simple.cpp',
> diff --git a/src/libcamera/pipeline/uvcvideo/meson.build b/src/libcamera/pipeline/uvcvideo/meson.build
> index c19ae2389f48..a3c2efd424bf 100644
> --- a/src/libcamera/pipeline/uvcvideo/meson.build
> +++ b/src/libcamera/pipeline/uvcvideo/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_sources += files([
>      'uvcvideo.cpp',
>  ])
> diff --git a/src/libcamera/pipeline/vimc/meson.build b/src/libcamera/pipeline/vimc/meson.build
> index 615ecd20f1a2..290eefb5d076 100644
> --- a/src/libcamera/pipeline/vimc/meson.build
> +++ b/src/libcamera/pipeline/vimc/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_sources += files([
>      'vimc.cpp',
>  ])
> diff --git a/src/libcamera/proxy/meson.build b/src/libcamera/proxy/meson.build
> index 6c00d5f30ad2..bd804750748a 100644
> --- a/src/libcamera/proxy/meson.build
> +++ b/src/libcamera/proxy/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_sources += files([
>      'ipa_proxy_linux.cpp',
>      'ipa_proxy_thread.cpp',
> diff --git a/src/libcamera/proxy/worker/meson.build b/src/libcamera/proxy/worker/meson.build
> index 839156f7591a..1b1bee5e0170 100644
> --- a/src/libcamera/proxy/worker/meson.build
> +++ b/src/libcamera/proxy/worker/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  ipa_proxy_sources = [
>      ['ipa_proxy_linux', 'ipa_proxy_linux_worker.cpp']
>  ]
> diff --git a/src/meson.build b/src/meson.build
> index c9c1008562b1..d69b4c1ea978 100644
> --- a/src/meson.build
> +++ b/src/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  if get_option('android')
>      subdir('android')
>  endif
> diff --git a/src/qcam/meson.build b/src/qcam/meson.build
> index 949ef6149c8a..045db52acf26 100644
> --- a/src/qcam/meson.build
> +++ b/src/qcam/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  qcam_sources = files([
>      '../cam/options.cpp',
>      '../cam/stream_options.cpp',
> diff --git a/src/v4l2/meson.build b/src/v4l2/meson.build
> index efab968f7729..fc1be82d1b02 100644
> --- a/src/v4l2/meson.build
> +++ b/src/v4l2/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  v4l2_compat_sources = files([
>      'v4l2_camera.cpp',
>      'v4l2_camera_proxy.cpp',
> diff --git a/test/camera/meson.build b/test/camera/meson.build
> index e2a6660a7a92..0395e7ddc7a4 100644
> --- a/test/camera/meson.build
> +++ b/test/camera/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  # Tests are listed in order of complexity.
>  # They are not alphabetically sorted.
>  camera_tests = [
> diff --git a/test/controls/meson.build b/test/controls/meson.build
> index 7fff2413007e..545fb03b16c6 100644
> --- a/test/controls/meson.build
> +++ b/test/controls/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  control_tests = [
>      [ 'control_info',               'control_info.cpp' ],
>      [ 'control_info_map',           'control_info_map.cpp' ],
> diff --git a/test/ipa/meson.build b/test/ipa/meson.build
> index f925c50a085e..ba672f3f9d8b 100644
> --- a/test/ipa/meson.build
> +++ b/test/ipa/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  ipa_test = [
>      ['ipa_module_test',     'ipa_module_test.cpp'],
>      ['ipa_interface_test',  'ipa_interface_test.cpp'],
> diff --git a/test/ipc/meson.build b/test/ipc/meson.build
> index cc46b41c7687..650df1d63444 100644
> --- a/test/ipc/meson.build
> +++ b/test/ipc/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  ipc_tests = [
>      [ 'unixsocket',  'unixsocket.cpp' ],
>  ]
> diff --git a/test/libtest/meson.build b/test/libtest/meson.build
> index 33565e0eb3b6..481f6d6baa61 100644
> --- a/test/libtest/meson.build
> +++ b/test/libtest/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libtest_sources = files([
>      'buffer_source.cpp',
>      'camera_test.cpp',
> diff --git a/test/log/meson.build b/test/log/meson.build
> index 95f6c1a2ae4a..8cd664e04a00 100644
> --- a/test/log/meson.build
> +++ b/test/log/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  log_test = [
>      ['log_api',     'log_api.cpp'],
>      ['log_process', 'log_process.cpp'],
> diff --git a/test/media_device/meson.build b/test/media_device/meson.build
> index 6a0e468434b5..1dfcdd8bd744 100644
> --- a/test/media_device/meson.build
> +++ b/test/media_device/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  lib_mdev_test_sources = files([
>      'media_device_test.cpp',
>  ])
> diff --git a/test/meson.build b/test/meson.build
> index 5a45a85effd3..bd7da147c70e 100644
> --- a/test/meson.build
> +++ b/test/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  subdir('libtest')
>  
>  subdir('camera')
> diff --git a/test/pipeline/ipu3/meson.build b/test/pipeline/ipu3/meson.build
> index d02927c9af86..d062ecd269f2 100644
> --- a/test/pipeline/ipu3/meson.build
> +++ b/test/pipeline/ipu3/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  ipu3_test = [
>      ['ipu3_pipeline_test',            'ipu3_pipeline_test.cpp'],
>  ]
> diff --git a/test/pipeline/meson.build b/test/pipeline/meson.build
> index 157f789ceb25..6e7901fee38f 100644
> --- a/test/pipeline/meson.build
> +++ b/test/pipeline/meson.build
> @@ -1,2 +1,4 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  subdir('ipu3')
>  subdir('rkisp1')
> diff --git a/test/pipeline/rkisp1/meson.build b/test/pipeline/rkisp1/meson.build
> index d3f974964fc4..ece147b054e4 100644
> --- a/test/pipeline/rkisp1/meson.build
> +++ b/test/pipeline/rkisp1/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  rkisp1_test = [
>      ['rkisp1_pipeline_test',            'rkisp1_pipeline_test.cpp'],
>  ]
> diff --git a/test/process/meson.build b/test/process/meson.build
> index c4d83d6c8b39..c215fa7e6c12 100644
> --- a/test/process/meson.build
> +++ b/test/process/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  process_tests = [
>      [ 'process_test',  'process_test.cpp' ],
>  ]
> diff --git a/test/serialization/meson.build b/test/serialization/meson.build
> index d78d92e61887..a9d9cbcb7d80 100644
> --- a/test/serialization/meson.build
> +++ b/test/serialization/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  serialization_tests = [
>      [ 'control_serialization',    'control_serialization.cpp' ],
>  ]
> diff --git a/test/stream/meson.build b/test/stream/meson.build
> index 005f4aa4996a..2b9b29a9143b 100644
> --- a/test/stream/meson.build
> +++ b/test/stream/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  stream_tests = [
>      [ 'stream_formats', 'stream_formats.cpp' ],
>  ]
> diff --git a/test/v4l2_subdevice/meson.build b/test/v4l2_subdevice/meson.build
> index 0521984b2a78..5f0882ca9772 100644
> --- a/test/v4l2_subdevice/meson.build
> +++ b/test/v4l2_subdevice/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  v4l2_subdevice_tests = [
>    [ 'list_formats',             'list_formats.cpp'],
>    [ 'test_formats',             'test_formats.cpp'],
> diff --git a/test/v4l2_videodevice/meson.build b/test/v4l2_videodevice/meson.build
> index 685fcf6d16d7..b4bb30908027 100644
> --- a/test/v4l2_videodevice/meson.build
> +++ b/test/v4l2_videodevice/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  # Tests are listed in order of complexity.
>  # They are not alphabetically sorted.
>  v4l2_videodevice_tests = [
> diff --git a/utils/ipu3/meson.build b/utils/ipu3/meson.build
> index 49c45856eea6..88049f589561 100644
> --- a/utils/ipu3/meson.build
> +++ b/utils/ipu3/meson.build
> @@ -1 +1,3 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  ipu3_unpack = executable('ipu3-unpack', 'ipu3-unpack.c')
> diff --git a/utils/meson.build b/utils/meson.build
> index f434c79c0ae3..c3cd9d69f887 100644
> --- a/utils/meson.build
> +++ b/utils/meson.build
> @@ -1 +1,3 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  subdir('ipu3')
>
Paul Elder May 12, 2020, 6:26 p.m. UTC | #3
Hi Laurent,

On Tue, May 12, 2020 at 01:27:21AM +0300, Laurent Pinchart wrote:
> In an attempt to clarify the license terms of all files in the libcamera
> project, the build system files deserve particular attention. While they
> describe how the binaries are created, they are not themselves
> transformed into any part of binary distributions of the software, and
> thus don't influece the copyright on the binary packages. They are
> however subject to copyright, and thus influence the distribution terms
> of the source packages.
> 
> Most of the meson.build files would not meet the threshold of
> originality criteria required for copyright protection. Some of the more
> complex meson.build files may be elligible for copyright protection. To
> avoid any ambiguity and uncertainty, state our intent to not assert
> copyrights on the build system files by putting them in the public
> domain with the CC0-1.0 license.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

With the changes proposed by Kieran, looks good to me.

Acked-by: Paul Elder <paul.elder@ideasonboard.com>

> ---
> Changes since v1:
> 
> - Added meson.build files from the Raspberry Pi pipeline handler
> ---
>  Documentation/meson.build                     |   2 +
>  LICENSES/CC0-1.0.txt                          | 119 ++++++++++++++++++
>  include/android/meson.build                   |   2 +
>  include/ipa/meson.build                       |   2 +
>  include/libcamera/meson.build                 |   2 +
>  include/meson.build                           |   2 +
>  meson.build                                   |   2 +
>  meson_options.txt                             |   2 +
>  src/android/meson.build                       |   2 +
>  src/cam/meson.build                           |   2 +
>  src/gstreamer/meson.build                     |   2 +
>  src/ipa/libipa/meson.build                    |   2 +
>  src/ipa/meson.build                           |   2 +
>  src/ipa/raspberrypi/meson.build               |   2 +
>  src/ipa/rkisp1/meson.build                    |   2 +
>  src/ipa/vimc/data/meson.build                 |   2 +
>  src/ipa/vimc/meson.build                      |   2 +
>  src/libcamera/include/meson.build             |   2 +
>  src/libcamera/meson.build                     |   2 +
>  src/libcamera/pipeline/ipu3/meson.build       |   2 +
>  src/libcamera/pipeline/meson.build            |   2 +
>  .../pipeline/raspberrypi/meson.build          |   2 +
>  src/libcamera/pipeline/rkisp1/meson.build     |   2 +
>  src/libcamera/pipeline/simple/meson.build     |   2 +
>  src/libcamera/pipeline/uvcvideo/meson.build   |   2 +
>  src/libcamera/pipeline/vimc/meson.build       |   2 +
>  src/libcamera/proxy/meson.build               |   2 +
>  src/libcamera/proxy/worker/meson.build        |   2 +
>  src/meson.build                               |   2 +
>  src/qcam/meson.build                          |   2 +
>  src/v4l2/meson.build                          |   2 +
>  test/camera/meson.build                       |   2 +
>  test/controls/meson.build                     |   2 +
>  test/ipa/meson.build                          |   2 +
>  test/ipc/meson.build                          |   2 +
>  test/libtest/meson.build                      |   2 +
>  test/log/meson.build                          |   2 +
>  test/media_device/meson.build                 |   2 +
>  test/meson.build                              |   2 +
>  test/pipeline/ipu3/meson.build                |   2 +
>  test/pipeline/meson.build                     |   2 +
>  test/pipeline/rkisp1/meson.build              |   2 +
>  test/process/meson.build                      |   2 +
>  test/serialization/meson.build                |   2 +
>  test/stream/meson.build                       |   2 +
>  test/v4l2_subdevice/meson.build               |   2 +
>  test/v4l2_videodevice/meson.build             |   2 +
>  utils/ipu3/meson.build                        |   2 +
>  utils/meson.build                             |   2 +
>  49 files changed, 215 insertions(+)
>  create mode 100644 LICENSES/CC0-1.0.txt
> 
> diff --git a/Documentation/meson.build b/Documentation/meson.build
> index c4e9892470de..b3b4f0b66f57 100644
> --- a/Documentation/meson.build
> +++ b/Documentation/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  doc_install_dir = join_paths(get_option('datadir'), 'doc',
>                               'libcamera-@0@'.format(libcamera_version))
>  
> diff --git a/LICENSES/CC0-1.0.txt b/LICENSES/CC0-1.0.txt
> new file mode 100644
> index 000000000000..a343ccd4335f
> --- /dev/null
> +++ b/LICENSES/CC0-1.0.txt
> @@ -0,0 +1,119 @@
> +Creative Commons Legal Code
> +
> +CC0 1.0 Universal CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES
> +NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE
> +AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION
> +ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE
> +OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS
> +LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION
> +OR WORKS PROVIDED HEREUNDER.
> +
> +Statement of Purpose
> +
> +The laws of most jurisdictions throughout the world automatically confer exclusive
> +Copyright and Related Rights (defined below) upon the creator and subsequent
> +owner(s) (each and all, an "owner") of an original work of authorship and/or
> +a database (each, a "Work").
> +
> +Certain owners wish to permanently relinquish those rights to a Work for the
> +purpose of contributing to a commons of creative, cultural and scientific
> +works ("Commons") that the public can reliably and without fear of later claims
> +of infringement build upon, modify, incorporate in other works, reuse and
> +redistribute as freely as possible in any form whatsoever and for any purposes,
> +including without limitation commercial purposes. These owners may contribute
> +to the Commons to promote the ideal of a free culture and the further production
> +of creative, cultural and scientific works, or to gain reputation or greater
> +distribution for their Work in part through the use and efforts of others.
> +
> +For these and/or other purposes and motivations, and without any expectation
> +of additional consideration or compensation, the person associating CC0 with
> +a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
> +and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
> +and publicly distribute the Work under its terms, with knowledge of his or
> +her Copyright and Related Rights in the Work and the meaning and intended
> +legal effect of CC0 on those rights.
> +
> +1. Copyright and Related Rights. A Work made available under CC0 may be protected
> +by copyright and related or neighboring rights ("Copyright and Related Rights").
> +Copyright and Related Rights include, but are not limited to, the following:
> +
> +i. the right to reproduce, adapt, distribute, perform, display, communicate,
> +and translate a Work;
> +
> +      ii. moral rights retained by the original author(s) and/or performer(s);
> +
> +iii. publicity and privacy rights pertaining to a person's image or likeness
> +depicted in a Work;
> +
> +iv. rights protecting against unfair competition in regards to a Work, subject
> +to the limitations in paragraph 4(a), below;
> +
> +v. rights protecting the extraction, dissemination, use and reuse of data
> +in a Work;
> +
> +vi. database rights (such as those arising under Directive 96/9/EC of the
> +European Parliament and of the Council of 11 March 1996 on the legal protection
> +of databases, and under any national implementation thereof, including any
> +amended or successor version of such directive); and
> +
> +vii. other similar, equivalent or corresponding rights throughout the world
> +based on applicable law or treaty, and any national implementations thereof.
> +
> +2. Waiver. To the greatest extent permitted by, but not in contravention of,
> +applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
> +unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
> +and Related Rights and associated claims and causes of action, whether now
> +known or unknown (including existing as well as future claims and causes of
> +action), in the Work (i) in all territories worldwide, (ii) for the maximum
> +duration provided by applicable law or treaty (including future time extensions),
> +(iii) in any current or future medium and for any number of copies, and (iv)
> +for any purpose whatsoever, including without limitation commercial, advertising
> +or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the
> +benefit of each member of the public at large and to the detriment of Affirmer's
> +heirs and successors, fully intending that such Waiver shall not be subject
> +to revocation, rescission, cancellation, termination, or any other legal or
> +equitable action to disrupt the quiet enjoyment of the Work by the public
> +as contemplated by Affirmer's express Statement of Purpose.
> +
> +3. Public License Fallback. Should any part of the Waiver for any reason be
> +judged legally invalid or ineffective under applicable law, then the Waiver
> +shall be preserved to the maximum extent permitted taking into account Affirmer's
> +express Statement of Purpose. In addition, to the extent the Waiver is so
> +judged Affirmer hereby grants to each affected person a royalty-free, non
> +transferable, non sublicensable, non exclusive, irrevocable and unconditional
> +license to exercise Affirmer's Copyright and Related Rights in the Work (i)
> +in all territories worldwide, (ii) for the maximum duration provided by applicable
> +law or treaty (including future time extensions), (iii) in any current or
> +future medium and for any number of copies, and (iv) for any purpose whatsoever,
> +including without limitation commercial, advertising or promotional purposes
> +(the "License"). The License shall be deemed effective as of the date CC0
> +was applied by Affirmer to the Work. Should any part of the License for any
> +reason be judged legally invalid or ineffective under applicable law, such
> +partial invalidity or ineffectiveness shall not invalidate the remainder of
> +the License, and in such case Affirmer hereby affirms that he or she will
> +not (i) exercise any of his or her remaining Copyright and Related Rights
> +in the Work or (ii) assert any associated claims and causes of action with
> +respect to the Work, in either case contrary to Affirmer's express Statement
> +of Purpose.
> +
> +   4. Limitations and Disclaimers.
> +
> +a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered,
> +licensed or otherwise affected by this document.
> +
> +b. Affirmer offers the Work as-is and makes no representations or warranties
> +of any kind concerning the Work, express, implied, statutory or otherwise,
> +including without limitation warranties of title, merchantability, fitness
> +for a particular purpose, non infringement, or the absence of latent or other
> +defects, accuracy, or the present or absence of errors, whether or not discoverable,
> +all to the greatest extent permissible under applicable law.
> +
> +c. Affirmer disclaims responsibility for clearing rights of other persons
> +that may apply to the Work or any use thereof, including without limitation
> +any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims
> +responsibility for obtaining any necessary consents, permissions or other
> +rights required for any use of the Work.
> +
> +d. Affirmer understands and acknowledges that Creative Commons is not a party
> +to this document and has no duty or obligation with respect to this CC0 or
> +use of the Work.
> diff --git a/include/android/meson.build b/include/android/meson.build
> index 69f1c38edada..da2504f2e493 100644
> --- a/include/android/meson.build
> +++ b/include/android/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  android_includes = ([
>      include_directories('hardware/libhardware/include/'),
>      include_directories('metadata/'),
> diff --git a/include/ipa/meson.build b/include/ipa/meson.build
> index 695a4183a0e8..3d5c0dd69bb4 100644
> --- a/include/ipa/meson.build
> +++ b/include/ipa/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_ipa_api = files([
>      'ipa_controls.h',
>      'ipa_interface.h',
> diff --git a/include/libcamera/meson.build b/include/libcamera/meson.build
> index 23c01d3837ba..cea47eb83030 100644
> --- a/include/libcamera/meson.build
> +++ b/include/libcamera/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_api = files([
>      'bound_method.h',
>      'buffer.h',
> diff --git a/include/meson.build b/include/meson.build
> index 42b2453445b5..4f41c9ceeb4c 100644
> --- a/include/meson.build
> +++ b/include/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_include_dir = 'libcamera'
>  
>  subdir('android')
> diff --git a/meson.build b/meson.build
> index 59829e1942ca..e898782a28b0 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  project('libcamera', 'c', 'cpp',
>      meson_version : '>= 0.47',
>      version : '0.0.0',
> diff --git a/meson_options.txt b/meson_options.txt
> index 68f4f48004e5..badace151bb6 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  option('android',
>          type : 'boolean',
>          value : false,
> diff --git a/src/android/meson.build b/src/android/meson.build
> index 5a5a332e6a6f..822cad621f01 100644
> --- a/src/android/meson.build
> +++ b/src/android/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  android_hal_sources = files([
>      'camera3_hal.cpp',
>      'camera_hal_manager.cpp',
> diff --git a/src/cam/meson.build b/src/cam/meson.build
> index 162d6333f94e..89e124fbae2a 100644
> --- a/src/cam/meson.build
> +++ b/src/cam/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  cam_sources = files([
>      'buffer_writer.cpp',
>      'capture.cpp',
> diff --git a/src/gstreamer/meson.build b/src/gstreamer/meson.build
> index e119e472cb58..c9f0c13d969d 100644
> --- a/src/gstreamer/meson.build
> +++ b/src/gstreamer/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_gst_sources = [
>      'gstlibcamera-utils.cpp',
>      'gstlibcamera.cpp',
> diff --git a/src/ipa/libipa/meson.build b/src/ipa/libipa/meson.build
> index 6f3cd4866ce3..2262640517a0 100644
> --- a/src/ipa/libipa/meson.build
> +++ b/src/ipa/libipa/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libipa_headers = files([
>      'ipa_interface_wrapper.h',
>  ])
> diff --git a/src/ipa/meson.build b/src/ipa/meson.build
> index b103479c1cd0..64deb601054c 100644
> --- a/src/ipa/meson.build
> +++ b/src/ipa/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  ipa_install_dir = join_paths(get_option('libdir'), 'libcamera')
>  ipa_data_dir = join_paths(get_option('datadir'), 'libcamera', 'ipa')
>  ipa_sysconf_dir = join_paths(get_option('sysconfdir'), 'libcamera', 'ipa')
> diff --git a/src/ipa/raspberrypi/meson.build b/src/ipa/raspberrypi/meson.build
> index 2dece3a468e8..697902e95bc1 100644
> --- a/src/ipa/raspberrypi/meson.build
> +++ b/src/ipa/raspberrypi/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  ipa_name = 'ipa_rpi'
>  
>  rpi_ipa_deps = [
> diff --git a/src/ipa/rkisp1/meson.build b/src/ipa/rkisp1/meson.build
> index d7127ea8d1e9..ed9a6b6b8ec8 100644
> --- a/src/ipa/rkisp1/meson.build
> +++ b/src/ipa/rkisp1/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  ipa_name = 'ipa_rkisp1'
>  
>  mod = shared_module(ipa_name,
> diff --git a/src/ipa/vimc/data/meson.build b/src/ipa/vimc/data/meson.build
> index c844926da7f2..6532662cfa94 100644
> --- a/src/ipa/vimc/data/meson.build
> +++ b/src/ipa/vimc/data/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  conf_files = files([
>      'vimc.conf',
>  ])
> diff --git a/src/ipa/vimc/meson.build b/src/ipa/vimc/meson.build
> index 22296a029642..8c9df854007a 100644
> --- a/src/ipa/vimc/meson.build
> +++ b/src/ipa/vimc/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  ipa_name = 'ipa_vimc'
>  
>  mod = shared_module(ipa_name,
> diff --git a/src/libcamera/include/meson.build b/src/libcamera/include/meson.build
> index 683d06133741..1f6af579cca2 100644
> --- a/src/libcamera/include/meson.build
> +++ b/src/libcamera/include/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_headers = files([
>      'byte_stream_buffer.h',
>      'camera_controls.h',
> diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build
> index d8b4d7206aba..d42e9720dbd6 100644
> --- a/src/libcamera/meson.build
> +++ b/src/libcamera/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_sources = files([
>      'bound_method.cpp',
>      'buffer.cpp',
> diff --git a/src/libcamera/pipeline/ipu3/meson.build b/src/libcamera/pipeline/ipu3/meson.build
> index 0ab766a257a0..0e8c5a14f2b3 100644
> --- a/src/libcamera/pipeline/ipu3/meson.build
> +++ b/src/libcamera/pipeline/ipu3/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_sources += files([
>      'ipu3.cpp',
>  ])
> diff --git a/src/libcamera/pipeline/meson.build b/src/libcamera/pipeline/meson.build
> index 190ca5a8db92..46424493aa37 100644
> --- a/src/libcamera/pipeline/meson.build
> +++ b/src/libcamera/pipeline/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  foreach pipeline : get_option('pipelines')
>      subdir(pipeline)
>  endforeach
> diff --git a/src/libcamera/pipeline/raspberrypi/meson.build b/src/libcamera/pipeline/raspberrypi/meson.build
> index 737857977831..fc117b77bdd1 100644
> --- a/src/libcamera/pipeline/raspberrypi/meson.build
> +++ b/src/libcamera/pipeline/raspberrypi/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_sources += files([
>      'raspberrypi.cpp'
>  ])
> diff --git a/src/libcamera/pipeline/rkisp1/meson.build b/src/libcamera/pipeline/rkisp1/meson.build
> index d04fb45223e7..1ab3964a6db1 100644
> --- a/src/libcamera/pipeline/rkisp1/meson.build
> +++ b/src/libcamera/pipeline/rkisp1/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_sources += files([
>      'rkisp1.cpp',
>      'timeline.cpp',
> diff --git a/src/libcamera/pipeline/simple/meson.build b/src/libcamera/pipeline/simple/meson.build
> index 8372f24e3788..9c99b32f69f3 100644
> --- a/src/libcamera/pipeline/simple/meson.build
> +++ b/src/libcamera/pipeline/simple/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_sources += files([
>      'converter.cpp',
>      'simple.cpp',
> diff --git a/src/libcamera/pipeline/uvcvideo/meson.build b/src/libcamera/pipeline/uvcvideo/meson.build
> index c19ae2389f48..a3c2efd424bf 100644
> --- a/src/libcamera/pipeline/uvcvideo/meson.build
> +++ b/src/libcamera/pipeline/uvcvideo/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_sources += files([
>      'uvcvideo.cpp',
>  ])
> diff --git a/src/libcamera/pipeline/vimc/meson.build b/src/libcamera/pipeline/vimc/meson.build
> index 615ecd20f1a2..290eefb5d076 100644
> --- a/src/libcamera/pipeline/vimc/meson.build
> +++ b/src/libcamera/pipeline/vimc/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_sources += files([
>      'vimc.cpp',
>  ])
> diff --git a/src/libcamera/proxy/meson.build b/src/libcamera/proxy/meson.build
> index 6c00d5f30ad2..bd804750748a 100644
> --- a/src/libcamera/proxy/meson.build
> +++ b/src/libcamera/proxy/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_sources += files([
>      'ipa_proxy_linux.cpp',
>      'ipa_proxy_thread.cpp',
> diff --git a/src/libcamera/proxy/worker/meson.build b/src/libcamera/proxy/worker/meson.build
> index 839156f7591a..1b1bee5e0170 100644
> --- a/src/libcamera/proxy/worker/meson.build
> +++ b/src/libcamera/proxy/worker/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  ipa_proxy_sources = [
>      ['ipa_proxy_linux', 'ipa_proxy_linux_worker.cpp']
>  ]
> diff --git a/src/meson.build b/src/meson.build
> index c9c1008562b1..d69b4c1ea978 100644
> --- a/src/meson.build
> +++ b/src/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  if get_option('android')
>      subdir('android')
>  endif
> diff --git a/src/qcam/meson.build b/src/qcam/meson.build
> index 949ef6149c8a..045db52acf26 100644
> --- a/src/qcam/meson.build
> +++ b/src/qcam/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  qcam_sources = files([
>      '../cam/options.cpp',
>      '../cam/stream_options.cpp',
> diff --git a/src/v4l2/meson.build b/src/v4l2/meson.build
> index efab968f7729..fc1be82d1b02 100644
> --- a/src/v4l2/meson.build
> +++ b/src/v4l2/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  v4l2_compat_sources = files([
>      'v4l2_camera.cpp',
>      'v4l2_camera_proxy.cpp',
> diff --git a/test/camera/meson.build b/test/camera/meson.build
> index e2a6660a7a92..0395e7ddc7a4 100644
> --- a/test/camera/meson.build
> +++ b/test/camera/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  # Tests are listed in order of complexity.
>  # They are not alphabetically sorted.
>  camera_tests = [
> diff --git a/test/controls/meson.build b/test/controls/meson.build
> index 7fff2413007e..545fb03b16c6 100644
> --- a/test/controls/meson.build
> +++ b/test/controls/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  control_tests = [
>      [ 'control_info',               'control_info.cpp' ],
>      [ 'control_info_map',           'control_info_map.cpp' ],
> diff --git a/test/ipa/meson.build b/test/ipa/meson.build
> index f925c50a085e..ba672f3f9d8b 100644
> --- a/test/ipa/meson.build
> +++ b/test/ipa/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  ipa_test = [
>      ['ipa_module_test',     'ipa_module_test.cpp'],
>      ['ipa_interface_test',  'ipa_interface_test.cpp'],
> diff --git a/test/ipc/meson.build b/test/ipc/meson.build
> index cc46b41c7687..650df1d63444 100644
> --- a/test/ipc/meson.build
> +++ b/test/ipc/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  ipc_tests = [
>      [ 'unixsocket',  'unixsocket.cpp' ],
>  ]
> diff --git a/test/libtest/meson.build b/test/libtest/meson.build
> index 33565e0eb3b6..481f6d6baa61 100644
> --- a/test/libtest/meson.build
> +++ b/test/libtest/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libtest_sources = files([
>      'buffer_source.cpp',
>      'camera_test.cpp',
> diff --git a/test/log/meson.build b/test/log/meson.build
> index 95f6c1a2ae4a..8cd664e04a00 100644
> --- a/test/log/meson.build
> +++ b/test/log/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  log_test = [
>      ['log_api',     'log_api.cpp'],
>      ['log_process', 'log_process.cpp'],
> diff --git a/test/media_device/meson.build b/test/media_device/meson.build
> index 6a0e468434b5..1dfcdd8bd744 100644
> --- a/test/media_device/meson.build
> +++ b/test/media_device/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  lib_mdev_test_sources = files([
>      'media_device_test.cpp',
>  ])
> diff --git a/test/meson.build b/test/meson.build
> index 5a45a85effd3..bd7da147c70e 100644
> --- a/test/meson.build
> +++ b/test/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  subdir('libtest')
>  
>  subdir('camera')
> diff --git a/test/pipeline/ipu3/meson.build b/test/pipeline/ipu3/meson.build
> index d02927c9af86..d062ecd269f2 100644
> --- a/test/pipeline/ipu3/meson.build
> +++ b/test/pipeline/ipu3/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  ipu3_test = [
>      ['ipu3_pipeline_test',            'ipu3_pipeline_test.cpp'],
>  ]
> diff --git a/test/pipeline/meson.build b/test/pipeline/meson.build
> index 157f789ceb25..6e7901fee38f 100644
> --- a/test/pipeline/meson.build
> +++ b/test/pipeline/meson.build
> @@ -1,2 +1,4 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  subdir('ipu3')
>  subdir('rkisp1')
> diff --git a/test/pipeline/rkisp1/meson.build b/test/pipeline/rkisp1/meson.build
> index d3f974964fc4..ece147b054e4 100644
> --- a/test/pipeline/rkisp1/meson.build
> +++ b/test/pipeline/rkisp1/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  rkisp1_test = [
>      ['rkisp1_pipeline_test',            'rkisp1_pipeline_test.cpp'],
>  ]
> diff --git a/test/process/meson.build b/test/process/meson.build
> index c4d83d6c8b39..c215fa7e6c12 100644
> --- a/test/process/meson.build
> +++ b/test/process/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  process_tests = [
>      [ 'process_test',  'process_test.cpp' ],
>  ]
> diff --git a/test/serialization/meson.build b/test/serialization/meson.build
> index d78d92e61887..a9d9cbcb7d80 100644
> --- a/test/serialization/meson.build
> +++ b/test/serialization/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  serialization_tests = [
>      [ 'control_serialization',    'control_serialization.cpp' ],
>  ]
> diff --git a/test/stream/meson.build b/test/stream/meson.build
> index 005f4aa4996a..2b9b29a9143b 100644
> --- a/test/stream/meson.build
> +++ b/test/stream/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  stream_tests = [
>      [ 'stream_formats', 'stream_formats.cpp' ],
>  ]
> diff --git a/test/v4l2_subdevice/meson.build b/test/v4l2_subdevice/meson.build
> index 0521984b2a78..5f0882ca9772 100644
> --- a/test/v4l2_subdevice/meson.build
> +++ b/test/v4l2_subdevice/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  v4l2_subdevice_tests = [
>    [ 'list_formats',             'list_formats.cpp'],
>    [ 'test_formats',             'test_formats.cpp'],
> diff --git a/test/v4l2_videodevice/meson.build b/test/v4l2_videodevice/meson.build
> index 685fcf6d16d7..b4bb30908027 100644
> --- a/test/v4l2_videodevice/meson.build
> +++ b/test/v4l2_videodevice/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  # Tests are listed in order of complexity.
>  # They are not alphabetically sorted.
>  v4l2_videodevice_tests = [
> diff --git a/utils/ipu3/meson.build b/utils/ipu3/meson.build
> index 49c45856eea6..88049f589561 100644
> --- a/utils/ipu3/meson.build
> +++ b/utils/ipu3/meson.build
> @@ -1 +1,3 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  ipu3_unpack = executable('ipu3-unpack', 'ipu3-unpack.c')
> diff --git a/utils/meson.build b/utils/meson.build
> index f434c79c0ae3..c3cd9d69f887 100644
> --- a/utils/meson.build
> +++ b/utils/meson.build
> @@ -1 +1,3 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  subdir('ipu3')
> -- 
> Regards,
> 
> Laurent Pinchart
> 
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel@lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel
Laurent Pinchart May 12, 2020, 7:03 p.m. UTC | #4
Hi Kieran,

On Tue, May 12, 2020 at 09:02:14AM +0100, Kieran Bingham wrote:
> On 11/05/2020 23:27, Laurent Pinchart wrote:
> > In an attempt to clarify the license terms of all files in the libcamera
> > project, the build system files deserve particular attention. While they
> > describe how the binaries are created, they are not themselves
> > transformed into any part of binary distributions of the software, and
> > thus don't influece the copyright on the binary packages. They are
> 
> s/influece/influence/
> 
> > however subject to copyright, and thus influence the distribution terms
> > of the source packages.
> > 
> > Most of the meson.build files would not meet the threshold of
> > originality criteria required for copyright protection. Some of the more
> > complex meson.build files may be elligible for copyright protection. To
> 
> s/elligible/eligible/
> 
> > avoid any ambiguity and uncertainty, state our intent to not assert
> > copyrights on the build system files by putting them in the public
> > domain with the CC0-1.0 license.
> > 
> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> 
> This seems like a good option to me.
> 
> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
> 
> and for any meson.build files I have authored:
> 
> Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
> 
> > ---
> > Changes since v1:
> > 
> > - Added meson.build files from the Raspberry Pi pipeline handler
> 
> Do we need to get an explicit ack from Raspberry Pi here?

Strictly speaking, I don't think any ack is required as the meson.build
files involved there likely don't pass the threshold of originality
test. I however think it's best to collect acks, both to be safe, and as
a friendly move towards contributors. I thought I had CC'ed Naush and
David on this, it seems it wasn't the case. Fixed now.

> > ---
> >  Documentation/meson.build                     |   2 +
> >  LICENSES/CC0-1.0.txt                          | 119 ++++++++++++++++++
> >  include/android/meson.build                   |   2 +
> >  include/ipa/meson.build                       |   2 +
> >  include/libcamera/meson.build                 |   2 +
> >  include/meson.build                           |   2 +
> >  meson.build                                   |   2 +
> >  meson_options.txt                             |   2 +
> >  src/android/meson.build                       |   2 +
> >  src/cam/meson.build                           |   2 +
> >  src/gstreamer/meson.build                     |   2 +
> >  src/ipa/libipa/meson.build                    |   2 +
> >  src/ipa/meson.build                           |   2 +
> >  src/ipa/raspberrypi/meson.build               |   2 +
> >  src/ipa/rkisp1/meson.build                    |   2 +
> >  src/ipa/vimc/data/meson.build                 |   2 +
> >  src/ipa/vimc/meson.build                      |   2 +
> >  src/libcamera/include/meson.build             |   2 +
> >  src/libcamera/meson.build                     |   2 +
> >  src/libcamera/pipeline/ipu3/meson.build       |   2 +
> >  src/libcamera/pipeline/meson.build            |   2 +
> >  .../pipeline/raspberrypi/meson.build          |   2 +
> >  src/libcamera/pipeline/rkisp1/meson.build     |   2 +
> >  src/libcamera/pipeline/simple/meson.build     |   2 +
> >  src/libcamera/pipeline/uvcvideo/meson.build   |   2 +
> >  src/libcamera/pipeline/vimc/meson.build       |   2 +
> >  src/libcamera/proxy/meson.build               |   2 +
> >  src/libcamera/proxy/worker/meson.build        |   2 +
> >  src/meson.build                               |   2 +
> >  src/qcam/meson.build                          |   2 +
> >  src/v4l2/meson.build                          |   2 +
> >  test/camera/meson.build                       |   2 +
> >  test/controls/meson.build                     |   2 +
> >  test/ipa/meson.build                          |   2 +
> >  test/ipc/meson.build                          |   2 +
> >  test/libtest/meson.build                      |   2 +
> >  test/log/meson.build                          |   2 +
> >  test/media_device/meson.build                 |   2 +
> >  test/meson.build                              |   2 +
> >  test/pipeline/ipu3/meson.build                |   2 +
> >  test/pipeline/meson.build                     |   2 +
> >  test/pipeline/rkisp1/meson.build              |   2 +
> >  test/process/meson.build                      |   2 +
> >  test/serialization/meson.build                |   2 +
> >  test/stream/meson.build                       |   2 +
> >  test/v4l2_subdevice/meson.build               |   2 +
> >  test/v4l2_videodevice/meson.build             |   2 +
> >  utils/ipu3/meson.build                        |   2 +
> >  utils/meson.build                             |   2 +
> >  49 files changed, 215 insertions(+)
> >  create mode 100644 LICENSES/CC0-1.0.txt
> > 
> > diff --git a/Documentation/meson.build b/Documentation/meson.build
> > index c4e9892470de..b3b4f0b66f57 100644
> > --- a/Documentation/meson.build
> > +++ b/Documentation/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  doc_install_dir = join_paths(get_option('datadir'), 'doc',
> >                               'libcamera-@0@'.format(libcamera_version))
> >  
> > diff --git a/LICENSES/CC0-1.0.txt b/LICENSES/CC0-1.0.txt
> > new file mode 100644
> > index 000000000000..a343ccd4335f
> > --- /dev/null
> > +++ b/LICENSES/CC0-1.0.txt
> > @@ -0,0 +1,119 @@
> > +Creative Commons Legal Code
> > +
> > +CC0 1.0 Universal CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES
> > +NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE
> > +AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION
> > +ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE
> > +OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS
> > +LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION
> > +OR WORKS PROVIDED HEREUNDER.
> > +
> > +Statement of Purpose
> > +
> > +The laws of most jurisdictions throughout the world automatically confer exclusive
> > +Copyright and Related Rights (defined below) upon the creator and subsequent
> > +owner(s) (each and all, an "owner") of an original work of authorship and/or
> > +a database (each, a "Work").
> > +
> > +Certain owners wish to permanently relinquish those rights to a Work for the
> > +purpose of contributing to a commons of creative, cultural and scientific
> > +works ("Commons") that the public can reliably and without fear of later claims
> > +of infringement build upon, modify, incorporate in other works, reuse and
> > +redistribute as freely as possible in any form whatsoever and for any purposes,
> > +including without limitation commercial purposes. These owners may contribute
> > +to the Commons to promote the ideal of a free culture and the further production
> > +of creative, cultural and scientific works, or to gain reputation or greater
> > +distribution for their Work in part through the use and efforts of others.
> > +
> > +For these and/or other purposes and motivations, and without any expectation
> > +of additional consideration or compensation, the person associating CC0 with
> > +a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
> > +and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
> > +and publicly distribute the Work under its terms, with knowledge of his or
> > +her Copyright and Related Rights in the Work and the meaning and intended
> > +legal effect of CC0 on those rights.
> > +
> > +1. Copyright and Related Rights. A Work made available under CC0 may be protected
> > +by copyright and related or neighboring rights ("Copyright and Related Rights").
> > +Copyright and Related Rights include, but are not limited to, the following:
> > +
> > +i. the right to reproduce, adapt, distribute, perform, display, communicate,
> > +and translate a Work;
> > +
> > +      ii. moral rights retained by the original author(s) and/or performer(s);
> > +
> > +iii. publicity and privacy rights pertaining to a person's image or likeness
> > +depicted in a Work;
> > +
> > +iv. rights protecting against unfair competition in regards to a Work, subject
> > +to the limitations in paragraph 4(a), below;
> > +
> > +v. rights protecting the extraction, dissemination, use and reuse of data
> > +in a Work;
> > +
> > +vi. database rights (such as those arising under Directive 96/9/EC of the
> > +European Parliament and of the Council of 11 March 1996 on the legal protection
> > +of databases, and under any national implementation thereof, including any
> > +amended or successor version of such directive); and
> > +
> > +vii. other similar, equivalent or corresponding rights throughout the world
> > +based on applicable law or treaty, and any national implementations thereof.
> > +
> > +2. Waiver. To the greatest extent permitted by, but not in contravention of,
> > +applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
> > +unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
> > +and Related Rights and associated claims and causes of action, whether now
> > +known or unknown (including existing as well as future claims and causes of
> > +action), in the Work (i) in all territories worldwide, (ii) for the maximum
> > +duration provided by applicable law or treaty (including future time extensions),
> > +(iii) in any current or future medium and for any number of copies, and (iv)
> > +for any purpose whatsoever, including without limitation commercial, advertising
> > +or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the
> > +benefit of each member of the public at large and to the detriment of Affirmer's
> > +heirs and successors, fully intending that such Waiver shall not be subject
> > +to revocation, rescission, cancellation, termination, or any other legal or
> > +equitable action to disrupt the quiet enjoyment of the Work by the public
> > +as contemplated by Affirmer's express Statement of Purpose.
> > +
> > +3. Public License Fallback. Should any part of the Waiver for any reason be
> > +judged legally invalid or ineffective under applicable law, then the Waiver
> > +shall be preserved to the maximum extent permitted taking into account Affirmer's
> > +express Statement of Purpose. In addition, to the extent the Waiver is so
> > +judged Affirmer hereby grants to each affected person a royalty-free, non
> > +transferable, non sublicensable, non exclusive, irrevocable and unconditional
> > +license to exercise Affirmer's Copyright and Related Rights in the Work (i)
> > +in all territories worldwide, (ii) for the maximum duration provided by applicable
> > +law or treaty (including future time extensions), (iii) in any current or
> > +future medium and for any number of copies, and (iv) for any purpose whatsoever,
> > +including without limitation commercial, advertising or promotional purposes
> > +(the "License"). The License shall be deemed effective as of the date CC0
> > +was applied by Affirmer to the Work. Should any part of the License for any
> > +reason be judged legally invalid or ineffective under applicable law, such
> > +partial invalidity or ineffectiveness shall not invalidate the remainder of
> > +the License, and in such case Affirmer hereby affirms that he or she will
> > +not (i) exercise any of his or her remaining Copyright and Related Rights
> > +in the Work or (ii) assert any associated claims and causes of action with
> > +respect to the Work, in either case contrary to Affirmer's express Statement
> > +of Purpose.
> > +
> > +   4. Limitations and Disclaimers.
> > +
> > +a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered,
> > +licensed or otherwise affected by this document.
> > +
> > +b. Affirmer offers the Work as-is and makes no representations or warranties
> > +of any kind concerning the Work, express, implied, statutory or otherwise,
> > +including without limitation warranties of title, merchantability, fitness
> > +for a particular purpose, non infringement, or the absence of latent or other
> > +defects, accuracy, or the present or absence of errors, whether or not discoverable,
> > +all to the greatest extent permissible under applicable law.
> > +
> > +c. Affirmer disclaims responsibility for clearing rights of other persons
> > +that may apply to the Work or any use thereof, including without limitation
> > +any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims
> > +responsibility for obtaining any necessary consents, permissions or other
> > +rights required for any use of the Work.
> > +
> > +d. Affirmer understands and acknowledges that Creative Commons is not a party
> > +to this document and has no duty or obligation with respect to this CC0 or
> > +use of the Work.
> > diff --git a/include/android/meson.build b/include/android/meson.build
> > index 69f1c38edada..da2504f2e493 100644
> > --- a/include/android/meson.build
> > +++ b/include/android/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  android_includes = ([
> >      include_directories('hardware/libhardware/include/'),
> >      include_directories('metadata/'),
> > diff --git a/include/ipa/meson.build b/include/ipa/meson.build
> > index 695a4183a0e8..3d5c0dd69bb4 100644
> > --- a/include/ipa/meson.build
> > +++ b/include/ipa/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libcamera_ipa_api = files([
> >      'ipa_controls.h',
> >      'ipa_interface.h',
> > diff --git a/include/libcamera/meson.build b/include/libcamera/meson.build
> > index 23c01d3837ba..cea47eb83030 100644
> > --- a/include/libcamera/meson.build
> > +++ b/include/libcamera/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libcamera_api = files([
> >      'bound_method.h',
> >      'buffer.h',
> > diff --git a/include/meson.build b/include/meson.build
> > index 42b2453445b5..4f41c9ceeb4c 100644
> > --- a/include/meson.build
> > +++ b/include/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libcamera_include_dir = 'libcamera'
> >  
> >  subdir('android')
> > diff --git a/meson.build b/meson.build
> > index 59829e1942ca..e898782a28b0 100644
> > --- a/meson.build
> > +++ b/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  project('libcamera', 'c', 'cpp',
> >      meson_version : '>= 0.47',
> >      version : '0.0.0',
> > diff --git a/meson_options.txt b/meson_options.txt
> > index 68f4f48004e5..badace151bb6 100644
> > --- a/meson_options.txt
> > +++ b/meson_options.txt
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  option('android',
> >          type : 'boolean',
> >          value : false,
> > diff --git a/src/android/meson.build b/src/android/meson.build
> > index 5a5a332e6a6f..822cad621f01 100644
> > --- a/src/android/meson.build
> > +++ b/src/android/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  android_hal_sources = files([
> >      'camera3_hal.cpp',
> >      'camera_hal_manager.cpp',
> > diff --git a/src/cam/meson.build b/src/cam/meson.build
> > index 162d6333f94e..89e124fbae2a 100644
> > --- a/src/cam/meson.build
> > +++ b/src/cam/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  cam_sources = files([
> >      'buffer_writer.cpp',
> >      'capture.cpp',
> > diff --git a/src/gstreamer/meson.build b/src/gstreamer/meson.build
> > index e119e472cb58..c9f0c13d969d 100644
> > --- a/src/gstreamer/meson.build
> > +++ b/src/gstreamer/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libcamera_gst_sources = [
> >      'gstlibcamera-utils.cpp',
> >      'gstlibcamera.cpp',
> > diff --git a/src/ipa/libipa/meson.build b/src/ipa/libipa/meson.build
> > index 6f3cd4866ce3..2262640517a0 100644
> > --- a/src/ipa/libipa/meson.build
> > +++ b/src/ipa/libipa/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libipa_headers = files([
> >      'ipa_interface_wrapper.h',
> >  ])
> > diff --git a/src/ipa/meson.build b/src/ipa/meson.build
> > index b103479c1cd0..64deb601054c 100644
> > --- a/src/ipa/meson.build
> > +++ b/src/ipa/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  ipa_install_dir = join_paths(get_option('libdir'), 'libcamera')
> >  ipa_data_dir = join_paths(get_option('datadir'), 'libcamera', 'ipa')
> >  ipa_sysconf_dir = join_paths(get_option('sysconfdir'), 'libcamera', 'ipa')
> > diff --git a/src/ipa/raspberrypi/meson.build b/src/ipa/raspberrypi/meson.build
> > index 2dece3a468e8..697902e95bc1 100644
> > --- a/src/ipa/raspberrypi/meson.build
> > +++ b/src/ipa/raspberrypi/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  ipa_name = 'ipa_rpi'
> >  
> >  rpi_ipa_deps = [
> > diff --git a/src/ipa/rkisp1/meson.build b/src/ipa/rkisp1/meson.build
> > index d7127ea8d1e9..ed9a6b6b8ec8 100644
> > --- a/src/ipa/rkisp1/meson.build
> > +++ b/src/ipa/rkisp1/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  ipa_name = 'ipa_rkisp1'
> >  
> >  mod = shared_module(ipa_name,
> > diff --git a/src/ipa/vimc/data/meson.build b/src/ipa/vimc/data/meson.build
> > index c844926da7f2..6532662cfa94 100644
> > --- a/src/ipa/vimc/data/meson.build
> > +++ b/src/ipa/vimc/data/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  conf_files = files([
> >      'vimc.conf',
> >  ])
> > diff --git a/src/ipa/vimc/meson.build b/src/ipa/vimc/meson.build
> > index 22296a029642..8c9df854007a 100644
> > --- a/src/ipa/vimc/meson.build
> > +++ b/src/ipa/vimc/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  ipa_name = 'ipa_vimc'
> >  
> >  mod = shared_module(ipa_name,
> > diff --git a/src/libcamera/include/meson.build b/src/libcamera/include/meson.build
> > index 683d06133741..1f6af579cca2 100644
> > --- a/src/libcamera/include/meson.build
> > +++ b/src/libcamera/include/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libcamera_headers = files([
> >      'byte_stream_buffer.h',
> >      'camera_controls.h',
> > diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build
> > index d8b4d7206aba..d42e9720dbd6 100644
> > --- a/src/libcamera/meson.build
> > +++ b/src/libcamera/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libcamera_sources = files([
> >      'bound_method.cpp',
> >      'buffer.cpp',
> > diff --git a/src/libcamera/pipeline/ipu3/meson.build b/src/libcamera/pipeline/ipu3/meson.build
> > index 0ab766a257a0..0e8c5a14f2b3 100644
> > --- a/src/libcamera/pipeline/ipu3/meson.build
> > +++ b/src/libcamera/pipeline/ipu3/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libcamera_sources += files([
> >      'ipu3.cpp',
> >  ])
> > diff --git a/src/libcamera/pipeline/meson.build b/src/libcamera/pipeline/meson.build
> > index 190ca5a8db92..46424493aa37 100644
> > --- a/src/libcamera/pipeline/meson.build
> > +++ b/src/libcamera/pipeline/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  foreach pipeline : get_option('pipelines')
> >      subdir(pipeline)
> >  endforeach
> > diff --git a/src/libcamera/pipeline/raspberrypi/meson.build b/src/libcamera/pipeline/raspberrypi/meson.build
> > index 737857977831..fc117b77bdd1 100644
> > --- a/src/libcamera/pipeline/raspberrypi/meson.build
> > +++ b/src/libcamera/pipeline/raspberrypi/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libcamera_sources += files([
> >      'raspberrypi.cpp'
> >  ])
> > diff --git a/src/libcamera/pipeline/rkisp1/meson.build b/src/libcamera/pipeline/rkisp1/meson.build
> > index d04fb45223e7..1ab3964a6db1 100644
> > --- a/src/libcamera/pipeline/rkisp1/meson.build
> > +++ b/src/libcamera/pipeline/rkisp1/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libcamera_sources += files([
> >      'rkisp1.cpp',
> >      'timeline.cpp',
> > diff --git a/src/libcamera/pipeline/simple/meson.build b/src/libcamera/pipeline/simple/meson.build
> > index 8372f24e3788..9c99b32f69f3 100644
> > --- a/src/libcamera/pipeline/simple/meson.build
> > +++ b/src/libcamera/pipeline/simple/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libcamera_sources += files([
> >      'converter.cpp',
> >      'simple.cpp',
> > diff --git a/src/libcamera/pipeline/uvcvideo/meson.build b/src/libcamera/pipeline/uvcvideo/meson.build
> > index c19ae2389f48..a3c2efd424bf 100644
> > --- a/src/libcamera/pipeline/uvcvideo/meson.build
> > +++ b/src/libcamera/pipeline/uvcvideo/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libcamera_sources += files([
> >      'uvcvideo.cpp',
> >  ])
> > diff --git a/src/libcamera/pipeline/vimc/meson.build b/src/libcamera/pipeline/vimc/meson.build
> > index 615ecd20f1a2..290eefb5d076 100644
> > --- a/src/libcamera/pipeline/vimc/meson.build
> > +++ b/src/libcamera/pipeline/vimc/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libcamera_sources += files([
> >      'vimc.cpp',
> >  ])
> > diff --git a/src/libcamera/proxy/meson.build b/src/libcamera/proxy/meson.build
> > index 6c00d5f30ad2..bd804750748a 100644
> > --- a/src/libcamera/proxy/meson.build
> > +++ b/src/libcamera/proxy/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libcamera_sources += files([
> >      'ipa_proxy_linux.cpp',
> >      'ipa_proxy_thread.cpp',
> > diff --git a/src/libcamera/proxy/worker/meson.build b/src/libcamera/proxy/worker/meson.build
> > index 839156f7591a..1b1bee5e0170 100644
> > --- a/src/libcamera/proxy/worker/meson.build
> > +++ b/src/libcamera/proxy/worker/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  ipa_proxy_sources = [
> >      ['ipa_proxy_linux', 'ipa_proxy_linux_worker.cpp']
> >  ]
> > diff --git a/src/meson.build b/src/meson.build
> > index c9c1008562b1..d69b4c1ea978 100644
> > --- a/src/meson.build
> > +++ b/src/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  if get_option('android')
> >      subdir('android')
> >  endif
> > diff --git a/src/qcam/meson.build b/src/qcam/meson.build
> > index 949ef6149c8a..045db52acf26 100644
> > --- a/src/qcam/meson.build
> > +++ b/src/qcam/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  qcam_sources = files([
> >      '../cam/options.cpp',
> >      '../cam/stream_options.cpp',
> > diff --git a/src/v4l2/meson.build b/src/v4l2/meson.build
> > index efab968f7729..fc1be82d1b02 100644
> > --- a/src/v4l2/meson.build
> > +++ b/src/v4l2/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  v4l2_compat_sources = files([
> >      'v4l2_camera.cpp',
> >      'v4l2_camera_proxy.cpp',
> > diff --git a/test/camera/meson.build b/test/camera/meson.build
> > index e2a6660a7a92..0395e7ddc7a4 100644
> > --- a/test/camera/meson.build
> > +++ b/test/camera/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  # Tests are listed in order of complexity.
> >  # They are not alphabetically sorted.
> >  camera_tests = [
> > diff --git a/test/controls/meson.build b/test/controls/meson.build
> > index 7fff2413007e..545fb03b16c6 100644
> > --- a/test/controls/meson.build
> > +++ b/test/controls/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  control_tests = [
> >      [ 'control_info',               'control_info.cpp' ],
> >      [ 'control_info_map',           'control_info_map.cpp' ],
> > diff --git a/test/ipa/meson.build b/test/ipa/meson.build
> > index f925c50a085e..ba672f3f9d8b 100644
> > --- a/test/ipa/meson.build
> > +++ b/test/ipa/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  ipa_test = [
> >      ['ipa_module_test',     'ipa_module_test.cpp'],
> >      ['ipa_interface_test',  'ipa_interface_test.cpp'],
> > diff --git a/test/ipc/meson.build b/test/ipc/meson.build
> > index cc46b41c7687..650df1d63444 100644
> > --- a/test/ipc/meson.build
> > +++ b/test/ipc/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  ipc_tests = [
> >      [ 'unixsocket',  'unixsocket.cpp' ],
> >  ]
> > diff --git a/test/libtest/meson.build b/test/libtest/meson.build
> > index 33565e0eb3b6..481f6d6baa61 100644
> > --- a/test/libtest/meson.build
> > +++ b/test/libtest/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libtest_sources = files([
> >      'buffer_source.cpp',
> >      'camera_test.cpp',
> > diff --git a/test/log/meson.build b/test/log/meson.build
> > index 95f6c1a2ae4a..8cd664e04a00 100644
> > --- a/test/log/meson.build
> > +++ b/test/log/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  log_test = [
> >      ['log_api',     'log_api.cpp'],
> >      ['log_process', 'log_process.cpp'],
> > diff --git a/test/media_device/meson.build b/test/media_device/meson.build
> > index 6a0e468434b5..1dfcdd8bd744 100644
> > --- a/test/media_device/meson.build
> > +++ b/test/media_device/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  lib_mdev_test_sources = files([
> >      'media_device_test.cpp',
> >  ])
> > diff --git a/test/meson.build b/test/meson.build
> > index 5a45a85effd3..bd7da147c70e 100644
> > --- a/test/meson.build
> > +++ b/test/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  subdir('libtest')
> >  
> >  subdir('camera')
> > diff --git a/test/pipeline/ipu3/meson.build b/test/pipeline/ipu3/meson.build
> > index d02927c9af86..d062ecd269f2 100644
> > --- a/test/pipeline/ipu3/meson.build
> > +++ b/test/pipeline/ipu3/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  ipu3_test = [
> >      ['ipu3_pipeline_test',            'ipu3_pipeline_test.cpp'],
> >  ]
> > diff --git a/test/pipeline/meson.build b/test/pipeline/meson.build
> > index 157f789ceb25..6e7901fee38f 100644
> > --- a/test/pipeline/meson.build
> > +++ b/test/pipeline/meson.build
> > @@ -1,2 +1,4 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  subdir('ipu3')
> >  subdir('rkisp1')
> > diff --git a/test/pipeline/rkisp1/meson.build b/test/pipeline/rkisp1/meson.build
> > index d3f974964fc4..ece147b054e4 100644
> > --- a/test/pipeline/rkisp1/meson.build
> > +++ b/test/pipeline/rkisp1/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  rkisp1_test = [
> >      ['rkisp1_pipeline_test',            'rkisp1_pipeline_test.cpp'],
> >  ]
> > diff --git a/test/process/meson.build b/test/process/meson.build
> > index c4d83d6c8b39..c215fa7e6c12 100644
> > --- a/test/process/meson.build
> > +++ b/test/process/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  process_tests = [
> >      [ 'process_test',  'process_test.cpp' ],
> >  ]
> > diff --git a/test/serialization/meson.build b/test/serialization/meson.build
> > index d78d92e61887..a9d9cbcb7d80 100644
> > --- a/test/serialization/meson.build
> > +++ b/test/serialization/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  serialization_tests = [
> >      [ 'control_serialization',    'control_serialization.cpp' ],
> >  ]
> > diff --git a/test/stream/meson.build b/test/stream/meson.build
> > index 005f4aa4996a..2b9b29a9143b 100644
> > --- a/test/stream/meson.build
> > +++ b/test/stream/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  stream_tests = [
> >      [ 'stream_formats', 'stream_formats.cpp' ],
> >  ]
> > diff --git a/test/v4l2_subdevice/meson.build b/test/v4l2_subdevice/meson.build
> > index 0521984b2a78..5f0882ca9772 100644
> > --- a/test/v4l2_subdevice/meson.build
> > +++ b/test/v4l2_subdevice/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  v4l2_subdevice_tests = [
> >    [ 'list_formats',             'list_formats.cpp'],
> >    [ 'test_formats',             'test_formats.cpp'],
> > diff --git a/test/v4l2_videodevice/meson.build b/test/v4l2_videodevice/meson.build
> > index 685fcf6d16d7..b4bb30908027 100644
> > --- a/test/v4l2_videodevice/meson.build
> > +++ b/test/v4l2_videodevice/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  # Tests are listed in order of complexity.
> >  # They are not alphabetically sorted.
> >  v4l2_videodevice_tests = [
> > diff --git a/utils/ipu3/meson.build b/utils/ipu3/meson.build
> > index 49c45856eea6..88049f589561 100644
> > --- a/utils/ipu3/meson.build
> > +++ b/utils/ipu3/meson.build
> > @@ -1 +1,3 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  ipu3_unpack = executable('ipu3-unpack', 'ipu3-unpack.c')
> > diff --git a/utils/meson.build b/utils/meson.build
> > index f434c79c0ae3..c3cd9d69f887 100644
> > --- a/utils/meson.build
> > +++ b/utils/meson.build
> > @@ -1 +1,3 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  subdir('ipu3')
Niklas Söderlund May 12, 2020, 7:06 p.m. UTC | #5
Hi Laurent,

Thanks for sorting this out.

On 2020-05-12 01:27:21 +0300, Laurent Pinchart wrote:
> In an attempt to clarify the license terms of all files in the libcamera
> project, the build system files deserve particular attention. While they
> describe how the binaries are created, they are not themselves
> transformed into any part of binary distributions of the software, and
> thus don't influece the copyright on the binary packages. They are
> however subject to copyright, and thus influence the distribution terms
> of the source packages.
> 
> Most of the meson.build files would not meet the threshold of
> originality criteria required for copyright protection. Some of the more
> complex meson.build files may be elligible for copyright protection. To
> avoid any ambiguity and uncertainty, state our intent to not assert
> copyrights on the build system files by putting them in the public
> domain with the CC0-1.0 license.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

Acked-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>

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

I agree with these minor remarks, looks good to me.

Acked-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>

> 
> > ---
> > Changes since v1:
> > 
> > - Added meson.build files from the Raspberry Pi pipeline handler
> 
> Do we need to get an explicit ack from Raspberry Pi here?
> 
> --
> Kieran
> 
> 
> > ---
> >  Documentation/meson.build                     |   2 +
> >  LICENSES/CC0-1.0.txt                          | 119 ++++++++++++++++++
> >  include/android/meson.build                   |   2 +
> >  include/ipa/meson.build                       |   2 +
> >  include/libcamera/meson.build                 |   2 +
> >  include/meson.build                           |   2 +
> >  meson.build                                   |   2 +
> >  meson_options.txt                             |   2 +
> >  src/android/meson.build                       |   2 +
> >  src/cam/meson.build                           |   2 +
> >  src/gstreamer/meson.build                     |   2 +
> >  src/ipa/libipa/meson.build                    |   2 +
> >  src/ipa/meson.build                           |   2 +
> >  src/ipa/raspberrypi/meson.build               |   2 +
> >  src/ipa/rkisp1/meson.build                    |   2 +
> >  src/ipa/vimc/data/meson.build                 |   2 +
> >  src/ipa/vimc/meson.build                      |   2 +
> >  src/libcamera/include/meson.build             |   2 +
> >  src/libcamera/meson.build                     |   2 +
> >  src/libcamera/pipeline/ipu3/meson.build       |   2 +
> >  src/libcamera/pipeline/meson.build            |   2 +
> >  .../pipeline/raspberrypi/meson.build          |   2 +
> >  src/libcamera/pipeline/rkisp1/meson.build     |   2 +
> >  src/libcamera/pipeline/simple/meson.build     |   2 +
> >  src/libcamera/pipeline/uvcvideo/meson.build   |   2 +
> >  src/libcamera/pipeline/vimc/meson.build       |   2 +
> >  src/libcamera/proxy/meson.build               |   2 +
> >  src/libcamera/proxy/worker/meson.build        |   2 +
> >  src/meson.build                               |   2 +
> >  src/qcam/meson.build                          |   2 +
> >  src/v4l2/meson.build                          |   2 +
> >  test/camera/meson.build                       |   2 +
> >  test/controls/meson.build                     |   2 +
> >  test/ipa/meson.build                          |   2 +
> >  test/ipc/meson.build                          |   2 +
> >  test/libtest/meson.build                      |   2 +
> >  test/log/meson.build                          |   2 +
> >  test/media_device/meson.build                 |   2 +
> >  test/meson.build                              |   2 +
> >  test/pipeline/ipu3/meson.build                |   2 +
> >  test/pipeline/meson.build                     |   2 +
> >  test/pipeline/rkisp1/meson.build              |   2 +
> >  test/process/meson.build                      |   2 +
> >  test/serialization/meson.build                |   2 +
> >  test/stream/meson.build                       |   2 +
> >  test/v4l2_subdevice/meson.build               |   2 +
> >  test/v4l2_videodevice/meson.build             |   2 +
> >  utils/ipu3/meson.build                        |   2 +
> >  utils/meson.build                             |   2 +
> >  49 files changed, 215 insertions(+)
> >  create mode 100644 LICENSES/CC0-1.0.txt
> > 
> > diff --git a/Documentation/meson.build b/Documentation/meson.build
> > index c4e9892470de..b3b4f0b66f57 100644
> > --- a/Documentation/meson.build
> > +++ b/Documentation/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  doc_install_dir = join_paths(get_option('datadir'), 'doc',
> >                               'libcamera-@0@'.format(libcamera_version))
> >  
> > diff --git a/LICENSES/CC0-1.0.txt b/LICENSES/CC0-1.0.txt
> > new file mode 100644
> > index 000000000000..a343ccd4335f
> > --- /dev/null
> > +++ b/LICENSES/CC0-1.0.txt
> > @@ -0,0 +1,119 @@
> > +Creative Commons Legal Code
> > +
> > +CC0 1.0 Universal CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES
> > +NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE
> > +AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION
> > +ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE
> > +OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS
> > +LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION
> > +OR WORKS PROVIDED HEREUNDER.
> > +
> > +Statement of Purpose
> > +
> > +The laws of most jurisdictions throughout the world automatically confer exclusive
> > +Copyright and Related Rights (defined below) upon the creator and subsequent
> > +owner(s) (each and all, an "owner") of an original work of authorship and/or
> > +a database (each, a "Work").
> > +
> > +Certain owners wish to permanently relinquish those rights to a Work for the
> > +purpose of contributing to a commons of creative, cultural and scientific
> > +works ("Commons") that the public can reliably and without fear of later claims
> > +of infringement build upon, modify, incorporate in other works, reuse and
> > +redistribute as freely as possible in any form whatsoever and for any purposes,
> > +including without limitation commercial purposes. These owners may contribute
> > +to the Commons to promote the ideal of a free culture and the further production
> > +of creative, cultural and scientific works, or to gain reputation or greater
> > +distribution for their Work in part through the use and efforts of others.
> > +
> > +For these and/or other purposes and motivations, and without any expectation
> > +of additional consideration or compensation, the person associating CC0 with
> > +a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
> > +and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
> > +and publicly distribute the Work under its terms, with knowledge of his or
> > +her Copyright and Related Rights in the Work and the meaning and intended
> > +legal effect of CC0 on those rights.
> > +
> > +1. Copyright and Related Rights. A Work made available under CC0 may be protected
> > +by copyright and related or neighboring rights ("Copyright and Related Rights").
> > +Copyright and Related Rights include, but are not limited to, the following:
> > +
> > +i. the right to reproduce, adapt, distribute, perform, display, communicate,
> > +and translate a Work;
> > +
> > +      ii. moral rights retained by the original author(s) and/or performer(s);
> > +
> > +iii. publicity and privacy rights pertaining to a person's image or likeness
> > +depicted in a Work;
> > +
> > +iv. rights protecting against unfair competition in regards to a Work, subject
> > +to the limitations in paragraph 4(a), below;
> > +
> > +v. rights protecting the extraction, dissemination, use and reuse of data
> > +in a Work;
> > +
> > +vi. database rights (such as those arising under Directive 96/9/EC of the
> > +European Parliament and of the Council of 11 March 1996 on the legal protection
> > +of databases, and under any national implementation thereof, including any
> > +amended or successor version of such directive); and
> > +
> > +vii. other similar, equivalent or corresponding rights throughout the world
> > +based on applicable law or treaty, and any national implementations thereof.
> > +
> > +2. Waiver. To the greatest extent permitted by, but not in contravention of,
> > +applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
> > +unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
> > +and Related Rights and associated claims and causes of action, whether now
> > +known or unknown (including existing as well as future claims and causes of
> > +action), in the Work (i) in all territories worldwide, (ii) for the maximum
> > +duration provided by applicable law or treaty (including future time extensions),
> > +(iii) in any current or future medium and for any number of copies, and (iv)
> > +for any purpose whatsoever, including without limitation commercial, advertising
> > +or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the
> > +benefit of each member of the public at large and to the detriment of Affirmer's
> > +heirs and successors, fully intending that such Waiver shall not be subject
> > +to revocation, rescission, cancellation, termination, or any other legal or
> > +equitable action to disrupt the quiet enjoyment of the Work by the public
> > +as contemplated by Affirmer's express Statement of Purpose.
> > +
> > +3. Public License Fallback. Should any part of the Waiver for any reason be
> > +judged legally invalid or ineffective under applicable law, then the Waiver
> > +shall be preserved to the maximum extent permitted taking into account Affirmer's
> > +express Statement of Purpose. In addition, to the extent the Waiver is so
> > +judged Affirmer hereby grants to each affected person a royalty-free, non
> > +transferable, non sublicensable, non exclusive, irrevocable and unconditional
> > +license to exercise Affirmer's Copyright and Related Rights in the Work (i)
> > +in all territories worldwide, (ii) for the maximum duration provided by applicable
> > +law or treaty (including future time extensions), (iii) in any current or
> > +future medium and for any number of copies, and (iv) for any purpose whatsoever,
> > +including without limitation commercial, advertising or promotional purposes
> > +(the "License"). The License shall be deemed effective as of the date CC0
> > +was applied by Affirmer to the Work. Should any part of the License for any
> > +reason be judged legally invalid or ineffective under applicable law, such
> > +partial invalidity or ineffectiveness shall not invalidate the remainder of
> > +the License, and in such case Affirmer hereby affirms that he or she will
> > +not (i) exercise any of his or her remaining Copyright and Related Rights
> > +in the Work or (ii) assert any associated claims and causes of action with
> > +respect to the Work, in either case contrary to Affirmer's express Statement
> > +of Purpose.
> > +
> > +   4. Limitations and Disclaimers.
> > +
> > +a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered,
> > +licensed or otherwise affected by this document.
> > +
> > +b. Affirmer offers the Work as-is and makes no representations or warranties
> > +of any kind concerning the Work, express, implied, statutory or otherwise,
> > +including without limitation warranties of title, merchantability, fitness
> > +for a particular purpose, non infringement, or the absence of latent or other
> > +defects, accuracy, or the present or absence of errors, whether or not discoverable,
> > +all to the greatest extent permissible under applicable law.
> > +
> > +c. Affirmer disclaims responsibility for clearing rights of other persons
> > +that may apply to the Work or any use thereof, including without limitation
> > +any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims
> > +responsibility for obtaining any necessary consents, permissions or other
> > +rights required for any use of the Work.
> > +
> > +d. Affirmer understands and acknowledges that Creative Commons is not a party
> > +to this document and has no duty or obligation with respect to this CC0 or
> > +use of the Work.
> > diff --git a/include/android/meson.build b/include/android/meson.build
> > index 69f1c38edada..da2504f2e493 100644
> > --- a/include/android/meson.build
> > +++ b/include/android/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  android_includes = ([
> >      include_directories('hardware/libhardware/include/'),
> >      include_directories('metadata/'),
> > diff --git a/include/ipa/meson.build b/include/ipa/meson.build
> > index 695a4183a0e8..3d5c0dd69bb4 100644
> > --- a/include/ipa/meson.build
> > +++ b/include/ipa/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libcamera_ipa_api = files([
> >      'ipa_controls.h',
> >      'ipa_interface.h',
> > diff --git a/include/libcamera/meson.build b/include/libcamera/meson.build
> > index 23c01d3837ba..cea47eb83030 100644
> > --- a/include/libcamera/meson.build
> > +++ b/include/libcamera/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libcamera_api = files([
> >      'bound_method.h',
> >      'buffer.h',
> > diff --git a/include/meson.build b/include/meson.build
> > index 42b2453445b5..4f41c9ceeb4c 100644
> > --- a/include/meson.build
> > +++ b/include/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libcamera_include_dir = 'libcamera'
> >  
> >  subdir('android')
> > diff --git a/meson.build b/meson.build
> > index 59829e1942ca..e898782a28b0 100644
> > --- a/meson.build
> > +++ b/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  project('libcamera', 'c', 'cpp',
> >      meson_version : '>= 0.47',
> >      version : '0.0.0',
> > diff --git a/meson_options.txt b/meson_options.txt
> > index 68f4f48004e5..badace151bb6 100644
> > --- a/meson_options.txt
> > +++ b/meson_options.txt
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  option('android',
> >          type : 'boolean',
> >          value : false,
> > diff --git a/src/android/meson.build b/src/android/meson.build
> > index 5a5a332e6a6f..822cad621f01 100644
> > --- a/src/android/meson.build
> > +++ b/src/android/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  android_hal_sources = files([
> >      'camera3_hal.cpp',
> >      'camera_hal_manager.cpp',
> > diff --git a/src/cam/meson.build b/src/cam/meson.build
> > index 162d6333f94e..89e124fbae2a 100644
> > --- a/src/cam/meson.build
> > +++ b/src/cam/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  cam_sources = files([
> >      'buffer_writer.cpp',
> >      'capture.cpp',
> > diff --git a/src/gstreamer/meson.build b/src/gstreamer/meson.build
> > index e119e472cb58..c9f0c13d969d 100644
> > --- a/src/gstreamer/meson.build
> > +++ b/src/gstreamer/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libcamera_gst_sources = [
> >      'gstlibcamera-utils.cpp',
> >      'gstlibcamera.cpp',
> > diff --git a/src/ipa/libipa/meson.build b/src/ipa/libipa/meson.build
> > index 6f3cd4866ce3..2262640517a0 100644
> > --- a/src/ipa/libipa/meson.build
> > +++ b/src/ipa/libipa/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libipa_headers = files([
> >      'ipa_interface_wrapper.h',
> >  ])
> > diff --git a/src/ipa/meson.build b/src/ipa/meson.build
> > index b103479c1cd0..64deb601054c 100644
> > --- a/src/ipa/meson.build
> > +++ b/src/ipa/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  ipa_install_dir = join_paths(get_option('libdir'), 'libcamera')
> >  ipa_data_dir = join_paths(get_option('datadir'), 'libcamera', 'ipa')
> >  ipa_sysconf_dir = join_paths(get_option('sysconfdir'), 'libcamera', 'ipa')
> > diff --git a/src/ipa/raspberrypi/meson.build b/src/ipa/raspberrypi/meson.build
> > index 2dece3a468e8..697902e95bc1 100644
> > --- a/src/ipa/raspberrypi/meson.build
> > +++ b/src/ipa/raspberrypi/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  ipa_name = 'ipa_rpi'
> >  
> >  rpi_ipa_deps = [
> > diff --git a/src/ipa/rkisp1/meson.build b/src/ipa/rkisp1/meson.build
> > index d7127ea8d1e9..ed9a6b6b8ec8 100644
> > --- a/src/ipa/rkisp1/meson.build
> > +++ b/src/ipa/rkisp1/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  ipa_name = 'ipa_rkisp1'
> >  
> >  mod = shared_module(ipa_name,
> > diff --git a/src/ipa/vimc/data/meson.build b/src/ipa/vimc/data/meson.build
> > index c844926da7f2..6532662cfa94 100644
> > --- a/src/ipa/vimc/data/meson.build
> > +++ b/src/ipa/vimc/data/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  conf_files = files([
> >      'vimc.conf',
> >  ])
> > diff --git a/src/ipa/vimc/meson.build b/src/ipa/vimc/meson.build
> > index 22296a029642..8c9df854007a 100644
> > --- a/src/ipa/vimc/meson.build
> > +++ b/src/ipa/vimc/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  ipa_name = 'ipa_vimc'
> >  
> >  mod = shared_module(ipa_name,
> > diff --git a/src/libcamera/include/meson.build b/src/libcamera/include/meson.build
> > index 683d06133741..1f6af579cca2 100644
> > --- a/src/libcamera/include/meson.build
> > +++ b/src/libcamera/include/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libcamera_headers = files([
> >      'byte_stream_buffer.h',
> >      'camera_controls.h',
> > diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build
> > index d8b4d7206aba..d42e9720dbd6 100644
> > --- a/src/libcamera/meson.build
> > +++ b/src/libcamera/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libcamera_sources = files([
> >      'bound_method.cpp',
> >      'buffer.cpp',
> > diff --git a/src/libcamera/pipeline/ipu3/meson.build b/src/libcamera/pipeline/ipu3/meson.build
> > index 0ab766a257a0..0e8c5a14f2b3 100644
> > --- a/src/libcamera/pipeline/ipu3/meson.build
> > +++ b/src/libcamera/pipeline/ipu3/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libcamera_sources += files([
> >      'ipu3.cpp',
> >  ])
> > diff --git a/src/libcamera/pipeline/meson.build b/src/libcamera/pipeline/meson.build
> > index 190ca5a8db92..46424493aa37 100644
> > --- a/src/libcamera/pipeline/meson.build
> > +++ b/src/libcamera/pipeline/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  foreach pipeline : get_option('pipelines')
> >      subdir(pipeline)
> >  endforeach
> > diff --git a/src/libcamera/pipeline/raspberrypi/meson.build b/src/libcamera/pipeline/raspberrypi/meson.build
> > index 737857977831..fc117b77bdd1 100644
> > --- a/src/libcamera/pipeline/raspberrypi/meson.build
> > +++ b/src/libcamera/pipeline/raspberrypi/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libcamera_sources += files([
> >      'raspberrypi.cpp'
> >  ])
> > diff --git a/src/libcamera/pipeline/rkisp1/meson.build b/src/libcamera/pipeline/rkisp1/meson.build
> > index d04fb45223e7..1ab3964a6db1 100644
> > --- a/src/libcamera/pipeline/rkisp1/meson.build
> > +++ b/src/libcamera/pipeline/rkisp1/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libcamera_sources += files([
> >      'rkisp1.cpp',
> >      'timeline.cpp',
> > diff --git a/src/libcamera/pipeline/simple/meson.build b/src/libcamera/pipeline/simple/meson.build
> > index 8372f24e3788..9c99b32f69f3 100644
> > --- a/src/libcamera/pipeline/simple/meson.build
> > +++ b/src/libcamera/pipeline/simple/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libcamera_sources += files([
> >      'converter.cpp',
> >      'simple.cpp',
> > diff --git a/src/libcamera/pipeline/uvcvideo/meson.build b/src/libcamera/pipeline/uvcvideo/meson.build
> > index c19ae2389f48..a3c2efd424bf 100644
> > --- a/src/libcamera/pipeline/uvcvideo/meson.build
> > +++ b/src/libcamera/pipeline/uvcvideo/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libcamera_sources += files([
> >      'uvcvideo.cpp',
> >  ])
> > diff --git a/src/libcamera/pipeline/vimc/meson.build b/src/libcamera/pipeline/vimc/meson.build
> > index 615ecd20f1a2..290eefb5d076 100644
> > --- a/src/libcamera/pipeline/vimc/meson.build
> > +++ b/src/libcamera/pipeline/vimc/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libcamera_sources += files([
> >      'vimc.cpp',
> >  ])
> > diff --git a/src/libcamera/proxy/meson.build b/src/libcamera/proxy/meson.build
> > index 6c00d5f30ad2..bd804750748a 100644
> > --- a/src/libcamera/proxy/meson.build
> > +++ b/src/libcamera/proxy/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libcamera_sources += files([
> >      'ipa_proxy_linux.cpp',
> >      'ipa_proxy_thread.cpp',
> > diff --git a/src/libcamera/proxy/worker/meson.build b/src/libcamera/proxy/worker/meson.build
> > index 839156f7591a..1b1bee5e0170 100644
> > --- a/src/libcamera/proxy/worker/meson.build
> > +++ b/src/libcamera/proxy/worker/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  ipa_proxy_sources = [
> >      ['ipa_proxy_linux', 'ipa_proxy_linux_worker.cpp']
> >  ]
> > diff --git a/src/meson.build b/src/meson.build
> > index c9c1008562b1..d69b4c1ea978 100644
> > --- a/src/meson.build
> > +++ b/src/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  if get_option('android')
> >      subdir('android')
> >  endif
> > diff --git a/src/qcam/meson.build b/src/qcam/meson.build
> > index 949ef6149c8a..045db52acf26 100644
> > --- a/src/qcam/meson.build
> > +++ b/src/qcam/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  qcam_sources = files([
> >      '../cam/options.cpp',
> >      '../cam/stream_options.cpp',
> > diff --git a/src/v4l2/meson.build b/src/v4l2/meson.build
> > index efab968f7729..fc1be82d1b02 100644
> > --- a/src/v4l2/meson.build
> > +++ b/src/v4l2/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  v4l2_compat_sources = files([
> >      'v4l2_camera.cpp',
> >      'v4l2_camera_proxy.cpp',
> > diff --git a/test/camera/meson.build b/test/camera/meson.build
> > index e2a6660a7a92..0395e7ddc7a4 100644
> > --- a/test/camera/meson.build
> > +++ b/test/camera/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  # Tests are listed in order of complexity.
> >  # They are not alphabetically sorted.
> >  camera_tests = [
> > diff --git a/test/controls/meson.build b/test/controls/meson.build
> > index 7fff2413007e..545fb03b16c6 100644
> > --- a/test/controls/meson.build
> > +++ b/test/controls/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  control_tests = [
> >      [ 'control_info',               'control_info.cpp' ],
> >      [ 'control_info_map',           'control_info_map.cpp' ],
> > diff --git a/test/ipa/meson.build b/test/ipa/meson.build
> > index f925c50a085e..ba672f3f9d8b 100644
> > --- a/test/ipa/meson.build
> > +++ b/test/ipa/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  ipa_test = [
> >      ['ipa_module_test',     'ipa_module_test.cpp'],
> >      ['ipa_interface_test',  'ipa_interface_test.cpp'],
> > diff --git a/test/ipc/meson.build b/test/ipc/meson.build
> > index cc46b41c7687..650df1d63444 100644
> > --- a/test/ipc/meson.build
> > +++ b/test/ipc/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  ipc_tests = [
> >      [ 'unixsocket',  'unixsocket.cpp' ],
> >  ]
> > diff --git a/test/libtest/meson.build b/test/libtest/meson.build
> > index 33565e0eb3b6..481f6d6baa61 100644
> > --- a/test/libtest/meson.build
> > +++ b/test/libtest/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  libtest_sources = files([
> >      'buffer_source.cpp',
> >      'camera_test.cpp',
> > diff --git a/test/log/meson.build b/test/log/meson.build
> > index 95f6c1a2ae4a..8cd664e04a00 100644
> > --- a/test/log/meson.build
> > +++ b/test/log/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  log_test = [
> >      ['log_api',     'log_api.cpp'],
> >      ['log_process', 'log_process.cpp'],
> > diff --git a/test/media_device/meson.build b/test/media_device/meson.build
> > index 6a0e468434b5..1dfcdd8bd744 100644
> > --- a/test/media_device/meson.build
> > +++ b/test/media_device/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  lib_mdev_test_sources = files([
> >      'media_device_test.cpp',
> >  ])
> > diff --git a/test/meson.build b/test/meson.build
> > index 5a45a85effd3..bd7da147c70e 100644
> > --- a/test/meson.build
> > +++ b/test/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  subdir('libtest')
> >  
> >  subdir('camera')
> > diff --git a/test/pipeline/ipu3/meson.build b/test/pipeline/ipu3/meson.build
> > index d02927c9af86..d062ecd269f2 100644
> > --- a/test/pipeline/ipu3/meson.build
> > +++ b/test/pipeline/ipu3/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  ipu3_test = [
> >      ['ipu3_pipeline_test',            'ipu3_pipeline_test.cpp'],
> >  ]
> > diff --git a/test/pipeline/meson.build b/test/pipeline/meson.build
> > index 157f789ceb25..6e7901fee38f 100644
> > --- a/test/pipeline/meson.build
> > +++ b/test/pipeline/meson.build
> > @@ -1,2 +1,4 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  subdir('ipu3')
> >  subdir('rkisp1')
> > diff --git a/test/pipeline/rkisp1/meson.build b/test/pipeline/rkisp1/meson.build
> > index d3f974964fc4..ece147b054e4 100644
> > --- a/test/pipeline/rkisp1/meson.build
> > +++ b/test/pipeline/rkisp1/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  rkisp1_test = [
> >      ['rkisp1_pipeline_test',            'rkisp1_pipeline_test.cpp'],
> >  ]
> > diff --git a/test/process/meson.build b/test/process/meson.build
> > index c4d83d6c8b39..c215fa7e6c12 100644
> > --- a/test/process/meson.build
> > +++ b/test/process/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  process_tests = [
> >      [ 'process_test',  'process_test.cpp' ],
> >  ]
> > diff --git a/test/serialization/meson.build b/test/serialization/meson.build
> > index d78d92e61887..a9d9cbcb7d80 100644
> > --- a/test/serialization/meson.build
> > +++ b/test/serialization/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  serialization_tests = [
> >      [ 'control_serialization',    'control_serialization.cpp' ],
> >  ]
> > diff --git a/test/stream/meson.build b/test/stream/meson.build
> > index 005f4aa4996a..2b9b29a9143b 100644
> > --- a/test/stream/meson.build
> > +++ b/test/stream/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  stream_tests = [
> >      [ 'stream_formats', 'stream_formats.cpp' ],
> >  ]
> > diff --git a/test/v4l2_subdevice/meson.build b/test/v4l2_subdevice/meson.build
> > index 0521984b2a78..5f0882ca9772 100644
> > --- a/test/v4l2_subdevice/meson.build
> > +++ b/test/v4l2_subdevice/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  v4l2_subdevice_tests = [
> >    [ 'list_formats',             'list_formats.cpp'],
> >    [ 'test_formats',             'test_formats.cpp'],
> > diff --git a/test/v4l2_videodevice/meson.build b/test/v4l2_videodevice/meson.build
> > index 685fcf6d16d7..b4bb30908027 100644
> > --- a/test/v4l2_videodevice/meson.build
> > +++ b/test/v4l2_videodevice/meson.build
> > @@ -1,3 +1,5 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  # Tests are listed in order of complexity.
> >  # They are not alphabetically sorted.
> >  v4l2_videodevice_tests = [
> > diff --git a/utils/ipu3/meson.build b/utils/ipu3/meson.build
> > index 49c45856eea6..88049f589561 100644
> > --- a/utils/ipu3/meson.build
> > +++ b/utils/ipu3/meson.build
> > @@ -1 +1,3 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  ipu3_unpack = executable('ipu3-unpack', 'ipu3-unpack.c')
> > diff --git a/utils/meson.build b/utils/meson.build
> > index f434c79c0ae3..c3cd9d69f887 100644
> > --- a/utils/meson.build
> > +++ b/utils/meson.build
> > @@ -1 +1,3 @@
> > +# SPDX-License-Identifier: CC0-1.0
> > +
> >  subdir('ipu3')
> >
Naushir Patuck May 13, 2020, 7:19 a.m. UTC | #7
Hi all,

On Tue, 12 May 2020 at 20:06, Nicolas Dufresne
<nicolas.dufresne@collabora.com> wrote:
>
> Le mardi 12 mai 2020 à 09:02 +0100, Kieran Bingham a écrit :
> > Hi Laurent,
> >
> > On 11/05/2020 23:27, Laurent Pinchart wrote:
> > > In an attempt to clarify the license terms of all files in the libcamera
> > > project, the build system files deserve particular attention. While they
> > > describe how the binaries are created, they are not themselves
> > > transformed into any part of binary distributions of the software, and
> > > thus don't influece the copyright on the binary packages. They are
> >
> > s/influece/influence/
> >
> > > however subject to copyright, and thus influence the distribution terms
> > > of the source packages.
> > >
> > > Most of the meson.build files would not meet the threshold of
> > > originality criteria required for copyright protection. Some of the more
> > > complex meson.build files may be elligible for copyright protection. To
> >
> > s/elligible/eligible/
> >
> > > avoid any ambiguity and uncertainty, state our intent to not assert
> > > copyrights on the build system files by putting them in the public
> > > domain with the CC0-1.0 license.
> > >
> > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> >
> > This seems like a good option to me.
> >
> > Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
> >
> > and for any meson.build files I have authored:
> >
> > Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
>
> I agree with these minor remarks, looks good to me.
>
> Acked-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
>

Acked-by: Naushir Patuck <naush@raspberrypi.com>



> >
> > > ---
> > > Changes since v1:
> > >
> > > - Added meson.build files from the Raspberry Pi pipeline handler
> >
> > Do we need to get an explicit ack from Raspberry Pi here?
> >
> > --
> > Kieran
> >
> >
> > > ---
> > >  Documentation/meson.build                     |   2 +
> > >  LICENSES/CC0-1.0.txt                          | 119 ++++++++++++++++++
> > >  include/android/meson.build                   |   2 +
> > >  include/ipa/meson.build                       |   2 +
> > >  include/libcamera/meson.build                 |   2 +
> > >  include/meson.build                           |   2 +
> > >  meson.build                                   |   2 +
> > >  meson_options.txt                             |   2 +
> > >  src/android/meson.build                       |   2 +
> > >  src/cam/meson.build                           |   2 +
> > >  src/gstreamer/meson.build                     |   2 +
> > >  src/ipa/libipa/meson.build                    |   2 +
> > >  src/ipa/meson.build                           |   2 +
> > >  src/ipa/raspberrypi/meson.build               |   2 +
> > >  src/ipa/rkisp1/meson.build                    |   2 +
> > >  src/ipa/vimc/data/meson.build                 |   2 +
> > >  src/ipa/vimc/meson.build                      |   2 +
> > >  src/libcamera/include/meson.build             |   2 +
> > >  src/libcamera/meson.build                     |   2 +
> > >  src/libcamera/pipeline/ipu3/meson.build       |   2 +
> > >  src/libcamera/pipeline/meson.build            |   2 +
> > >  .../pipeline/raspberrypi/meson.build          |   2 +
> > >  src/libcamera/pipeline/rkisp1/meson.build     |   2 +
> > >  src/libcamera/pipeline/simple/meson.build     |   2 +
> > >  src/libcamera/pipeline/uvcvideo/meson.build   |   2 +
> > >  src/libcamera/pipeline/vimc/meson.build       |   2 +
> > >  src/libcamera/proxy/meson.build               |   2 +
> > >  src/libcamera/proxy/worker/meson.build        |   2 +
> > >  src/meson.build                               |   2 +
> > >  src/qcam/meson.build                          |   2 +
> > >  src/v4l2/meson.build                          |   2 +
> > >  test/camera/meson.build                       |   2 +
> > >  test/controls/meson.build                     |   2 +
> > >  test/ipa/meson.build                          |   2 +
> > >  test/ipc/meson.build                          |   2 +
> > >  test/libtest/meson.build                      |   2 +
> > >  test/log/meson.build                          |   2 +
> > >  test/media_device/meson.build                 |   2 +
> > >  test/meson.build                              |   2 +
> > >  test/pipeline/ipu3/meson.build                |   2 +
> > >  test/pipeline/meson.build                     |   2 +
> > >  test/pipeline/rkisp1/meson.build              |   2 +
> > >  test/process/meson.build                      |   2 +
> > >  test/serialization/meson.build                |   2 +
> > >  test/stream/meson.build                       |   2 +
> > >  test/v4l2_subdevice/meson.build               |   2 +
> > >  test/v4l2_videodevice/meson.build             |   2 +
> > >  utils/ipu3/meson.build                        |   2 +
> > >  utils/meson.build                             |   2 +
> > >  49 files changed, 215 insertions(+)
> > >  create mode 100644 LICENSES/CC0-1.0.txt
> > >
> > > diff --git a/Documentation/meson.build b/Documentation/meson.build
> > > index c4e9892470de..b3b4f0b66f57 100644
> > > --- a/Documentation/meson.build
> > > +++ b/Documentation/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  doc_install_dir = join_paths(get_option('datadir'), 'doc',
> > >                               'libcamera-@0@'.format(libcamera_version))
> > >
> > > diff --git a/LICENSES/CC0-1.0.txt b/LICENSES/CC0-1.0.txt
> > > new file mode 100644
> > > index 000000000000..a343ccd4335f
> > > --- /dev/null
> > > +++ b/LICENSES/CC0-1.0.txt
> > > @@ -0,0 +1,119 @@
> > > +Creative Commons Legal Code
> > > +
> > > +CC0 1.0 Universal CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES
> > > +NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE
> > > +AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION
> > > +ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE
> > > +OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS
> > > +LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION
> > > +OR WORKS PROVIDED HEREUNDER.
> > > +
> > > +Statement of Purpose
> > > +
> > > +The laws of most jurisdictions throughout the world automatically confer exclusive
> > > +Copyright and Related Rights (defined below) upon the creator and subsequent
> > > +owner(s) (each and all, an "owner") of an original work of authorship and/or
> > > +a database (each, a "Work").
> > > +
> > > +Certain owners wish to permanently relinquish those rights to a Work for the
> > > +purpose of contributing to a commons of creative, cultural and scientific
> > > +works ("Commons") that the public can reliably and without fear of later claims
> > > +of infringement build upon, modify, incorporate in other works, reuse and
> > > +redistribute as freely as possible in any form whatsoever and for any purposes,
> > > +including without limitation commercial purposes. These owners may contribute
> > > +to the Commons to promote the ideal of a free culture and the further production
> > > +of creative, cultural and scientific works, or to gain reputation or greater
> > > +distribution for their Work in part through the use and efforts of others.
> > > +
> > > +For these and/or other purposes and motivations, and without any expectation
> > > +of additional consideration or compensation, the person associating CC0 with
> > > +a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
> > > +and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
> > > +and publicly distribute the Work under its terms, with knowledge of his or
> > > +her Copyright and Related Rights in the Work and the meaning and intended
> > > +legal effect of CC0 on those rights.
> > > +
> > > +1. Copyright and Related Rights. A Work made available under CC0 may be protected
> > > +by copyright and related or neighboring rights ("Copyright and Related Rights").
> > > +Copyright and Related Rights include, but are not limited to, the following:
> > > +
> > > +i. the right to reproduce, adapt, distribute, perform, display, communicate,
> > > +and translate a Work;
> > > +
> > > +      ii. moral rights retained by the original author(s) and/or performer(s);
> > > +
> > > +iii. publicity and privacy rights pertaining to a person's image or likeness
> > > +depicted in a Work;
> > > +
> > > +iv. rights protecting against unfair competition in regards to a Work, subject
> > > +to the limitations in paragraph 4(a), below;
> > > +
> > > +v. rights protecting the extraction, dissemination, use and reuse of data
> > > +in a Work;
> > > +
> > > +vi. database rights (such as those arising under Directive 96/9/EC of the
> > > +European Parliament and of the Council of 11 March 1996 on the legal protection
> > > +of databases, and under any national implementation thereof, including any
> > > +amended or successor version of such directive); and
> > > +
> > > +vii. other similar, equivalent or corresponding rights throughout the world
> > > +based on applicable law or treaty, and any national implementations thereof.
> > > +
> > > +2. Waiver. To the greatest extent permitted by, but not in contravention of,
> > > +applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
> > > +unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
> > > +and Related Rights and associated claims and causes of action, whether now
> > > +known or unknown (including existing as well as future claims and causes of
> > > +action), in the Work (i) in all territories worldwide, (ii) for the maximum
> > > +duration provided by applicable law or treaty (including future time extensions),
> > > +(iii) in any current or future medium and for any number of copies, and (iv)
> > > +for any purpose whatsoever, including without limitation commercial, advertising
> > > +or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the
> > > +benefit of each member of the public at large and to the detriment of Affirmer's
> > > +heirs and successors, fully intending that such Waiver shall not be subject
> > > +to revocation, rescission, cancellation, termination, or any other legal or
> > > +equitable action to disrupt the quiet enjoyment of the Work by the public
> > > +as contemplated by Affirmer's express Statement of Purpose.
> > > +
> > > +3. Public License Fallback. Should any part of the Waiver for any reason be
> > > +judged legally invalid or ineffective under applicable law, then the Waiver
> > > +shall be preserved to the maximum extent permitted taking into account Affirmer's
> > > +express Statement of Purpose. In addition, to the extent the Waiver is so
> > > +judged Affirmer hereby grants to each affected person a royalty-free, non
> > > +transferable, non sublicensable, non exclusive, irrevocable and unconditional
> > > +license to exercise Affirmer's Copyright and Related Rights in the Work (i)
> > > +in all territories worldwide, (ii) for the maximum duration provided by applicable
> > > +law or treaty (including future time extensions), (iii) in any current or
> > > +future medium and for any number of copies, and (iv) for any purpose whatsoever,
> > > +including without limitation commercial, advertising or promotional purposes
> > > +(the "License"). The License shall be deemed effective as of the date CC0
> > > +was applied by Affirmer to the Work. Should any part of the License for any
> > > +reason be judged legally invalid or ineffective under applicable law, such
> > > +partial invalidity or ineffectiveness shall not invalidate the remainder of
> > > +the License, and in such case Affirmer hereby affirms that he or she will
> > > +not (i) exercise any of his or her remaining Copyright and Related Rights
> > > +in the Work or (ii) assert any associated claims and causes of action with
> > > +respect to the Work, in either case contrary to Affirmer's express Statement
> > > +of Purpose.
> > > +
> > > +   4. Limitations and Disclaimers.
> > > +
> > > +a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered,
> > > +licensed or otherwise affected by this document.
> > > +
> > > +b. Affirmer offers the Work as-is and makes no representations or warranties
> > > +of any kind concerning the Work, express, implied, statutory or otherwise,
> > > +including without limitation warranties of title, merchantability, fitness
> > > +for a particular purpose, non infringement, or the absence of latent or other
> > > +defects, accuracy, or the present or absence of errors, whether or not discoverable,
> > > +all to the greatest extent permissible under applicable law.
> > > +
> > > +c. Affirmer disclaims responsibility for clearing rights of other persons
> > > +that may apply to the Work or any use thereof, including without limitation
> > > +any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims
> > > +responsibility for obtaining any necessary consents, permissions or other
> > > +rights required for any use of the Work.
> > > +
> > > +d. Affirmer understands and acknowledges that Creative Commons is not a party
> > > +to this document and has no duty or obligation with respect to this CC0 or
> > > +use of the Work.
> > > diff --git a/include/android/meson.build b/include/android/meson.build
> > > index 69f1c38edada..da2504f2e493 100644
> > > --- a/include/android/meson.build
> > > +++ b/include/android/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  android_includes = ([
> > >      include_directories('hardware/libhardware/include/'),
> > >      include_directories('metadata/'),
> > > diff --git a/include/ipa/meson.build b/include/ipa/meson.build
> > > index 695a4183a0e8..3d5c0dd69bb4 100644
> > > --- a/include/ipa/meson.build
> > > +++ b/include/ipa/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  libcamera_ipa_api = files([
> > >      'ipa_controls.h',
> > >      'ipa_interface.h',
> > > diff --git a/include/libcamera/meson.build b/include/libcamera/meson.build
> > > index 23c01d3837ba..cea47eb83030 100644
> > > --- a/include/libcamera/meson.build
> > > +++ b/include/libcamera/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  libcamera_api = files([
> > >      'bound_method.h',
> > >      'buffer.h',
> > > diff --git a/include/meson.build b/include/meson.build
> > > index 42b2453445b5..4f41c9ceeb4c 100644
> > > --- a/include/meson.build
> > > +++ b/include/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  libcamera_include_dir = 'libcamera'
> > >
> > >  subdir('android')
> > > diff --git a/meson.build b/meson.build
> > > index 59829e1942ca..e898782a28b0 100644
> > > --- a/meson.build
> > > +++ b/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  project('libcamera', 'c', 'cpp',
> > >      meson_version : '>= 0.47',
> > >      version : '0.0.0',
> > > diff --git a/meson_options.txt b/meson_options.txt
> > > index 68f4f48004e5..badace151bb6 100644
> > > --- a/meson_options.txt
> > > +++ b/meson_options.txt
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  option('android',
> > >          type : 'boolean',
> > >          value : false,
> > > diff --git a/src/android/meson.build b/src/android/meson.build
> > > index 5a5a332e6a6f..822cad621f01 100644
> > > --- a/src/android/meson.build
> > > +++ b/src/android/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  android_hal_sources = files([
> > >      'camera3_hal.cpp',
> > >      'camera_hal_manager.cpp',
> > > diff --git a/src/cam/meson.build b/src/cam/meson.build
> > > index 162d6333f94e..89e124fbae2a 100644
> > > --- a/src/cam/meson.build
> > > +++ b/src/cam/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  cam_sources = files([
> > >      'buffer_writer.cpp',
> > >      'capture.cpp',
> > > diff --git a/src/gstreamer/meson.build b/src/gstreamer/meson.build
> > > index e119e472cb58..c9f0c13d969d 100644
> > > --- a/src/gstreamer/meson.build
> > > +++ b/src/gstreamer/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  libcamera_gst_sources = [
> > >      'gstlibcamera-utils.cpp',
> > >      'gstlibcamera.cpp',
> > > diff --git a/src/ipa/libipa/meson.build b/src/ipa/libipa/meson.build
> > > index 6f3cd4866ce3..2262640517a0 100644
> > > --- a/src/ipa/libipa/meson.build
> > > +++ b/src/ipa/libipa/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  libipa_headers = files([
> > >      'ipa_interface_wrapper.h',
> > >  ])
> > > diff --git a/src/ipa/meson.build b/src/ipa/meson.build
> > > index b103479c1cd0..64deb601054c 100644
> > > --- a/src/ipa/meson.build
> > > +++ b/src/ipa/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  ipa_install_dir = join_paths(get_option('libdir'), 'libcamera')
> > >  ipa_data_dir = join_paths(get_option('datadir'), 'libcamera', 'ipa')
> > >  ipa_sysconf_dir = join_paths(get_option('sysconfdir'), 'libcamera', 'ipa')
> > > diff --git a/src/ipa/raspberrypi/meson.build b/src/ipa/raspberrypi/meson.build
> > > index 2dece3a468e8..697902e95bc1 100644
> > > --- a/src/ipa/raspberrypi/meson.build
> > > +++ b/src/ipa/raspberrypi/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  ipa_name = 'ipa_rpi'
> > >
> > >  rpi_ipa_deps = [
> > > diff --git a/src/ipa/rkisp1/meson.build b/src/ipa/rkisp1/meson.build
> > > index d7127ea8d1e9..ed9a6b6b8ec8 100644
> > > --- a/src/ipa/rkisp1/meson.build
> > > +++ b/src/ipa/rkisp1/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  ipa_name = 'ipa_rkisp1'
> > >
> > >  mod = shared_module(ipa_name,
> > > diff --git a/src/ipa/vimc/data/meson.build b/src/ipa/vimc/data/meson.build
> > > index c844926da7f2..6532662cfa94 100644
> > > --- a/src/ipa/vimc/data/meson.build
> > > +++ b/src/ipa/vimc/data/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  conf_files = files([
> > >      'vimc.conf',
> > >  ])
> > > diff --git a/src/ipa/vimc/meson.build b/src/ipa/vimc/meson.build
> > > index 22296a029642..8c9df854007a 100644
> > > --- a/src/ipa/vimc/meson.build
> > > +++ b/src/ipa/vimc/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  ipa_name = 'ipa_vimc'
> > >
> > >  mod = shared_module(ipa_name,
> > > diff --git a/src/libcamera/include/meson.build b/src/libcamera/include/meson.build
> > > index 683d06133741..1f6af579cca2 100644
> > > --- a/src/libcamera/include/meson.build
> > > +++ b/src/libcamera/include/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  libcamera_headers = files([
> > >      'byte_stream_buffer.h',
> > >      'camera_controls.h',
> > > diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build
> > > index d8b4d7206aba..d42e9720dbd6 100644
> > > --- a/src/libcamera/meson.build
> > > +++ b/src/libcamera/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  libcamera_sources = files([
> > >      'bound_method.cpp',
> > >      'buffer.cpp',
> > > diff --git a/src/libcamera/pipeline/ipu3/meson.build b/src/libcamera/pipeline/ipu3/meson.build
> > > index 0ab766a257a0..0e8c5a14f2b3 100644
> > > --- a/src/libcamera/pipeline/ipu3/meson.build
> > > +++ b/src/libcamera/pipeline/ipu3/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  libcamera_sources += files([
> > >      'ipu3.cpp',
> > >  ])
> > > diff --git a/src/libcamera/pipeline/meson.build b/src/libcamera/pipeline/meson.build
> > > index 190ca5a8db92..46424493aa37 100644
> > > --- a/src/libcamera/pipeline/meson.build
> > > +++ b/src/libcamera/pipeline/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  foreach pipeline : get_option('pipelines')
> > >      subdir(pipeline)
> > >  endforeach
> > > diff --git a/src/libcamera/pipeline/raspberrypi/meson.build b/src/libcamera/pipeline/raspberrypi/meson.build
> > > index 737857977831..fc117b77bdd1 100644
> > > --- a/src/libcamera/pipeline/raspberrypi/meson.build
> > > +++ b/src/libcamera/pipeline/raspberrypi/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  libcamera_sources += files([
> > >      'raspberrypi.cpp'
> > >  ])
> > > diff --git a/src/libcamera/pipeline/rkisp1/meson.build b/src/libcamera/pipeline/rkisp1/meson.build
> > > index d04fb45223e7..1ab3964a6db1 100644
> > > --- a/src/libcamera/pipeline/rkisp1/meson.build
> > > +++ b/src/libcamera/pipeline/rkisp1/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  libcamera_sources += files([
> > >      'rkisp1.cpp',
> > >      'timeline.cpp',
> > > diff --git a/src/libcamera/pipeline/simple/meson.build b/src/libcamera/pipeline/simple/meson.build
> > > index 8372f24e3788..9c99b32f69f3 100644
> > > --- a/src/libcamera/pipeline/simple/meson.build
> > > +++ b/src/libcamera/pipeline/simple/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  libcamera_sources += files([
> > >      'converter.cpp',
> > >      'simple.cpp',
> > > diff --git a/src/libcamera/pipeline/uvcvideo/meson.build b/src/libcamera/pipeline/uvcvideo/meson.build
> > > index c19ae2389f48..a3c2efd424bf 100644
> > > --- a/src/libcamera/pipeline/uvcvideo/meson.build
> > > +++ b/src/libcamera/pipeline/uvcvideo/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  libcamera_sources += files([
> > >      'uvcvideo.cpp',
> > >  ])
> > > diff --git a/src/libcamera/pipeline/vimc/meson.build b/src/libcamera/pipeline/vimc/meson.build
> > > index 615ecd20f1a2..290eefb5d076 100644
> > > --- a/src/libcamera/pipeline/vimc/meson.build
> > > +++ b/src/libcamera/pipeline/vimc/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  libcamera_sources += files([
> > >      'vimc.cpp',
> > >  ])
> > > diff --git a/src/libcamera/proxy/meson.build b/src/libcamera/proxy/meson.build
> > > index 6c00d5f30ad2..bd804750748a 100644
> > > --- a/src/libcamera/proxy/meson.build
> > > +++ b/src/libcamera/proxy/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  libcamera_sources += files([
> > >      'ipa_proxy_linux.cpp',
> > >      'ipa_proxy_thread.cpp',
> > > diff --git a/src/libcamera/proxy/worker/meson.build b/src/libcamera/proxy/worker/meson.build
> > > index 839156f7591a..1b1bee5e0170 100644
> > > --- a/src/libcamera/proxy/worker/meson.build
> > > +++ b/src/libcamera/proxy/worker/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  ipa_proxy_sources = [
> > >      ['ipa_proxy_linux', 'ipa_proxy_linux_worker.cpp']
> > >  ]
> > > diff --git a/src/meson.build b/src/meson.build
> > > index c9c1008562b1..d69b4c1ea978 100644
> > > --- a/src/meson.build
> > > +++ b/src/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  if get_option('android')
> > >      subdir('android')
> > >  endif
> > > diff --git a/src/qcam/meson.build b/src/qcam/meson.build
> > > index 949ef6149c8a..045db52acf26 100644
> > > --- a/src/qcam/meson.build
> > > +++ b/src/qcam/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  qcam_sources = files([
> > >      '../cam/options.cpp',
> > >      '../cam/stream_options.cpp',
> > > diff --git a/src/v4l2/meson.build b/src/v4l2/meson.build
> > > index efab968f7729..fc1be82d1b02 100644
> > > --- a/src/v4l2/meson.build
> > > +++ b/src/v4l2/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  v4l2_compat_sources = files([
> > >      'v4l2_camera.cpp',
> > >      'v4l2_camera_proxy.cpp',
> > > diff --git a/test/camera/meson.build b/test/camera/meson.build
> > > index e2a6660a7a92..0395e7ddc7a4 100644
> > > --- a/test/camera/meson.build
> > > +++ b/test/camera/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  # Tests are listed in order of complexity.
> > >  # They are not alphabetically sorted.
> > >  camera_tests = [
> > > diff --git a/test/controls/meson.build b/test/controls/meson.build
> > > index 7fff2413007e..545fb03b16c6 100644
> > > --- a/test/controls/meson.build
> > > +++ b/test/controls/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  control_tests = [
> > >      [ 'control_info',               'control_info.cpp' ],
> > >      [ 'control_info_map',           'control_info_map.cpp' ],
> > > diff --git a/test/ipa/meson.build b/test/ipa/meson.build
> > > index f925c50a085e..ba672f3f9d8b 100644
> > > --- a/test/ipa/meson.build
> > > +++ b/test/ipa/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  ipa_test = [
> > >      ['ipa_module_test',     'ipa_module_test.cpp'],
> > >      ['ipa_interface_test',  'ipa_interface_test.cpp'],
> > > diff --git a/test/ipc/meson.build b/test/ipc/meson.build
> > > index cc46b41c7687..650df1d63444 100644
> > > --- a/test/ipc/meson.build
> > > +++ b/test/ipc/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  ipc_tests = [
> > >      [ 'unixsocket',  'unixsocket.cpp' ],
> > >  ]
> > > diff --git a/test/libtest/meson.build b/test/libtest/meson.build
> > > index 33565e0eb3b6..481f6d6baa61 100644
> > > --- a/test/libtest/meson.build
> > > +++ b/test/libtest/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  libtest_sources = files([
> > >      'buffer_source.cpp',
> > >      'camera_test.cpp',
> > > diff --git a/test/log/meson.build b/test/log/meson.build
> > > index 95f6c1a2ae4a..8cd664e04a00 100644
> > > --- a/test/log/meson.build
> > > +++ b/test/log/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  log_test = [
> > >      ['log_api',     'log_api.cpp'],
> > >      ['log_process', 'log_process.cpp'],
> > > diff --git a/test/media_device/meson.build b/test/media_device/meson.build
> > > index 6a0e468434b5..1dfcdd8bd744 100644
> > > --- a/test/media_device/meson.build
> > > +++ b/test/media_device/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  lib_mdev_test_sources = files([
> > >      'media_device_test.cpp',
> > >  ])
> > > diff --git a/test/meson.build b/test/meson.build
> > > index 5a45a85effd3..bd7da147c70e 100644
> > > --- a/test/meson.build
> > > +++ b/test/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  subdir('libtest')
> > >
> > >  subdir('camera')
> > > diff --git a/test/pipeline/ipu3/meson.build b/test/pipeline/ipu3/meson.build
> > > index d02927c9af86..d062ecd269f2 100644
> > > --- a/test/pipeline/ipu3/meson.build
> > > +++ b/test/pipeline/ipu3/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  ipu3_test = [
> > >      ['ipu3_pipeline_test',            'ipu3_pipeline_test.cpp'],
> > >  ]
> > > diff --git a/test/pipeline/meson.build b/test/pipeline/meson.build
> > > index 157f789ceb25..6e7901fee38f 100644
> > > --- a/test/pipeline/meson.build
> > > +++ b/test/pipeline/meson.build
> > > @@ -1,2 +1,4 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  subdir('ipu3')
> > >  subdir('rkisp1')
> > > diff --git a/test/pipeline/rkisp1/meson.build b/test/pipeline/rkisp1/meson.build
> > > index d3f974964fc4..ece147b054e4 100644
> > > --- a/test/pipeline/rkisp1/meson.build
> > > +++ b/test/pipeline/rkisp1/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  rkisp1_test = [
> > >      ['rkisp1_pipeline_test',            'rkisp1_pipeline_test.cpp'],
> > >  ]
> > > diff --git a/test/process/meson.build b/test/process/meson.build
> > > index c4d83d6c8b39..c215fa7e6c12 100644
> > > --- a/test/process/meson.build
> > > +++ b/test/process/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  process_tests = [
> > >      [ 'process_test',  'process_test.cpp' ],
> > >  ]
> > > diff --git a/test/serialization/meson.build b/test/serialization/meson.build
> > > index d78d92e61887..a9d9cbcb7d80 100644
> > > --- a/test/serialization/meson.build
> > > +++ b/test/serialization/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  serialization_tests = [
> > >      [ 'control_serialization',    'control_serialization.cpp' ],
> > >  ]
> > > diff --git a/test/stream/meson.build b/test/stream/meson.build
> > > index 005f4aa4996a..2b9b29a9143b 100644
> > > --- a/test/stream/meson.build
> > > +++ b/test/stream/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  stream_tests = [
> > >      [ 'stream_formats', 'stream_formats.cpp' ],
> > >  ]
> > > diff --git a/test/v4l2_subdevice/meson.build b/test/v4l2_subdevice/meson.build
> > > index 0521984b2a78..5f0882ca9772 100644
> > > --- a/test/v4l2_subdevice/meson.build
> > > +++ b/test/v4l2_subdevice/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  v4l2_subdevice_tests = [
> > >    [ 'list_formats',             'list_formats.cpp'],
> > >    [ 'test_formats',             'test_formats.cpp'],
> > > diff --git a/test/v4l2_videodevice/meson.build b/test/v4l2_videodevice/meson.build
> > > index 685fcf6d16d7..b4bb30908027 100644
> > > --- a/test/v4l2_videodevice/meson.build
> > > +++ b/test/v4l2_videodevice/meson.build
> > > @@ -1,3 +1,5 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  # Tests are listed in order of complexity.
> > >  # They are not alphabetically sorted.
> > >  v4l2_videodevice_tests = [
> > > diff --git a/utils/ipu3/meson.build b/utils/ipu3/meson.build
> > > index 49c45856eea6..88049f589561 100644
> > > --- a/utils/ipu3/meson.build
> > > +++ b/utils/ipu3/meson.build
> > > @@ -1 +1,3 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  ipu3_unpack = executable('ipu3-unpack', 'ipu3-unpack.c')
> > > diff --git a/utils/meson.build b/utils/meson.build
> > > index f434c79c0ae3..c3cd9d69f887 100644
> > > --- a/utils/meson.build
> > > +++ b/utils/meson.build
> > > @@ -1 +1,3 @@
> > > +# SPDX-License-Identifier: CC0-1.0
> > > +
> > >  subdir('ipu3')
> > >
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel@lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel
Jacopo Mondi May 13, 2020, 8:07 a.m. UTC | #8
Hi Laurent,

On Tue, May 12, 2020 at 01:27:21AM +0300, Laurent Pinchart wrote:
> In an attempt to clarify the license terms of all files in the libcamera
> project, the build system files deserve particular attention. While they
> describe how the binaries are created, they are not themselves
> transformed into any part of binary distributions of the software, and
> thus don't influece the copyright on the binary packages. They are
> however subject to copyright, and thus influence the distribution terms
> of the source packages.
>
> Most of the meson.build files would not meet the threshold of
> originality criteria required for copyright protection. Some of the more
> complex meson.build files may be elligible for copyright protection. To
> avoid any ambiguity and uncertainty, state our intent to not assert
> copyrights on the build system files by putting them in the public
> domain with the CC0-1.0 license.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

Acked-by: Jacopo Mondi <jacopo@jmondi.org>

> ---
> Changes since v1:
>
> - Added meson.build files from the Raspberry Pi pipeline handler
> ---
>  Documentation/meson.build                     |   2 +
>  LICENSES/CC0-1.0.txt                          | 119 ++++++++++++++++++
>  include/android/meson.build                   |   2 +
>  include/ipa/meson.build                       |   2 +
>  include/libcamera/meson.build                 |   2 +
>  include/meson.build                           |   2 +
>  meson.build                                   |   2 +
>  meson_options.txt                             |   2 +
>  src/android/meson.build                       |   2 +
>  src/cam/meson.build                           |   2 +
>  src/gstreamer/meson.build                     |   2 +
>  src/ipa/libipa/meson.build                    |   2 +
>  src/ipa/meson.build                           |   2 +
>  src/ipa/raspberrypi/meson.build               |   2 +
>  src/ipa/rkisp1/meson.build                    |   2 +
>  src/ipa/vimc/data/meson.build                 |   2 +
>  src/ipa/vimc/meson.build                      |   2 +
>  src/libcamera/include/meson.build             |   2 +
>  src/libcamera/meson.build                     |   2 +
>  src/libcamera/pipeline/ipu3/meson.build       |   2 +
>  src/libcamera/pipeline/meson.build            |   2 +
>  .../pipeline/raspberrypi/meson.build          |   2 +
>  src/libcamera/pipeline/rkisp1/meson.build     |   2 +
>  src/libcamera/pipeline/simple/meson.build     |   2 +
>  src/libcamera/pipeline/uvcvideo/meson.build   |   2 +
>  src/libcamera/pipeline/vimc/meson.build       |   2 +
>  src/libcamera/proxy/meson.build               |   2 +
>  src/libcamera/proxy/worker/meson.build        |   2 +
>  src/meson.build                               |   2 +
>  src/qcam/meson.build                          |   2 +
>  src/v4l2/meson.build                          |   2 +
>  test/camera/meson.build                       |   2 +
>  test/controls/meson.build                     |   2 +
>  test/ipa/meson.build                          |   2 +
>  test/ipc/meson.build                          |   2 +
>  test/libtest/meson.build                      |   2 +
>  test/log/meson.build                          |   2 +
>  test/media_device/meson.build                 |   2 +
>  test/meson.build                              |   2 +
>  test/pipeline/ipu3/meson.build                |   2 +
>  test/pipeline/meson.build                     |   2 +
>  test/pipeline/rkisp1/meson.build              |   2 +
>  test/process/meson.build                      |   2 +
>  test/serialization/meson.build                |   2 +
>  test/stream/meson.build                       |   2 +
>  test/v4l2_subdevice/meson.build               |   2 +
>  test/v4l2_videodevice/meson.build             |   2 +
>  utils/ipu3/meson.build                        |   2 +
>  utils/meson.build                             |   2 +
>  49 files changed, 215 insertions(+)
>  create mode 100644 LICENSES/CC0-1.0.txt
>
> diff --git a/Documentation/meson.build b/Documentation/meson.build
> index c4e9892470de..b3b4f0b66f57 100644
> --- a/Documentation/meson.build
> +++ b/Documentation/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  doc_install_dir = join_paths(get_option('datadir'), 'doc',
>                               'libcamera-@0@'.format(libcamera_version))
>
> diff --git a/LICENSES/CC0-1.0.txt b/LICENSES/CC0-1.0.txt
> new file mode 100644
> index 000000000000..a343ccd4335f
> --- /dev/null
> +++ b/LICENSES/CC0-1.0.txt
> @@ -0,0 +1,119 @@
> +Creative Commons Legal Code
> +
> +CC0 1.0 Universal CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES
> +NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE
> +AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION
> +ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE
> +OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS
> +LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION
> +OR WORKS PROVIDED HEREUNDER.
> +
> +Statement of Purpose
> +
> +The laws of most jurisdictions throughout the world automatically confer exclusive
> +Copyright and Related Rights (defined below) upon the creator and subsequent
> +owner(s) (each and all, an "owner") of an original work of authorship and/or
> +a database (each, a "Work").
> +
> +Certain owners wish to permanently relinquish those rights to a Work for the
> +purpose of contributing to a commons of creative, cultural and scientific
> +works ("Commons") that the public can reliably and without fear of later claims
> +of infringement build upon, modify, incorporate in other works, reuse and
> +redistribute as freely as possible in any form whatsoever and for any purposes,
> +including without limitation commercial purposes. These owners may contribute
> +to the Commons to promote the ideal of a free culture and the further production
> +of creative, cultural and scientific works, or to gain reputation or greater
> +distribution for their Work in part through the use and efforts of others.
> +
> +For these and/or other purposes and motivations, and without any expectation
> +of additional consideration or compensation, the person associating CC0 with
> +a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
> +and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
> +and publicly distribute the Work under its terms, with knowledge of his or
> +her Copyright and Related Rights in the Work and the meaning and intended
> +legal effect of CC0 on those rights.
> +
> +1. Copyright and Related Rights. A Work made available under CC0 may be protected
> +by copyright and related or neighboring rights ("Copyright and Related Rights").
> +Copyright and Related Rights include, but are not limited to, the following:
> +
> +i. the right to reproduce, adapt, distribute, perform, display, communicate,
> +and translate a Work;
> +
> +      ii. moral rights retained by the original author(s) and/or performer(s);
> +
> +iii. publicity and privacy rights pertaining to a person's image or likeness
> +depicted in a Work;
> +
> +iv. rights protecting against unfair competition in regards to a Work, subject
> +to the limitations in paragraph 4(a), below;
> +
> +v. rights protecting the extraction, dissemination, use and reuse of data
> +in a Work;
> +
> +vi. database rights (such as those arising under Directive 96/9/EC of the
> +European Parliament and of the Council of 11 March 1996 on the legal protection
> +of databases, and under any national implementation thereof, including any
> +amended or successor version of such directive); and
> +
> +vii. other similar, equivalent or corresponding rights throughout the world
> +based on applicable law or treaty, and any national implementations thereof.
> +
> +2. Waiver. To the greatest extent permitted by, but not in contravention of,
> +applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
> +unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
> +and Related Rights and associated claims and causes of action, whether now
> +known or unknown (including existing as well as future claims and causes of
> +action), in the Work (i) in all territories worldwide, (ii) for the maximum
> +duration provided by applicable law or treaty (including future time extensions),
> +(iii) in any current or future medium and for any number of copies, and (iv)
> +for any purpose whatsoever, including without limitation commercial, advertising
> +or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the
> +benefit of each member of the public at large and to the detriment of Affirmer's
> +heirs and successors, fully intending that such Waiver shall not be subject
> +to revocation, rescission, cancellation, termination, or any other legal or
> +equitable action to disrupt the quiet enjoyment of the Work by the public
> +as contemplated by Affirmer's express Statement of Purpose.
> +
> +3. Public License Fallback. Should any part of the Waiver for any reason be
> +judged legally invalid or ineffective under applicable law, then the Waiver
> +shall be preserved to the maximum extent permitted taking into account Affirmer's
> +express Statement of Purpose. In addition, to the extent the Waiver is so
> +judged Affirmer hereby grants to each affected person a royalty-free, non
> +transferable, non sublicensable, non exclusive, irrevocable and unconditional
> +license to exercise Affirmer's Copyright and Related Rights in the Work (i)
> +in all territories worldwide, (ii) for the maximum duration provided by applicable
> +law or treaty (including future time extensions), (iii) in any current or
> +future medium and for any number of copies, and (iv) for any purpose whatsoever,
> +including without limitation commercial, advertising or promotional purposes
> +(the "License"). The License shall be deemed effective as of the date CC0
> +was applied by Affirmer to the Work. Should any part of the License for any
> +reason be judged legally invalid or ineffective under applicable law, such
> +partial invalidity or ineffectiveness shall not invalidate the remainder of
> +the License, and in such case Affirmer hereby affirms that he or she will
> +not (i) exercise any of his or her remaining Copyright and Related Rights
> +in the Work or (ii) assert any associated claims and causes of action with
> +respect to the Work, in either case contrary to Affirmer's express Statement
> +of Purpose.
> +
> +   4. Limitations and Disclaimers.
> +
> +a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered,
> +licensed or otherwise affected by this document.
> +
> +b. Affirmer offers the Work as-is and makes no representations or warranties
> +of any kind concerning the Work, express, implied, statutory or otherwise,
> +including without limitation warranties of title, merchantability, fitness
> +for a particular purpose, non infringement, or the absence of latent or other
> +defects, accuracy, or the present or absence of errors, whether or not discoverable,
> +all to the greatest extent permissible under applicable law.
> +
> +c. Affirmer disclaims responsibility for clearing rights of other persons
> +that may apply to the Work or any use thereof, including without limitation
> +any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims
> +responsibility for obtaining any necessary consents, permissions or other
> +rights required for any use of the Work.
> +
> +d. Affirmer understands and acknowledges that Creative Commons is not a party
> +to this document and has no duty or obligation with respect to this CC0 or
> +use of the Work.
> diff --git a/include/android/meson.build b/include/android/meson.build
> index 69f1c38edada..da2504f2e493 100644
> --- a/include/android/meson.build
> +++ b/include/android/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  android_includes = ([
>      include_directories('hardware/libhardware/include/'),
>      include_directories('metadata/'),
> diff --git a/include/ipa/meson.build b/include/ipa/meson.build
> index 695a4183a0e8..3d5c0dd69bb4 100644
> --- a/include/ipa/meson.build
> +++ b/include/ipa/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_ipa_api = files([
>      'ipa_controls.h',
>      'ipa_interface.h',
> diff --git a/include/libcamera/meson.build b/include/libcamera/meson.build
> index 23c01d3837ba..cea47eb83030 100644
> --- a/include/libcamera/meson.build
> +++ b/include/libcamera/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_api = files([
>      'bound_method.h',
>      'buffer.h',
> diff --git a/include/meson.build b/include/meson.build
> index 42b2453445b5..4f41c9ceeb4c 100644
> --- a/include/meson.build
> +++ b/include/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_include_dir = 'libcamera'
>
>  subdir('android')
> diff --git a/meson.build b/meson.build
> index 59829e1942ca..e898782a28b0 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  project('libcamera', 'c', 'cpp',
>      meson_version : '>= 0.47',
>      version : '0.0.0',
> diff --git a/meson_options.txt b/meson_options.txt
> index 68f4f48004e5..badace151bb6 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  option('android',
>          type : 'boolean',
>          value : false,
> diff --git a/src/android/meson.build b/src/android/meson.build
> index 5a5a332e6a6f..822cad621f01 100644
> --- a/src/android/meson.build
> +++ b/src/android/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  android_hal_sources = files([
>      'camera3_hal.cpp',
>      'camera_hal_manager.cpp',
> diff --git a/src/cam/meson.build b/src/cam/meson.build
> index 162d6333f94e..89e124fbae2a 100644
> --- a/src/cam/meson.build
> +++ b/src/cam/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  cam_sources = files([
>      'buffer_writer.cpp',
>      'capture.cpp',
> diff --git a/src/gstreamer/meson.build b/src/gstreamer/meson.build
> index e119e472cb58..c9f0c13d969d 100644
> --- a/src/gstreamer/meson.build
> +++ b/src/gstreamer/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_gst_sources = [
>      'gstlibcamera-utils.cpp',
>      'gstlibcamera.cpp',
> diff --git a/src/ipa/libipa/meson.build b/src/ipa/libipa/meson.build
> index 6f3cd4866ce3..2262640517a0 100644
> --- a/src/ipa/libipa/meson.build
> +++ b/src/ipa/libipa/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libipa_headers = files([
>      'ipa_interface_wrapper.h',
>  ])
> diff --git a/src/ipa/meson.build b/src/ipa/meson.build
> index b103479c1cd0..64deb601054c 100644
> --- a/src/ipa/meson.build
> +++ b/src/ipa/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  ipa_install_dir = join_paths(get_option('libdir'), 'libcamera')
>  ipa_data_dir = join_paths(get_option('datadir'), 'libcamera', 'ipa')
>  ipa_sysconf_dir = join_paths(get_option('sysconfdir'), 'libcamera', 'ipa')
> diff --git a/src/ipa/raspberrypi/meson.build b/src/ipa/raspberrypi/meson.build
> index 2dece3a468e8..697902e95bc1 100644
> --- a/src/ipa/raspberrypi/meson.build
> +++ b/src/ipa/raspberrypi/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  ipa_name = 'ipa_rpi'
>
>  rpi_ipa_deps = [
> diff --git a/src/ipa/rkisp1/meson.build b/src/ipa/rkisp1/meson.build
> index d7127ea8d1e9..ed9a6b6b8ec8 100644
> --- a/src/ipa/rkisp1/meson.build
> +++ b/src/ipa/rkisp1/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  ipa_name = 'ipa_rkisp1'
>
>  mod = shared_module(ipa_name,
> diff --git a/src/ipa/vimc/data/meson.build b/src/ipa/vimc/data/meson.build
> index c844926da7f2..6532662cfa94 100644
> --- a/src/ipa/vimc/data/meson.build
> +++ b/src/ipa/vimc/data/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  conf_files = files([
>      'vimc.conf',
>  ])
> diff --git a/src/ipa/vimc/meson.build b/src/ipa/vimc/meson.build
> index 22296a029642..8c9df854007a 100644
> --- a/src/ipa/vimc/meson.build
> +++ b/src/ipa/vimc/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  ipa_name = 'ipa_vimc'
>
>  mod = shared_module(ipa_name,
> diff --git a/src/libcamera/include/meson.build b/src/libcamera/include/meson.build
> index 683d06133741..1f6af579cca2 100644
> --- a/src/libcamera/include/meson.build
> +++ b/src/libcamera/include/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_headers = files([
>      'byte_stream_buffer.h',
>      'camera_controls.h',
> diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build
> index d8b4d7206aba..d42e9720dbd6 100644
> --- a/src/libcamera/meson.build
> +++ b/src/libcamera/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_sources = files([
>      'bound_method.cpp',
>      'buffer.cpp',
> diff --git a/src/libcamera/pipeline/ipu3/meson.build b/src/libcamera/pipeline/ipu3/meson.build
> index 0ab766a257a0..0e8c5a14f2b3 100644
> --- a/src/libcamera/pipeline/ipu3/meson.build
> +++ b/src/libcamera/pipeline/ipu3/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_sources += files([
>      'ipu3.cpp',
>  ])
> diff --git a/src/libcamera/pipeline/meson.build b/src/libcamera/pipeline/meson.build
> index 190ca5a8db92..46424493aa37 100644
> --- a/src/libcamera/pipeline/meson.build
> +++ b/src/libcamera/pipeline/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  foreach pipeline : get_option('pipelines')
>      subdir(pipeline)
>  endforeach
> diff --git a/src/libcamera/pipeline/raspberrypi/meson.build b/src/libcamera/pipeline/raspberrypi/meson.build
> index 737857977831..fc117b77bdd1 100644
> --- a/src/libcamera/pipeline/raspberrypi/meson.build
> +++ b/src/libcamera/pipeline/raspberrypi/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_sources += files([
>      'raspberrypi.cpp'
>  ])
> diff --git a/src/libcamera/pipeline/rkisp1/meson.build b/src/libcamera/pipeline/rkisp1/meson.build
> index d04fb45223e7..1ab3964a6db1 100644
> --- a/src/libcamera/pipeline/rkisp1/meson.build
> +++ b/src/libcamera/pipeline/rkisp1/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_sources += files([
>      'rkisp1.cpp',
>      'timeline.cpp',
> diff --git a/src/libcamera/pipeline/simple/meson.build b/src/libcamera/pipeline/simple/meson.build
> index 8372f24e3788..9c99b32f69f3 100644
> --- a/src/libcamera/pipeline/simple/meson.build
> +++ b/src/libcamera/pipeline/simple/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_sources += files([
>      'converter.cpp',
>      'simple.cpp',
> diff --git a/src/libcamera/pipeline/uvcvideo/meson.build b/src/libcamera/pipeline/uvcvideo/meson.build
> index c19ae2389f48..a3c2efd424bf 100644
> --- a/src/libcamera/pipeline/uvcvideo/meson.build
> +++ b/src/libcamera/pipeline/uvcvideo/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_sources += files([
>      'uvcvideo.cpp',
>  ])
> diff --git a/src/libcamera/pipeline/vimc/meson.build b/src/libcamera/pipeline/vimc/meson.build
> index 615ecd20f1a2..290eefb5d076 100644
> --- a/src/libcamera/pipeline/vimc/meson.build
> +++ b/src/libcamera/pipeline/vimc/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_sources += files([
>      'vimc.cpp',
>  ])
> diff --git a/src/libcamera/proxy/meson.build b/src/libcamera/proxy/meson.build
> index 6c00d5f30ad2..bd804750748a 100644
> --- a/src/libcamera/proxy/meson.build
> +++ b/src/libcamera/proxy/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libcamera_sources += files([
>      'ipa_proxy_linux.cpp',
>      'ipa_proxy_thread.cpp',
> diff --git a/src/libcamera/proxy/worker/meson.build b/src/libcamera/proxy/worker/meson.build
> index 839156f7591a..1b1bee5e0170 100644
> --- a/src/libcamera/proxy/worker/meson.build
> +++ b/src/libcamera/proxy/worker/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  ipa_proxy_sources = [
>      ['ipa_proxy_linux', 'ipa_proxy_linux_worker.cpp']
>  ]
> diff --git a/src/meson.build b/src/meson.build
> index c9c1008562b1..d69b4c1ea978 100644
> --- a/src/meson.build
> +++ b/src/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  if get_option('android')
>      subdir('android')
>  endif
> diff --git a/src/qcam/meson.build b/src/qcam/meson.build
> index 949ef6149c8a..045db52acf26 100644
> --- a/src/qcam/meson.build
> +++ b/src/qcam/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  qcam_sources = files([
>      '../cam/options.cpp',
>      '../cam/stream_options.cpp',
> diff --git a/src/v4l2/meson.build b/src/v4l2/meson.build
> index efab968f7729..fc1be82d1b02 100644
> --- a/src/v4l2/meson.build
> +++ b/src/v4l2/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  v4l2_compat_sources = files([
>      'v4l2_camera.cpp',
>      'v4l2_camera_proxy.cpp',
> diff --git a/test/camera/meson.build b/test/camera/meson.build
> index e2a6660a7a92..0395e7ddc7a4 100644
> --- a/test/camera/meson.build
> +++ b/test/camera/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  # Tests are listed in order of complexity.
>  # They are not alphabetically sorted.
>  camera_tests = [
> diff --git a/test/controls/meson.build b/test/controls/meson.build
> index 7fff2413007e..545fb03b16c6 100644
> --- a/test/controls/meson.build
> +++ b/test/controls/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  control_tests = [
>      [ 'control_info',               'control_info.cpp' ],
>      [ 'control_info_map',           'control_info_map.cpp' ],
> diff --git a/test/ipa/meson.build b/test/ipa/meson.build
> index f925c50a085e..ba672f3f9d8b 100644
> --- a/test/ipa/meson.build
> +++ b/test/ipa/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  ipa_test = [
>      ['ipa_module_test',     'ipa_module_test.cpp'],
>      ['ipa_interface_test',  'ipa_interface_test.cpp'],
> diff --git a/test/ipc/meson.build b/test/ipc/meson.build
> index cc46b41c7687..650df1d63444 100644
> --- a/test/ipc/meson.build
> +++ b/test/ipc/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  ipc_tests = [
>      [ 'unixsocket',  'unixsocket.cpp' ],
>  ]
> diff --git a/test/libtest/meson.build b/test/libtest/meson.build
> index 33565e0eb3b6..481f6d6baa61 100644
> --- a/test/libtest/meson.build
> +++ b/test/libtest/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  libtest_sources = files([
>      'buffer_source.cpp',
>      'camera_test.cpp',
> diff --git a/test/log/meson.build b/test/log/meson.build
> index 95f6c1a2ae4a..8cd664e04a00 100644
> --- a/test/log/meson.build
> +++ b/test/log/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  log_test = [
>      ['log_api',     'log_api.cpp'],
>      ['log_process', 'log_process.cpp'],
> diff --git a/test/media_device/meson.build b/test/media_device/meson.build
> index 6a0e468434b5..1dfcdd8bd744 100644
> --- a/test/media_device/meson.build
> +++ b/test/media_device/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  lib_mdev_test_sources = files([
>      'media_device_test.cpp',
>  ])
> diff --git a/test/meson.build b/test/meson.build
> index 5a45a85effd3..bd7da147c70e 100644
> --- a/test/meson.build
> +++ b/test/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  subdir('libtest')
>
>  subdir('camera')
> diff --git a/test/pipeline/ipu3/meson.build b/test/pipeline/ipu3/meson.build
> index d02927c9af86..d062ecd269f2 100644
> --- a/test/pipeline/ipu3/meson.build
> +++ b/test/pipeline/ipu3/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  ipu3_test = [
>      ['ipu3_pipeline_test',            'ipu3_pipeline_test.cpp'],
>  ]
> diff --git a/test/pipeline/meson.build b/test/pipeline/meson.build
> index 157f789ceb25..6e7901fee38f 100644
> --- a/test/pipeline/meson.build
> +++ b/test/pipeline/meson.build
> @@ -1,2 +1,4 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  subdir('ipu3')
>  subdir('rkisp1')
> diff --git a/test/pipeline/rkisp1/meson.build b/test/pipeline/rkisp1/meson.build
> index d3f974964fc4..ece147b054e4 100644
> --- a/test/pipeline/rkisp1/meson.build
> +++ b/test/pipeline/rkisp1/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  rkisp1_test = [
>      ['rkisp1_pipeline_test',            'rkisp1_pipeline_test.cpp'],
>  ]
> diff --git a/test/process/meson.build b/test/process/meson.build
> index c4d83d6c8b39..c215fa7e6c12 100644
> --- a/test/process/meson.build
> +++ b/test/process/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  process_tests = [
>      [ 'process_test',  'process_test.cpp' ],
>  ]
> diff --git a/test/serialization/meson.build b/test/serialization/meson.build
> index d78d92e61887..a9d9cbcb7d80 100644
> --- a/test/serialization/meson.build
> +++ b/test/serialization/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  serialization_tests = [
>      [ 'control_serialization',    'control_serialization.cpp' ],
>  ]
> diff --git a/test/stream/meson.build b/test/stream/meson.build
> index 005f4aa4996a..2b9b29a9143b 100644
> --- a/test/stream/meson.build
> +++ b/test/stream/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  stream_tests = [
>      [ 'stream_formats', 'stream_formats.cpp' ],
>  ]
> diff --git a/test/v4l2_subdevice/meson.build b/test/v4l2_subdevice/meson.build
> index 0521984b2a78..5f0882ca9772 100644
> --- a/test/v4l2_subdevice/meson.build
> +++ b/test/v4l2_subdevice/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  v4l2_subdevice_tests = [
>    [ 'list_formats',             'list_formats.cpp'],
>    [ 'test_formats',             'test_formats.cpp'],
> diff --git a/test/v4l2_videodevice/meson.build b/test/v4l2_videodevice/meson.build
> index 685fcf6d16d7..b4bb30908027 100644
> --- a/test/v4l2_videodevice/meson.build
> +++ b/test/v4l2_videodevice/meson.build
> @@ -1,3 +1,5 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  # Tests are listed in order of complexity.
>  # They are not alphabetically sorted.
>  v4l2_videodevice_tests = [
> diff --git a/utils/ipu3/meson.build b/utils/ipu3/meson.build
> index 49c45856eea6..88049f589561 100644
> --- a/utils/ipu3/meson.build
> +++ b/utils/ipu3/meson.build
> @@ -1 +1,3 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  ipu3_unpack = executable('ipu3-unpack', 'ipu3-unpack.c')
> diff --git a/utils/meson.build b/utils/meson.build
> index f434c79c0ae3..c3cd9d69f887 100644
> --- a/utils/meson.build
> +++ b/utils/meson.build
> @@ -1 +1,3 @@
> +# SPDX-License-Identifier: CC0-1.0
> +
>  subdir('ipu3')
> --
> Regards,
>
> Laurent Pinchart
>
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel@lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel

Patch

diff --git a/Documentation/meson.build b/Documentation/meson.build
index c4e9892470de..b3b4f0b66f57 100644
--- a/Documentation/meson.build
+++ b/Documentation/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 doc_install_dir = join_paths(get_option('datadir'), 'doc',
                              'libcamera-@0@'.format(libcamera_version))
 
diff --git a/LICENSES/CC0-1.0.txt b/LICENSES/CC0-1.0.txt
new file mode 100644
index 000000000000..a343ccd4335f
--- /dev/null
+++ b/LICENSES/CC0-1.0.txt
@@ -0,0 +1,119 @@ 
+Creative Commons Legal Code
+
+CC0 1.0 Universal CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES
+NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE
+AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION
+ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE
+OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS
+LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION
+OR WORKS PROVIDED HEREUNDER.
+
+Statement of Purpose
+
+The laws of most jurisdictions throughout the world automatically confer exclusive
+Copyright and Related Rights (defined below) upon the creator and subsequent
+owner(s) (each and all, an "owner") of an original work of authorship and/or
+a database (each, a "Work").
+
+Certain owners wish to permanently relinquish those rights to a Work for the
+purpose of contributing to a commons of creative, cultural and scientific
+works ("Commons") that the public can reliably and without fear of later claims
+of infringement build upon, modify, incorporate in other works, reuse and
+redistribute as freely as possible in any form whatsoever and for any purposes,
+including without limitation commercial purposes. These owners may contribute
+to the Commons to promote the ideal of a free culture and the further production
+of creative, cultural and scientific works, or to gain reputation or greater
+distribution for their Work in part through the use and efforts of others.
+
+For these and/or other purposes and motivations, and without any expectation
+of additional consideration or compensation, the person associating CC0 with
+a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
+and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
+and publicly distribute the Work under its terms, with knowledge of his or
+her Copyright and Related Rights in the Work and the meaning and intended
+legal effect of CC0 on those rights.
+
+1. Copyright and Related Rights. A Work made available under CC0 may be protected
+by copyright and related or neighboring rights ("Copyright and Related Rights").
+Copyright and Related Rights include, but are not limited to, the following:
+
+i. the right to reproduce, adapt, distribute, perform, display, communicate,
+and translate a Work;
+
+      ii. moral rights retained by the original author(s) and/or performer(s);
+
+iii. publicity and privacy rights pertaining to a person's image or likeness
+depicted in a Work;
+
+iv. rights protecting against unfair competition in regards to a Work, subject
+to the limitations in paragraph 4(a), below;
+
+v. rights protecting the extraction, dissemination, use and reuse of data
+in a Work;
+
+vi. database rights (such as those arising under Directive 96/9/EC of the
+European Parliament and of the Council of 11 March 1996 on the legal protection
+of databases, and under any national implementation thereof, including any
+amended or successor version of such directive); and
+
+vii. other similar, equivalent or corresponding rights throughout the world
+based on applicable law or treaty, and any national implementations thereof.
+
+2. Waiver. To the greatest extent permitted by, but not in contravention of,
+applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
+unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
+and Related Rights and associated claims and causes of action, whether now
+known or unknown (including existing as well as future claims and causes of
+action), in the Work (i) in all territories worldwide, (ii) for the maximum
+duration provided by applicable law or treaty (including future time extensions),
+(iii) in any current or future medium and for any number of copies, and (iv)
+for any purpose whatsoever, including without limitation commercial, advertising
+or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the
+benefit of each member of the public at large and to the detriment of Affirmer's
+heirs and successors, fully intending that such Waiver shall not be subject
+to revocation, rescission, cancellation, termination, or any other legal or
+equitable action to disrupt the quiet enjoyment of the Work by the public
+as contemplated by Affirmer's express Statement of Purpose.
+
+3. Public License Fallback. Should any part of the Waiver for any reason be
+judged legally invalid or ineffective under applicable law, then the Waiver
+shall be preserved to the maximum extent permitted taking into account Affirmer's
+express Statement of Purpose. In addition, to the extent the Waiver is so
+judged Affirmer hereby grants to each affected person a royalty-free, non
+transferable, non sublicensable, non exclusive, irrevocable and unconditional
+license to exercise Affirmer's Copyright and Related Rights in the Work (i)
+in all territories worldwide, (ii) for the maximum duration provided by applicable
+law or treaty (including future time extensions), (iii) in any current or
+future medium and for any number of copies, and (iv) for any purpose whatsoever,
+including without limitation commercial, advertising or promotional purposes
+(the "License"). The License shall be deemed effective as of the date CC0
+was applied by Affirmer to the Work. Should any part of the License for any
+reason be judged legally invalid or ineffective under applicable law, such
+partial invalidity or ineffectiveness shall not invalidate the remainder of
+the License, and in such case Affirmer hereby affirms that he or she will
+not (i) exercise any of his or her remaining Copyright and Related Rights
+in the Work or (ii) assert any associated claims and causes of action with
+respect to the Work, in either case contrary to Affirmer's express Statement
+of Purpose.
+
+   4. Limitations and Disclaimers.
+
+a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered,
+licensed or otherwise affected by this document.
+
+b. Affirmer offers the Work as-is and makes no representations or warranties
+of any kind concerning the Work, express, implied, statutory or otherwise,
+including without limitation warranties of title, merchantability, fitness
+for a particular purpose, non infringement, or the absence of latent or other
+defects, accuracy, or the present or absence of errors, whether or not discoverable,
+all to the greatest extent permissible under applicable law.
+
+c. Affirmer disclaims responsibility for clearing rights of other persons
+that may apply to the Work or any use thereof, including without limitation
+any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims
+responsibility for obtaining any necessary consents, permissions or other
+rights required for any use of the Work.
+
+d. Affirmer understands and acknowledges that Creative Commons is not a party
+to this document and has no duty or obligation with respect to this CC0 or
+use of the Work.
diff --git a/include/android/meson.build b/include/android/meson.build
index 69f1c38edada..da2504f2e493 100644
--- a/include/android/meson.build
+++ b/include/android/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 android_includes = ([
     include_directories('hardware/libhardware/include/'),
     include_directories('metadata/'),
diff --git a/include/ipa/meson.build b/include/ipa/meson.build
index 695a4183a0e8..3d5c0dd69bb4 100644
--- a/include/ipa/meson.build
+++ b/include/ipa/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 libcamera_ipa_api = files([
     'ipa_controls.h',
     'ipa_interface.h',
diff --git a/include/libcamera/meson.build b/include/libcamera/meson.build
index 23c01d3837ba..cea47eb83030 100644
--- a/include/libcamera/meson.build
+++ b/include/libcamera/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 libcamera_api = files([
     'bound_method.h',
     'buffer.h',
diff --git a/include/meson.build b/include/meson.build
index 42b2453445b5..4f41c9ceeb4c 100644
--- a/include/meson.build
+++ b/include/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 libcamera_include_dir = 'libcamera'
 
 subdir('android')
diff --git a/meson.build b/meson.build
index 59829e1942ca..e898782a28b0 100644
--- a/meson.build
+++ b/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 project('libcamera', 'c', 'cpp',
     meson_version : '>= 0.47',
     version : '0.0.0',
diff --git a/meson_options.txt b/meson_options.txt
index 68f4f48004e5..badace151bb6 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 option('android',
         type : 'boolean',
         value : false,
diff --git a/src/android/meson.build b/src/android/meson.build
index 5a5a332e6a6f..822cad621f01 100644
--- a/src/android/meson.build
+++ b/src/android/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 android_hal_sources = files([
     'camera3_hal.cpp',
     'camera_hal_manager.cpp',
diff --git a/src/cam/meson.build b/src/cam/meson.build
index 162d6333f94e..89e124fbae2a 100644
--- a/src/cam/meson.build
+++ b/src/cam/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 cam_sources = files([
     'buffer_writer.cpp',
     'capture.cpp',
diff --git a/src/gstreamer/meson.build b/src/gstreamer/meson.build
index e119e472cb58..c9f0c13d969d 100644
--- a/src/gstreamer/meson.build
+++ b/src/gstreamer/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 libcamera_gst_sources = [
     'gstlibcamera-utils.cpp',
     'gstlibcamera.cpp',
diff --git a/src/ipa/libipa/meson.build b/src/ipa/libipa/meson.build
index 6f3cd4866ce3..2262640517a0 100644
--- a/src/ipa/libipa/meson.build
+++ b/src/ipa/libipa/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 libipa_headers = files([
     'ipa_interface_wrapper.h',
 ])
diff --git a/src/ipa/meson.build b/src/ipa/meson.build
index b103479c1cd0..64deb601054c 100644
--- a/src/ipa/meson.build
+++ b/src/ipa/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 ipa_install_dir = join_paths(get_option('libdir'), 'libcamera')
 ipa_data_dir = join_paths(get_option('datadir'), 'libcamera', 'ipa')
 ipa_sysconf_dir = join_paths(get_option('sysconfdir'), 'libcamera', 'ipa')
diff --git a/src/ipa/raspberrypi/meson.build b/src/ipa/raspberrypi/meson.build
index 2dece3a468e8..697902e95bc1 100644
--- a/src/ipa/raspberrypi/meson.build
+++ b/src/ipa/raspberrypi/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 ipa_name = 'ipa_rpi'
 
 rpi_ipa_deps = [
diff --git a/src/ipa/rkisp1/meson.build b/src/ipa/rkisp1/meson.build
index d7127ea8d1e9..ed9a6b6b8ec8 100644
--- a/src/ipa/rkisp1/meson.build
+++ b/src/ipa/rkisp1/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 ipa_name = 'ipa_rkisp1'
 
 mod = shared_module(ipa_name,
diff --git a/src/ipa/vimc/data/meson.build b/src/ipa/vimc/data/meson.build
index c844926da7f2..6532662cfa94 100644
--- a/src/ipa/vimc/data/meson.build
+++ b/src/ipa/vimc/data/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 conf_files = files([
     'vimc.conf',
 ])
diff --git a/src/ipa/vimc/meson.build b/src/ipa/vimc/meson.build
index 22296a029642..8c9df854007a 100644
--- a/src/ipa/vimc/meson.build
+++ b/src/ipa/vimc/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 ipa_name = 'ipa_vimc'
 
 mod = shared_module(ipa_name,
diff --git a/src/libcamera/include/meson.build b/src/libcamera/include/meson.build
index 683d06133741..1f6af579cca2 100644
--- a/src/libcamera/include/meson.build
+++ b/src/libcamera/include/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 libcamera_headers = files([
     'byte_stream_buffer.h',
     'camera_controls.h',
diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build
index d8b4d7206aba..d42e9720dbd6 100644
--- a/src/libcamera/meson.build
+++ b/src/libcamera/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 libcamera_sources = files([
     'bound_method.cpp',
     'buffer.cpp',
diff --git a/src/libcamera/pipeline/ipu3/meson.build b/src/libcamera/pipeline/ipu3/meson.build
index 0ab766a257a0..0e8c5a14f2b3 100644
--- a/src/libcamera/pipeline/ipu3/meson.build
+++ b/src/libcamera/pipeline/ipu3/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 libcamera_sources += files([
     'ipu3.cpp',
 ])
diff --git a/src/libcamera/pipeline/meson.build b/src/libcamera/pipeline/meson.build
index 190ca5a8db92..46424493aa37 100644
--- a/src/libcamera/pipeline/meson.build
+++ b/src/libcamera/pipeline/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 foreach pipeline : get_option('pipelines')
     subdir(pipeline)
 endforeach
diff --git a/src/libcamera/pipeline/raspberrypi/meson.build b/src/libcamera/pipeline/raspberrypi/meson.build
index 737857977831..fc117b77bdd1 100644
--- a/src/libcamera/pipeline/raspberrypi/meson.build
+++ b/src/libcamera/pipeline/raspberrypi/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 libcamera_sources += files([
     'raspberrypi.cpp'
 ])
diff --git a/src/libcamera/pipeline/rkisp1/meson.build b/src/libcamera/pipeline/rkisp1/meson.build
index d04fb45223e7..1ab3964a6db1 100644
--- a/src/libcamera/pipeline/rkisp1/meson.build
+++ b/src/libcamera/pipeline/rkisp1/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 libcamera_sources += files([
     'rkisp1.cpp',
     'timeline.cpp',
diff --git a/src/libcamera/pipeline/simple/meson.build b/src/libcamera/pipeline/simple/meson.build
index 8372f24e3788..9c99b32f69f3 100644
--- a/src/libcamera/pipeline/simple/meson.build
+++ b/src/libcamera/pipeline/simple/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 libcamera_sources += files([
     'converter.cpp',
     'simple.cpp',
diff --git a/src/libcamera/pipeline/uvcvideo/meson.build b/src/libcamera/pipeline/uvcvideo/meson.build
index c19ae2389f48..a3c2efd424bf 100644
--- a/src/libcamera/pipeline/uvcvideo/meson.build
+++ b/src/libcamera/pipeline/uvcvideo/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 libcamera_sources += files([
     'uvcvideo.cpp',
 ])
diff --git a/src/libcamera/pipeline/vimc/meson.build b/src/libcamera/pipeline/vimc/meson.build
index 615ecd20f1a2..290eefb5d076 100644
--- a/src/libcamera/pipeline/vimc/meson.build
+++ b/src/libcamera/pipeline/vimc/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 libcamera_sources += files([
     'vimc.cpp',
 ])
diff --git a/src/libcamera/proxy/meson.build b/src/libcamera/proxy/meson.build
index 6c00d5f30ad2..bd804750748a 100644
--- a/src/libcamera/proxy/meson.build
+++ b/src/libcamera/proxy/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 libcamera_sources += files([
     'ipa_proxy_linux.cpp',
     'ipa_proxy_thread.cpp',
diff --git a/src/libcamera/proxy/worker/meson.build b/src/libcamera/proxy/worker/meson.build
index 839156f7591a..1b1bee5e0170 100644
--- a/src/libcamera/proxy/worker/meson.build
+++ b/src/libcamera/proxy/worker/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 ipa_proxy_sources = [
     ['ipa_proxy_linux', 'ipa_proxy_linux_worker.cpp']
 ]
diff --git a/src/meson.build b/src/meson.build
index c9c1008562b1..d69b4c1ea978 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 if get_option('android')
     subdir('android')
 endif
diff --git a/src/qcam/meson.build b/src/qcam/meson.build
index 949ef6149c8a..045db52acf26 100644
--- a/src/qcam/meson.build
+++ b/src/qcam/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 qcam_sources = files([
     '../cam/options.cpp',
     '../cam/stream_options.cpp',
diff --git a/src/v4l2/meson.build b/src/v4l2/meson.build
index efab968f7729..fc1be82d1b02 100644
--- a/src/v4l2/meson.build
+++ b/src/v4l2/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 v4l2_compat_sources = files([
     'v4l2_camera.cpp',
     'v4l2_camera_proxy.cpp',
diff --git a/test/camera/meson.build b/test/camera/meson.build
index e2a6660a7a92..0395e7ddc7a4 100644
--- a/test/camera/meson.build
+++ b/test/camera/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 # Tests are listed in order of complexity.
 # They are not alphabetically sorted.
 camera_tests = [
diff --git a/test/controls/meson.build b/test/controls/meson.build
index 7fff2413007e..545fb03b16c6 100644
--- a/test/controls/meson.build
+++ b/test/controls/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 control_tests = [
     [ 'control_info',               'control_info.cpp' ],
     [ 'control_info_map',           'control_info_map.cpp' ],
diff --git a/test/ipa/meson.build b/test/ipa/meson.build
index f925c50a085e..ba672f3f9d8b 100644
--- a/test/ipa/meson.build
+++ b/test/ipa/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 ipa_test = [
     ['ipa_module_test',     'ipa_module_test.cpp'],
     ['ipa_interface_test',  'ipa_interface_test.cpp'],
diff --git a/test/ipc/meson.build b/test/ipc/meson.build
index cc46b41c7687..650df1d63444 100644
--- a/test/ipc/meson.build
+++ b/test/ipc/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 ipc_tests = [
     [ 'unixsocket',  'unixsocket.cpp' ],
 ]
diff --git a/test/libtest/meson.build b/test/libtest/meson.build
index 33565e0eb3b6..481f6d6baa61 100644
--- a/test/libtest/meson.build
+++ b/test/libtest/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 libtest_sources = files([
     'buffer_source.cpp',
     'camera_test.cpp',
diff --git a/test/log/meson.build b/test/log/meson.build
index 95f6c1a2ae4a..8cd664e04a00 100644
--- a/test/log/meson.build
+++ b/test/log/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 log_test = [
     ['log_api',     'log_api.cpp'],
     ['log_process', 'log_process.cpp'],
diff --git a/test/media_device/meson.build b/test/media_device/meson.build
index 6a0e468434b5..1dfcdd8bd744 100644
--- a/test/media_device/meson.build
+++ b/test/media_device/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 lib_mdev_test_sources = files([
     'media_device_test.cpp',
 ])
diff --git a/test/meson.build b/test/meson.build
index 5a45a85effd3..bd7da147c70e 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 subdir('libtest')
 
 subdir('camera')
diff --git a/test/pipeline/ipu3/meson.build b/test/pipeline/ipu3/meson.build
index d02927c9af86..d062ecd269f2 100644
--- a/test/pipeline/ipu3/meson.build
+++ b/test/pipeline/ipu3/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 ipu3_test = [
     ['ipu3_pipeline_test',            'ipu3_pipeline_test.cpp'],
 ]
diff --git a/test/pipeline/meson.build b/test/pipeline/meson.build
index 157f789ceb25..6e7901fee38f 100644
--- a/test/pipeline/meson.build
+++ b/test/pipeline/meson.build
@@ -1,2 +1,4 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 subdir('ipu3')
 subdir('rkisp1')
diff --git a/test/pipeline/rkisp1/meson.build b/test/pipeline/rkisp1/meson.build
index d3f974964fc4..ece147b054e4 100644
--- a/test/pipeline/rkisp1/meson.build
+++ b/test/pipeline/rkisp1/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 rkisp1_test = [
     ['rkisp1_pipeline_test',            'rkisp1_pipeline_test.cpp'],
 ]
diff --git a/test/process/meson.build b/test/process/meson.build
index c4d83d6c8b39..c215fa7e6c12 100644
--- a/test/process/meson.build
+++ b/test/process/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 process_tests = [
     [ 'process_test',  'process_test.cpp' ],
 ]
diff --git a/test/serialization/meson.build b/test/serialization/meson.build
index d78d92e61887..a9d9cbcb7d80 100644
--- a/test/serialization/meson.build
+++ b/test/serialization/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 serialization_tests = [
     [ 'control_serialization',    'control_serialization.cpp' ],
 ]
diff --git a/test/stream/meson.build b/test/stream/meson.build
index 005f4aa4996a..2b9b29a9143b 100644
--- a/test/stream/meson.build
+++ b/test/stream/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 stream_tests = [
     [ 'stream_formats', 'stream_formats.cpp' ],
 ]
diff --git a/test/v4l2_subdevice/meson.build b/test/v4l2_subdevice/meson.build
index 0521984b2a78..5f0882ca9772 100644
--- a/test/v4l2_subdevice/meson.build
+++ b/test/v4l2_subdevice/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 v4l2_subdevice_tests = [
   [ 'list_formats',             'list_formats.cpp'],
   [ 'test_formats',             'test_formats.cpp'],
diff --git a/test/v4l2_videodevice/meson.build b/test/v4l2_videodevice/meson.build
index 685fcf6d16d7..b4bb30908027 100644
--- a/test/v4l2_videodevice/meson.build
+++ b/test/v4l2_videodevice/meson.build
@@ -1,3 +1,5 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 # Tests are listed in order of complexity.
 # They are not alphabetically sorted.
 v4l2_videodevice_tests = [
diff --git a/utils/ipu3/meson.build b/utils/ipu3/meson.build
index 49c45856eea6..88049f589561 100644
--- a/utils/ipu3/meson.build
+++ b/utils/ipu3/meson.build
@@ -1 +1,3 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 ipu3_unpack = executable('ipu3-unpack', 'ipu3-unpack.c')
diff --git a/utils/meson.build b/utils/meson.build
index f434c79c0ae3..c3cd9d69f887 100644
--- a/utils/meson.build
+++ b/utils/meson.build
@@ -1 +1,3 @@ 
+# SPDX-License-Identifier: CC0-1.0
+
 subdir('ipu3')