libcamera: Auto-generate libcamera.h

As shown by two missing includes, keeping the libcamera.h file in sync
when adding or removing headers is an error-prone manual process.
Automate it by generating the header automatically.

The libcamera.h header is also added to the libcamera dependency
libcamera_dep to ensure that the headers gets generated before any
source depending on it gets compiled.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
Laurent Pinchart 2019-05-21 19:13:44 +03:00
parent 3fac104158
commit 90de3690c4
4 changed files with 37 additions and 22 deletions

27
include/libcamera/gen-header.sh Executable file
View file

@ -0,0 +1,27 @@
#!/bin/sh
src_dir="$1"
dst_file="$2"
cat <<EOF > "$dst_file"
/* SPDX-License-Identifier: LGPL-2.1-or-later */
/* This file is auto-generated, do not edit! */
/*
* Copyright (C) 2018-2019, Google Inc.
*
* libcamera.h - libcamera public API
*/
#ifndef __LIBCAMERA_LIBCAMERA_H__
#define __LIBCAMERA_LIBCAMERA_H__
EOF
for header in "$src_dir"/*.h ; do
header=$(basename "$header")
echo "#include <libcamera/$header>" >> "$dst_file"
done
cat <<EOF >> "$dst_file"
#endif /* __LIBCAMERA_LIBCAMERA_H__ */
EOF

View file

@ -1,20 +0,0 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
* Copyright (C) 2018, Google Inc.
*
* libcamera.h - libcamera public API
*/
#ifndef __LIBCAMERA_LIBCAMERA_H__
#define __LIBCAMERA_LIBCAMERA_H__
#include <libcamera/buffer.h>
#include <libcamera/camera.h>
#include <libcamera/camera_manager.h>
#include <libcamera/event_dispatcher.h>
#include <libcamera/event_notifier.h>
#include <libcamera/request.h>
#include <libcamera/signal.h>
#include <libcamera/stream.h>
#include <libcamera/timer.h>
#endif /* __LIBCAMERA_LIBCAMERA_H__ */

View file

@ -6,7 +6,6 @@ libcamera_api = files([
'event_notifier.h',
'geometry.h',
'ipa/ipa_module_info.h',
'libcamera.h',
'object.h',
'request.h',
'signal.h',
@ -14,5 +13,14 @@ libcamera_api = files([
'timer.h',
])
gen_header = join_paths(meson.current_source_dir(), 'gen-header.sh')
libcamera_h = custom_target('gen-header',
input : 'meson.build',
output : 'libcamera.h',
command : [gen_header, meson.current_source_dir(), '@OUTPUT@'],
install : true,
install_dir : 'include/libcamera')
install_headers(libcamera_api,
subdir : 'libcamera')

View file

@ -66,6 +66,6 @@ libcamera = shared_library('camera',
include_directories : includes,
dependencies : libudev)
libcamera_dep = declare_dependency(sources : libcamera_api,
libcamera_dep = declare_dependency(sources : [libcamera_api, libcamera_h],
include_directories : libcamera_includes,
link_with : libcamera)