[{"id":1656,"web_url":"https://patchwork.libcamera.org/comment/1656/","msgid":"<ec92ae99-8799-0d4c-3ada-4d8d414ed42e@ideasonboard.com>","date":"2019-05-22T07:39:44","subject":"Re: [libcamera-devel] [PATCH] libcamera: Auto-generate libcamera.h","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi Laurent,\n\nOn 21/05/2019 17:45, Laurent Pinchart wrote:\n> As shown by two missing includes, keeping the libcamera.h file in sync\n> when adding or removing headers is an error-prone manual process.\n> Automate it by generating the header automatically.\n\nGreat idea!\n\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nWith the shellcheck issues considered, and the tabs fixed up in meson.build:\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n\n> ---\n>  include/libcamera/gen-header.sh | 26 ++++++++++++++++++++++++++\n>  include/libcamera/libcamera.h   | 20 --------------------\n>  include/libcamera/meson.build   | 10 +++++++++-\n>  3 files changed, 35 insertions(+), 21 deletions(-)\n>  create mode 100755 include/libcamera/gen-header.sh\n>  delete mode 100644 include/libcamera/libcamera.h\n> \n> diff --git a/include/libcamera/gen-header.sh b/include/libcamera/gen-header.sh\n> new file mode 100755\n> index 000000000000..ea5b79a62520\n> --- /dev/null\n> +++ b/include/libcamera/gen-header.sh\n\nHrm... shouldn't this live in a utils directory?\n\nAlthough there are some strong arguments for keeping it in\ninclude/libcamera, such as:\n\n - It keeps the directory layout correct in git\n - The helper is in the place that the header will be output so it's\n   easy to find\n\n> @@ -0,0 +1,26 @@\n> +#!/bin/sh\n> +\n> +src_dir=$1\n> +dst_file=$2\n> +\n> +cat <<EOF > $dst_file\n> +/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> +/* This file is auto-generated, do not edit! */\n> +/*\n> + * Copyright (C) 2018, Google Inc.\n\nWhy not add `date +'%Y'` as it's autogenerated ? :-D\n\n> + *\n> + * libcamera.h - libcamera public API\n> + */\n> +#ifndef __LIBCAMERA_LIBCAMERA_H__\n> +#define __LIBCAMERA_LIBCAMERA_H__\n> +\n> +EOF\n> +\n> +for header in $src_dir/*.h ; do\n> +\techo \"#include <libcamera/$(basename $header)>\" >> $dst_file\n> +done\n\n\nAre we ever expecting to have subdirs here?\nI don't think so at the moment, and if we do - then we can update this\nat that point\n\n(I'm sure someone will notice if they can't include their headers :D)\n\n> +\n> +cat <<EOF >> $dst_file\n> +\n> +#endif /* __LIBCAMERA_LIBCAMERA_H__ */\n> +EOF\n\n\nHere's the output of running shellcheck on this script:\n\n> shellcheck ./include/libcamera/gen-header.sh \n> \n> In ./include/libcamera/gen-header.sh line 6:\n> cat <<EOF > $dst_file\n>             ^-- SC2086: Double quote to prevent globbing and word splitting.\n> \n> \n> In ./include/libcamera/gen-header.sh line 19:\n> for header in $src_dir/*.h ; do\n>               ^-- SC2231: Quote expansions in this for loop glob to prevent wordsplitting, e.g. \"$dir\"/*.txt .\n> \n> \n> In ./include/libcamera/gen-header.sh line 20:\n>         echo \"#include <libcamera/$(basename $header)>\" >> $dst_file\n>                                              ^-- SC2086: Double quote to prevent globbing and word splitting.\n>                                                            ^-- SC2086: Double quote to prevent globbing and word splitting.\n> \n> \n> In ./include/libcamera/gen-header.sh line 23:\n> cat <<EOF >> $dst_file\n>              ^-- SC2086: Double quote to prevent globbing and word splitting.\n\n\n\n\n\n> diff --git a/include/libcamera/libcamera.h b/include/libcamera/libcamera.h\n> deleted file mode 100644\n> index dda576e906fb..000000000000\n> --- a/include/libcamera/libcamera.h\n> +++ /dev/null\n> @@ -1,20 +0,0 @@\n> -/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> -/*\n> - * Copyright (C) 2018, Google Inc.\n> - *\n> - * libcamera.h - libcamera public API\n> - */\n> -#ifndef __LIBCAMERA_LIBCAMERA_H__\n> -#define __LIBCAMERA_LIBCAMERA_H__\n> -\n> -#include <libcamera/buffer.h>\n> -#include <libcamera/camera.h>\n> -#include <libcamera/camera_manager.h>\n> -#include <libcamera/event_dispatcher.h>\n> -#include <libcamera/event_notifier.h>\n> -#include <libcamera/request.h>\n> -#include <libcamera/signal.h>\n> -#include <libcamera/stream.h>\n> -#include <libcamera/timer.h>\n> -\n> -#endif /* __LIBCAMERA_LIBCAMERA_H__ */\n> diff --git a/include/libcamera/meson.build b/include/libcamera/meson.build\n> index 83d226ac5078..46aff0b6bc2f 100644\n> --- a/include/libcamera/meson.build\n> +++ b/include/libcamera/meson.build\n> @@ -5,7 +5,6 @@ libcamera_api = files([\n>      'event_dispatcher.h',\n>      'event_notifier.h',\n>      'geometry.h',\n> -    'libcamera.h',\n>      'object.h',\n>      'request.h',\n>      'signal.h',\n> @@ -13,5 +12,14 @@ libcamera_api = files([\n>      'timer.h',\n>  ])\n>  \n> +gen_header = join_paths(meson.current_source_dir(), 'gen-header.sh')\n> +\n> +custom_target('gen-header',\n> +\t      input: meson.current_source_dir(),\n> +              output: 'libcamera.h',\n> +\t      command: [gen_header, '@INPUT@', '@OUTPUT@'],\n> +\t      install: true,\n> +\t      install_dir: 'include/libcamera')\n\nI think some tabs have snuck in there.\n\n\n\n\n> +\n>  install_headers(libcamera_api,\n>                  subdir : 'libcamera')\n>","headers":{"Return-Path":"<kieran.bingham@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 3DD8760BC9\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 22 May 2019 09:39:48 +0200 (CEST)","from [192.168.0.20]\n\t(cpc89242-aztw30-2-0-cust488.18-1.cable.virginm.net [86.31.129.233])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 84D7C443;\n\tWed, 22 May 2019 09:39:47 +0200 (CEST)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1558510787;\n\tbh=38sY1KKfzJsw4zrs6XycUH2KYNY/9HOOSbUmHwWUyF0=;\n\th=Reply-To:Subject:To:References:From:Date:In-Reply-To:From;\n\tb=ZZPzN6SVnUjMU46VAml3RyqcVvrv5mcLbySOTpX7lFVVmNdm76Tvu/WMU+WqAvCHb\n\tXC8OP07NPvSmRlisXmhGFwRbZgMF+ASSbFu2u+GnD6uBkw2qGu5zHDdJO8XB1CBM8g\n\tCXJkXOQRhY05GP9B02an0JDrVcysls7KeqFPq4y0=","Reply-To":"kieran.bingham@ideasonboard.com","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20190521164536.20920-1-laurent.pinchart@ideasonboard.com>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Openpgp":"preference=signencrypt","Autocrypt":"addr=kieran.bingham@ideasonboard.com; keydata=\n\t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\n\tsbsRB8KNNvVXBOVNwko86rQqF9drZuw=","Organization":"Ideas on Board","Message-ID":"<ec92ae99-8799-0d4c-3ada-4d8d414ed42e@ideasonboard.com>","Date":"Wed, 22 May 2019 08:39:44 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101\n\tThunderbird/60.6.1","MIME-Version":"1.0","In-Reply-To":"<20190521164536.20920-1-laurent.pinchart@ideasonboard.com>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-GB","Content-Transfer-Encoding":"8bit","Subject":"Re: [libcamera-devel] [PATCH] libcamera: Auto-generate libcamera.h","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Wed, 22 May 2019 07:39:48 -0000"}},{"id":1657,"web_url":"https://patchwork.libcamera.org/comment/1657/","msgid":"<20190522102353.GA1651@bigcity.dyn.berto.se>","date":"2019-05-22T10:23:53","subject":"Re: [libcamera-devel] [PATCH] libcamera: Auto-generate libcamera.h","submitter":{"id":5,"url":"https://patchwork.libcamera.org/api/people/5/","name":"Niklas Söderlund","email":"niklas.soderlund@ragnatech.se"},"content":"Hi Laurent,\n\nThanks for your work.\n\nOn 2019-05-22 08:39:44 +0100, Kieran Bingham wrote:\n> Hi Laurent,\n> \n> On 21/05/2019 17:45, Laurent Pinchart wrote:\n> > As shown by two missing includes, keeping the libcamera.h file in sync\n> > when adding or removing headers is an error-prone manual process.\n> > Automate it by generating the header automatically.\n> \n> Great idea!\n> \n> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> \n> With the shellcheck issues considered, and the tabs fixed up in meson.build:\n> \n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\nWith Kieran's comments addressed,\n\nReviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n\n> \n> \n> > ---\n> >  include/libcamera/gen-header.sh | 26 ++++++++++++++++++++++++++\n> >  include/libcamera/libcamera.h   | 20 --------------------\n> >  include/libcamera/meson.build   | 10 +++++++++-\n> >  3 files changed, 35 insertions(+), 21 deletions(-)\n> >  create mode 100755 include/libcamera/gen-header.sh\n> >  delete mode 100644 include/libcamera/libcamera.h\n> > \n> > diff --git a/include/libcamera/gen-header.sh b/include/libcamera/gen-header.sh\n> > new file mode 100755\n> > index 000000000000..ea5b79a62520\n> > --- /dev/null\n> > +++ b/include/libcamera/gen-header.sh\n> \n> Hrm... shouldn't this live in a utils directory?\n> \n> Although there are some strong arguments for keeping it in\n> include/libcamera, such as:\n> \n>  - It keeps the directory layout correct in git\n>  - The helper is in the place that the header will be output so it's\n>    easy to find\n> \n> > @@ -0,0 +1,26 @@\n> > +#!/bin/sh\n> > +\n> > +src_dir=$1\n> > +dst_file=$2\n> > +\n> > +cat <<EOF > $dst_file\n> > +/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> > +/* This file is auto-generated, do not edit! */\n> > +/*\n> > + * Copyright (C) 2018, Google Inc.\n> \n> Why not add `date +'%Y'` as it's autogenerated ? :-D\n> \n> > + *\n> > + * libcamera.h - libcamera public API\n> > + */\n> > +#ifndef __LIBCAMERA_LIBCAMERA_H__\n> > +#define __LIBCAMERA_LIBCAMERA_H__\n> > +\n> > +EOF\n> > +\n> > +for header in $src_dir/*.h ; do\n> > +\techo \"#include <libcamera/$(basename $header)>\" >> $dst_file\n> > +done\n> \n> \n> Are we ever expecting to have subdirs here?\n> I don't think so at the moment, and if we do - then we can update this\n> at that point\n> \n> (I'm sure someone will notice if they can't include their headers :D)\n> \n> > +\n> > +cat <<EOF >> $dst_file\n> > +\n> > +#endif /* __LIBCAMERA_LIBCAMERA_H__ */\n> > +EOF\n> \n> \n> Here's the output of running shellcheck on this script:\n> \n> > shellcheck ./include/libcamera/gen-header.sh \n> > \n> > In ./include/libcamera/gen-header.sh line 6:\n> > cat <<EOF > $dst_file\n> >             ^-- SC2086: Double quote to prevent globbing and word splitting.\n> > \n> > \n> > In ./include/libcamera/gen-header.sh line 19:\n> > for header in $src_dir/*.h ; do\n> >               ^-- SC2231: Quote expansions in this for loop glob to prevent wordsplitting, e.g. \"$dir\"/*.txt .\n> > \n> > \n> > In ./include/libcamera/gen-header.sh line 20:\n> >         echo \"#include <libcamera/$(basename $header)>\" >> $dst_file\n> >                                              ^-- SC2086: Double quote to prevent globbing and word splitting.\n> >                                                            ^-- SC2086: Double quote to prevent globbing and word splitting.\n> > \n> > \n> > In ./include/libcamera/gen-header.sh line 23:\n> > cat <<EOF >> $dst_file\n> >              ^-- SC2086: Double quote to prevent globbing and word splitting.\n> \n> \n> \n> \n> \n> > diff --git a/include/libcamera/libcamera.h b/include/libcamera/libcamera.h\n> > deleted file mode 100644\n> > index dda576e906fb..000000000000\n> > --- a/include/libcamera/libcamera.h\n> > +++ /dev/null\n> > @@ -1,20 +0,0 @@\n> > -/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> > -/*\n> > - * Copyright (C) 2018, Google Inc.\n> > - *\n> > - * libcamera.h - libcamera public API\n> > - */\n> > -#ifndef __LIBCAMERA_LIBCAMERA_H__\n> > -#define __LIBCAMERA_LIBCAMERA_H__\n> > -\n> > -#include <libcamera/buffer.h>\n> > -#include <libcamera/camera.h>\n> > -#include <libcamera/camera_manager.h>\n> > -#include <libcamera/event_dispatcher.h>\n> > -#include <libcamera/event_notifier.h>\n> > -#include <libcamera/request.h>\n> > -#include <libcamera/signal.h>\n> > -#include <libcamera/stream.h>\n> > -#include <libcamera/timer.h>\n> > -\n> > -#endif /* __LIBCAMERA_LIBCAMERA_H__ */\n> > diff --git a/include/libcamera/meson.build b/include/libcamera/meson.build\n> > index 83d226ac5078..46aff0b6bc2f 100644\n> > --- a/include/libcamera/meson.build\n> > +++ b/include/libcamera/meson.build\n> > @@ -5,7 +5,6 @@ libcamera_api = files([\n> >      'event_dispatcher.h',\n> >      'event_notifier.h',\n> >      'geometry.h',\n> > -    'libcamera.h',\n> >      'object.h',\n> >      'request.h',\n> >      'signal.h',\n> > @@ -13,5 +12,14 @@ libcamera_api = files([\n> >      'timer.h',\n> >  ])\n> >  \n> > +gen_header = join_paths(meson.current_source_dir(), 'gen-header.sh')\n> > +\n> > +custom_target('gen-header',\n> > +\t      input: meson.current_source_dir(),\n> > +              output: 'libcamera.h',\n> > +\t      command: [gen_header, '@INPUT@', '@OUTPUT@'],\n> > +\t      install: true,\n> > +\t      install_dir: 'include/libcamera')\n> \n> I think some tabs have snuck in there.\n> \n> \n> \n> \n> > +\n> >  install_headers(libcamera_api,\n> >                  subdir : 'libcamera')\n> > \n> \n> -- \n> Regards\n> --\n> Kieran\n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","headers":{"Return-Path":"<niklas.soderlund@ragnatech.se>","Received":["from mail-lf1-x142.google.com (mail-lf1-x142.google.com\n\t[IPv6:2a00:1450:4864:20::142])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id E589160C02\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 22 May 2019 12:23:55 +0200 (CEST)","by mail-lf1-x142.google.com with SMTP id u27so1260221lfg.10\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 22 May 2019 03:23:55 -0700 (PDT)","from localhost (89-233-230-99.cust.bredband2.com. [89.233.230.99])\n\tby smtp.gmail.com with ESMTPSA id\n\th123sm5399655lfe.65.2019.05.22.03.23.54\n\t(version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);\n\tWed, 22 May 2019 03:23:54 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=ragnatech-se.20150623.gappssmtp.com; s=20150623;\n\th=date:from:to:cc:subject:message-id:references:mime-version\n\t:content-disposition:content-transfer-encoding:in-reply-to\n\t:user-agent; bh=y5R93+VZyA1OTPqbXgX9JjsKI5aoVIerM4DM/Pz+/l0=;\n\tb=JKZ5yq4xrgnHUeMQdqAm/r7KrTgeeE8tuJHLcPWHuQJV2rOhyX6lr+5/mIjwQpcbLC\n\tT525V0HJYIV98UA/H+xGkSo266el3ssCicQZyZSS1u38kJyaYa4mwY98qqaCqXBt+8Rv\n\t7NRR6664jn5mwYR4Q4bGseOk27Wsd54YYNqpoNgGn25p6hRbxsABsRbaCUcAzE7hTexQ\n\tYgjO2ov2+e5winrL3P9CaNFzGFCvFXPEDIkOY+SQHFQ+9ilu4aT4j+o9mbsZnygB3lPu\n\tSdRO4EI4e7gsVPVW0EQL6Dz74763CK2R3lI2ZOy6+tGxZ4EydALOfu1okxfVeZKzZP3m\n\ttMlg==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:references\n\t:mime-version:content-disposition:content-transfer-encoding\n\t:in-reply-to:user-agent;\n\tbh=y5R93+VZyA1OTPqbXgX9JjsKI5aoVIerM4DM/Pz+/l0=;\n\tb=EkEpfxH82Uv1duIKoB7F5J8MpHSGF9W/ISDk8hbtCsHy8VWI+dPvy8qoC1vhTSeem6\n\thx/hq7TZ6t3uZGcfe56yQPmBBXstxkfwEyhPrq9XLilKJoLC68t8qUgs/Z9d9X0x8K36\n\tV8ZeZqxERJjGjMgqH5yENyEhBoUWblYmBz3xlMmwd+R9YWUuNE5W1iIOdCW9IR/nSSCi\n\tkyjqCWRSLOtrGGztdn8vN3M3MXbEw1HU/JljMpXxbM6UvTMZeu8Rnbuj2UPlWHpjyleD\n\tWJ2dxnIm76jLyJoAu0FLo6Oqm44WE7qV0+K4MdQZxOOKdoUa9I5Iu5ocWJrpwejYyfb1\n\ta3gg==","X-Gm-Message-State":"APjAAAUzxuLXBC8AcEVyPRn1hf1s6yUZRGISA8WnFty8E2MIdNqt+9yc\n\t+TCuCC7KG7QYKv1TWXXKqYaX+RKCW1A=","X-Google-Smtp-Source":"APXvYqx/EEcbupDYePXlilg8UsB+reODqYCV1ESgwkk6a/94R2AbJFTmr+9Tlu87o7qUazcTxUosDg==","X-Received":"by 2002:ac2:51de:: with SMTP id\n\tu30mr36731398lfm.42.1558520635121; \n\tWed, 22 May 2019 03:23:55 -0700 (PDT)","Date":"Wed, 22 May 2019 12:23:53 +0200","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Message-ID":"<20190522102353.GA1651@bigcity.dyn.berto.se>","References":"<20190521164536.20920-1-laurent.pinchart@ideasonboard.com>\n\t<ec92ae99-8799-0d4c-3ada-4d8d414ed42e@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=iso-8859-1","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<ec92ae99-8799-0d4c-3ada-4d8d414ed42e@ideasonboard.com>","User-Agent":"Mutt/1.11.4 (2019-03-13)","Subject":"Re: [libcamera-devel] [PATCH] libcamera: Auto-generate libcamera.h","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Wed, 22 May 2019 10:23:56 -0000"}},{"id":1660,"web_url":"https://patchwork.libcamera.org/comment/1660/","msgid":"<7f8255f5-bde3-4a47-2314-67b0363f9a65@ideasonboard.com>","date":"2019-05-22T13:25:59","subject":"Re: [libcamera-devel] [PATCH] libcamera: Auto-generate libcamera.h","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi Laurent,\n\nOn 21/05/2019 17:45, Laurent Pinchart wrote:\n> As shown by two missing includes, keeping the libcamera.h file in sync\n> when adding or removing headers is an error-prone manual process.\n> Automate it by generating the header automatically.\n> \n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n>  include/libcamera/gen-header.sh | 26 ++++++++++++++++++++++++++\n>  include/libcamera/libcamera.h   | 20 --------------------\n>  include/libcamera/meson.build   | 10 +++++++++-\n>  3 files changed, 35 insertions(+), 21 deletions(-)\n>  create mode 100755 include/libcamera/gen-header.sh\n>  delete mode 100644 include/libcamera/libcamera.h\n> \n> diff --git a/include/libcamera/gen-header.sh b/include/libcamera/gen-header.sh\n> new file mode 100755\n> index 000000000000..ea5b79a62520\n> --- /dev/null\n> +++ b/include/libcamera/gen-header.sh\n> @@ -0,0 +1,26 @@\n> +#!/bin/sh\n> +\n> +src_dir=$1\n> +dst_file=$2\n> +\n> +cat <<EOF > $dst_file\n> +/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> +/* This file is auto-generated, do not edit! */\n> +/*\n> + * Copyright (C) 2018, Google Inc.\n> + *\n> + * libcamera.h - libcamera public API\n> + */\n> +#ifndef __LIBCAMERA_LIBCAMERA_H__\n> +#define __LIBCAMERA_LIBCAMERA_H__\n> +\n> +EOF\n> +\n> +for header in $src_dir/*.h ; do\n> +\techo \"#include <libcamera/$(basename $header)>\" >> $dst_file\n> +done\n> +\n> +cat <<EOF >> $dst_file\n> +\n> +#endif /* __LIBCAMERA_LIBCAMERA_H__ */\n> +EOF\n> diff --git a/include/libcamera/libcamera.h b/include/libcamera/libcamera.h\n> deleted file mode 100644\n> index dda576e906fb..000000000000\n> --- a/include/libcamera/libcamera.h\n> +++ /dev/null\n> @@ -1,20 +0,0 @@\n> -/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> -/*\n> - * Copyright (C) 2018, Google Inc.\n> - *\n> - * libcamera.h - libcamera public API\n> - */\n> -#ifndef __LIBCAMERA_LIBCAMERA_H__\n> -#define __LIBCAMERA_LIBCAMERA_H__\n> -\n> -#include <libcamera/buffer.h>\n> -#include <libcamera/camera.h>\n> -#include <libcamera/camera_manager.h>\n> -#include <libcamera/event_dispatcher.h>\n> -#include <libcamera/event_notifier.h>\n> -#include <libcamera/request.h>\n> -#include <libcamera/signal.h>\n> -#include <libcamera/stream.h>\n> -#include <libcamera/timer.h>\n> -\n> -#endif /* __LIBCAMERA_LIBCAMERA_H__ */\n> diff --git a/include/libcamera/meson.build b/include/libcamera/meson.build\n> index 83d226ac5078..46aff0b6bc2f 100644\n> --- a/include/libcamera/meson.build\n> +++ b/include/libcamera/meson.build\n> @@ -5,7 +5,6 @@ libcamera_api = files([\n>      'event_dispatcher.h',\n>      'event_notifier.h',\n>      'geometry.h',\n> -    'libcamera.h',\n>      'object.h',\n>      'request.h',\n>      'signal.h',\n> @@ -13,5 +12,14 @@ libcamera_api = files([\n>      'timer.h',\n>  ])\n>  \n> +gen_header = join_paths(meson.current_source_dir(), 'gen-header.sh')\n> +\n> +custom_target('gen-header',\n> +\t      input: meson.current_source_dir(),\n> +              output: 'libcamera.h',\n> +\t      command: [gen_header, '@INPUT@', '@OUTPUT@'],\n> +\t      install: true,\n> +\t      install_dir: 'include/libcamera')\n> +\n\nHrm... should this rebuild if libcamera_api changes at all ?\n\nAlso - Note that the following warning has appeared in my build with\nthis patch applied:\n\n\nWARNING: Custom target input '.../libcamera/include/libcamera' can't be\nconverted to File object(s).\nThis will become a hard error in the future.\n\n\n\n\n>  install_headers(libcamera_api,\n>                  subdir : 'libcamera')\n>","headers":{"Return-Path":"<kieran.bingham@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id A061160C02\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 22 May 2019 15:26:03 +0200 (CEST)","from [192.168.0.20]\n\t(cpc89242-aztw30-2-0-cust488.18-1.cable.virginm.net [86.31.129.233])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 011E9443;\n\tWed, 22 May 2019 15:26:02 +0200 (CEST)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1558531563;\n\tbh=uQhqMwidzPTG0X7F/N3wcInjrf3YIeq0+zlKhBFNtIk=;\n\th=Reply-To:Subject:To:References:From:Date:In-Reply-To:From;\n\tb=JscycXqnUibUfu9SGBvbRKdogWS4FKnERZhjvyC9/eI1walKA9WiVrYsoQsU7dup0\n\tYI7hI5FADxA6N8VoWdREY1nbwNQwhoFH9+O8oYldpbXWIjkRUKJ8sjb9leXrUnyBTy\n\tsm/oWTbFp9xwiAVS+KRQdhC5AxlQvy/gs8g9DgUg=","Reply-To":"kieran.bingham@ideasonboard.com","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20190521164536.20920-1-laurent.pinchart@ideasonboard.com>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Openpgp":"preference=signencrypt","Autocrypt":"addr=kieran.bingham@ideasonboard.com; keydata=\n\tmQINBFYE/WYBEACs1PwjMD9rgCu1hlIiUA1AXR4rv2v+BCLUq//vrX5S5bjzxKAryRf0uHat\n\tV/zwz6hiDrZuHUACDB7X8OaQcwhLaVlq6byfoBr25+hbZG7G3+5EUl9cQ7dQEdvNj6V6y/SC\n\trRanWfelwQThCHckbobWiQJfK9n7rYNcPMq9B8e9F020LFH7Kj6YmO95ewJGgLm+idg1Kb3C\n\tpotzWkXc1xmPzcQ1fvQMOfMwdS+4SNw4rY9f07Xb2K99rjMwZVDgESKIzhsDB5GY465sCsiQ\n\tcSAZRxqE49RTBq2+EQsbrQpIc8XiffAB8qexh5/QPzCmR4kJgCGeHIXBtgRj+nIkCJPZvZtf\n\tKr2EAbc6tgg6DkAEHJb+1okosV09+0+TXywYvtEop/WUOWQ+zo+Y/OBd+8Ptgt1pDRyOBzL8\n\tRXa8ZqRf0Mwg75D+dKntZeJHzPRJyrlfQokngAAs4PaFt6UfS+ypMAF37T6CeDArQC41V3ko\n\tlPn1yMsVD0p+6i3DPvA/GPIksDC4owjnzVX9kM8Zc5Cx+XoAN0w5Eqo4t6qEVbuettxx55gq\n\t8K8FieAjgjMSxngo/HST8TpFeqI5nVeq0/lqtBRQKumuIqDg+Bkr4L1V/PSB6XgQcOdhtd36\n\tOe9X9dXB8YSNt7VjOcO7BTmFn/Z8r92mSAfHXpb07YJWJosQOQARAQABtDBLaWVyYW4gQmlu\n\tZ2hhbSA8a2llcmFuLmJpbmdoYW1AaWRlYXNvbmJvYXJkLmNvbT6JAkAEEwEKACoCGwMFCwkI\n\tBwIGFQgJCgsCBBYCAwECHgECF4ACGQEFAlnDk/gFCQeA/YsACgkQoR5GchCkYf3X5w/9EaZ7\n\tcnUcT6dxjxrcmmMnfFPoQA1iQXr/MXQJBjFWfxRUWYzjvUJb2D/FpA8FY7y+vksoJP7pWDL7\n\tQTbksdwzagUEk7CU45iLWL/CZ/knYhj1I/+5LSLFmvZ/5Gf5xn2ZCsmg7C0MdW/GbJ8IjWA8\n\t/LKJSEYH8tefoiG6+9xSNp1p0Gesu3vhje/GdGX4wDsfAxx1rIYDYVoX4bDM+uBUQh7sQox/\n\tR1bS0AaVJzPNcjeC14MS226mQRUaUPc9250aj44WmDfcg44/kMsoLFEmQo2II9aOlxUDJ+x1\n\txohGbh9mgBoVawMO3RMBihcEjo/8ytW6v7xSF+xP4Oc+HOn7qebAkxhSWcRxQVaQYw3S9iZz\n\t2iA09AXAkbvPKuMSXi4uau5daXStfBnmOfalG0j+9Y6hOFjz5j0XzaoF6Pln0jisDtWltYhP\n\tX9LjFVhhLkTzPZB/xOeWGmsG4gv2V2ExbU3uAmb7t1VSD9+IO3Km4FtnYOKBWlxwEd8qOFpS\n\tjEqMXURKOiJvnw3OXe9MqG19XdeENA1KyhK5rqjpwdvPGfSn2V+SlsdJA0DFsobUScD9qXQw\n\tOvhapHe3XboK2+Rd7L+g/9Ud7ZKLQHAsMBXOVJbufA1AT+IaOt0ugMcFkAR5UbBg5+dZUYJj\n\t1QbPQcGmM3wfvuaWV5+SlJ+WeKIb8ta5Ag0EVgT9ZgEQAM4o5G/kmruIQJ3K9SYzmPishRHV\n\tDcUcvoakyXSX2mIoccmo9BHtD9MxIt+QmxOpYFNFM7YofX4lG0ld8H7FqoNVLd/+a0yru5Cx\n\tadeZBe3qr1eLns10Q90LuMo7/6zJhCW2w+HE7xgmCHejAwuNe3+7yt4QmwlSGUqdxl8cgtS1\n\tPlEK93xXDsgsJj/bw1EfSVdAUqhx8UQ3aVFxNug5OpoX9FdWJLKROUrfNeBE16RLrNrq2ROc\n\tiSFETpVjyC/oZtzRFnwD9Or7EFMi76/xrWzk+/b15RJ9WrpXGMrttHUUcYZEOoiC2lEXMSAF\n\tSSSj4vHbKDJ0vKQdEFtdgB1roqzxdIOg4rlHz5qwOTynueiBpaZI3PHDudZSMR5Fk6QjFooE\n\tXTw3sSl/km/lvUFiv9CYyHOLdygWohvDuMkV/Jpdkfq8XwFSjOle+vT/4VqERnYFDIGBxaRx\n\tkoBLfNDiiuR3lD8tnJ4A1F88K6ojOUs+jndKsOaQpDZV6iNFv8IaNIklTPvPkZsmNDhJMRHH\n\tIu60S7BpzNeQeT4yyY4dX9lC2JL/LOEpw8DGf5BNOP1KgjCvyp1/KcFxDAo89IeqljaRsCdP\n\t7WCIECWYem6pLwaw6IAL7oX+tEqIMPph/G/jwZcdS6Hkyt/esHPuHNwX4guqTbVEuRqbDzDI\n\t2DJO5FbxABEBAAGJAiUEGAEKAA8CGwwFAlnDlGsFCQeA/gIACgkQoR5GchCkYf1yYRAAq+Yo\n\tnbf9DGdK1kTAm2RTFg+w9oOp2Xjqfhds2PAhFFvrHQg1XfQR/UF/SjeUmaOmLSczM0s6XMeO\n\tVcE77UFtJ/+hLo4PRFKm5X1Pcar6g5m4xGqa+Xfzi9tRkwC29KMCoQOag1BhHChgqYaUH3yo\n\tUzaPwT/fY75iVI+yD0ih/e6j8qYvP8pvGwMQfrmN9YB0zB39YzCSdaUaNrWGD3iCBxg6lwSO\n\tLKeRhxxfiXCIYEf3vwOsP3YMx2JkD5doseXmWBGW1U0T/oJF+DVfKB6mv5UfsTzpVhJRgee7\n\t4jkjqFq4qsUGxcvF2xtRkfHFpZDbRgRlVmiWkqDkT4qMA+4q1y/dWwshSKi/uwVZNycuLsz+\n\t+OD8xPNCsMTqeUkAKfbD8xW4LCay3r/dD2ckoxRxtMD9eOAyu5wYzo/ydIPTh1QEj9SYyvp8\n\tO0g6CpxEwyHUQtF5oh15O018z3ZLztFJKR3RD42VKVsrnNDKnoY0f4U0z7eJv2NeF8xHMuiU\n\tRCIzqxX1GVYaNkKTnb/Qja8hnYnkUzY1Lc+OtwiGmXTwYsPZjjAaDX35J/RSKAoy5wGo/YFA\n\tJxB1gWThL4kOTbsqqXj9GLcyOImkW0lJGGR3o/fV91Zh63S5TKnf2YGGGzxki+ADdxVQAm+Q\n\tsbsRB8KNNvVXBOVNwko86rQqF9drZuw=","Organization":"Ideas on Board","Message-ID":"<7f8255f5-bde3-4a47-2314-67b0363f9a65@ideasonboard.com>","Date":"Wed, 22 May 2019 14:25:59 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101\n\tThunderbird/60.6.1","MIME-Version":"1.0","In-Reply-To":"<20190521164536.20920-1-laurent.pinchart@ideasonboard.com>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-GB","Content-Transfer-Encoding":"8bit","Subject":"Re: [libcamera-devel] [PATCH] libcamera: Auto-generate libcamera.h","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Wed, 22 May 2019 13:26:03 -0000"}},{"id":1661,"web_url":"https://patchwork.libcamera.org/comment/1661/","msgid":"<20190522142601.GA8868@pendragon.ideasonboard.com>","date":"2019-05-22T14:26:01","subject":"Re: [libcamera-devel] [PATCH] libcamera: Auto-generate libcamera.h","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Kieran,\n\nOn Wed, May 22, 2019 at 02:25:59PM +0100, Kieran Bingham wrote:\n> On 21/05/2019 17:45, Laurent Pinchart wrote:\n> > As shown by two missing includes, keeping the libcamera.h file in sync\n> > when adding or removing headers is an error-prone manual process.\n> > Automate it by generating the header automatically.\n> > \n> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > ---\n> >  include/libcamera/gen-header.sh | 26 ++++++++++++++++++++++++++\n> >  include/libcamera/libcamera.h   | 20 --------------------\n> >  include/libcamera/meson.build   | 10 +++++++++-\n> >  3 files changed, 35 insertions(+), 21 deletions(-)\n> >  create mode 100755 include/libcamera/gen-header.sh\n> >  delete mode 100644 include/libcamera/libcamera.h\n> > \n> > diff --git a/include/libcamera/gen-header.sh b/include/libcamera/gen-header.sh\n> > new file mode 100755\n> > index 000000000000..ea5b79a62520\n> > --- /dev/null\n> > +++ b/include/libcamera/gen-header.sh\n> > @@ -0,0 +1,26 @@\n> > +#!/bin/sh\n> > +\n> > +src_dir=$1\n> > +dst_file=$2\n> > +\n> > +cat <<EOF > $dst_file\n> > +/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> > +/* This file is auto-generated, do not edit! */\n> > +/*\n> > + * Copyright (C) 2018, Google Inc.\n> > + *\n> > + * libcamera.h - libcamera public API\n> > + */\n> > +#ifndef __LIBCAMERA_LIBCAMERA_H__\n> > +#define __LIBCAMERA_LIBCAMERA_H__\n> > +\n> > +EOF\n> > +\n> > +for header in $src_dir/*.h ; do\n> > +\techo \"#include <libcamera/$(basename $header)>\" >> $dst_file\n> > +done\n> > +\n> > +cat <<EOF >> $dst_file\n> > +\n> > +#endif /* __LIBCAMERA_LIBCAMERA_H__ */\n> > +EOF\n> > diff --git a/include/libcamera/libcamera.h b/include/libcamera/libcamera.h\n> > deleted file mode 100644\n> > index dda576e906fb..000000000000\n> > --- a/include/libcamera/libcamera.h\n> > +++ /dev/null\n> > @@ -1,20 +0,0 @@\n> > -/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> > -/*\n> > - * Copyright (C) 2018, Google Inc.\n> > - *\n> > - * libcamera.h - libcamera public API\n> > - */\n> > -#ifndef __LIBCAMERA_LIBCAMERA_H__\n> > -#define __LIBCAMERA_LIBCAMERA_H__\n> > -\n> > -#include <libcamera/buffer.h>\n> > -#include <libcamera/camera.h>\n> > -#include <libcamera/camera_manager.h>\n> > -#include <libcamera/event_dispatcher.h>\n> > -#include <libcamera/event_notifier.h>\n> > -#include <libcamera/request.h>\n> > -#include <libcamera/signal.h>\n> > -#include <libcamera/stream.h>\n> > -#include <libcamera/timer.h>\n> > -\n> > -#endif /* __LIBCAMERA_LIBCAMERA_H__ */\n> > diff --git a/include/libcamera/meson.build b/include/libcamera/meson.build\n> > index 83d226ac5078..46aff0b6bc2f 100644\n> > --- a/include/libcamera/meson.build\n> > +++ b/include/libcamera/meson.build\n> > @@ -5,7 +5,6 @@ libcamera_api = files([\n> >      'event_dispatcher.h',\n> >      'event_notifier.h',\n> >      'geometry.h',\n> > -    'libcamera.h',\n> >      'object.h',\n> >      'request.h',\n> >      'signal.h',\n> > @@ -13,5 +12,14 @@ libcamera_api = files([\n> >      'timer.h',\n> >  ])\n> >  \n> > +gen_header = join_paths(meson.current_source_dir(), 'gen-header.sh')\n> > +\n> > +custom_target('gen-header',\n> > +\t      input: meson.current_source_dir(),\n> > +              output: 'libcamera.h',\n> > +\t      command: [gen_header, '@INPUT@', '@OUTPUT@'],\n> > +\t      install: true,\n> > +\t      install_dir: 'include/libcamera')\n> > +\n> \n> Hrm... should this rebuild if libcamera_api changes at all ?\n\nIt should, but from my tests this is already ensured indirectly.\nChanging libcamera_api changes meson.build, which triggers a\nregeneration of all the related ninja files. As the timestamp of the\nninja files changes, they rebuild all the rules they contain.\n\n> Also - Note that the following warning has appeared in my build with\n> this patch applied:\n> \n> \n> WARNING: Custom target input '.../libcamera/include/libcamera' can't be\n> converted to File object(s).\n> This will become a hard error in the future.\n\nWhich version of meson are you using ?\n\n> >  install_headers(libcamera_api,\n> >                  subdir : 'libcamera')","headers":{"Return-Path":"<laurent.pinchart@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 296E560C02\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 22 May 2019 16:26:19 +0200 (CEST)","from pendragon.ideasonboard.com (81-175-216-236.bb.dnainternet.fi\n\t[81.175.216.236])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 72C1B443;\n\tWed, 22 May 2019 16:26:18 +0200 (CEST)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1558535178;\n\tbh=xO6EXU8u7GfCeWIrvK8hFvG5PEO8Q60Q9EJYsjNpeu4=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=RO1y0Zd65I2N+bFwC63pWQIkUo/77Q1IHBXZ2JIwQPS0kfmIRwlu3EMSRWbbVmvXt\n\tqLYMyK2MC35F7/EtU5MkHdEPHYrE0bjeu1Q3BT8G60egd3hkoaMhTM+MFIPU5/JuuX\n\tP4f1YbINVoCSZxlZG63UkSHn7Kr5/guvjLgroER0=","Date":"Wed, 22 May 2019 17:26:01 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Message-ID":"<20190522142601.GA8868@pendragon.ideasonboard.com>","References":"<20190521164536.20920-1-laurent.pinchart@ideasonboard.com>\n\t<7f8255f5-bde3-4a47-2314-67b0363f9a65@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<7f8255f5-bde3-4a47-2314-67b0363f9a65@ideasonboard.com>","User-Agent":"Mutt/1.10.1 (2018-07-13)","Subject":"Re: [libcamera-devel] [PATCH] libcamera: Auto-generate libcamera.h","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Wed, 22 May 2019 14:26:19 -0000"}},{"id":1662,"web_url":"https://patchwork.libcamera.org/comment/1662/","msgid":"<20190522144737.GB8868@pendragon.ideasonboard.com>","date":"2019-05-22T14:47:37","subject":"Re: [libcamera-devel] [PATCH] libcamera: Auto-generate libcamera.h","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Kieran,\n\nOn Wed, May 22, 2019 at 08:39:44AM +0100, Kieran Bingham wrote:\n> On 21/05/2019 17:45, Laurent Pinchart wrote:\n> > As shown by two missing includes, keeping the libcamera.h file in sync\n> > when adding or removing headers is an error-prone manual process.\n> > Automate it by generating the header automatically.\n> \n> Great idea!\n> \n> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> \n> With the shellcheck issues considered, and the tabs fixed up in meson.build:\n> \n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n> > ---\n> >  include/libcamera/gen-header.sh | 26 ++++++++++++++++++++++++++\n> >  include/libcamera/libcamera.h   | 20 --------------------\n> >  include/libcamera/meson.build   | 10 +++++++++-\n> >  3 files changed, 35 insertions(+), 21 deletions(-)\n> >  create mode 100755 include/libcamera/gen-header.sh\n> >  delete mode 100644 include/libcamera/libcamera.h\n> > \n> > diff --git a/include/libcamera/gen-header.sh b/include/libcamera/gen-header.sh\n> > new file mode 100755\n> > index 000000000000..ea5b79a62520\n> > --- /dev/null\n> > +++ b/include/libcamera/gen-header.sh\n> \n> Hrm... shouldn't this live in a utils directory?\n> \n> Although there are some strong arguments for keeping it in\n> include/libcamera, such as:\n> \n>  - It keeps the directory layout correct in git\n>  - The helper is in the place that the header will be output so it's\n>    easy to find\n\nI considered both options and found it more logical to keep the file\nthere. It doesn't get installed, so it shouldn't be an issue. If we\nlater extend the script to generate more headers, or more files, than\nlibcamera.h, then we could move it.\n\n> > @@ -0,0 +1,26 @@\n> > +#!/bin/sh\n> > +\n> > +src_dir=$1\n> > +dst_file=$2\n> > +\n> > +cat <<EOF > $dst_file\n> > +/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> > +/* This file is auto-generated, do not edit! */\n> > +/*\n> > + * Copyright (C) 2018, Google Inc.\n> \n> Why not add `date +'%Y'` as it's autogenerated ? :-D\n\nGood point. I however wonder how to treat copyright on auto-generated\nfiles. The generation process doesn't create any additional work that\ncan be attributed to an entity entitled to copyrights as far as I\nunderstand, so the copyright on libcamera.h would come from the\ncopyright on its source. In this case the source is the combination of\nthe directory layout (hardly copyrightable I believe) and this script.\nIt thus seems that the copyright year should be fixed in the script (and\nshould be 2018-2019), and should only change when the script is\nsignificantly modified. I'm no expert in this field though.\n\n> > + *\n> > + * libcamera.h - libcamera public API\n> > + */\n> > +#ifndef __LIBCAMERA_LIBCAMERA_H__\n> > +#define __LIBCAMERA_LIBCAMERA_H__\n> > +\n> > +EOF\n> > +\n> > +for header in $src_dir/*.h ; do\n> > +\techo \"#include <libcamera/$(basename $header)>\" >> $dst_file\n> > +done\n> \n> Are we ever expecting to have subdirs here?\n> I don't think so at the moment, and if we do - then we can update this\n> at that point\n> \n> (I'm sure someone will notice if they can't include their headers :D)\n\nYes, let's handle this later :-)\n\n> > +\n> > +cat <<EOF >> $dst_file\n> > +\n> > +#endif /* __LIBCAMERA_LIBCAMERA_H__ */\n> > +EOF\n> \n> Here's the output of running shellcheck on this script:\n> \n> > shellcheck ./include/libcamera/gen-header.sh \n> > \n> > In ./include/libcamera/gen-header.sh line 6:\n> > cat <<EOF > $dst_file\n> >             ^-- SC2086: Double quote to prevent globbing and word splitting.\n> > \n> > \n> > In ./include/libcamera/gen-header.sh line 19:\n> > for header in $src_dir/*.h ; do\n> >               ^-- SC2231: Quote expansions in this for loop glob to prevent wordsplitting, e.g. \"$dir\"/*.txt .\n> > \n> > \n> > In ./include/libcamera/gen-header.sh line 20:\n> >         echo \"#include <libcamera/$(basename $header)>\" >> $dst_file\n> >                                              ^-- SC2086: Double quote to prevent globbing and word splitting.\n> >                                                            ^-- SC2086: Double quote to prevent globbing and word splitting.\n> > \n> > \n> > In ./include/libcamera/gen-header.sh line 23:\n> > cat <<EOF >> $dst_file\n> >              ^-- SC2086: Double quote to prevent globbing and word splitting.\n\nI'll fix these, thank you.\n\n> > diff --git a/include/libcamera/libcamera.h b/include/libcamera/libcamera.h\n> > deleted file mode 100644\n> > index dda576e906fb..000000000000\n> > --- a/include/libcamera/libcamera.h\n> > +++ /dev/null\n> > @@ -1,20 +0,0 @@\n> > -/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> > -/*\n> > - * Copyright (C) 2018, Google Inc.\n> > - *\n> > - * libcamera.h - libcamera public API\n> > - */\n> > -#ifndef __LIBCAMERA_LIBCAMERA_H__\n> > -#define __LIBCAMERA_LIBCAMERA_H__\n> > -\n> > -#include <libcamera/buffer.h>\n> > -#include <libcamera/camera.h>\n> > -#include <libcamera/camera_manager.h>\n> > -#include <libcamera/event_dispatcher.h>\n> > -#include <libcamera/event_notifier.h>\n> > -#include <libcamera/request.h>\n> > -#include <libcamera/signal.h>\n> > -#include <libcamera/stream.h>\n> > -#include <libcamera/timer.h>\n> > -\n> > -#endif /* __LIBCAMERA_LIBCAMERA_H__ */\n> > diff --git a/include/libcamera/meson.build b/include/libcamera/meson.build\n> > index 83d226ac5078..46aff0b6bc2f 100644\n> > --- a/include/libcamera/meson.build\n> > +++ b/include/libcamera/meson.build\n> > @@ -5,7 +5,6 @@ libcamera_api = files([\n> >      'event_dispatcher.h',\n> >      'event_notifier.h',\n> >      'geometry.h',\n> > -    'libcamera.h',\n> >      'object.h',\n> >      'request.h',\n> >      'signal.h',\n> > @@ -13,5 +12,14 @@ libcamera_api = files([\n> >      'timer.h',\n> >  ])\n> >  \n> > +gen_header = join_paths(meson.current_source_dir(), 'gen-header.sh')\n> > +\n> > +custom_target('gen-header',\n> > +\t      input: meson.current_source_dir(),\n> > +              output: 'libcamera.h',\n> > +\t      command: [gen_header, '@INPUT@', '@OUTPUT@'],\n> > +\t      install: true,\n> > +\t      install_dir: 'include/libcamera')\n> \n> I think some tabs have snuck in there.\n\nMy bad :-( Will fix too.\n\n> > +\n> >  install_headers(libcamera_api,\n> >                  subdir : 'libcamera')\n> >","headers":{"Return-Path":"<laurent.pinchart@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0076760C02\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 22 May 2019 16:47:54 +0200 (CEST)","from pendragon.ideasonboard.com (81-175-216-236.bb.dnainternet.fi\n\t[81.175.216.236])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 62C95443;\n\tWed, 22 May 2019 16:47:54 +0200 (CEST)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1558536474;\n\tbh=GqYMppz1+3eBr5BTevDU3uz4A9UovIHdu4eBQckA25A=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=kCS2hxxoQFxtDhI8MOH0grhk9VSz1a+7VmrBdfxKDlwsapUQ3IK9SpCKH7Abs9Dxs\n\tzsVBlHR+seefHS3MphR8zAxfLw32Hk0I0WokbS0v+w1c/Qd97cNane7tljljwEXafG\n\tnLbVF19MuBey7AiV+QblU6lKpo+n4duEZY8dEVOk=","Date":"Wed, 22 May 2019 17:47:37 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Message-ID":"<20190522144737.GB8868@pendragon.ideasonboard.com>","References":"<20190521164536.20920-1-laurent.pinchart@ideasonboard.com>\n\t<ec92ae99-8799-0d4c-3ada-4d8d414ed42e@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<ec92ae99-8799-0d4c-3ada-4d8d414ed42e@ideasonboard.com>","User-Agent":"Mutt/1.10.1 (2018-07-13)","Subject":"Re: [libcamera-devel] [PATCH] libcamera: Auto-generate libcamera.h","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Wed, 22 May 2019 14:47:55 -0000"}},{"id":1663,"web_url":"https://patchwork.libcamera.org/comment/1663/","msgid":"<3447d1b8-1ee5-3a7b-5a76-a4594d5b281f@ideasonboard.com>","date":"2019-05-22T15:34:08","subject":"Re: [libcamera-devel] [PATCH] libcamera: Auto-generate libcamera.h","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi Laurent,\n\nOn 22/05/2019 15:26, Laurent Pinchart wrote:\n> Hi Kieran,\n> \n> On Wed, May 22, 2019 at 02:25:59PM +0100, Kieran Bingham wrote:\n>> On 21/05/2019 17:45, Laurent Pinchart wrote:\n>>> As shown by two missing includes, keeping the libcamera.h file in sync\n>>> when adding or removing headers is an error-prone manual process.\n>>> Automate it by generating the header automatically.\n>>>\n>>> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n>>> ---\n>>>  include/libcamera/gen-header.sh | 26 ++++++++++++++++++++++++++\n>>>  include/libcamera/libcamera.h   | 20 --------------------\n>>>  include/libcamera/meson.build   | 10 +++++++++-\n>>>  3 files changed, 35 insertions(+), 21 deletions(-)\n>>>  create mode 100755 include/libcamera/gen-header.sh\n>>>  delete mode 100644 include/libcamera/libcamera.h\n>>>\n>>> diff --git a/include/libcamera/gen-header.sh b/include/libcamera/gen-header.sh\n>>> new file mode 100755\n>>> index 000000000000..ea5b79a62520\n>>> --- /dev/null\n>>> +++ b/include/libcamera/gen-header.sh\n>>> @@ -0,0 +1,26 @@\n>>> +#!/bin/sh\n>>> +\n>>> +src_dir=$1\n>>> +dst_file=$2\n>>> +\n>>> +cat <<EOF > $dst_file\n>>> +/* SPDX-License-Identifier: LGPL-2.1-or-later */\n>>> +/* This file is auto-generated, do not edit! */\n>>> +/*\n>>> + * Copyright (C) 2018, Google Inc.\n>>> + *\n>>> + * libcamera.h - libcamera public API\n>>> + */\n>>> +#ifndef __LIBCAMERA_LIBCAMERA_H__\n>>> +#define __LIBCAMERA_LIBCAMERA_H__\n>>> +\n>>> +EOF\n>>> +\n>>> +for header in $src_dir/*.h ; do\n>>> +\techo \"#include <libcamera/$(basename $header)>\" >> $dst_file\n>>> +done\n>>> +\n>>> +cat <<EOF >> $dst_file\n>>> +\n>>> +#endif /* __LIBCAMERA_LIBCAMERA_H__ */\n>>> +EOF\n>>> diff --git a/include/libcamera/libcamera.h b/include/libcamera/libcamera.h\n>>> deleted file mode 100644\n>>> index dda576e906fb..000000000000\n>>> --- a/include/libcamera/libcamera.h\n>>> +++ /dev/null\n>>> @@ -1,20 +0,0 @@\n>>> -/* SPDX-License-Identifier: LGPL-2.1-or-later */\n>>> -/*\n>>> - * Copyright (C) 2018, Google Inc.\n>>> - *\n>>> - * libcamera.h - libcamera public API\n>>> - */\n>>> -#ifndef __LIBCAMERA_LIBCAMERA_H__\n>>> -#define __LIBCAMERA_LIBCAMERA_H__\n>>> -\n>>> -#include <libcamera/buffer.h>\n>>> -#include <libcamera/camera.h>\n>>> -#include <libcamera/camera_manager.h>\n>>> -#include <libcamera/event_dispatcher.h>\n>>> -#include <libcamera/event_notifier.h>\n>>> -#include <libcamera/request.h>\n>>> -#include <libcamera/signal.h>\n>>> -#include <libcamera/stream.h>\n>>> -#include <libcamera/timer.h>\n>>> -\n>>> -#endif /* __LIBCAMERA_LIBCAMERA_H__ */\n>>> diff --git a/include/libcamera/meson.build b/include/libcamera/meson.build\n>>> index 83d226ac5078..46aff0b6bc2f 100644\n>>> --- a/include/libcamera/meson.build\n>>> +++ b/include/libcamera/meson.build\n>>> @@ -5,7 +5,6 @@ libcamera_api = files([\n>>>      'event_dispatcher.h',\n>>>      'event_notifier.h',\n>>>      'geometry.h',\n>>> -    'libcamera.h',\n>>>      'object.h',\n>>>      'request.h',\n>>>      'signal.h',\n>>> @@ -13,5 +12,14 @@ libcamera_api = files([\n>>>      'timer.h',\n>>>  ])\n>>>  \n>>> +gen_header = join_paths(meson.current_source_dir(), 'gen-header.sh')\n>>> +\n>>> +custom_target('gen-header',\n>>> +\t      input: meson.current_source_dir(),\n>>> +              output: 'libcamera.h',\n>>> +\t      command: [gen_header, '@INPUT@', '@OUTPUT@'],\n>>> +\t      install: true,\n>>> +\t      install_dir: 'include/libcamera')\n>>> +\n>>\n>> Hrm... should this rebuild if libcamera_api changes at all ?\n> \n> It should, but from my tests this is already ensured indirectly.\n> Changing libcamera_api changes meson.build, which triggers a\n> regeneration of all the related ninja files. As the timestamp of the\n> ninja files changes, they rebuild all the rules they contain.\n\nOK - that sounds fine then.\n\n\n>> Also - Note that the following warning has appeared in my build with\n>> this patch applied:\n>>\n>>\n>> WARNING: Custom target input '.../libcamera/include/libcamera' can't be\n>> converted to File object(s).\n>> This will become a hard error in the future.\n> \n> Which version of meson are you using ?\n\n\n$ meson --version\n0.49.0\n\n\n> \n>>>  install_headers(libcamera_api,\n>>>                  subdir : 'libcamera')\n>","headers":{"Return-Path":"<kieran.bingham@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 4DB0B60C02\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 22 May 2019 17:34:12 +0200 (CEST)","from [192.168.0.20]\n\t(cpc89242-aztw30-2-0-cust488.18-1.cable.virginm.net [86.31.129.233])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id A2A45443;\n\tWed, 22 May 2019 17:34:11 +0200 (CEST)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1558539251;\n\tbh=cesKJnmp/IjOXKo7paYLe/e9tE+BIto/3GZy11aFadQ=;\n\th=Reply-To:Subject:To:Cc:References:From:Date:In-Reply-To:From;\n\tb=Nzu0Lkckn8nHfuilEQWQkGcufMj13uyJzeAwflWzJDzwVrq6J7gpWvzNA4l/4RQfl\n\tdFHvJGbq5C7Gn87FWamUt5BLpU07qwhL0pDAJpQ/KTJ/4vaJXwudPoN55wZANYuV2n\n\tUbUuWiNcjqw+UlT6YZcLPIBFHcZn4k3qinf+sK/8=","Reply-To":"kieran.bingham@ideasonboard.com","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","References":"<20190521164536.20920-1-laurent.pinchart@ideasonboard.com>\n\t<7f8255f5-bde3-4a47-2314-67b0363f9a65@ideasonboard.com>\n\t<20190522142601.GA8868@pendragon.ideasonboard.com>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Openpgp":"preference=signencrypt","Autocrypt":"addr=kieran.bingham@ideasonboard.com; keydata=\n\t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\n\tsbsRB8KNNvVXBOVNwko86rQqF9drZuw=","Organization":"Ideas on Board","Message-ID":"<3447d1b8-1ee5-3a7b-5a76-a4594d5b281f@ideasonboard.com>","Date":"Wed, 22 May 2019 16:34:08 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101\n\tThunderbird/60.6.1","MIME-Version":"1.0","In-Reply-To":"<20190522142601.GA8868@pendragon.ideasonboard.com>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-GB","Content-Transfer-Encoding":"7bit","Subject":"Re: [libcamera-devel] [PATCH] libcamera: Auto-generate libcamera.h","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Wed, 22 May 2019 15:34:12 -0000"}}]