diff options
Diffstat (limited to 'scripts/rustc_linker.py')
| -rwxr-xr-x | scripts/rustc_linker.py | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/scripts/rustc_linker.py b/scripts/rustc_linker.py index 3f60708e2..c9c4a1515 100755 --- a/scripts/rustc_linker.py +++ b/scripts/rustc_linker.py @@ -31,27 +31,40 @@ replacementVersionScript = None argparser = argparse.ArgumentParser() argparser.add_argument('--android-clang-bin', required=True) args = argparser.parse_known_args() -clang_args = [args[0].android_clang_bin] + args[1] +old_clang_args = [args[0].android_clang_bin] + args[1] +new_clang_args = list() -for i, arg in enumerate(clang_args): +# Add/remove args +for i, arg in enumerate(old_clang_args): + # Record and remove the custom android-version-script arg if arg.startswith('-Wl,--android-version-script='): replacementVersionScript = arg.split("=")[1] - del clang_args[i] - break + continue + # Remove object files rustc emits for Windows target + # We provide these as an rlib. + if arg == "rsend.o": + continue + if arg == "rsbegin.o": + continue + + # Keep the arg + new_clang_args.append(old_clang_args[i]) + +# Modify args if replacementVersionScript: versionScriptFound = False - for i, arg in enumerate(clang_args): + for i, arg in enumerate(new_clang_args): if arg.startswith('-Wl,--version-script='): - clang_args[i] ='-Wl,--version-script=' + replacementVersionScript + new_clang_args[i] ='-Wl,--version-script=' + replacementVersionScript versionScriptFound = True break if not versionScriptFound: # If rustc did not emit a version script, just append the arg - clang_args.append('-Wl,--version-script=' + replacementVersionScript) + new_clang_args.append('-Wl,--version-script=' + replacementVersionScript) try: - subprocess.run(clang_args, encoding='utf-8', check=True) + subprocess.run(new_clang_args, encoding='utf-8', check=True) except subprocess.CalledProcessError as e: sys.exit(-1) |
