Download patches/rules_rust_windows_msvc_direct_link_args.patch from SaylorTwift/codex: direct link, hf CLI and curl.
- Browser
- Download file 5.11 kB
-
https://huggingface.co/SaylorTwift/codex/resolve/main/patches/rules_rust_windows_msvc_direct_link_args.patch
- Command line
-
hf download hf://SaylorTwift/codex/patches/rules_rust_windows_msvc_direct_link_args.patch
-
curl -L -o rules_rust_windows_msvc_direct_link_args.patch https://huggingface.co/SaylorTwift/codex/resolve/main/patches/rules_rust_windows_msvc_direct_link_args.patch
5.11 kB
| --- a/rust/private/rustc.bzl | |
| +++ b/rust/private/rustc.bzl | |
| use_bpf_linker = toolchain.target_arch in ("bpfeb", "bpfel") and toolchain.linker | |
| - if not ld or toolchain.linker_preference == "rust" or use_bpf_linker: | |
| + use_windows_msvc_linker = ( | |
| + toolchain.target_arch in ("x86_64", "aarch64") and | |
| + toolchain.target_os == "windows" and | |
| + toolchain.target_abi == "msvc" and | |
| + toolchain.linker != None and | |
| + toolchain.linker_preference != "cc" | |
| + ) | |
| + if not ld or toolchain.linker_preference == "rust" or use_bpf_linker or use_windows_msvc_linker: | |
| ld = toolchain.linker.path | |
| ld_is_direct_driver = toolchain.linker_type == "direct" | |
| filtered_args.append(version) | |
| # Keep library search path flags | |
| + elif processed_arg == "-L" and i + 1 < len(link_args): | |
| + path = link_args[i + 1] | |
| + if ld_is_direct_driver and toolchain.target_os == "windows" and toolchain.target_abi == "msvc": | |
| + skip_next = True | |
| + continue | |
| + filtered_args.extend([processed_arg, path]) | |
| + skip_next = True | |
| + | |
| elif processed_arg.startswith("-L"): | |
| + if ld_is_direct_driver and toolchain.target_os == "windows" and toolchain.target_abi == "msvc": | |
| + continue | |
| filtered_args.append(processed_arg) | |
| # Keep sysroot flags (as single or two-part arguments) | |
| elif processed_arg == "--sysroot" or processed_arg.startswith("--sysroot="): | |
| + if ld_is_direct_driver and toolchain.target_os == "windows" and toolchain.target_abi == "msvc": | |
| + if processed_arg == "--sysroot" and i + 1 < len(link_args): | |
| + skip_next = True | |
| + continue | |
| filtered_args.append(processed_arg) | |
| if processed_arg == "--sysroot" and i + 1 < len(link_args): | |
| # Two-part argument, keep the next arg too | |
| use_pic, | |
| ambiguous_libs, | |
| get_lib_name, | |
| + for_windows = False, | |
| for_darwin = False, | |
| - flavor_msvc = False): | |
| + flavor_msvc = False, | |
| + use_direct_driver = False): | |
| """_summary_ | |
| Args: | |
| use_pic (_type_): _description_ | |
| ambiguous_libs (_type_): _description_ | |
| get_lib_name (_type_): _description_ | |
| + for_windows (bool, optional): _description_. Defaults to False. | |
| for_darwin (bool, optional): _description_. Defaults to False. | |
| flavor_msvc (bool, optional): _description_. Defaults to False. | |
| + use_direct_driver (bool, optional): _description_. Defaults to False. | |
| Returns: | |
| _type_: _description_ | |
| ): | |
| return [] if for_darwin else ["-lstatic=%s" % get_lib_name(artifact)] | |
| + if for_windows and flavor_msvc and use_direct_driver and not artifact.basename.endswith(".lib"): | |
| + return [ | |
| + "-Clink-arg={}".format(artifact.path), | |
| + ] | |
| + | |
| if flavor_msvc: | |
| return [ | |
| "-lstatic=%s" % get_lib_name(artifact), | |
| ]) | |
| elif include_link_flags: | |
| get_lib_name = get_lib_name_for_windows if flavor_msvc else get_lib_name_default | |
| - ret.extend(portable_link_flags(lib, use_pic, ambiguous_libs, get_lib_name, flavor_msvc = flavor_msvc)) | |
| + ret.extend(portable_link_flags(lib, use_pic, ambiguous_libs, get_lib_name, for_windows = True, flavor_msvc = flavor_msvc, use_direct_driver = use_direct_driver)) | |
| # Windows toolchains can inherit POSIX defaults like -pthread from C deps, | |
| # which fails to link with the MinGW/LLD toolchain. Drop them here. | |
| format_each = "-Lnative=%s", | |
| ) | |
| if include_link_flags: | |
| - args.add_all( | |
| - runtime_libs, | |
| - map_each = get_lib_name, | |
| - format_each = static_runtime_link_format, | |
| - ) | |
| + if toolchain.target_os == "windows" and toolchain.target_abi == "msvc" and use_direct_link_driver: | |
| + for runtime_lib in runtime_libs.to_list(): | |
| + if runtime_lib.basename.endswith(".lib"): | |
| + args.add(get_lib_name(runtime_lib), format = static_runtime_link_format) | |
| + else: | |
| + args.add(runtime_lib.path, format = "--codegen=link-arg=%s") | |
| + else: | |
| + args.add_all( | |
| + runtime_libs, | |
| + map_each = get_lib_name, | |
| + format_each = static_runtime_link_format, | |
| + ) | |
| def _get_dirname(file): | |
| """A helper function for `_add_native_link_flags`. | |