mirror of
https://github.com/openai/codex.git
synced 2026-04-25 07:05:38 +00:00
79 lines
2.8 KiB
Diff
79 lines
2.8 KiB
Diff
diff --git a/cargo/private/cargo_build_script.bzl b/cargo/private/cargo_build_script.bzl
|
|
--- a/cargo/private/cargo_build_script.bzl
|
|
+++ b/cargo/private/cargo_build_script.bzl
|
|
@@ -120,6 +120,63 @@
|
|
executable = True,
|
|
)
|
|
|
|
+def _strip_stack_protector_for_windows_llvm_mingw(toolchain, args):
|
|
+ """Drop stack protector flags unsupported by llvm-mingw build-script probes."""
|
|
+ if "windows-gnullvm" not in toolchain.target_flag_value:
|
|
+ return args
|
|
+
|
|
+ uses_llvm_mingw = False
|
|
+ for arg in args:
|
|
+ if "mingw-w64-" in arg:
|
|
+ uses_llvm_mingw = True
|
|
+ break
|
|
+
|
|
+ if not uses_llvm_mingw:
|
|
+ return args
|
|
+
|
|
+ # llvm-mingw does not ship libssp_nonshared, so forwarding stack-protector
|
|
+ # flags through CFLAGS/CXXFLAGS breaks build.rs probe binaries compiled via
|
|
+ # cc-rs.
|
|
+ return [arg for arg in args if not arg.startswith("-fstack-protector")]
|
|
+
|
|
+def _rewrite_windows_exec_msvc_cc_args(toolchain, args):
|
|
+ """Translate GNU-flavored cc args when exec-side build scripts target Windows MSVC."""
|
|
+ if toolchain.target_flag_value != toolchain.exec_triple.str or not toolchain.exec_triple.str.endswith("-pc-windows-msvc"):
|
|
+ return args
|
|
+
|
|
+ rewritten = []
|
|
+ skip_next = False
|
|
+ for arg in args:
|
|
+ if skip_next:
|
|
+ skip_next = False
|
|
+ continue
|
|
+
|
|
+ if arg == "-target":
|
|
+ skip_next = True
|
|
+ continue
|
|
+
|
|
+ if arg.startswith("-target=") or arg.startswith("--target="):
|
|
+ continue
|
|
+
|
|
+ if arg == "-nostdlibinc" or arg.startswith("--sysroot"):
|
|
+ continue
|
|
+
|
|
+ if "mingw-w64-" in arg or "mingw_import_libraries_directory" in arg or "mingw_crt_library_search_directory" in arg:
|
|
+ continue
|
|
+
|
|
+ if arg.startswith("-fstack-protector"):
|
|
+ continue
|
|
+
|
|
+ if arg.startswith("-D_FORTIFY_SOURCE="):
|
|
+ continue
|
|
+
|
|
+ rewritten.append(arg)
|
|
+
|
|
+ return [
|
|
+ "-target",
|
|
+ toolchain.target_flag_value,
|
|
+ ] + rewritten
|
|
+
|
|
def get_cc_compile_args_and_env(cc_toolchain, feature_configuration):
|
|
"""Gather cc environment variables from the given `cc_toolchain`
|
|
|
|
@@ -503,6 +560,10 @@
|
|
if not env["AR"]:
|
|
env["AR"] = cc_toolchain.ar_executable
|
|
|
|
+ cc_c_args = _strip_stack_protector_for_windows_llvm_mingw(toolchain, cc_c_args)
|
|
+ cc_cxx_args = _strip_stack_protector_for_windows_llvm_mingw(toolchain, cc_cxx_args)
|
|
+ cc_c_args = _rewrite_windows_exec_msvc_cc_args(toolchain, cc_c_args)
|
|
+ cc_cxx_args = _rewrite_windows_exec_msvc_cc_args(toolchain, cc_cxx_args)
|
|
# Populate CFLAGS and CXXFLAGS that cc-rs relies on when building from source, in particular
|
|
# to determine the deployment target when building for apple platforms (`macosx-version-min`
|
|
# for example, itself derived from the `macos_minimum_os` Bazel argument).
|