From 9ee759a979952ff25ab59f3ad8be3e80f4ea2dae Mon Sep 17 00:00:00 2001 From: Marcel Hlopko Date: Thu, 25 Feb 2021 14:53:09 +0100 Subject: [PATCH] Add -Lnative flags for C++ runtime library --- rust/private/rustc.bzl | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/rust/private/rustc.bzl b/rust/private/rustc.bzl index 008ff18b92..7686edd7be 100644 --- a/rust/private/rustc.bzl +++ b/rust/private/rustc.bzl @@ -663,6 +663,8 @@ def establish_cc_info(ctx, crate_info, toolchain, cc_toolchain, feature_configur # by creating a symlink to the .rlib with a .a extension. dot_a = ctx.actions.declare_file(crate_info.name + ".a", sibling = crate_info.output) ctx.actions.symlink(output = dot_a, target_file = crate_info.output) + + # TODO(hlopko): handle PIC/NOPIC correctly library_to_link = cc_common.create_library_to_link( actions = ctx.actions, feature_configuration = feature_configuration, @@ -842,6 +844,11 @@ def _add_native_link_flags(args, dep_info, crate_type, cc_toolchain, feature_con if crate_type in ["dylib", "cdylib"]: # For shared libraries we want to link C++ runtime library dynamically # (for example libstdc++.so or libc++.so). + args.add_all( + cc_toolchain.dynamic_runtime_lib(feature_configuration = feature_configuration), + map_each = _get_dirname, + format_each = "-Lnative=%s", + ) args.add_all( cc_toolchain.dynamic_runtime_lib(feature_configuration = feature_configuration), map_each = get_lib_name, @@ -850,6 +857,11 @@ def _add_native_link_flags(args, dep_info, crate_type, cc_toolchain, feature_con else: # For all other crate types we want to link C++ runtime library statically # (for example libstdc++.a or libc++.a). + args.add_all( + cc_toolchain.static_runtime_lib(feature_configuration = feature_configuration), + map_each = _get_dirname, + format_each = "-Lnative=%s", + ) args.add_all( cc_toolchain.static_runtime_lib(feature_configuration = feature_configuration), map_each = get_lib_name,