xref: /aosp_15_r20/external/angle/build/android/gyp/generate_android_wrapper.py (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1#!/usr/bin/env python3
2# Copyright 2019 The Chromium Authors
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6import os
7import re
8import sys
9
10from util import build_utils
11import action_helpers  # build_utils adds //build to sys.path.
12
13sys.path.append(
14    os.path.abspath(
15        os.path.join(os.path.dirname(__file__), '..', '..', 'util')))
16
17import generate_wrapper
18
19_WRAPPED_PATH_LIST_RE = re.compile(r'@WrappedPathList\(([^,]+), ([^)]+)\)')
20
21
22def ExpandWrappedPathLists(args):
23  expanded_args = []
24  for arg in args:
25    m = _WRAPPED_PATH_LIST_RE.match(arg)
26    if m:
27      for p in action_helpers.parse_gn_list(m.group(2)):
28        expanded_args.extend([m.group(1), '@WrappedPath(%s)' % p])
29    else:
30      expanded_args.append(arg)
31  return expanded_args
32
33
34def main(raw_args):
35  parser = generate_wrapper.CreateArgumentParser()
36  expanded_raw_args = build_utils.ExpandFileArgs(raw_args)
37  expanded_raw_args = ExpandWrappedPathLists(expanded_raw_args)
38  args = parser.parse_args(expanded_raw_args)
39  return generate_wrapper.Wrap(args)
40
41
42if __name__ == '__main__':
43  sys.exit(main(sys.argv[1:]))
44