summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBarnabás Pőcze <pobrn@protonmail.com>2022-11-09 16:36:14 +0000
committerKieran Bingham <kieran.bingham@ideasonboard.com>2022-11-24 14:52:00 +0000
commitcfa748807241bddf0f8bb5f18837d87654437271 (patch)
tree26535b83f5e8eaa6e9233808708e0aad418fd09b
parent3d612720fb99057f10e21d2069aacdfbbf0f05d1 (diff)
libcamera: tracing: fix header generation when built as subproject
Building libcamera as a subproject is failing when tracepoints are enabled due to incorrectly managing the relative paths between the source and build directory while generating tracepoint headers. The previously used path = output.replace('include/', '', 1) logic is not sufficient to correctly determine the proper path when libcamera is built as a subproject, and does not correctly handle the relative paths, causing path to be processed as: 'subprojects/libcamera/include/libcamera/internal/tracepoints.h'.replace('include/', '', 1) which evaluates to 'subprojects/libcamera/libcamera/internal/tracepoints.h' so the tracepoints.h header file will try to include: #define TRACEPOINT_INCLUDE "subprojects/libcamera/libcamera/internal/tracepoints.h" which will fail. Fix it by using Python's pathlib to calculate the relative path of the output file with respect to the "include" directory of libcamera. This has been tested with Pipewire. For non-subproject builds it should generate the exact same path that was previously generated. Signed-off-by: Barnabás Pőcze <pobrn@protonmail.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> [Kieran: Commit message expanded/reworded] Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
-rw-r--r--include/libcamera/internal/meson.build2
-rw-r--r--include/meson.build2
-rwxr-xr-xutils/tracepoints/gen-tp-header.py13
3 files changed, 10 insertions, 7 deletions
diff --git a/include/libcamera/internal/meson.build b/include/libcamera/internal/meson.build
index 7a780d48..f8be86e0 100644
--- a/include/libcamera/internal/meson.build
+++ b/include/libcamera/internal/meson.build
@@ -6,7 +6,7 @@ libcamera_tracepoint_header = custom_target(
'tp_header',
input: ['tracepoints.h.in', tracepoint_files],
output: 'tracepoints.h',
- command: [gen_tracepoints_header, '@OUTPUT@', '@INPUT@'],
+ command: [gen_tracepoints_header, include_build_dir, '@OUTPUT@', '@INPUT@'],
)
libcamera_internal_headers = files([
diff --git a/include/meson.build b/include/meson.build
index 27ce2f41..19b93a7b 100644
--- a/include/meson.build
+++ b/include/meson.build
@@ -1,4 +1,6 @@
# SPDX-License-Identifier: CC0-1.0
+include_build_dir = meson.current_build_dir()
+
subdir('android')
subdir('libcamera')
diff --git a/utils/tracepoints/gen-tp-header.py b/utils/tracepoints/gen-tp-header.py
index bbd472d9..a454615e 100755
--- a/utils/tracepoints/gen-tp-header.py
+++ b/utils/tracepoints/gen-tp-header.py
@@ -8,22 +8,23 @@
import datetime
import jinja2
+import pathlib
import os
import sys
def main(argv):
- if len(argv) < 3:
- print(f'Usage: {argv[0]} output template tp_files...')
+ if len(argv) < 4:
+ print(f'Usage: {argv[0]} include_build_dir output template tp_files...')
return 1
- output = argv[1]
- template = argv[2]
+ output = argv[2]
+ template = argv[3]
year = datetime.datetime.now().year
- path = output.replace('include/', '', 1)
+ path = pathlib.Path(output).absolute().relative_to(argv[1])
source = ''
- for fname in argv[3:]:
+ for fname in argv[4:]:
source += open(fname, 'r', encoding='utf-8').read() + '\n\n'
template = jinja2.Template(open(template, 'r', encoding='utf-8').read())