Hi Sakari, Thank you for the patch. On Sun, Feb 12, 2023 at 02:16:57AM +0200, Sakari Ailus wrote: > In v4l2-tracer-gen.pl, add support for setting the output directory for > the generated files and choosing which ones to generate (common, trace or > retrace). The default is to generate them all in the current directory, > i.e. what the script used to do. > > Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> > --- > utils/v4l2-tracer/v4l2-tracer-gen.pl | 36 ++++++++++++++++++++++++---- > 1 file changed, 31 insertions(+), 5 deletions(-) > > diff --git a/utils/v4l2-tracer/v4l2-tracer-gen.pl b/utils/v4l2-tracer/v4l2-tracer-gen.pl > index fe648182..8192a5bf 100755 > --- a/utils/v4l2-tracer/v4l2-tracer-gen.pl > +++ b/utils/v4l2-tracer/v4l2-tracer-gen.pl > @@ -2,6 +2,16 @@ > # SPDX-License-Identifier: GPL-2.0-only */ > # Copyright 2022 Collabora Ltd. > > +my $outdir = ""; > +my %outtype = ( "common" => 1, "trace" => 1, "retrace" => 1 ); > + > +while ($ARGV[0] =~ /^-/) { > + my $arg = shift @ARGV; > + > + $outdir = shift @ARGV if $arg eq "-o"; > + %outtype = (shift @ARGV => 1) if $arg eq '-t'; > +} > + > sub convert_type_to_json_type { > my $type = shift; > if ($type eq __u8 || $type eq char || $type eq __u16 || $type eq __s8 || $type eq __s16 || $type eq __s32 || $type eq 'int') { > @@ -696,29 +706,45 @@ sub struct_gen_ctrl { > printf $fh_retrace_cpp "}\n\n"; > } > > -open($fh_trace_cpp, '>', 'trace-gen.cpp') or die "Could not open trace-gen.cpp for writing"; > +sub do_open($$) { > + my ($type, $fname) = @_; > + my $fh; > + > + if (defined $outtype{$type}) { > + $fname = $outdir . $fname; It would be nice to add a directory separator if outdir doesn't end with '/'. I'll do so here with $fname = "$outdir/$fname"; and with outdir initialized to "." instead of "" above. I'll include the updated version in my meson patch series. Tested-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> Thanks a lot for your help. > + } else { > + $fname = "/dev/null"; > + } > + > + open($fh, "> $fname") or die "Could not open $fname for writing"; > + > + return $fh; > +} > + > + > +$fh_trace_cpp = do_open("trace", "trace-gen.cpp"); > printf $fh_trace_cpp "/* SPDX-License-Identifier: GPL-2.0-only */\n/*\n * Copyright 2022 Collabora Ltd.\n"; > printf $fh_trace_cpp " *\n * AUTOMATICALLY GENERATED BY \'%s\' DO NOT EDIT\n */\n\n", __FILE__; > printf $fh_trace_cpp "#include \"v4l2-tracer-common.h\"\n\n"; > > -open($fh_trace_h, '>', 'trace-gen.h') or die "Could not open trace-gen.h for writing"; > +$fh_trace_h = do_open("trace", "trace-gen.h"); > printf $fh_trace_h "/* SPDX-License-Identifier: GPL-2.0-only */\n/*\n * Copyright 2022 Collabora Ltd.\n"; > printf $fh_trace_h " *\n * AUTOMATICALLY GENERATED BY \'%s\' DO NOT EDIT\n */\n\n", __FILE__; > printf $fh_trace_h "\#ifndef TRACE_GEN_H\n"; > printf $fh_trace_h "\#define TRACE_GEN_H\n\n"; > > -open($fh_retrace_cpp, '>', 'retrace-gen.cpp') or die "Could not open retrace-gen.cpp for writing"; > +$fh_retrace_cpp = do_open("retrace", "retrace-gen.cpp"); > printf $fh_retrace_cpp "/* SPDX-License-Identifier: GPL-2.0-only */\n/*\n * Copyright 2022 Collabora Ltd.\n"; > printf $fh_retrace_cpp " *\n * AUTOMATICALLY GENERATED BY \'%s\' DO NOT EDIT\n */\n\n", __FILE__; > printf $fh_retrace_cpp "#include \"v4l2-tracer-common.h\"\n\n"; > > -open($fh_retrace_h, '>', 'retrace-gen.h') or die "Could not open retrace-gen.h for writing"; > +$fh_retrace_h = do_open("retrace", "retrace-gen.h"); > printf $fh_retrace_h "/* SPDX-License-Identifier: GPL-2.0-only */\n/*\n * Copyright 2022 Collabora Ltd.\n"; > printf $fh_retrace_h " *\n * AUTOMATICALLY GENERATED BY \'%s\' DO NOT EDIT\n */\n\n", __FILE__; > printf $fh_retrace_h "\#ifndef RETRACE_GEN_H\n"; > printf $fh_retrace_h "\#define RETRACE_GEN_H\n\n"; > > -open($fh_common_info_h, '>', 'v4l2-tracer-info-gen.h') or die "Could not open v4l2-tracer-info-gen.h for writing"; > +$fh_common_info_h = do_open("common", "v4l2-tracer-info-gen.h"); > printf $fh_common_info_h "/* SPDX-License-Identifier: GPL-2.0-only */\n/*\n * Copyright 2022 Collabora Ltd.\n"; > printf $fh_common_info_h " *\n * AUTOMATICALLY GENERATED BY \'%s\' DO NOT EDIT\n */\n\n", __FILE__; > printf $fh_common_info_h "\#ifndef V4L2_TRACER_INFO_GEN_H\n"; -- Regards, Laurent Pinchart