Skip to content
Open
37 changes: 32 additions & 5 deletions docs/toolchains.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions zig/config/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ filegroup(
name = "all_files",
srcs = [
":BUILD.bazel",
"//zig/config/bootstrapped:all_files",
"//zig/config/mode:all_files",
"//zig/config/threaded:all_files",
"//zig/config/use_standalone_translate_c:all_files",
Expand Down
20 changes: 20 additions & 0 deletions zig/config/bootstrapped/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
config_setting(
name = "bootstrap_enabled",
flag_values = {
"//zig/settings:bootstrapped": "true",
},
)

config_setting(
name = "bootstrap_disabled",
flag_values = {
"//zig/settings:bootstrapped": "false",
},
)

# Execute `bazel run //util:update_filegroups` to update this target.
filegroup(
name = "all_files",
srcs = [":BUILD.bazel"],
visibility = ["//zig/config:__pkg__"],
)
3 changes: 1 addition & 2 deletions zig/private/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -102,8 +102,6 @@ bzl_library(
visibility = ["//zig:__subpackages__"],
deps = [
"//zig/private/providers:zig_toolchain_info",
"@aspect_bazel_lib//lib:paths",
"@bazel_skylib//lib:paths",
],
)

Expand Down Expand Up @@ -140,6 +138,7 @@ bzl_library(
srcs = ["zig_toolchain_header.bzl"],
visibility = ["//zig:__subpackages__"],
deps = [
"//zig/private/providers:zig_toolchain_info",
"@rules_cc//cc/common",
],
)
Expand Down
5 changes: 4 additions & 1 deletion zig/private/common/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ bzl_library(
name = "zig_lib_dir",
srcs = ["zig_lib_dir.bzl"],
visibility = ["//zig:__subpackages__"],
deps = ["@bazel_skylib//lib:paths"],
deps = ["//zig/private/providers:zig_toolchain_info"],
)

bzl_library(
Expand All @@ -38,6 +38,7 @@ bzl_library(
"//zig/private/providers:zig_module_info",
"//zig/private/providers:zig_settings_info",
"//zig/private/providers:zig_target_info",
"//zig/private/providers:zig_toolchain_info",
"@build_bazel_rules_android//:cc_common_link.bzl",
"@rules_cc//cc:find_cc_toolchain_bzl",
"@rules_cc//cc/common",
Expand All @@ -61,6 +62,7 @@ bzl_library(
"//zig/private/providers:zig_module_info",
"//zig/private/providers:zig_settings_info",
"//zig/private/providers:zig_target_info",
"//zig/private/providers:zig_toolchain_info",
"@bazel_skylib//lib:paths",
],
)
Expand Down Expand Up @@ -97,6 +99,7 @@ bzl_library(
":escape_label",
"//zig/private:cc_helper",
"//zig/private/providers:zig_module_info",
"//zig/private/providers:zig_toolchain_info",
"@apple_support//lib:apple_support",
"@rules_cc//cc:action_names.bzl",
"@rules_cc//cc/common",
Expand Down
15 changes: 12 additions & 3 deletions zig/private/common/translate_c.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@ load("@rules_cc//cc/common:cc_info.bzl", "CcInfo")
load("//zig/private:cc_helper.bzl", "find_cc_toolchain")
load("//zig/private/common:escape_label.bzl", "escape_label", "escape_label_str")
load("//zig/private/providers:zig_module_info.bzl", "zig_module_info")
load(
"//zig/private/providers:zig_toolchain_info.bzl",
"zig_toolchain_executable_path",
"zig_toolchain_lib_dir_path",
)

_DEFAULT_SYSROOT_INCLUDE_DIRS = [
paths.join("usr", "include"),
Expand Down Expand Up @@ -113,23 +118,27 @@ def _builtin_translate_c(*, ctx, zigtoolchaininfo, global_args, compilation_cont
args.add_all(cc_toolchain.built_in_include_directories, before_each = "-isystem")

zig_out = ctx.actions.declare_file("{}{}_c.zig".format(output_prefix, ctx.label.name))
inputs.extend([zigtoolchaininfo.validation])
if zigtoolchaininfo.zig_lib.file != None:
inputs.append(zigtoolchaininfo.zig_lib.file)

ctx.actions.run_shell(
command = "${{@}} > {}".format(zig_out.path),
inputs = depset(
direct = inputs,
transitive = transitive_inputs,
),
outputs = [zig_out],
arguments = [zigtoolchaininfo.zig_exe_path, "translate-c", global_args, args],
arguments = [zig_toolchain_executable_path(zigtoolchaininfo), "translate-c", global_args, args],
mnemonic = "ZigTranslateC",
progress_message = "zig translate-c %{label}",
execution_requirements = {tag: "" for tag in ctx.attr.tags},
env = {
"ZIG_GLOBAL_CACHE_DIR": zigtoolchaininfo.zig_cache,
"ZIG_LIB_DIR": zigtoolchaininfo.zig_lib_path,
"ZIG_LIB_DIR": zig_toolchain_lib_dir_path(zigtoolchaininfo),
"ZIG_LOCAL_CACHE_DIR": zigtoolchaininfo.zig_cache,
},
tools = zigtoolchaininfo.zig_files,
tools = [zigtoolchaininfo.zig_exe.file] if zigtoolchaininfo.zig_exe.file else [],
toolchain = "//zig:toolchain_type",
)

Expand Down
29 changes: 17 additions & 12 deletions zig/private/common/zig_build.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@ load(
"//zig/private/providers:zig_target_info.bzl",
"zig_target_platform",
)
load(
"//zig/private/providers:zig_toolchain_info.bzl",
"zig_toolchain_executable",
)

ATTRS = {
"main": attr.label(
Expand Down Expand Up @@ -457,6 +461,9 @@ def zig_build_impl(ctx, *, kind):
)

transitive_inputs.append(root_module.transitive_inputs)
transitive_inputs.append(depset([zigtoolchaininfo.validation]))
if zigtoolchaininfo.zig_lib.file != None:
transitive_inputs.append(depset([zigtoolchaininfo.zig_lib.file]))

inputs = depset(
direct = direct_inputs,
Expand All @@ -466,11 +473,9 @@ def zig_build_impl(ctx, *, kind):

zig_build_kwargs = dict(
execution_requirements = {tag: "" for tag in ctx.attr.tags},
tools = zigtoolchaininfo.zig_files,
toolchain = "//zig:toolchain_type",
env = {
"ZIG_GLOBAL_CACHE_DIR": zigtoolchaininfo.zig_cache,
"ZIG_LIB_DIR": zigtoolchaininfo.zig_lib_path,
"ZIG_LOCAL_CACHE_DIR": zigtoolchaininfo.zig_cache,
},
)
Expand Down Expand Up @@ -511,7 +516,7 @@ def zig_build_impl(ctx, *, kind):
ctx.actions.run(
outputs = [static_lib] + auxiliary_outputs,
inputs = inputs,
executable = zigtoolchaininfo.zig_exe_path,
executable = zig_toolchain_executable(zigtoolchaininfo),
arguments = ["build-lib", global_args, args],
mnemonic = "ZigBuildLib",
progress_message = "zig build-lib %{label}",
Expand Down Expand Up @@ -548,7 +553,7 @@ def zig_build_impl(ctx, *, kind):
ctx.actions.run(
outputs = [bin_output] + auxiliary_outputs,
inputs = inputs,
executable = zigtoolchaininfo.zig_exe_path,
executable = zig_toolchain_executable(zigtoolchaininfo),
arguments = ["build-exe", global_args, args],
mnemonic = "ZigBuildExe",
progress_message = "zig build-exe %{label}",
Expand All @@ -564,7 +569,7 @@ def zig_build_impl(ctx, *, kind):
ctx.actions.run(
outputs = [test_obj] + auxiliary_outputs,
inputs = inputs,
executable = zigtoolchaininfo.zig_exe_path,
executable = zig_toolchain_executable(zigtoolchaininfo),
arguments = ["test-obj", "--test-no-exec", global_args, args, test_args],
mnemonic = "ZigBuildTest",
progress_message = "zig test-obj %{label}",
Expand All @@ -583,7 +588,7 @@ def zig_build_impl(ctx, *, kind):
ctx.actions.run(
outputs = [bc] + auxiliary_outputs,
inputs = inputs,
executable = zigtoolchaininfo.zig_exe_path,
executable = zig_toolchain_executable(zigtoolchaininfo),
arguments = ["test", "--test-no-exec", global_args, args, test_args],
mnemonic = "ZigBuildTest",
progress_message = "zig test %{label}",
Expand All @@ -601,8 +606,8 @@ def zig_build_impl(ctx, *, kind):
lib_args.add(test_artifact)
ctx.actions.run(
outputs = [static_lib],
inputs = [test_artifact],
executable = zigtoolchaininfo.zig_exe_path,
inputs = [test_artifact, zigtoolchaininfo.validation] + ([zigtoolchaininfo.zig_lib.file] if zigtoolchaininfo.zig_lib.file else []),
executable = zig_toolchain_executable(zigtoolchaininfo),
arguments = ["build-lib", global_args, lib_args],
mnemonic = "ZigBuildLib",
progress_message = "zig build-lib %{label}",
Expand Down Expand Up @@ -639,7 +644,7 @@ def zig_build_impl(ctx, *, kind):
ctx.actions.run(
outputs = [bin_output] + auxiliary_outputs,
inputs = inputs,
executable = zigtoolchaininfo.zig_exe_path,
executable = zig_toolchain_executable(zigtoolchaininfo),
arguments = ["test", "--test-no-exec", global_args, args],
mnemonic = "ZigBuildTest",
progress_message = "zig test %{label}",
Expand All @@ -653,7 +658,7 @@ def zig_build_impl(ctx, *, kind):
ctx.actions.run(
outputs = ([bin_output] if ctx.attr.emit_bin else []) + auxiliary_outputs,
inputs = inputs,
executable = zigtoolchaininfo.zig_exe_path,
executable = zig_toolchain_executable(zigtoolchaininfo),
arguments = ["build-lib", global_args, args],
mnemonic = "ZigBuildStaticLib",
progress_message = "zig build-lib %{label}",
Expand All @@ -677,7 +682,7 @@ def zig_build_impl(ctx, *, kind):
ctx.actions.run(
outputs = [static_lib] + auxiliary_outputs,
inputs = inputs,
executable = zigtoolchaininfo.zig_exe_path,
executable = zig_toolchain_executable(zigtoolchaininfo),
arguments = ["build-lib", global_args, args],
mnemonic = "ZigBuildLib",
progress_message = "zig build-lib %{label}",
Expand Down Expand Up @@ -729,7 +734,7 @@ def zig_build_impl(ctx, *, kind):
ctx.actions.run(
outputs = [bin_output] + auxiliary_outputs,
inputs = inputs,
executable = zigtoolchaininfo.zig_exe_path,
executable = zig_toolchain_executable(zigtoolchaininfo),
arguments = ["build-lib", "-dynamic", global_args, args],
mnemonic = "ZigBuildSharedLib",
progress_message = "zig build-lib -dynamic %{label}",
Expand Down
10 changes: 8 additions & 2 deletions zig/private/common/zig_docs.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ load(
"//zig/private/providers:zig_target_info.bzl",
"zig_target_platform",
)
load(
"//zig/private/providers:zig_toolchain_info.bzl",
"zig_toolchain_executable",
)

ATTRS = {
"extra_docs": attr.label_list(
Expand Down Expand Up @@ -162,6 +166,9 @@ def zig_docs_impl(ctx, *, kind):
)

transitive_inputs.append(root_module.transitive_inputs)
transitive_inputs.append(depset([zigtoolchaininfo.validation]))
if zigtoolchaininfo.zig_lib.file != None:
transitive_inputs.append(depset([zigtoolchaininfo.zig_lib.file]))

inputs = depset(
direct = direct_inputs,
Expand All @@ -187,8 +194,7 @@ def zig_docs_impl(ctx, *, kind):
ctx.actions.run(
outputs = outputs,
inputs = inputs,
executable = zigtoolchaininfo.zig_exe_path,
tools = zigtoolchaininfo.zig_files,
executable = zig_toolchain_executable(zigtoolchaininfo),
arguments = arguments,
mnemonic = mnemonic,
progress_message = progress_message,
Expand Down
5 changes: 4 additions & 1 deletion zig/private/common/zig_lib_dir.bzl
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
"""Defines utilities to handle the Zig library directory."""

load("//zig/private/providers:zig_toolchain_info.bzl", "zig_toolchain_lib_dir")

def zig_lib_dir(*, zigtoolchaininfo, args):
"""Handle the Zig library directory.

Expand All @@ -10,4 +12,5 @@ def zig_lib_dir(*, zigtoolchaininfo, args):
zigtoolchaininfo: ZigToolchainInfo.
args: Args; mutable, Append the Zig cache flags to this object.
"""
args.add_all(["--zig-lib-dir", zigtoolchaininfo.zig_lib_path])
args.add("--zig-lib-dir")
args.add(zig_toolchain_lib_dir(zigtoolchaininfo))
Loading
Loading