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

Message ID 20200511173022.26053-1-laurent.pinchart@ideasonboard.com
State Superseded
Headers show
Series
  • [libcamera-devel] licenses: License all meson files under CC0-1.0
Related show

Commit Message

Laurent Pinchart May 11, 2020, 5:30 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>
---
 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/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 +
 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 +
 47 files changed, 211 insertions(+)
 create mode 100644 LICENSES/CC0-1.0.txt

Comments

Laurent Pinchart May 11, 2020, 5:37 p.m. UTC | #1
Giulio, Fabrice, Nicolas, Show,

You have contributed changes to meson.build files for libcamera in the
past, and those files didn't include an explicit license. This patch
fixes this issue. While we can discuss whether the meson.build files
meet the threshold of originality criteria necessary to receive
copyright protection, a simpler approach would be to receive your ack
for this change. Could you confirm if you're fine with this by replying
with an Acked-by tag ?

On Mon, May 11, 2020 at 08:30:22PM +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>
> ---
>  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/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 +
>  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 +
>  47 files changed, 211 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 166429f8583e..df0047a58a2d 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 cc3837ab8525..01b14c1c51df 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/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/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')
Giulio Benetti May 11, 2020, 10:17 p.m. UTC | #2
Hi Laurent, All,

Il 11/05/2020 19:37, Laurent Pinchart ha scritto:
> Giulio, Fabrice, Nicolas, Show,
> 
> You have contributed changes to meson.build files for libcamera in the
> past, and those files didn't include an explicit license. This patch
> fixes this issue. While we can discuss whether the meson.build files
> meet the threshold of originality criteria necessary to receive
> copyright protection, a simpler approach would be to receive your ack
> for this change. Could you confirm if you're fine with this by replying
> with an Acked-by tag ?

It's ok for me so...

> On Mon, May 11, 2020 at 08:30:22PM +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: Giulio Benetti <giulio.benetti@micronovasrl.com>

Best regards
Show Liu May 12, 2020, 2:13 a.m. UTC | #3
Hi Laurent,all,

On Tue, May 12, 2020 at 6:17 AM Giulio Benetti <
giulio.benetti@micronovasrl.com> wrote:

> Hi Laurent, All,
>
> Il 11/05/2020 19:37, Laurent Pinchart ha scritto:
> > Giulio, Fabrice, Nicolas, Show,
> >
> > You have contributed changes to meson.build files for libcamera in the
> > past, and those files didn't include an explicit license. This patch
> > fixes this issue. While we can discuss whether the meson.build files
> > meet the threshold of originality criteria necessary to receive
> > copyright protection, a simpler approach would be to receive your ack
> > for this change. Could you confirm if you're fine with this by replying
> > with an Acked-by tag ?
>
Sure

>
> It's ok for me so...
>
> > On Mon, May 11, 2020 at 08:30:22PM +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: Giulio Benetti <giulio.benetti@micronovasrl.com>
>
Acked-by: Show Liu <show.liu@linaro.org>

>
> Best regards
> --
> Giulio Benetti
> CTO
>
> MICRONOVA SRL
> Sede: Via A. Niedda 3 - 35010 Vigonza (PD)
> Tel. 049/8931563 - Fax 049/8931346
> Cod.Fiscale - P.IVA 02663420285
> Capitale Sociale € 26.000 i.v.
> Iscritta al Reg. Imprese di Padova N. 02663420285
> Numero R.E.A. 258642
>
> >> ---
> >>   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/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 +
> >>   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 +
> >>   47 files changed, 211 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 166429f8583e..df0047a58a2d 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 cc3837ab8525..01b14c1c51df 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/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/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')
> >
>
>

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 166429f8583e..df0047a58a2d 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 cc3837ab8525..01b14c1c51df 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/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/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')