1

Re-add linkopts and set -Wl,-headerpad_max_install_names on macos

This commit is contained in:
Jeremy Volkman 2023-04-18 14:49:23 -07:00
parent 9e7efd9a1b
commit cff2b2660b
3 changed files with 17 additions and 5 deletions

View File

@ -30,7 +30,7 @@ def declare_cc_toolchains(os, zig_sdk_path):
dynamic_library_linkopts = target_config.dynamic_library_linkopts
copts = target_config.copts
linkopts = []
linkopts = target_config.linkopts
# We can't pass a list of structs to a rule, so we use json encoding.
artifact_name_patterns = getattr(target_config, "artifact_name_patterns", [])

View File

@ -63,6 +63,7 @@ def _target_macos(gocpu, zigcpu):
"libc/include/any-macos.{}-any".format(min_os),
"libc/include/any-macos-any",
] + _INCLUDE_TAIL,
linkopts = ["-Wl,-headerpad_max_install_names"],
dynamic_library_linkopts = ["-Wl,-undefined=dynamic_lookup"],
copts = copts,
libc = "darwin",
@ -90,6 +91,7 @@ def _target_windows(gocpu, zigcpu):
"libunwind/include",
"libc/include/any-windows-any",
] + _INCLUDE_TAIL,
linkopts = [],
dynamic_library_linkopts = [],
copts = [],
libc = "mingw",
@ -133,6 +135,7 @@ def _target_linux_gnu(gocpu, zigcpu, glibc_version):
(["libc/include/{}-linux-any".format(zigcpu)] if zigcpu != "x86_64" else []) + [
"libc/include/any-linux-any",
] + _INCLUDE_TAIL,
linkopts = [],
dynamic_library_linkopts = [],
copts = [],
libc = "glibc",
@ -159,6 +162,7 @@ def _target_linux_musl(gocpu, zigcpu):
(["libc/include/{}-linux-any".format(zigcpu)] if zigcpu != "x86_64" else []) + [
"libc/include/any-linux-any",
] + _INCLUDE_TAIL,
linkopts = [],
dynamic_library_linkopts = [],
copts = ["-D_LIBCPP_HAS_MUSL_LIBC", "-D_LIBCPP_HAS_THREAD_API_PTHREAD"],
libc = "musl",

View File

@ -114,20 +114,28 @@ def _zig_cc_toolchain_config_impl(ctx):
],
)
link_flag_sets = []
if ctx.attr.linkopts:
link_flag_sets += [
flag_set(
actions = all_link_actions,
flag_groups = [flag_group(flags = ctx.attr.linkopts)],
),
]
if ctx.attr.dynamic_library_linkopts:
dynamic_library_flag_sets = [
link_flag_sets += [
flag_set(
actions = dynamic_library_link_actions,
flag_groups = [flag_group(flags = ctx.attr.dynamic_library_linkopts)],
),
]
else:
dynamic_library_flag_sets = []
default_linker_flags = feature(
name = "default_linker_flags",
enabled = True,
flag_sets = dynamic_library_flag_sets,
flag_sets = link_flag_sets,
)
supports_dynamic_linker = feature(