Hide toolchain internals
This commit is contained in:
parent
6ded50ad67
commit
64be98b830
@ -143,6 +143,7 @@ def _zig_repository_impl(repository_ctx):
|
|||||||
Label("//toolchain/platform:BUILD"),
|
Label("//toolchain/platform:BUILD"),
|
||||||
"platform/BUILD",
|
"platform/BUILD",
|
||||||
)
|
)
|
||||||
|
|
||||||
repository_ctx.template(
|
repository_ctx.template(
|
||||||
"BUILD",
|
"BUILD",
|
||||||
Label("//toolchain:BUILD.sdk.bazel"),
|
Label("//toolchain:BUILD.sdk.bazel"),
|
||||||
@ -152,9 +153,14 @@ def _zig_repository_impl(repository_ctx):
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
repository_ctx.template(
|
repository_ctx.symlink(
|
||||||
|
Label("//toolchain/toolchain:BUILD"),
|
||||||
"toolchain/BUILD",
|
"toolchain/BUILD",
|
||||||
Label("//toolchain/toolchain:BUILD.sdk.bazel"),
|
)
|
||||||
|
|
||||||
|
repository_ctx.template(
|
||||||
|
"private/BUILD",
|
||||||
|
Label("//toolchain/private:BUILD.sdk.bazel"),
|
||||||
executable = False,
|
executable = False,
|
||||||
substitutions = {
|
substitutions = {
|
||||||
"{absolute_path}": shell.quote(str(repository_ctx.path(""))),
|
"{absolute_path}": shell.quote(str(repository_ctx.path(""))),
|
||||||
|
6
toolchain/private/BUILD.sdk.bazel
Normal file
6
toolchain/private/BUILD.sdk.bazel
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
load("@bazel-zig-cc//toolchain/private:cc_toolchains.bzl", "declare_cc_toolchains")
|
||||||
|
|
||||||
|
declare_cc_toolchains(
|
||||||
|
absolute_path = {absolute_path},
|
||||||
|
zig_include_root = {zig_include_root},
|
||||||
|
)
|
68
toolchain/private/cc_toolchains.bzl
Normal file
68
toolchain/private/cc_toolchains.bzl
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
load(":defs.bzl", "DEFAULT_INCLUDE_DIRECTORIES", "ZIG_TOOL_PATH", "target_structs")
|
||||||
|
load("@bazel-zig-cc//toolchain:zig_toolchain.bzl", "zig_cc_toolchain_config")
|
||||||
|
|
||||||
|
DEFAULT_TOOL_PATHS = {
|
||||||
|
"ar": "ar",
|
||||||
|
"gcc": "c++", # https://github.com/bazelbuild/bazel/issues/4644
|
||||||
|
"cpp": "/usr/bin/false",
|
||||||
|
"gcov": "/usr/bin/false",
|
||||||
|
"nm": "/usr/bin/false",
|
||||||
|
"objdump": "/usr/bin/false",
|
||||||
|
"strip": "/usr/bin/false",
|
||||||
|
}.items()
|
||||||
|
|
||||||
|
def declare_cc_toolchains(absolute_path, zig_include_root):
|
||||||
|
for target_config in target_structs():
|
||||||
|
gotarget = target_config.gotarget
|
||||||
|
zigtarget = target_config.zigtarget
|
||||||
|
|
||||||
|
cxx_builtin_include_directories = []
|
||||||
|
for d in DEFAULT_INCLUDE_DIRECTORIES + target_config.includes:
|
||||||
|
d = zig_include_root + d
|
||||||
|
cxx_builtin_include_directories.append(absolute_path + "/" + d)
|
||||||
|
for d in getattr(target_config, "toplevel_include", []):
|
||||||
|
cxx_builtin_include_directories.append(absolute_path + "/" + d)
|
||||||
|
|
||||||
|
absolute_tool_paths = {}
|
||||||
|
for name, path in target_config.tool_paths.items() + DEFAULT_TOOL_PATHS:
|
||||||
|
if path[0] == "/":
|
||||||
|
absolute_tool_paths[name] = path
|
||||||
|
continue
|
||||||
|
tool_path = ZIG_TOOL_PATH.format(zig_tool = path)
|
||||||
|
absolute_tool_paths[name] = "%s/%s" % (absolute_path, tool_path)
|
||||||
|
|
||||||
|
linkopts = target_config.linkopts
|
||||||
|
copts = target_config.copts
|
||||||
|
for s in getattr(target_config, "linker_version_scripts", []):
|
||||||
|
linkopts = linkopts + ["-Wl,--version-script,%s/%s" % (absolute_path, s)]
|
||||||
|
for incl in getattr(target_config, "compiler_extra_includes", []):
|
||||||
|
copts = copts + ["-include", absolute_path + "/" + incl]
|
||||||
|
|
||||||
|
zig_cc_toolchain_config(
|
||||||
|
name = zigtarget + "_cc_config",
|
||||||
|
target = zigtarget,
|
||||||
|
tool_paths = absolute_tool_paths,
|
||||||
|
cxx_builtin_include_directories = cxx_builtin_include_directories,
|
||||||
|
copts = copts,
|
||||||
|
linkopts = linkopts,
|
||||||
|
target_cpu = target_config.bazel_target_cpu,
|
||||||
|
target_system_name = "unknown",
|
||||||
|
target_libc = "unknown",
|
||||||
|
compiler = "clang",
|
||||||
|
abi_version = "unknown",
|
||||||
|
abi_libc_version = "unknown",
|
||||||
|
)
|
||||||
|
|
||||||
|
native.cc_toolchain(
|
||||||
|
name = zigtarget + "_cc",
|
||||||
|
toolchain_identifier = zigtarget + "-toolchain",
|
||||||
|
toolchain_config = ":%s_cc_config" % zigtarget,
|
||||||
|
all_files = "@zig_sdk//:zig",
|
||||||
|
ar_files = "@zig_sdk//:zig",
|
||||||
|
compiler_files = "@zig_sdk//:zig",
|
||||||
|
linker_files = "@zig_sdk//:zig",
|
||||||
|
dwp_files = "@zig_sdk//:empty",
|
||||||
|
objcopy_files = "@zig_sdk//:empty",
|
||||||
|
strip_files = "@zig_sdk//:empty",
|
||||||
|
supports_param_files = 0,
|
||||||
|
)
|
@ -0,0 +1,7 @@
|
|||||||
|
load("@bazel-zig-cc//toolchain/toolchain:defs.bzl", "declare_toolchains")
|
||||||
|
|
||||||
|
package(
|
||||||
|
default_visibility = ["//visibility:public"],
|
||||||
|
)
|
||||||
|
|
||||||
|
declare_toolchains()
|
@ -1,10 +0,0 @@
|
|||||||
load("@bazel-zig-cc//toolchain/toolchain:defs.bzl", "declare_toolchains")
|
|
||||||
|
|
||||||
package(
|
|
||||||
default_visibility = ["//visibility:public"],
|
|
||||||
)
|
|
||||||
|
|
||||||
declare_toolchains(
|
|
||||||
absolute_path = {absolute_path},
|
|
||||||
zig_include_root = {zig_include_root},
|
|
||||||
)
|
|
@ -1,79 +1,17 @@
|
|||||||
load("@bazel-zig-cc//toolchain:zig_toolchain.bzl", "zig_cc_toolchain_config")
|
|
||||||
load("@bazel-zig-cc//toolchain/private:defs.bzl", "DEFAULT_INCLUDE_DIRECTORIES", "ZIG_TOOL_PATH", "target_structs")
|
load("@bazel-zig-cc//toolchain/private:defs.bzl", "DEFAULT_INCLUDE_DIRECTORIES", "ZIG_TOOL_PATH", "target_structs")
|
||||||
|
|
||||||
DEFAULT_TOOL_PATHS = {
|
def declare_toolchains():
|
||||||
"ar": "ar",
|
|
||||||
"gcc": "c++", # https://github.com/bazelbuild/bazel/issues/4644
|
|
||||||
"cpp": "/usr/bin/false",
|
|
||||||
"gcov": "/usr/bin/false",
|
|
||||||
"nm": "/usr/bin/false",
|
|
||||||
"objdump": "/usr/bin/false",
|
|
||||||
"strip": "/usr/bin/false",
|
|
||||||
}.items()
|
|
||||||
|
|
||||||
def declare_toolchains(absolute_path, zig_include_root):
|
|
||||||
for target_config in target_structs():
|
for target_config in target_structs():
|
||||||
gotarget = target_config.gotarget
|
gotarget = target_config.gotarget
|
||||||
zigtarget = target_config.zigtarget
|
zigtarget = target_config.zigtarget
|
||||||
|
|
||||||
cxx_builtin_include_directories = []
|
|
||||||
for d in DEFAULT_INCLUDE_DIRECTORIES + target_config.includes:
|
|
||||||
d = zig_include_root + d
|
|
||||||
cxx_builtin_include_directories.append(absolute_path + "/" + d)
|
|
||||||
for d in getattr(target_config, "toplevel_include", []):
|
|
||||||
cxx_builtin_include_directories.append(absolute_path + "/" + d)
|
|
||||||
|
|
||||||
absolute_tool_paths = {}
|
|
||||||
for name, path in target_config.tool_paths.items() + DEFAULT_TOOL_PATHS:
|
|
||||||
if path[0] == "/":
|
|
||||||
absolute_tool_paths[name] = path
|
|
||||||
continue
|
|
||||||
tool_path = ZIG_TOOL_PATH.format(zig_tool = path)
|
|
||||||
absolute_tool_paths[name] = "%s/%s" % (absolute_path, tool_path)
|
|
||||||
|
|
||||||
linkopts = target_config.linkopts
|
|
||||||
copts = target_config.copts
|
|
||||||
for s in getattr(target_config, "linker_version_scripts", []):
|
|
||||||
linkopts = linkopts + ["-Wl,--version-script,%s/%s" % (absolute_path, s)]
|
|
||||||
for incl in getattr(target_config, "compiler_extra_includes", []):
|
|
||||||
copts = copts + ["-include", absolute_path + "/" + incl]
|
|
||||||
|
|
||||||
zig_cc_toolchain_config(
|
|
||||||
name = zigtarget + "_cc_config",
|
|
||||||
target = zigtarget,
|
|
||||||
tool_paths = absolute_tool_paths,
|
|
||||||
cxx_builtin_include_directories = cxx_builtin_include_directories,
|
|
||||||
copts = copts,
|
|
||||||
linkopts = linkopts,
|
|
||||||
target_cpu = target_config.bazel_target_cpu,
|
|
||||||
target_system_name = "unknown",
|
|
||||||
target_libc = "unknown",
|
|
||||||
compiler = "clang",
|
|
||||||
abi_version = "unknown",
|
|
||||||
abi_libc_version = "unknown",
|
|
||||||
)
|
|
||||||
|
|
||||||
native.cc_toolchain(
|
|
||||||
name = zigtarget + "_cc",
|
|
||||||
toolchain_identifier = zigtarget + "-toolchain",
|
|
||||||
toolchain_config = ":%s_cc_config" % zigtarget,
|
|
||||||
all_files = "@zig_sdk//:zig",
|
|
||||||
ar_files = "@zig_sdk//:zig",
|
|
||||||
compiler_files = "@zig_sdk//:zig",
|
|
||||||
linker_files = "@zig_sdk//:zig",
|
|
||||||
dwp_files = "@zig_sdk//:empty",
|
|
||||||
objcopy_files = "@zig_sdk//:empty",
|
|
||||||
strip_files = "@zig_sdk//:empty",
|
|
||||||
supports_param_files = 0,
|
|
||||||
)
|
|
||||||
|
|
||||||
# register two kinds of toolchain targets: Go and Zig conventions.
|
# register two kinds of toolchain targets: Go and Zig conventions.
|
||||||
# Go convention: amd64/arm64, linux/darwin
|
# Go convention: amd64/arm64, linux/darwin
|
||||||
native.toolchain(
|
native.toolchain(
|
||||||
name = gotarget,
|
name = gotarget,
|
||||||
exec_compatible_with = None,
|
exec_compatible_with = None,
|
||||||
target_compatible_with = target_config.constraint_values,
|
target_compatible_with = target_config.constraint_values,
|
||||||
toolchain = ":%s_cc" % zigtarget,
|
toolchain = "@zig_sdk//private:%s_cc" % zigtarget,
|
||||||
toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
|
toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -82,6 +20,6 @@ def declare_toolchains(absolute_path, zig_include_root):
|
|||||||
name = zigtarget,
|
name = zigtarget,
|
||||||
exec_compatible_with = None,
|
exec_compatible_with = None,
|
||||||
target_compatible_with = target_config.constraint_values,
|
target_compatible_with = target_config.constraint_values,
|
||||||
toolchain = ":%s_cc" % zigtarget,
|
toolchain = "@zig_sdk//private:%s_cc" % zigtarget,
|
||||||
toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
|
toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user