| 123456789101112131415161718192021222324252627282930313233343536373839 |
- from __future__ import absolute_import, print_function, unicode_literals
- import os
- import pipes
- import subprocess
- import sys
- args = [
- os.environ["RUST_ANDROID_GRADLE_CC"],
- os.environ["RUST_ANDROID_GRADLE_CC_LINK_ARG"],
- ] + sys.argv[1:]
- def update_in_place(arglist):
- # The `gcc` library is not included starting from NDK version 23.
- # Work around by using `unwind` replacement.
- ndk_major_version = os.environ["CARGO_NDK_MAJOR_VERSION"]
- if ndk_major_version.isdigit():
- if 23 <= int(ndk_major_version):
- for i, arg in enumerate(arglist):
- if arg.startswith("-lgcc"):
- # This is one way to preserve line endings.
- arglist[i] = "-lunwind" + arg[len("-lgcc") :]
- update_in_place(args)
- for arg in args:
- if arg.startswith("@"):
- fileargs = open(arg[1:], "r").read().splitlines(keepends=True)
- update_in_place(fileargs)
- open(arg[1:], "w").write("".join(fileargs))
- # This only appears when the subprocess call fails, but it's helpful then.
- printable_cmd = " ".join(pipes.quote(arg) for arg in args)
- print(printable_cmd)
- sys.exit(subprocess.call(args))
|