1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
build / rust / filter_clang_args.py [blame]
# Copyright 2022 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""
Filters clang args to make them suitable for libclang.
Rust involves several libclang-based tools that parse C++.
We pass such tools our complete {{cflags}}, but a few of the
arguments aren't appropriate for libclang (for example those
which load plugins).
This function filters them out.
"""
def filter_clang_args(clangargs):
def do_filter(args):
i = 0
while i < len(args):
# Intercept plugin arguments
if args[i] == '-Xclang':
i += 1
if args[i] == '-add-plugin':
pass
elif args[i].startswith('-plugin-arg'):
i += 2
else:
yield args[i]
i += 1
return list(do_filter(clangargs))