Update ROCm toolchain configuration
1. Rewrote hipcc_cc_toolchain_config.bzl.tpl.oss based on third_party/bazel/tools/cpp/unix_cc_toolchain_config.bzl
2. Cleaned up non-Linux stuff in toolchain configuration
3. Added support for parameter file in the compiler wrapper script
4. Re-generated preconfigured toolchain by third_party/tensorflow/third_party/toolchains/preconfig/generate/update.sh ubuntu16.04-py3_opt-gcc5-rocm
5. Bumped min Bazel version to 0.27.1 because toolchain configure requires newer Bazel
6. Removed --noincompatible_do_not_split_linking_cmdline
PiperOrigin-RevId: 278844463
Change-Id: I477ec5b44e6c634db7c6d65d02b3e307f0be338b
diff --git a/configure.py b/configure.py
index 77f2671..ff615a7 100644
--- a/configure.py
+++ b/configure.py
@@ -49,7 +49,7 @@
_TF_WORKSPACE_ROOT = ''
_TF_BAZELRC = ''
_TF_CURRENT_BAZEL_VERSION = None
-_TF_MIN_BAZEL_VERSION = '0.24.1'
+_TF_MIN_BAZEL_VERSION = '0.27.1'
_TF_MAX_BAZEL_VERSION = '0.29.1'
NCCL_LIB_PATHS = [
diff --git a/tensorflow/opensource_only.files b/tensorflow/opensource_only.files
index 3f59634..fa95d5f 100644
--- a/tensorflow/opensource_only.files
+++ b/tensorflow/opensource_only.files
@@ -80,6 +80,7 @@
tensorflow/third_party/googleapis.BUILD
tensorflow/third_party/gpus/BUILD
tensorflow/third_party/gpus/crosstool/BUILD
+tensorflow/third_party/gpus/crosstool/BUILD.rocm.tpl
tensorflow/third_party/gpus/crosstool/BUILD.tpl
tensorflow/third_party/gpus/crosstool/LICENSE
tensorflow/third_party/gpus/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc.tpl
diff --git a/third_party/gpus/crosstool/BUILD.rocm.tpl b/third_party/gpus/crosstool/BUILD.rocm.tpl
new file mode 100644
index 0000000..be32aa7
--- /dev/null
+++ b/third_party/gpus/crosstool/BUILD.rocm.tpl
@@ -0,0 +1,116 @@
+# This file is expanded from a template by cuda_configure.bzl
+# Update cuda_configure.bzl#verify_build_defines when adding new variables.
+
+load(":cc_toolchain_config.bzl", "cc_toolchain_config")
+
+licenses(["restricted"])
+
+package(default_visibility = ["//visibility:public"])
+
+toolchain(
+ name = "toolchain-linux-x86_64",
+ exec_compatible_with = [
+ "@bazel_tools//platforms:linux",
+ "@bazel_tools//platforms:x86_64",
+ ],
+ target_compatible_with = [
+ "@bazel_tools//platforms:linux",
+ "@bazel_tools//platforms:x86_64",
+ ],
+ toolchain = ":cc-compiler-local",
+ toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
+)
+
+cc_toolchain_suite(
+ name = "toolchain",
+ toolchains = {
+ "local|compiler": ":cc-compiler-local",
+ "arm": ":cc-compiler-local",
+ "aarch64": ":cc-compiler-local",
+ "k8": ":cc-compiler-local",
+ "piii": ":cc-compiler-local",
+ "ppc": ":cc-compiler-local",
+ },
+)
+
+cc_toolchain(
+ name = "cc-compiler-local",
+ all_files = "%{linker_files}",
+ compiler_files = ":empty",
+ dwp_files = ":empty",
+ linker_files = "%{linker_files}",
+ objcopy_files = ":empty",
+ strip_files = ":empty",
+ # To support linker flags that need to go to the start of command line
+ # we need the toolchain to support parameter files. Parameter files are
+ # last on the command line and contain all shared libraries to link, so all
+ # regular options will be left of them.
+ supports_param_files = 1,
+ toolchain_identifier = "local_linux",
+ toolchain_config = ":cc-compiler-local-config",
+)
+
+cc_toolchain_config(
+ name = "cc-compiler-local-config",
+ cpu = "local",
+ compiler = "compiler",
+ toolchain_identifier = "local_linux",
+ host_system_name = "local",
+ target_system_name = "local",
+ target_libc = "local",
+ abi_version = "local",
+ abi_libc_version = "local",
+ cxx_builtin_include_directories = [%{cxx_builtin_include_directories}],
+ host_compiler_path = "%{host_compiler_path}",
+ host_compiler_prefix = "%{host_compiler_prefix}",
+ compile_flags = [
+ "-U_FORTIFY_SOURCE",
+ "-fstack-protector",
+ "-Wall",
+ "-Wunused-but-set-parameter",
+ "-Wno-free-nonheap-object",
+ "-fno-omit-frame-pointer",
+ ],
+ opt_compile_flags = [
+ "-g0",
+ "-O2",
+ "-D_FORTIFY_SOURCE=1",
+ "-DNDEBUG",
+ "-ffunction-sections",
+ "-fdata-sections",
+ ],
+ dbg_compile_flags = ["-g"],
+ cxx_flags = ["-std=c++11"],
+ link_flags = [
+ "-fuse-ld=gold",
+ "-Wl,-no-as-needed",
+ "-Wl,-z,relro,-z,now",
+ "-pass-exit-codes",
+ "-lstdc++",
+ "-lm",
+ ],
+ link_libs = [],
+ opt_link_flags = ["-Wl,--gc-sections"],
+ unfiltered_compile_flags = [
+ "-fno-canonical-system-headers",
+ "-Wno-builtin-macro-redefined",
+ "-D__DATE__=\"redacted\"",
+ "-D__TIMESTAMP__=\"redacted\"",
+ "-D__TIME__=\"redacted\"",
+ ] + [%{unfiltered_compile_flags}],
+ linker_bin_path = "%{linker_bin_path}",
+ coverage_compile_flags = ["--coverage"],
+ coverage_link_flags = ["--coverage"],
+ supports_start_end_lib = True,
+)
+
+filegroup(
+ name = "empty",
+ srcs = [],
+)
+
+filegroup(
+ name = "crosstool_wrapper_driver_is_not_gcc",
+ srcs = ["clang/bin/crosstool_wrapper_driver_is_not_gcc"],
+)
+
diff --git a/third_party/gpus/crosstool/clang/bin/crosstool_wrapper_driver_rocm.tpl b/third_party/gpus/crosstool/clang/bin/crosstool_wrapper_driver_rocm.tpl
index 7c30e92..8a94afb 100755
--- a/third_party/gpus/crosstool/clang/bin/crosstool_wrapper_driver_rocm.tpl
+++ b/third_party/gpus/crosstool/clang/bin/crosstool_wrapper_driver_rocm.tpl
@@ -215,7 +215,7 @@
# ignore PWD env var
os.environ['PWD']=''
- parser = ArgumentParser()
+ parser = ArgumentParser(fromfile_prefix_chars='@')
parser.add_argument('-x', nargs=1)
parser.add_argument('--rocm_log', action='store_true')
parser.add_argument('-pass-exit-codes', action='store_true')
diff --git a/third_party/gpus/crosstool/hipcc_cc_toolchain_config.bzl.tpl b/third_party/gpus/crosstool/hipcc_cc_toolchain_config.bzl.tpl
index d80081f..e0541de 100644
--- a/third_party/gpus/crosstool/hipcc_cc_toolchain_config.bzl.tpl
+++ b/third_party/gpus/crosstool/hipcc_cc_toolchain_config.bzl.tpl
@@ -2,406 +2,133 @@
load(
"@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl",
- "action_config",
- "env_entry",
- "env_set",
"feature",
"feature_set",
"flag_group",
"flag_set",
- "tool",
"tool_path",
"variable_with_value",
+ "with_feature_set",
)
-load(
- "@bazel_tools//tools/build_defs/cc:action_names.bzl",
- "ASSEMBLE_ACTION_NAME",
- "CC_FLAGS_MAKE_VARIABLE_ACTION_NAME",
- "CLIF_MATCH_ACTION_NAME",
- "CPP_COMPILE_ACTION_NAME",
- "CPP_HEADER_PARSING_ACTION_NAME",
- "CPP_LINK_DYNAMIC_LIBRARY_ACTION_NAME",
- "CPP_LINK_EXECUTABLE_ACTION_NAME",
- "CPP_LINK_NODEPS_DYNAMIC_LIBRARY_ACTION_NAME",
- "CPP_LINK_STATIC_LIBRARY_ACTION_NAME",
- "CPP_MODULE_CODEGEN_ACTION_NAME",
- "CPP_MODULE_COMPILE_ACTION_NAME",
- "C_COMPILE_ACTION_NAME",
- "LINKSTAMP_COMPILE_ACTION_NAME",
- "LTO_BACKEND_ACTION_NAME",
- "LTO_INDEXING_ACTION_NAME",
- "OBJCPP_COMPILE_ACTION_NAME",
- "OBJCPP_EXECUTABLE_ACTION_NAME",
- "OBJC_ARCHIVE_ACTION_NAME",
- "OBJC_COMPILE_ACTION_NAME",
- "OBJC_EXECUTABLE_ACTION_NAME",
- "OBJC_FULLY_LINK_ACTION_NAME",
- "PREPROCESS_ASSEMBLE_ACTION_NAME",
- "STRIP_ACTION_NAME",
-)
+load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES")
-ACTION_NAMES = struct(
- c_compile = C_COMPILE_ACTION_NAME,
- cpp_compile = CPP_COMPILE_ACTION_NAME,
- linkstamp_compile = LINKSTAMP_COMPILE_ACTION_NAME,
- cc_flags_make_variable = CC_FLAGS_MAKE_VARIABLE_ACTION_NAME,
- cpp_module_codegen = CPP_MODULE_CODEGEN_ACTION_NAME,
- cpp_header_parsing = CPP_HEADER_PARSING_ACTION_NAME,
- cpp_module_compile = CPP_MODULE_COMPILE_ACTION_NAME,
- assemble = ASSEMBLE_ACTION_NAME,
- preprocess_assemble = PREPROCESS_ASSEMBLE_ACTION_NAME,
- lto_indexing = LTO_INDEXING_ACTION_NAME,
- lto_backend = LTO_BACKEND_ACTION_NAME,
- cpp_link_executable = CPP_LINK_EXECUTABLE_ACTION_NAME,
- cpp_link_dynamic_library = CPP_LINK_DYNAMIC_LIBRARY_ACTION_NAME,
- cpp_link_nodeps_dynamic_library = CPP_LINK_NODEPS_DYNAMIC_LIBRARY_ACTION_NAME,
- cpp_link_static_library = CPP_LINK_STATIC_LIBRARY_ACTION_NAME,
- strip = STRIP_ACTION_NAME,
- objc_archive = OBJC_ARCHIVE_ACTION_NAME,
- objc_compile = OBJC_COMPILE_ACTION_NAME,
- objc_executable = OBJC_EXECUTABLE_ACTION_NAME,
- objc_fully_link = OBJC_FULLY_LINK_ACTION_NAME,
- objcpp_compile = OBJCPP_COMPILE_ACTION_NAME,
- objcpp_executable = OBJCPP_EXECUTABLE_ACTION_NAME,
- clif_match = CLIF_MATCH_ACTION_NAME,
- objcopy_embed_data = "objcopy_embed_data",
- ld_embed_data = "ld_embed_data",
-)
+all_compile_actions = [
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.linkstamp_compile,
+ ACTION_NAMES.assemble,
+ ACTION_NAMES.preprocess_assemble,
+ ACTION_NAMES.cpp_header_parsing,
+ ACTION_NAMES.cpp_module_compile,
+ ACTION_NAMES.cpp_module_codegen,
+ ACTION_NAMES.clif_match,
+ ACTION_NAMES.lto_backend,
+]
+
+all_cpp_compile_actions = [
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.linkstamp_compile,
+ ACTION_NAMES.cpp_header_parsing,
+ ACTION_NAMES.cpp_module_compile,
+ ACTION_NAMES.cpp_module_codegen,
+ ACTION_NAMES.clif_match,
+]
+
+preprocessor_compile_actions = [
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.linkstamp_compile,
+ ACTION_NAMES.preprocess_assemble,
+ ACTION_NAMES.cpp_header_parsing,
+ ACTION_NAMES.cpp_module_compile,
+ ACTION_NAMES.clif_match,
+]
+
+codegen_compile_actions = [
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.linkstamp_compile,
+ ACTION_NAMES.assemble,
+ ACTION_NAMES.preprocess_assemble,
+ ACTION_NAMES.cpp_module_codegen,
+ ACTION_NAMES.lto_backend,
+]
+
+all_link_actions = [
+ ACTION_NAMES.cpp_link_executable,
+ ACTION_NAMES.cpp_link_dynamic_library,
+ ACTION_NAMES.cpp_link_nodeps_dynamic_library,
+]
+
+lto_index_actions = [
+ ACTION_NAMES.lto_index_for_executable,
+ ACTION_NAMES.lto_index_for_dynamic_library,
+ ACTION_NAMES.lto_index_for_nodeps_dynamic_library,
+]
def _impl(ctx):
- if (ctx.attr.cpu == "darwin"):
- toolchain_identifier = "local_darwin"
- elif (ctx.attr.cpu == "local"):
- toolchain_identifier = "local_linux"
- elif (ctx.attr.cpu == "x64_windows"):
- toolchain_identifier = "local_windows"
- else:
- fail("Unreachable")
-
- host_system_name = "local"
-
- target_system_name = "local"
-
- if (ctx.attr.cpu == "darwin"):
- target_cpu = "darwin"
- elif (ctx.attr.cpu == "local"):
- target_cpu = "local"
- elif (ctx.attr.cpu == "x64_windows"):
- target_cpu = "x64_windows"
- else:
- fail("Unreachable")
-
- if (ctx.attr.cpu == "local"):
- target_libc = "local"
- elif (ctx.attr.cpu == "darwin"):
- target_libc = "macosx"
- elif (ctx.attr.cpu == "x64_windows"):
- target_libc = "msvcrt"
- else:
- fail("Unreachable")
-
- if (ctx.attr.cpu == "darwin" or
- ctx.attr.cpu == "local"):
- compiler = "compiler"
- elif (ctx.attr.cpu == "x64_windows"):
- compiler = "msvc-cl"
- else:
- fail("Unreachable")
-
- abi_version = "local"
-
- abi_libc_version = "local"
-
- cc_target_os = None
-
- builtin_sysroot = None
-
- all_link_actions = [
- ACTION_NAMES.cpp_link_executable,
- ACTION_NAMES.cpp_link_dynamic_library,
- ACTION_NAMES.cpp_link_nodeps_dynamic_library,
+ tool_paths = [
+ tool_path(name = "gcc", path = ctx.attr.host_compiler_path),
+ tool_path(name = "ar", path = ctx.attr.host_compiler_prefix + "/ar"),
+ tool_path(name = "compat-ld", path = ctx.attr.host_compiler_prefix + "/ld"),
+ tool_path(name = "cpp", path = ctx.attr.host_compiler_prefix + "/cpp"),
+ tool_path(name = "dwp", path = ctx.attr.host_compiler_prefix + "/dwp"),
+ tool_path(name = "gcov", path = ctx.attr.host_compiler_prefix + "/gcov"),
+ tool_path(name = "ld", path = ctx.attr.host_compiler_prefix + "/ld"),
+ tool_path(name = "nm", path = ctx.attr.host_compiler_prefix + "/nm"),
+ tool_path(name = "objcopy", path = ctx.attr.host_compiler_prefix + "/objcopy"),
+ tool_path(name = "objdump", path = ctx.attr.host_compiler_prefix + "/objdump"),
+ tool_path(name = "strip", path = ctx.attr.host_compiler_prefix + "/strip"),
]
- cpp_link_dynamic_library_action = action_config(
- action_name = ACTION_NAMES.cpp_link_dynamic_library,
- implies = [
- "nologo",
- "shared_flag",
- "linkstamps",
- "output_execpath_flags",
- "input_param_flags",
- "user_link_flags",
- "linker_subsystem_flag",
- "linker_param_file",
- "msvc_env",
- "no_stripping",
- "has_configured_linker_path",
- "def_file",
- ],
- tools = [tool(path = ctx.attr.msvc_link_path)],
+ action_configs = []
+
+ supports_pic_feature = feature(
+ name = "supports_pic",
+ enabled = True,
+ )
+ supports_start_end_lib_feature = feature(
+ name = "supports_start_end_lib",
+ enabled = True,
)
- cpp_link_nodeps_dynamic_library_action = action_config(
- action_name = ACTION_NAMES.cpp_link_nodeps_dynamic_library,
- implies = [
- "nologo",
- "shared_flag",
- "linkstamps",
- "output_execpath_flags",
- "input_param_flags",
- "user_link_flags",
- "linker_subsystem_flag",
- "linker_param_file",
- "msvc_env",
- "no_stripping",
- "has_configured_linker_path",
- "def_file",
- ],
- tools = [tool(path = ctx.attr.msvc_link_path)],
- )
-
- cpp_link_static_library_action = action_config(
- action_name = ACTION_NAMES.cpp_link_static_library,
- implies = [
- "nologo",
- "archiver_flags",
- "input_param_flags",
- "linker_param_file",
- "msvc_env",
- ],
- tools = [tool(path = ctx.attr.msvc_lib_path)],
- )
-
- assemble_action = action_config(
- action_name = ACTION_NAMES.assemble,
- implies = [
- "compiler_input_flags",
- "compiler_output_flags",
- "nologo",
- "msvc_env",
- "sysroot",
- ],
- tools = [tool(path = ctx.attr.msvc_ml_path)],
- )
-
- preprocess_assemble_action = action_config(
- action_name = ACTION_NAMES.preprocess_assemble,
- implies = [
- "compiler_input_flags",
- "compiler_output_flags",
- "nologo",
- "msvc_env",
- "sysroot",
- ],
- tools = [tool(path = ctx.attr.msvc_ml_path)],
- )
-
- c_compile_action = action_config(
- action_name = ACTION_NAMES.c_compile,
- implies = [
- "compiler_input_flags",
- "compiler_output_flags",
- "nologo",
- "msvc_env",
- "parse_showincludes",
- "user_compile_flags",
- "sysroot",
- "unfiltered_compile_flags",
- ],
- tools = [tool(path = ctx.attr.msvc_cl_path)],
- )
-
- cpp_compile_action = action_config(
- action_name = ACTION_NAMES.cpp_compile,
- implies = [
- "compiler_input_flags",
- "compiler_output_flags",
- "nologo",
- "msvc_env",
- "parse_showincludes",
- "user_compile_flags",
- "sysroot",
- "unfiltered_compile_flags",
- ],
- tools = [tool(path = ctx.attr.msvc_cl_path)],
- )
-
- cpp_link_executable_action = action_config(
- action_name = ACTION_NAMES.cpp_link_executable,
- implies = [
- "nologo",
- "linkstamps",
- "output_execpath_flags",
- "input_param_flags",
- "user_link_flags",
- "linker_subsystem_flag",
- "linker_param_file",
- "msvc_env",
- "no_stripping",
- ],
- tools = [tool(path = ctx.attr.msvc_link_path)],
- )
-
- if (ctx.attr.cpu == "darwin" or
- ctx.attr.cpu == "local"):
- action_configs = []
- elif (ctx.attr.cpu == "x64_windows"):
- action_configs = [
- assemble_action,
- preprocess_assemble_action,
- c_compile_action,
- cpp_compile_action,
- cpp_link_executable_action,
- cpp_link_dynamic_library_action,
- cpp_link_nodeps_dynamic_library_action,
- cpp_link_static_library_action,
- ]
- else:
- fail("Unreachable")
-
- no_windows_export_all_symbols_feature = feature(name = "no_windows_export_all_symbols")
-
- pic_feature = feature(
- name = "pic",
+ default_compile_flags_feature = feature(
+ name = "default_compile_flags",
enabled = True,
flag_sets = [
flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [
- flag_group(flags = ["-fPIC"], expand_if_available = "pic"),
- #
- # Commented out in CROSSTOOL_hipcc.tpl
- #
- # flag_group(
- # flags = ["-fPIE"],
- # expand_if_not_available = "pic",
- # ),
- ],
- ),
- ],
- )
-
- preprocessor_defines_feature = feature(
- name = "preprocessor_defines",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.assemble,
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ],
- flag_groups = [
+ actions = all_compile_actions,
+ flag_groups = ([
flag_group(
- flags = ["/D%{preprocessor_defines}"],
- iterate_over = "preprocessor_defines",
+ flags = ctx.attr.compile_flags,
),
- ],
+ ] if ctx.attr.compile_flags else []),
),
- ],
- )
-
- generate_pdb_file_feature = feature(
- name = "generate_pdb_file",
- requires = [
- feature_set(features = ["dbg"]),
- feature_set(features = ["fastbuild"]),
- ],
- )
-
- linkstamps_feature = feature(
- name = "linkstamps",
- flag_sets = [
flag_set(
- actions = all_link_actions,
- flag_groups = [
+ actions = all_compile_actions,
+ flag_groups = ([
flag_group(
- flags = ["%{linkstamp_paths}"],
- iterate_over = "linkstamp_paths",
- expand_if_available = "linkstamp_paths",
+ flags = ctx.attr.dbg_compile_flags,
),
- ],
+ ] if ctx.attr.dbg_compile_flags else []),
+ with_features = [with_feature_set(features = ["dbg"])],
),
- ],
- )
-
- unfiltered_compile_flags_feature = feature(
- name = "unfiltered_compile_flags",
- flag_sets = ([
flag_set(
- actions = [
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.cpp_module_codegen,
- ],
- flag_groups = [
+ actions = all_compile_actions,
+ flag_groups = ([
flag_group(
- flags = ctx.attr.host_unfiltered_compile_flags,
+ flags = ctx.attr.opt_compile_flags,
),
- ],
+ ] if ctx.attr.opt_compile_flags else []),
+ with_features = [with_feature_set(features = ["opt"])],
),
- ] if ctx.attr.host_unfiltered_compile_flags else []),
- )
-
- determinism_feature = feature(
- name = "determinism",
- flag_sets = [
flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [
+ actions = all_cpp_compile_actions + [ACTION_NAMES.lto_backend],
+ flag_groups = ([
flag_group(
- flags = [
- "-Wno-builtin-macro-redefined",
- "-D__DATE__=\"redacted\"",
- "-D__TIMESTAMP__=\"redacted\"",
- "-D__TIME__=\"redacted\"",
- ],
+ flags = ctx.attr.cxx_flags,
),
- ],
- ),
- ],
- )
-
- nologo_feature = feature(
- name = "nologo",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.cpp_module_codegen,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.assemble,
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.cpp_link_executable,
- ACTION_NAMES.cpp_link_dynamic_library,
- ACTION_NAMES.cpp_link_nodeps_dynamic_library,
- ACTION_NAMES.cpp_link_static_library,
- ],
- flag_groups = [flag_group(flags = ["/nologo"])],
- ),
- ],
- )
-
- supports_pic_feature = feature(name = "supports_pic", enabled = True)
-
- output_execpath_flags_feature = feature(
- name = "output_execpath_flags",
- flag_sets = [
- flag_set(
- actions = all_link_actions,
- flag_groups = [
- flag_group(
- flags = ["/OUT:%{output_execpath}"],
- expand_if_available = "output_execpath",
- ),
- ],
+ ] if ctx.attr.cxx_flags else []),
),
],
)
@@ -411,244 +138,35 @@
enabled = True,
flag_sets = [
flag_set(
- actions = all_link_actions,
- flag_groups = [flag_group(flags = ["/MACHINE:X64"])],
- ),
- ],
- )
-
- rocm_link_flags_feature = feature(
- name = "rocm_link_flags",
- enabled = True,
- flag_sets = [
- flag_set(
- actions = all_link_actions,
- flag_groups = [flag_group(flags = ["-pass-exit-codes"])],
- ),
- ],
- )
-
- if (ctx.attr.cpu == "local"):
- hardening_feature = feature(
- name = "hardening",
- flag_sets = [
- #
- # Commented out in CROSSTOOL_hipcc.tpl
- #
- # flag_set(
- # actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- # flag_groups = [
- # flag_group(
- # flags = [
- # "-U_FORTIFY_SOURCE",
- # "-D_FORTIFY_SOURCE=1",
- # "-fstack-protector",
- # ],
- # ),
- # ],
- # ),
- # flag_set(
- # actions = [
- # ACTION_NAMES.cpp_link_dynamic_library,
- # ACTION_NAMES.cpp_link_nodeps_dynamic_library,
- # ],
- # flag_groups = [flag_group(flags = ["-Wl,-z,relro,-z,now"])],
- # ),
- # flag_set(
- # actions = [ACTION_NAMES.cpp_link_executable],
- # flag_groups = [flag_group(flags = ["-pie", "-Wl,-z,relro,-z,now"])],
- # ),
- ],
- )
- elif (ctx.attr.cpu == "darwin"):
- hardening_feature = feature(
- name = "hardening",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [
- flag_group(
- flags = [
- "-U_FORTIFY_SOURCE",
- "-D_FORTIFY_SOURCE=1",
- "-fstack-protector",
- ],
- ),
- ],
- ),
- flag_set(
- actions = [ACTION_NAMES.cpp_link_executable],
- flag_groups = [flag_group(flags = ["-pie"])],
- ),
- ],
- )
- else:
- hardening_feature = None
-
- supports_dynamic_linker_feature = feature(name = "supports_dynamic_linker", enabled = True)
-
- targets_windows_feature = feature(
- name = "targets_windows",
- enabled = True,
- implies = ["copy_dynamic_libraries_to_binary"],
- )
-
- msvc_env_feature = feature(
- name = "msvc_env",
- env_sets = [
- env_set(
- actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.cpp_module_codegen,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.assemble,
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.cpp_link_executable,
- ACTION_NAMES.cpp_link_dynamic_library,
- ACTION_NAMES.cpp_link_nodeps_dynamic_library,
- ACTION_NAMES.cpp_link_static_library,
- ],
- env_entries = [
- env_entry(key = "PATH", value = ctx.attr.msvc_env_path),
- env_entry(
- key = "INCLUDE",
- value = ctx.attr.msvc_env_include,
- ),
- env_entry(key = "LIB", value = ctx.attr.msvc_env_lib),
- env_entry(key = "TMP", value = ctx.attr.msvc_env_tmp),
- env_entry(key = "TEMP", value = ctx.attr.msvc_env_tmp),
- ],
- ),
- ],
- )
-
- linker_subsystem_flag_feature = feature(
- name = "linker_subsystem_flag",
- flag_sets = [
- flag_set(
- actions = all_link_actions,
- flag_groups = [flag_group(flags = ["/SUBSYSTEM:CONSOLE"])],
- ),
- ],
- )
-
- dynamic_link_msvcrt_no_debug_feature = feature(
- name = "dynamic_link_msvcrt_no_debug",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [flag_group(flags = ["/MD"])],
- ),
- flag_set(
- actions = all_link_actions,
- flag_groups = [flag_group(flags = ["/DEFAULTLIB:msvcrt.lib"])],
- ),
- ],
- requires = [
- feature_set(features = ["fastbuild"]),
- feature_set(features = ["opt"]),
- ],
- )
-
- warnings_feature = feature(
- name = "warnings",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [
+ actions = all_link_actions + lto_index_actions,
+ flag_groups = ([
flag_group(
- flags = ["-Wall"] + ctx.attr.host_compiler_warnings,
+ flags = ctx.attr.link_flags,
),
- ],
+ ] if ctx.attr.link_flags else []),
+ ),
+ flag_set(
+ actions = all_link_actions + lto_index_actions,
+ flag_groups = ([
+ flag_group(
+ flags = ctx.attr.opt_link_flags,
+ ),
+ ] if ctx.attr.opt_link_flags else []),
+ with_features = [with_feature_set(features = ["opt"])],
),
],
)
- dynamic_link_msvcrt_debug_feature = feature(
- name = "dynamic_link_msvcrt_debug",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [flag_group(flags = ["/MDd"])],
- ),
- flag_set(
- actions = all_link_actions,
- flag_groups = [flag_group(flags = ["/DEFAULTLIB:msvcrtd.lib"])],
- ),
- ],
- requires = [feature_set(features = ["dbg"])],
- )
+ dbg_feature = feature(name = "dbg")
- compiler_output_flags_feature = feature(
- name = "compiler_output_flags",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.assemble],
- flag_groups = [
- flag_group(
- flag_groups = [
- flag_group(
- flags = ["/Fo%{output_file}", "/Zi"],
- expand_if_not_available = "output_preprocess_file",
- ),
- ],
- expand_if_available = "output_file",
- expand_if_not_available = "output_assembly_file",
- ),
- ],
- ),
- flag_set(
- actions = [
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.cpp_module_codegen,
- ],
- flag_groups = [
- flag_group(
- flag_groups = [
- flag_group(
- flags = ["/Fo%{output_file}"],
- expand_if_not_available = "output_preprocess_file",
- ),
- ],
- expand_if_available = "output_file",
- expand_if_not_available = "output_assembly_file",
- ),
- flag_group(
- flag_groups = [
- flag_group(
- flags = ["/Fa%{output_file}"],
- expand_if_available = "output_assembly_file",
- ),
- ],
- expand_if_available = "output_file",
- ),
- flag_group(
- flag_groups = [
- flag_group(
- flags = ["/P", "/Fi%{output_file}"],
- expand_if_available = "output_preprocess_file",
- ),
- ],
- expand_if_available = "output_file",
- ),
- ],
- ),
- ],
- )
+ opt_feature = feature(name = "opt")
- default_compile_flags_feature = feature(
- name = "default_compile_flags",
+ sysroot_feature = feature(
+ name = "sysroot",
enabled = True,
flag_sets = [
flag_set(
actions = [
- ACTION_NAMES.assemble,
ACTION_NAMES.preprocess_assemble,
ACTION_NAMES.linkstamp_compile,
ACTION_NAMES.c_compile,
@@ -658,194 +176,44 @@
ACTION_NAMES.cpp_module_codegen,
ACTION_NAMES.lto_backend,
ACTION_NAMES.clif_match,
+ ] + all_link_actions + lto_index_actions,
+ flag_groups = [
+ flag_group(
+ flags = ["--sysroot=%{sysroot}"],
+ expand_if_available = "sysroot",
+ ),
],
+ ),
+ ],
+ )
+
+ fdo_optimize_feature = feature(
+ name = "fdo_optimize",
+ flag_sets = [
+ flag_set(
+ actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
flag_groups = [
flag_group(
flags = [
- "/DCOMPILER_MSVC",
- "/DNOMINMAX",
- "/D_WIN32_WINNT=0x0600",
- "/D_CRT_SECURE_NO_DEPRECATE",
- "/D_CRT_SECURE_NO_WARNINGS",
- "/D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS",
- "/bigobj",
- "/Zm500",
- "/J",
- "/Gy",
- "/GF",
- "/EHsc",
- "/wd4351",
- "/wd4291",
- "/wd4250",
- "/wd4996",
+ "-fprofile-use=%{fdo_profile_path}",
+ "-fprofile-correction",
],
+ expand_if_available = "fdo_profile_path",
),
],
),
],
+ provides = ["profile"],
)
- static_link_msvcrt_debug_feature = feature(
- name = "static_link_msvcrt_debug",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [flag_group(flags = ["/MTd"])],
- ),
- flag_set(
- actions = all_link_actions,
- flag_groups = [flag_group(flags = ["/DEFAULTLIB:libcmtd.lib"])],
- ),
- ],
- requires = [feature_set(features = ["dbg"])],
- )
-
- static_link_msvcrt_feature = feature(name = "static_link_msvcrt")
-
- if (ctx.attr.cpu == "darwin" or
- ctx.attr.cpu == "local"):
- dbg_feature = feature(
- name = "dbg",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [flag_group(flags = ["-g"])],
- ),
- ],
- implies = ["common"],
- )
- elif (ctx.attr.cpu == "x64_windows"):
- dbg_feature = feature(
- name = "dbg",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [flag_group(flags = ["/Od", "/Z7", "/DDEBUG"])],
- ),
- flag_set(
- actions = all_link_actions,
- flag_groups = [flag_group(flags = ["/DEBUG:FULL", "/INCREMENTAL:NO"])],
- ),
- ],
- implies = ["generate_pdb_file"],
- )
- else:
- dbg_feature = None
-
- undefined_dynamic_feature = feature(
- name = "undefined-dynamic",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.cpp_link_dynamic_library,
- ACTION_NAMES.cpp_link_nodeps_dynamic_library,
- ACTION_NAMES.cpp_link_executable,
- ],
- flag_groups = [flag_group(flags = ["-undefined", "dynamic_lookup"])],
- ),
- ],
- )
-
- parse_showincludes_feature = feature(
- name = "parse_showincludes",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.cpp_header_parsing,
- ],
- flag_groups = [flag_group(flags = ["/showIncludes"])],
- ),
- ],
- )
-
- linker_param_file_feature = feature(
- name = "linker_param_file",
- flag_sets = [
- flag_set(
- actions = all_link_actions +
- [ACTION_NAMES.cpp_link_static_library],
- flag_groups = [
- flag_group(
- flags = ["@%{linker_param_file}"],
- expand_if_available = "linker_param_file",
- ),
- ],
- ),
- ],
- )
-
- static_link_msvcrt_no_debug_feature = feature(
- name = "static_link_msvcrt_no_debug",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [flag_group(flags = ["/MT"])],
- ),
- flag_set(
- actions = all_link_actions,
- flag_groups = [flag_group(flags = ["/DEFAULTLIB:libcmt.lib"])],
- ),
- ],
- requires = [
- feature_set(features = ["fastbuild"]),
- feature_set(features = ["opt"]),
- ],
- )
-
- supports_interface_shared_libraries_feature = feature(
- name = "supports_interface_shared_libraries",
- enabled = True,
- )
-
- disable_assertions_feature = feature(
- name = "disable-assertions",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [flag_group(flags = ["-DNDEBUG"])],
- ),
- ],
- )
-
- if (ctx.attr.cpu == "x64_windows"):
- fastbuild_feature = feature(
- name = "fastbuild",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [flag_group(flags = ["/Od", "/Z7", "/DDEBUG"])],
- ),
- flag_set(
- actions = all_link_actions,
- flag_groups = [
- flag_group(flags = ["/DEBUG:FASTLINK", "/INCREMENTAL:NO"]),
- ],
- ),
- ],
- implies = ["generate_pdb_file"],
- )
- elif (ctx.attr.cpu == "darwin" or
- ctx.attr.cpu == "local"):
- fastbuild_feature = feature(name = "fastbuild", implies = ["common"])
- else:
- fastbuild_feature = None
+ supports_dynamic_linker_feature = feature(name = "supports_dynamic_linker", enabled = True)
user_compile_flags_feature = feature(
name = "user_compile_flags",
+ enabled = True,
flag_sets = [
flag_set(
- actions = [
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.cpp_module_codegen,
- ],
+ actions = all_compile_actions,
flag_groups = [
flag_group(
flags = ["%{user_compile_flags}"],
@@ -857,161 +225,226 @@
],
)
- compiler_input_flags_feature = feature(
- name = "compiler_input_flags",
+ unfiltered_compile_flags_feature = feature(
+ name = "unfiltered_compile_flags",
+ enabled = True,
flag_sets = [
flag_set(
- actions = [
- ACTION_NAMES.assemble,
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.cpp_module_codegen,
- ],
+ actions = all_compile_actions,
+ flag_groups = ([
+ flag_group(
+ flags = ctx.attr.unfiltered_compile_flags,
+ ),
+ ] if ctx.attr.unfiltered_compile_flags else []),
+ ),
+ ],
+ )
+
+ library_search_directories_feature = feature(
+ name = "library_search_directories",
+ flag_sets = [
+ flag_set(
+ actions = all_link_actions + lto_index_actions,
flag_groups = [
flag_group(
- flags = ["/c", "%{source_file}"],
- expand_if_available = "source_file",
+ flags = ["-L%{library_search_directories}"],
+ iterate_over = "library_search_directories",
+ expand_if_available = "library_search_directories",
),
],
),
],
)
- no_legacy_features_feature = feature(name = "no_legacy_features")
-
- archiver_flags_feature = feature(
- name = "archiver_flags",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.cpp_link_static_library],
- flag_groups = [
- flag_group(
- flags = ["/OUT:%{output_execpath}"],
- expand_if_available = "output_execpath",
- ),
- ],
- ),
- ],
- )
-
- redirector_feature = feature(
- name = "redirector",
+ static_libgcc_feature = feature(
+ name = "static_libgcc",
enabled = True,
flag_sets = [
flag_set(
actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.cpp_module_codegen,
- ACTION_NAMES.cpp_header_parsing,
+ ACTION_NAMES.cpp_link_executable,
+ ACTION_NAMES.cpp_link_dynamic_library,
+ ACTION_NAMES.lto_index_for_executable,
+ ACTION_NAMES.lto_index_for_dynamic_library,
+ ],
+ flag_groups = [flag_group(flags = ["-static-libgcc"])],
+ with_features = [
+ with_feature_set(features = ["static_link_cpp_runtimes"]),
+ ],
+ ),
+ ],
+ )
+
+ pic_feature = feature(
+ name = "pic",
+ enabled = True,
+ flag_sets = [
+ flag_set(
+ actions = [
ACTION_NAMES.assemble,
ACTION_NAMES.preprocess_assemble,
+ ACTION_NAMES.linkstamp_compile,
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.cpp_module_codegen,
+ ACTION_NAMES.cpp_module_compile,
],
flag_groups = [
+ flag_group(flags = ["-fPIC"], expand_if_available = "pic"),
+ ],
+ ),
+ ],
+ )
+
+ per_object_debug_info_feature = feature(
+ name = "per_object_debug_info",
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.assemble,
+ ACTION_NAMES.preprocess_assemble,
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.cpp_module_codegen,
+ ],
+ flag_groups = [
+ flag_group(
+ flags = ["-gsplit-dwarf"],
+ expand_if_available = "per_object_debug_info_file",
+ ),
+ ],
+ ),
+ ],
+ )
+
+ preprocessor_defines_feature = feature(
+ name = "preprocessor_defines",
+ enabled = True,
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.preprocess_assemble,
+ ACTION_NAMES.linkstamp_compile,
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.cpp_header_parsing,
+ ACTION_NAMES.cpp_module_compile,
+ ACTION_NAMES.clif_match,
+ ],
+ flag_groups = [
+ flag_group(
+ flags = ["-D%{preprocessor_defines}"],
+ iterate_over = "preprocessor_defines",
+ ),
+ ],
+ ),
+ ],
+ )
+
+ cs_fdo_optimize_feature = feature(
+ name = "cs_fdo_optimize",
+ flag_sets = [
+ flag_set(
+ actions = [ACTION_NAMES.lto_backend],
+ flag_groups = [
flag_group(
flags = [
- "-B",
- "external/local_config_cuda/crosstool/windows/msvc_wrapper_for_nvcc.py",
+ "-fprofile-use=%{fdo_profile_path}",
+ "-Xclang-only=-Wno-profile-instr-unprofiled",
+ "-Xclang-only=-Wno-profile-instr-out-of-date",
+ "-fprofile-correction",
],
+ expand_if_available = "fdo_profile_path",
),
],
),
],
+ provides = ["csprofile"],
)
- linker_bin_path_feature = feature(
- name = "linker-bin-path",
+ autofdo_feature = feature(
+ name = "autofdo",
flag_sets = [
flag_set(
- actions = all_link_actions,
- flag_groups = [flag_group(flags = ["-B" + ctx.attr.linker_bin_path])],
- ),
- ],
- )
-
- if (ctx.attr.cpu == "local"):
- opt_feature = feature(
- name = "opt",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [
- flag_group(
- flags = ["-g0", "-O2", "-ffunction-sections", "-fdata-sections"],
- ),
- ],
- ),
- #
- # commented out in CROSSTOOL_hipcc.tpl
- #
- # flag_set(
- # actions = [
- # ACTION_NAMES.cpp_link_dynamic_library,
- # ACTION_NAMES.cpp_link_nodeps_dynamic_library,
- # ACTION_NAMES.cpp_link_executable,
- # ],
- # flag_groups = [flag_group(flags = ["-Wl,--gc-sections"])],
- # ),
- ],
- implies = ["common", "disable-assertions"],
- )
- elif (ctx.attr.cpu == "darwin"):
- opt_feature = feature(
- name = "opt",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [
- flag_group(
- flags = ["-g0", "-O2", "-ffunction-sections", "-fdata-sections"],
- ),
- ],
- ),
- ],
- implies = ["common", "disable-assertions"],
- )
- elif (ctx.attr.cpu == "x64_windows"):
- opt_feature = feature(
- name = "opt",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [flag_group(flags = ["/O2", "/DNDEBUG"])],
- ),
- ],
- )
- else:
- opt_feature = None
-
- include_paths_feature = feature(
- name = "include_paths",
- enabled = True,
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.assemble,
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ],
+ actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
flag_groups = [
flag_group(
- flags = ["/I%{quote_include_paths}"],
- iterate_over = "quote_include_paths",
+ flags = [
+ "-fauto-profile=%{fdo_profile_path}",
+ "-fprofile-correction",
+ ],
+ expand_if_available = "fdo_profile_path",
),
+ ],
+ ),
+ ],
+ provides = ["profile"],
+ )
+
+ runtime_library_search_directories_feature = feature(
+ name = "runtime_library_search_directories",
+ flag_sets = [
+ flag_set(
+ actions = all_link_actions + lto_index_actions,
+ flag_groups = [
flag_group(
- flags = ["/I%{include_paths}"],
- iterate_over = "include_paths",
+ iterate_over = "runtime_library_search_directories",
+ flag_groups = [
+ flag_group(
+ flags = [
+ "-Wl,-rpath,$EXEC_ORIGIN/%{runtime_library_search_directories}",
+ ],
+ expand_if_true = "is_cc_test",
+ ),
+ flag_group(
+ flags = [
+ "-Wl,-rpath,$ORIGIN/%{runtime_library_search_directories}",
+ ],
+ expand_if_false = "is_cc_test",
+ ),
+ ],
+ expand_if_available =
+ "runtime_library_search_directories",
),
+ ],
+ with_features = [
+ with_feature_set(features = ["static_link_cpp_runtimes"]),
+ ],
+ ),
+ flag_set(
+ actions = all_link_actions + lto_index_actions,
+ flag_groups = [
flag_group(
- flags = ["/I%{system_include_paths}"],
- iterate_over = "system_include_paths",
+ iterate_over = "runtime_library_search_directories",
+ flag_groups = [
+ flag_group(
+ flags = [
+ "-Wl,-rpath,$ORIGIN/%{runtime_library_search_directories}",
+ ],
+ ),
+ ],
+ expand_if_available =
+ "runtime_library_search_directories",
+ ),
+ ],
+ with_features = [
+ with_feature_set(
+ not_features = ["static_link_cpp_runtimes"],
+ ),
+ ],
+ ),
+ ],
+ )
+
+ fission_support_feature = feature(
+ name = "fission_support",
+ flag_sets = [
+ flag_set(
+ actions = all_link_actions + lto_index_actions,
+ flag_groups = [
+ flag_group(
+ flags = ["-Wl,--gdb-index"],
+ expand_if_available = "is_using_fission",
),
],
),
@@ -1025,26 +458,566 @@
actions = [
ACTION_NAMES.cpp_link_dynamic_library,
ACTION_NAMES.cpp_link_nodeps_dynamic_library,
+ ACTION_NAMES.lto_index_for_dynamic_library,
+ ACTION_NAMES.lto_index_for_nodeps_dynamic_library,
],
- flag_groups = [flag_group(flags = ["/DLL"])],
+ flag_groups = [flag_group(flags = ["-shared"])],
),
],
)
- windows_export_all_symbols_feature = feature(name = "windows_export_all_symbols")
-
- frame_pointer_feature = feature(
- name = "frame-pointer",
+ random_seed_feature = feature(
+ name = "random_seed",
+ enabled = True,
flag_sets = [
flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [flag_group(flags = ["-fno-omit-frame-pointer"])],
+ actions = [
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.cpp_module_codegen,
+ ACTION_NAMES.cpp_module_compile,
+ ],
+ flag_groups = [
+ flag_group(
+ flags = ["-frandom-seed=%{output_file}"],
+ expand_if_available = "output_file",
+ ),
+ ],
+ ),
+ ],
+ )
+
+ includes_feature = feature(
+ name = "includes",
+ enabled = True,
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.preprocess_assemble,
+ ACTION_NAMES.linkstamp_compile,
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.cpp_header_parsing,
+ ACTION_NAMES.cpp_module_compile,
+ ACTION_NAMES.clif_match,
+ ACTION_NAMES.objc_compile,
+ ACTION_NAMES.objcpp_compile,
+ ],
+ flag_groups = [
+ flag_group(
+ flags = ["-include", "%{includes}"],
+ iterate_over = "includes",
+ expand_if_available = "includes",
+ ),
+ ],
+ ),
+ ],
+ )
+
+ fdo_instrument_feature = feature(
+ name = "fdo_instrument",
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ] + all_link_actions + lto_index_actions,
+ flag_groups = [
+ flag_group(
+ flags = [
+ "-fprofile-generate=%{fdo_instrument_path}",
+ "-fno-data-sections",
+ ],
+ expand_if_available = "fdo_instrument_path",
+ ),
+ ],
+ ),
+ ],
+ provides = ["profile"],
+ )
+
+ cs_fdo_instrument_feature = feature(
+ name = "cs_fdo_instrument",
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.lto_backend,
+ ] + all_link_actions + lto_index_actions,
+ flag_groups = [
+ flag_group(
+ flags = [
+ "-fcs-profile-generate=%{cs_fdo_instrument_path}",
+ ],
+ expand_if_available = "cs_fdo_instrument_path",
+ ),
+ ],
+ ),
+ ],
+ provides = ["csprofile"],
+ )
+
+ include_paths_feature = feature(
+ name = "include_paths",
+ enabled = True,
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.preprocess_assemble,
+ ACTION_NAMES.linkstamp_compile,
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.cpp_header_parsing,
+ ACTION_NAMES.cpp_module_compile,
+ ACTION_NAMES.clif_match,
+ ACTION_NAMES.objc_compile,
+ ACTION_NAMES.objcpp_compile,
+ ],
+ flag_groups = [
+ flag_group(
+ flags = ["-iquote", "%{quote_include_paths}"],
+ iterate_over = "quote_include_paths",
+ ),
+ flag_group(
+ flags = ["-I%{include_paths}"],
+ iterate_over = "include_paths",
+ ),
+ flag_group(
+ flags = ["-isystem", "%{system_include_paths}"],
+ iterate_over = "system_include_paths",
+ ),
+ ],
+ ),
+ ],
+ )
+
+ symbol_counts_feature = feature(
+ name = "symbol_counts",
+ flag_sets = [
+ flag_set(
+ actions = all_link_actions + lto_index_actions,
+ flag_groups = [
+ flag_group(
+ flags = [
+ "-Wl,--print-symbol-counts=%{symbol_counts_output}",
+ ],
+ expand_if_available = "symbol_counts_output",
+ ),
+ ],
+ ),
+ ],
+ )
+
+ llvm_coverage_map_format_feature = feature(
+ name = "llvm_coverage_map_format",
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.preprocess_assemble,
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.cpp_module_compile,
+ ACTION_NAMES.objc_compile,
+ ACTION_NAMES.objcpp_compile,
+ ],
+ flag_groups = [
+ flag_group(
+ flags = [
+ "-fprofile-instr-generate",
+ "-fcoverage-mapping",
+ ],
+ ),
+ ],
+ ),
+ flag_set(
+ actions = all_link_actions + lto_index_actions + [
+ "objc-executable",
+ "objc++-executable",
+ ],
+ flag_groups = [
+ flag_group(flags = ["-fprofile-instr-generate"]),
+ ],
+ ),
+ ],
+ requires = [feature_set(features = ["coverage"])],
+ provides = ["profile"],
+ )
+
+ strip_debug_symbols_feature = feature(
+ name = "strip_debug_symbols",
+ flag_sets = [
+ flag_set(
+ actions = all_link_actions + lto_index_actions,
+ flag_groups = [
+ flag_group(
+ flags = ["-Wl,-S"],
+ expand_if_available = "strip_debug_symbols",
+ ),
+ ],
+ ),
+ ],
+ )
+
+ build_interface_libraries_feature = feature(
+ name = "build_interface_libraries",
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.cpp_link_dynamic_library,
+ ACTION_NAMES.cpp_link_nodeps_dynamic_library,
+ ACTION_NAMES.lto_index_for_dynamic_library,
+ ACTION_NAMES.lto_index_for_nodeps_dynamic_library,
+ ],
+ flag_groups = [
+ flag_group(
+ flags = [
+ "%{generate_interface_library}",
+ "%{interface_library_builder_path}",
+ "%{interface_library_input_path}",
+ "%{interface_library_output_path}",
+ ],
+ expand_if_available = "generate_interface_library",
+ ),
+ ],
+ with_features = [
+ with_feature_set(
+ features = ["supports_interface_shared_libraries"],
+ ),
+ ],
+ ),
+ ],
+ )
+
+ libraries_to_link_feature = feature(
+ name = "libraries_to_link",
+ flag_sets = [
+ flag_set(
+ actions = all_link_actions + lto_index_actions,
+ flag_groups = [
+ flag_group(
+ iterate_over = "libraries_to_link",
+ flag_groups = [
+ flag_group(
+ flags = ["-Wl,--start-lib"],
+ expand_if_equal = variable_with_value(
+ name = "libraries_to_link.type",
+ value = "object_file_group",
+ ),
+ ),
+ flag_group(
+ flags = ["-Wl,-whole-archive"],
+ expand_if_true =
+ "libraries_to_link.is_whole_archive",
+ ),
+ flag_group(
+ flags = ["%{libraries_to_link.object_files}"],
+ iterate_over = "libraries_to_link.object_files",
+ expand_if_equal = variable_with_value(
+ name = "libraries_to_link.type",
+ value = "object_file_group",
+ ),
+ ),
+ flag_group(
+ flags = ["%{libraries_to_link.name}"],
+ expand_if_equal = variable_with_value(
+ name = "libraries_to_link.type",
+ value = "object_file",
+ ),
+ ),
+ flag_group(
+ flags = ["%{libraries_to_link.name}"],
+ expand_if_equal = variable_with_value(
+ name = "libraries_to_link.type",
+ value = "interface_library",
+ ),
+ ),
+ flag_group(
+ flags = ["%{libraries_to_link.name}"],
+ expand_if_equal = variable_with_value(
+ name = "libraries_to_link.type",
+ value = "static_library",
+ ),
+ ),
+ flag_group(
+ flags = ["-l%{libraries_to_link.name}"],
+ expand_if_equal = variable_with_value(
+ name = "libraries_to_link.type",
+ value = "dynamic_library",
+ ),
+ ),
+ flag_group(
+ flags = ["-l:%{libraries_to_link.name}"],
+ expand_if_equal = variable_with_value(
+ name = "libraries_to_link.type",
+ value = "versioned_dynamic_library",
+ ),
+ ),
+ flag_group(
+ flags = ["-Wl,-no-whole-archive"],
+ expand_if_true = "libraries_to_link.is_whole_archive",
+ ),
+ flag_group(
+ flags = ["-Wl,--end-lib"],
+ expand_if_equal = variable_with_value(
+ name = "libraries_to_link.type",
+ value = "object_file_group",
+ ),
+ ),
+ ],
+ expand_if_available = "libraries_to_link",
+ ),
+ flag_group(
+ flags = ["-Wl,@%{thinlto_param_file}"],
+ expand_if_true = "thinlto_param_file",
+ ),
+ ],
+ ),
+ ],
+ )
+
+ user_link_flags_feature = feature(
+ name = "user_link_flags",
+ flag_sets = [
+ flag_set(
+ actions = all_link_actions + lto_index_actions,
+ flag_groups = [
+ flag_group(
+ flags = ["%{user_link_flags}"],
+ iterate_over = "user_link_flags",
+ expand_if_available = "user_link_flags",
+ ),
+ ] + ([flag_group(flags = ctx.attr.link_libs)] if ctx.attr.link_libs else []),
+ ),
+ ],
+ )
+
+ fdo_prefetch_hints_feature = feature(
+ name = "fdo_prefetch_hints",
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.lto_backend,
+ ],
+ flag_groups = [
+ flag_group(
+ flags = [
+ "-Xclang-only=-mllvm",
+ "-Xclang-only=-prefetch-hints-file=%{fdo_prefetch_hints_path}",
+ ],
+ expand_if_available = "fdo_prefetch_hints_path",
+ ),
+ ],
+ ),
+ ],
+ )
+
+ linkstamps_feature = feature(
+ name = "linkstamps",
+ flag_sets = [
+ flag_set(
+ actions = all_link_actions + lto_index_actions,
+ flag_groups = [
+ flag_group(
+ flags = ["%{linkstamp_paths}"],
+ iterate_over = "linkstamp_paths",
+ expand_if_available = "linkstamp_paths",
+ ),
+ ],
+ ),
+ ],
+ )
+
+ gcc_coverage_map_format_feature = feature(
+ name = "gcc_coverage_map_format",
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.preprocess_assemble,
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.cpp_module_compile,
+ ACTION_NAMES.objc_compile,
+ ACTION_NAMES.objcpp_compile,
+ "objc-executable",
+ "objc++-executable",
+ ],
+ flag_groups = [
+ flag_group(
+ flags = ["-fprofile-arcs", "-ftest-coverage"],
+ expand_if_available = "gcov_gcno_file",
+ ),
+ ],
+ ),
+ flag_set(
+ actions = all_link_actions + lto_index_actions,
+ flag_groups = [flag_group(flags = ["--coverage"])],
+ ),
+ ],
+ requires = [feature_set(features = ["coverage"])],
+ provides = ["profile"],
+ )
+
+ archiver_flags_feature = feature(
+ name = "archiver_flags",
+ flag_sets = [
+ flag_set(
+ actions = [ACTION_NAMES.cpp_link_static_library],
+ flag_groups = [
+ flag_group(flags = ["rcsD"]),
+ flag_group(
+ flags = ["%{output_execpath}"],
+ expand_if_available = "output_execpath",
+ ),
+ ],
+ ),
+ flag_set(
+ actions = [ACTION_NAMES.cpp_link_static_library],
+ flag_groups = [
+ flag_group(
+ iterate_over = "libraries_to_link",
+ flag_groups = [
+ flag_group(
+ flags = ["%{libraries_to_link.name}"],
+ expand_if_equal = variable_with_value(
+ name = "libraries_to_link.type",
+ value = "object_file",
+ ),
+ ),
+ flag_group(
+ flags = ["%{libraries_to_link.object_files}"],
+ iterate_over = "libraries_to_link.object_files",
+ expand_if_equal = variable_with_value(
+ name = "libraries_to_link.type",
+ value = "object_file_group",
+ ),
+ ),
+ ],
+ expand_if_available = "libraries_to_link",
+ ),
+ ],
+ ),
+ ],
+ )
+
+ force_pic_flags_feature = feature(
+ name = "force_pic_flags",
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.cpp_link_executable,
+ ACTION_NAMES.lto_index_for_executable,
+ ],
+ flag_groups = [
+ flag_group(
+ flags = ["-pie"],
+ expand_if_available = "force_pic",
+ ),
+ ],
+ ),
+ ],
+ )
+
+ dependency_file_feature = feature(
+ name = "dependency_file",
+ enabled = True,
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.assemble,
+ ACTION_NAMES.preprocess_assemble,
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.cpp_module_compile,
+ ACTION_NAMES.objc_compile,
+ ACTION_NAMES.objcpp_compile,
+ ACTION_NAMES.cpp_header_parsing,
+ ACTION_NAMES.clif_match,
+ ],
+ flag_groups = [
+ flag_group(
+ flags = ["-MD", "-MF", "%{dependency_file}"],
+ expand_if_available = "dependency_file",
+ ),
+ ],
+ ),
+ ],
+ )
+
+ dynamic_library_linker_tool_path = tool_paths
+ dynamic_library_linker_tool_feature = feature(
+ name = "dynamic_library_linker_tool",
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.cpp_link_dynamic_library,
+ ACTION_NAMES.cpp_link_nodeps_dynamic_library,
+ ACTION_NAMES.lto_index_for_dynamic_library,
+ ACTION_NAMES.lto_index_for_nodeps_dynamic_library,
+ ],
+ flag_groups = [
+ flag_group(
+ flags = [" + cppLinkDynamicLibraryToolPath + "],
+ expand_if_available = "generate_interface_library",
+ ),
+ ],
+ with_features = [
+ with_feature_set(
+ features = ["supports_interface_shared_libraries"],
+ ),
+ ],
+ ),
+ ],
+ )
+
+ output_execpath_flags_feature = feature(
+ name = "output_execpath_flags",
+ flag_sets = [
+ flag_set(
+ actions = all_link_actions + lto_index_actions,
+ flag_groups = [
+ flag_group(
+ flags = ["-o", "%{output_execpath}"],
+ expand_if_available = "output_execpath",
+ ),
+ ],
+ ),
+ ],
+ )
+
+ # Note that we also set --coverage for c++-link-nodeps-dynamic-library. The
+ # generated code contains references to gcov symbols, and the dynamic linker
+ # can't resolve them unless the library is linked against gcov.
+ coverage_feature = feature(
+ name = "coverage",
+ provides = ["profile"],
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.preprocess_assemble,
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.cpp_header_parsing,
+ ACTION_NAMES.cpp_module_compile,
+ ],
+ flag_groups = ([
+ flag_group(flags = ctx.attr.coverage_compile_flags),
+ ] if ctx.attr.coverage_compile_flags else []),
+ ),
+ flag_set(
+ actions = all_link_actions + lto_index_actions,
+ flag_groups = ([
+ flag_group(flags = ctx.attr.coverage_link_flags),
+ ] if ctx.attr.coverage_link_flags else []),
),
],
)
build_id_feature = feature(
name = "build-id",
+ enabled = True,
flag_sets = [
flag_set(
actions = all_link_actions,
@@ -1057,451 +1030,133 @@
],
)
- sysroot_feature = feature(
- name = "sysroot",
+ no_canonical_prefixes_feature = feature(
+ name = "no-canonical-prefixes",
+ enabled = True,
flag_sets = [
flag_set(
actions = [
- ACTION_NAMES.assemble,
- ACTION_NAMES.preprocess_assemble,
ACTION_NAMES.c_compile,
ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.cpp_module_codegen,
ACTION_NAMES.cpp_link_executable,
ACTION_NAMES.cpp_link_dynamic_library,
ACTION_NAMES.cpp_link_nodeps_dynamic_library,
],
flag_groups = [
flag_group(
- flags = ["--sysroot=%{sysroot}"],
- iterate_over = "sysroot",
- expand_if_available = "sysroot",
+ flags = [
+ "-no-canonical-prefixes",
+ "-fno-canonical-system-headers",
+ ]
),
],
),
],
)
- def_file_feature = feature(
- name = "def_file",
+ linker_bin_path_feature = feature(
+ name = "linker-bin-path",
+ enabled = True,
flag_sets = [
flag_set(
actions = all_link_actions,
- flag_groups = [
- flag_group(
- flags = ["/DEF:%{def_file_path}", "/ignore:4070"],
- expand_if_available = "def_file_path",
- ),
- ],
+ flag_groups = [flag_group(flags = ["-B" + ctx.attr.linker_bin_path])],
),
],
)
- if (ctx.attr.cpu == "darwin"):
- stdlib_feature = feature(
- name = "stdlib",
- flag_sets = [
- flag_set(
- actions = all_link_actions,
- flag_groups = [flag_group(flags = ["-lc++"])],
- ),
- ],
- )
- elif (ctx.attr.cpu == "local"):
- stdlib_feature = feature(
- name = "stdlib",
- flag_sets = [
- flag_set(
- actions = all_link_actions,
- flag_groups = [flag_group(flags = ["-lstdc++"])],
- ),
- ],
- )
- else:
- stdlib_feature = None
-
- no_stripping_feature = feature(name = "no_stripping")
-
- alwayslink_feature = feature(
- name = "alwayslink",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.cpp_link_dynamic_library,
- ACTION_NAMES.cpp_link_nodeps_dynamic_library,
- ACTION_NAMES.cpp_link_executable,
- ],
- flag_groups = [flag_group(flags = ["-Wl,-no-as-needed"])],
- ),
- ],
- )
-
- input_param_flags_feature = feature(
- name = "input_param_flags",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.cpp_link_dynamic_library,
- ACTION_NAMES.cpp_link_nodeps_dynamic_library,
- ],
- flag_groups = [
- flag_group(
- flags = ["/IMPLIB:%{interface_library_output_path}"],
- expand_if_available = "interface_library_output_path",
- ),
- ],
- ),
- flag_set(
- actions = all_link_actions +
- [ACTION_NAMES.cpp_link_static_library],
- flag_groups = [
- flag_group(
- iterate_over = "libraries_to_link",
- flag_groups = [
- flag_group(
- iterate_over = "libraries_to_link.object_files",
- flag_groups = [flag_group(flags = ["%{libraries_to_link.object_files}"])],
- expand_if_equal = variable_with_value(
- name = "libraries_to_link.type",
- value = "object_file_group",
- ),
- ),
- flag_group(
- flag_groups = [flag_group(flags = ["%{libraries_to_link.name}"])],
- expand_if_equal = variable_with_value(
- name = "libraries_to_link.type",
- value = "object_file",
- ),
- ),
- flag_group(
- flag_groups = [flag_group(flags = ["%{libraries_to_link.name}"])],
- expand_if_equal = variable_with_value(
- name = "libraries_to_link.type",
- value = "interface_library",
- ),
- ),
- flag_group(
- flag_groups = [
- flag_group(
- flags = ["%{libraries_to_link.name}"],
- expand_if_false = "libraries_to_link.is_whole_archive",
- ),
- flag_group(
- flags = ["/WHOLEARCHIVE:%{libraries_to_link.name}"],
- expand_if_true = "libraries_to_link.is_whole_archive",
- ),
- ],
- expand_if_equal = variable_with_value(
- name = "libraries_to_link.type",
- value = "static_library",
- ),
- ),
- ],
- expand_if_available = "libraries_to_link",
- ),
- ],
- ),
- ],
- )
-
- if (ctx.attr.cpu == "local"):
- no_canonical_prefixes_feature = feature(
- name = "no-canonical-prefixes",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_link_executable,
- ACTION_NAMES.cpp_link_dynamic_library,
- ACTION_NAMES.cpp_link_nodeps_dynamic_library,
- ],
- flag_groups = [
- flag_group(
- flags = [
- "-no-canonical-prefixes",
- ] + ctx.attr.extra_no_canonical_prefixes_flags,
- ),
- ],
- ),
- ],
- )
- elif (ctx.attr.cpu == "darwin"):
- no_canonical_prefixes_feature = feature(
- name = "no-canonical-prefixes",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_link_executable,
- ACTION_NAMES.cpp_link_dynamic_library,
- ACTION_NAMES.cpp_link_nodeps_dynamic_library,
- ],
- flag_groups = [flag_group(flags = ["-no-canonical-prefixes"])],
- ),
- ],
- )
- else:
- no_canonical_prefixes_feature = None
-
- has_configured_linker_path_feature = feature(name = "has_configured_linker_path")
-
- copy_dynamic_libraries_to_binary_feature = feature(name = "copy_dynamic_libraries_to_binary")
-
- user_link_flags_feature = feature(
- name = "user_link_flags",
- flag_sets = [
- flag_set(
- actions = all_link_actions,
- flag_groups = [
- flag_group(
- flags = ["%{user_link_flags}"],
- iterate_over = "user_link_flags",
- expand_if_available = "user_link_flags",
- ),
- ],
- ),
- ],
- )
-
- cpp11_feature = feature(
- name = "c++11",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.cpp_compile],
- flag_groups = [flag_group(flags = ["-std=c++11"])],
- ),
- ],
- )
-
- if (ctx.attr.cpu == "local"):
- common_feature = feature(
- name = "common",
- implies = [
- "stdlib",
- "c++11",
- "determinism",
- "alwayslink",
- "hardening",
- "warnings",
- "frame-pointer",
- "build-id",
- "no-canonical-prefixes",
- "linker-bin-path",
- ],
- )
- elif (ctx.attr.cpu == "darwin"):
- common_feature = feature(
- name = "common",
- implies = [
- "stdlib",
- "c++11",
- "determinism",
- "hardening",
- "warnings",
- "frame-pointer",
- "no-canonical-prefixes",
- "linker-bin-path",
- "undefined-dynamic",
- ],
- )
- else:
- common_feature = None
-
- if (ctx.attr.cpu == "local"):
- features = [
- cpp11_feature,
- stdlib_feature,
- determinism_feature,
- alwayslink_feature,
- pic_feature,
- hardening_feature,
- warnings_feature,
- frame_pointer_feature,
- build_id_feature,
- no_canonical_prefixes_feature,
- disable_assertions_feature,
- linker_bin_path_feature,
- common_feature,
- opt_feature,
- fastbuild_feature,
- dbg_feature,
- supports_dynamic_linker_feature,
- supports_pic_feature,
- unfiltered_compile_flags_feature,
- rocm_link_flags_feature,
- ]
- elif (ctx.attr.cpu == "darwin"):
- features = [
- cpp11_feature,
- stdlib_feature,
- determinism_feature,
- pic_feature,
- hardening_feature,
- warnings_feature,
- frame_pointer_feature,
- no_canonical_prefixes_feature,
- disable_assertions_feature,
- linker_bin_path_feature,
- undefined_dynamic_feature,
- common_feature,
- opt_feature,
- fastbuild_feature,
- dbg_feature,
- supports_dynamic_linker_feature,
- supports_pic_feature,
- ]
- elif (ctx.attr.cpu == "x64_windows"):
- features = [
- no_legacy_features_feature,
- redirector_feature,
- nologo_feature,
- has_configured_linker_path_feature,
- no_stripping_feature,
- targets_windows_feature,
- copy_dynamic_libraries_to_binary_feature,
- default_compile_flags_feature,
- msvc_env_feature,
- include_paths_feature,
- preprocessor_defines_feature,
- parse_showincludes_feature,
- generate_pdb_file_feature,
- shared_flag_feature,
- linkstamps_feature,
- output_execpath_flags_feature,
- archiver_flags_feature,
- input_param_flags_feature,
- linker_subsystem_flag_feature,
- user_link_flags_feature,
- default_link_flags_feature,
- linker_param_file_feature,
- static_link_msvcrt_feature,
- static_link_msvcrt_no_debug_feature,
- dynamic_link_msvcrt_no_debug_feature,
- static_link_msvcrt_debug_feature,
- dynamic_link_msvcrt_debug_feature,
- dbg_feature,
- fastbuild_feature,
- opt_feature,
- user_compile_flags_feature,
- sysroot_feature,
- unfiltered_compile_flags_feature,
- compiler_output_flags_feature,
- compiler_input_flags_feature,
- def_file_feature,
- windows_export_all_symbols_feature,
- no_windows_export_all_symbols_feature,
- supports_dynamic_linker_feature,
- supports_interface_shared_libraries_feature,
- ]
- else:
- fail("Unreachable")
-
- cxx_builtin_include_directories = ctx.attr.builtin_include_directories
-
- if (ctx.attr.cpu == "x64_windows"):
- tool_paths = [
- tool_path(name = "ar", path = ctx.attr.msvc_lib_path),
- tool_path(name = "ml", path = ctx.attr.msvc_ml_path),
- tool_path(name = "cpp", path = ctx.attr.msvc_cl_path),
- tool_path(name = "gcc", path = ctx.attr.msvc_cl_path),
- tool_path(name = "gcov", path = "wrapper/bin/msvc_nop.bat"),
- tool_path(name = "ld", path = ctx.attr.msvc_link_path),
- tool_path(name = "nm", path = "wrapper/bin/msvc_nop.bat"),
- tool_path(
- name = "objcopy",
- path = "wrapper/bin/msvc_nop.bat",
- ),
- tool_path(
- name = "objdump",
- path = "wrapper/bin/msvc_nop.bat",
- ),
- tool_path(
- name = "strip",
- path = "wrapper/bin/msvc_nop.bat",
- ),
- ]
- elif (ctx.attr.cpu == "local"):
- tool_paths = [
- tool_path(name = "gcc", path = ctx.attr.host_compiler_path),
- tool_path(name = "ar", path = ctx.attr.host_compiler_prefix + "/ar"),
- tool_path(name = "compat-ld", path = ctx.attr.host_compiler_prefix + "/ld"),
- tool_path(name = "cpp", path = ctx.attr.host_compiler_prefix + "/cpp"),
- tool_path(name = "dwp", path = ctx.attr.host_compiler_prefix + "/dwp"),
- tool_path(name = "gcov", path = ctx.attr.host_compiler_prefix + "/gcov"),
- tool_path(name = "ld", path = ctx.attr.host_compiler_prefix + "/ld"),
- tool_path(name = "nm", path = ctx.attr.host_compiler_prefix + "/nm"),
- tool_path(name = "objcopy", path = ctx.attr.host_compiler_prefix + "/objcopy"),
- tool_path(name = "objdump", path = ctx.attr.host_compiler_prefix + "/objdump"),
- tool_path(name = "strip", path = ctx.attr.host_compiler_prefix + "/strip"),
- ]
- elif (ctx.attr.cpu == "darwin"):
- tool_paths = [
- tool_path(name = "gcc", path = ctx.attr.host_compiler_path),
- tool_path(name = "ar", path = ctx.attr.host_compiler_prefix + "/libtool"),
- tool_path(name = "compat-ld", path = ctx.attr.host_compiler_prefix + "/ld"),
- tool_path(name = "cpp", path = ctx.attr.host_compiler_prefix + "/cpp"),
- tool_path(name = "dwp", path = ctx.attr.host_compiler_prefix + "/dwp"),
- tool_path(name = "gcov", path = ctx.attr.host_compiler_prefix + "/gcov"),
- tool_path(name = "ld", path = ctx.attr.host_compiler_prefix + "/ld"),
- tool_path(name = "nm", path = ctx.attr.host_compiler_prefix + "/nm"),
- tool_path(name = "objcopy", path = ctx.attr.host_compiler_prefix + "/objcopy"),
- tool_path(name = "objdump", path = ctx.attr.host_compiler_prefix + "/objdump"),
- tool_path(name = "strip", path = ctx.attr.host_compiler_prefix + "/strip"),
- ]
- else:
- fail("Unreachable")
-
- out = ctx.actions.declare_file(ctx.label.name)
- ctx.actions.write(out, "Fake executable")
- return [
- cc_common.create_cc_toolchain_config_info(
- ctx = ctx,
- features = features,
- action_configs = action_configs,
- artifact_name_patterns = [],
- cxx_builtin_include_directories = cxx_builtin_include_directories,
- toolchain_identifier = toolchain_identifier,
- host_system_name = host_system_name,
- target_system_name = target_system_name,
- target_cpu = target_cpu,
- target_libc = target_libc,
- compiler = compiler,
- abi_version = abi_version,
- abi_libc_version = abi_libc_version,
- tool_paths = tool_paths,
- make_variables = [],
- builtin_sysroot = builtin_sysroot,
- cc_target_os = cc_target_os,
- ),
- DefaultInfo(
- executable = out,
- ),
+ features = [
+ dependency_file_feature,
+ random_seed_feature,
+ pic_feature,
+ per_object_debug_info_feature,
+ preprocessor_defines_feature,
+ includes_feature,
+ include_paths_feature,
+ fdo_instrument_feature,
+ cs_fdo_instrument_feature,
+ cs_fdo_optimize_feature,
+ fdo_prefetch_hints_feature,
+ autofdo_feature,
+ build_interface_libraries_feature,
+ dynamic_library_linker_tool_feature,
+ symbol_counts_feature,
+ shared_flag_feature,
+ linkstamps_feature,
+ output_execpath_flags_feature,
+ runtime_library_search_directories_feature,
+ library_search_directories_feature,
+ archiver_flags_feature,
+ force_pic_flags_feature,
+ fission_support_feature,
+ strip_debug_symbols_feature,
+ coverage_feature,
+ supports_pic_feature,
+ ] + (
+ [
+ supports_start_end_lib_feature,
+ ] if ctx.attr.supports_start_end_lib else []
+ ) + [
+ default_compile_flags_feature,
+ default_link_flags_feature,
+ libraries_to_link_feature,
+ user_link_flags_feature,
+ static_libgcc_feature,
+ fdo_optimize_feature,
+ supports_dynamic_linker_feature,
+ dbg_feature,
+ opt_feature,
+ user_compile_flags_feature,
+ sysroot_feature,
+ unfiltered_compile_flags_feature,
+ build_id_feature,
+ no_canonical_prefixes_feature,
+ linker_bin_path_feature,
]
+ return cc_common.create_cc_toolchain_config_info(
+ ctx = ctx,
+ features = features,
+ action_configs = action_configs,
+ cxx_builtin_include_directories = ctx.attr.cxx_builtin_include_directories,
+ toolchain_identifier = ctx.attr.toolchain_identifier,
+ host_system_name = ctx.attr.host_system_name,
+ target_system_name = ctx.attr.target_system_name,
+ target_cpu = ctx.attr.cpu,
+ target_libc = ctx.attr.target_libc,
+ compiler = ctx.attr.compiler,
+ abi_version = ctx.attr.abi_version,
+ abi_libc_version = ctx.attr.abi_libc_version,
+ tool_paths = tool_paths,
+ )
+
cc_toolchain_config = rule(
implementation = _impl,
attrs = {
- "cpu": attr.string(mandatory = True, values = ["darwin", "local", "x64_windows"]),
- "builtin_include_directories": attr.string_list(),
- "extra_no_canonical_prefixes_flags": attr.string_list(),
+ "cpu": attr.string(mandatory = True),
+ "compiler": attr.string(mandatory = True),
+ "toolchain_identifier": attr.string(mandatory = True),
+ "host_system_name": attr.string(mandatory = True),
+ "target_system_name": attr.string(mandatory = True),
+ "target_libc": attr.string(mandatory = True),
+ "abi_version": attr.string(mandatory = True),
+ "abi_libc_version": attr.string(mandatory = True),
+ "cxx_builtin_include_directories": attr.string_list(),
+ "compile_flags": attr.string_list(),
+ "dbg_compile_flags": attr.string_list(),
+ "opt_compile_flags": attr.string_list(),
+ "cxx_flags": attr.string_list(),
+ "link_flags": attr.string_list(),
+ "link_libs": attr.string_list(),
+ "opt_link_flags": attr.string_list(),
+ "unfiltered_compile_flags": attr.string_list(),
+ "coverage_compile_flags": attr.string_list(),
+ "coverage_link_flags": attr.string_list(),
+ "supports_start_end_lib": attr.bool(),
"host_compiler_path": attr.string(),
"host_compiler_prefix": attr.string(),
- "host_compiler_warnings": attr.string_list(),
- "host_unfiltered_compile_flags": attr.string_list(),
"linker_bin_path": attr.string(),
- "msvc_cl_path": attr.string(default = "msvc_not_used"),
- "msvc_env_include": attr.string(default = "msvc_not_used"),
- "msvc_env_lib": attr.string(default = "msvc_not_used"),
- "msvc_env_path": attr.string(default = "msvc_not_used"),
- "msvc_env_tmp": attr.string(default = "msvc_not_used"),
- "msvc_lib_path": attr.string(default = "msvc_not_used"),
- "msvc_link_path": attr.string(default = "msvc_not_used"),
- "msvc_ml_path": attr.string(default = "msvc_not_used"),
},
provides = [CcToolchainConfigInfo],
- executable = True,
)
+
diff --git a/third_party/gpus/rocm_configure.bzl b/third_party/gpus/rocm_configure.bzl
index acd6c75..7a02bb4 100644
--- a/third_party/gpus/rocm_configure.bzl
+++ b/third_party/gpus/rocm_configure.bzl
@@ -18,7 +18,6 @@
"make_copy_dir_rule",
"make_copy_files_rule",
"to_list_of_strings",
- "verify_build_defines",
)
_GCC_HOST_COMPILER_PATH = "GCC_HOST_COMPILER_PATH"
@@ -34,21 +33,33 @@
_DEFAULT_ROCM_TOOLKIT_PATH = "/opt/rocm"
_DEFAULT_ROCM_AMDGPU_TARGETS = ["gfx803", "gfx900"]
-def _get_win_rocm_defines(repository_ctx):
- """Return CROSSTOOL defines for Windows"""
+def verify_build_defines(params):
+ """Verify all variables that crosstool/BUILD.rocm.tpl expects are substituted.
- # Return fake vaules for Windows specific fields.
- # This ensures the CROSSTOOL file parser is happy.
- return {
- "%{msvc_env_tmp}": "msvc_not_used",
- "%{msvc_env_path}": "msvc_not_used",
- "%{msvc_env_include}": "msvc_not_used",
- "%{msvc_env_lib}": "msvc_not_used",
- "%{msvc_cl_path}": "msvc_not_used",
- "%{msvc_ml_path}": "msvc_not_used",
- "%{msvc_link_path}": "msvc_not_used",
- "%{msvc_lib_path}": "msvc_not_used",
- }
+ Args:
+ params: dict of variables that will be passed to the BUILD.tpl template.
+ """
+ missing = []
+ for param in [
+ "cxx_builtin_include_directories",
+ "extra_no_canonical_prefixes_flags",
+ "host_compiler_path",
+ "host_compiler_prefix",
+ "linker_bin_path",
+ "linker_files",
+ "unfiltered_compile_flags",
+ ]:
+ if ("%{" + param + "}") not in params:
+ missing.append(param)
+
+ if missing:
+ auto_configure_fail(
+ "BUILD.rocm.tpl template is missing these variables: " +
+ str(missing) +
+ ".\nWe only got: " +
+ str(params) +
+ ".",
+ )
def find_cc(repository_ctx):
"""Find the C++ compiler."""
@@ -138,6 +149,12 @@
no_color = "\033[0m"
fail("\n%sROCm Configuration Error:%s %s\n" % (red, no_color, msg))
+def auto_configure_warning(msg):
+ """Output warning message during auto configuration."""
+ yellow = "\033[1;33m"
+ no_color = "\033[0m"
+ print("\n%sAuto-Configuration Warning:%s %s\n" % (yellow, no_color, msg))
+
# END cc_configure common functions (see TODO above).
def _host_compiler_includes(repository_ctx, cc):
@@ -225,7 +242,11 @@
def _enable_rocm(repository_ctx):
if "TF_NEED_ROCM" in repository_ctx.os.environ:
enable_rocm = repository_ctx.os.environ["TF_NEED_ROCM"].strip()
- return enable_rocm == "1"
+ if enable_rocm == "1":
+ if _cpu_value(repository_ctx) != "Linux":
+ auto_configure_warning("ROCm configure is only supported on Linux")
+ return False
+ return True
return False
def _rocm_toolkit_path(repository_ctx):
@@ -356,40 +377,27 @@
result = repository_ctx.execute(["uname", "-s"])
return result.stdout.strip()
-def _lib_name(lib, cpu_value, version = "", static = False):
- """Constructs the platform-specific name of a library.
+def _lib_name(lib, version = "", static = False):
+ """Constructs the name of a library on Linux.
Args:
lib: The name of the library, such as "hip"
- cpu_value: The name of the host operating system.
version: The version of the library.
static: True the library is static or False if it is a shared object.
Returns:
The platform-specific name of the library.
"""
- if cpu_value in ("Linux", "FreeBSD"):
- if static:
- return "lib%s.a" % lib
- else:
- if version:
- version = ".%s" % version
- return "lib%s.so%s" % (lib, version)
- elif cpu_value == "Windows":
- return "%s.lib" % lib
- elif cpu_value == "Darwin":
- if static:
- return "lib%s.a" % lib
- elif version:
- version = ".%s" % version
- return "lib%s%s.dylib" % (lib, version)
+ if static:
+ return "lib%s.a" % lib
else:
- auto_configure_fail("Invalid cpu_value: %s" % cpu_value)
+ if version:
+ version = ".%s" % version
+ return "lib%s.so%s" % (lib, version)
def _find_rocm_lib(
lib,
repository_ctx,
- cpu_value,
basedir,
version = "",
static = False):
@@ -398,7 +406,6 @@
Args:
lib: The name of the library, such as "hip"
repository_ctx: The repository context.
- cpu_value: The name of the host operating system.
basedir: The install directory of ROCm.
version: The version of the library.
static: True if static library, False if shared object.
@@ -408,20 +415,19 @@
file_name: The basename of the library found on the system.
path: The full path to the library.
"""
- file_name = _lib_name(lib, cpu_value, version, static)
- if cpu_value == "Linux":
- path = repository_ctx.path("%s/lib64/%s" % (basedir, file_name))
- if path.exists:
- return struct(file_name = file_name, path = str(path.realpath))
- path = repository_ctx.path("%s/lib64/stubs/%s" % (basedir, file_name))
- if path.exists:
- return struct(file_name = file_name, path = str(path.realpath))
- path = repository_ctx.path(
- "%s/lib/x86_64-linux-gnu/%s" % (basedir, file_name),
- )
- if path.exists:
- return struct(file_name = file_name, path = str(path.realpath))
+ file_name = _lib_name(lib, version, static)
+ path = repository_ctx.path("%s/lib64/%s" % (basedir, file_name))
+ if path.exists:
+ return struct(file_name = file_name, path = str(path.realpath))
+ path = repository_ctx.path("%s/lib64/stubs/%s" % (basedir, file_name))
+ if path.exists:
+ return struct(file_name = file_name, path = str(path.realpath))
+ path = repository_ctx.path(
+ "%s/lib/x86_64-linux-gnu/%s" % (basedir, file_name),
+ )
+ if path.exists:
+ return struct(file_name = file_name, path = str(path.realpath))
path = repository_ctx.path("%s/lib/%s" % (basedir, file_name))
if path.exists:
return struct(file_name = file_name, path = str(path.realpath))
@@ -442,42 +448,35 @@
Map of library names to structs of filename and path as returned by
_find_rocm_lib.
"""
- cpu_value = rocm_config.cpu_value
return {
"hip": _find_rocm_lib(
"hip_hcc",
repository_ctx,
- cpu_value,
rocm_config.rocm_toolkit_path,
),
"rocblas": _find_rocm_lib(
"rocblas",
repository_ctx,
- cpu_value,
rocm_config.rocm_toolkit_path + "/rocblas",
),
"rocfft": _find_rocm_lib(
"rocfft",
repository_ctx,
- cpu_value,
rocm_config.rocm_toolkit_path + "/rocfft",
),
"hiprand": _find_rocm_lib(
"hiprand",
repository_ctx,
- cpu_value,
rocm_config.rocm_toolkit_path + "/hiprand",
),
"miopen": _find_rocm_lib(
"MIOpen",
repository_ctx,
- cpu_value,
rocm_config.rocm_toolkit_path + "/miopen",
),
"rccl": _find_rocm_lib(
"rccl",
repository_ctx,
- cpu_value,
rocm_config.rocm_toolkit_path + "/rccl",
),
}
@@ -492,14 +491,11 @@
A struct containing the following fields:
rocm_toolkit_path: The ROCm toolkit installation directory.
amdgpu_targets: A list of the system's AMDGPU targets.
- cpu_value: The name of the host operating system.
"""
- cpu_value = _cpu_value(repository_ctx)
rocm_toolkit_path = _rocm_toolkit_path(repository_ctx)
return struct(
rocm_toolkit_path = rocm_toolkit_path,
amdgpu_targets = _amdgpu_targets(repository_ctx),
- cpu_value = cpu_value,
)
def _tpl(repository_ctx, tpl, substitutions = {}, out = None):
@@ -544,8 +540,6 @@
"""
def _create_dummy_repository(repository_ctx):
- cpu_value = _cpu_value(repository_ctx)
-
# Set up BUILD file for rocm/.
_tpl(
repository_ctx,
@@ -559,12 +553,12 @@
repository_ctx,
"rocm:BUILD",
{
- "%{hip_lib}": _lib_name("hip", cpu_value),
- "%{rocblas_lib}": _lib_name("rocblas", cpu_value),
- "%{miopen_lib}": _lib_name("miopen", cpu_value),
- "%{rccl_lib}": _lib_name("rccl", cpu_value),
- "%{rocfft_lib}": _lib_name("rocfft", cpu_value),
- "%{hiprand_lib}": _lib_name("hiprand", cpu_value),
+ "%{hip_lib}": _lib_name("hip"),
+ "%{rocblas_lib}": _lib_name("rocblas"),
+ "%{miopen_lib}": _lib_name("miopen"),
+ "%{rccl_lib}": _lib_name("rccl"),
+ "%{rocfft_lib}": _lib_name("rocfft"),
+ "%{hiprand_lib}": _lib_name("hiprand"),
"%{copy_rules}": "",
"%{rocm_headers}": "",
},
@@ -796,28 +790,20 @@
rocm_defines["%{host_compiler_path}"] = "clang/bin/crosstool_wrapper_driver_is_not_gcc"
- # # Enable a few more warnings that aren't part of -Wall.
- # compiler_flag: "-Wunused-but-set-parameter"
-
- # # But disable some that are problematic.
- # compiler_flag: "-Wno-free-nonheap-object" # has false positives
-
- rocm_defines["%{host_compiler_warnings}"] = to_list_of_strings(["-Wunused-but-set-parameter", "-Wno-free-nonheap-object"])
-
rocm_defines["%{cxx_builtin_include_directories}"] = to_list_of_strings(host_compiler_includes +
_rocm_include_path(repository_ctx, rocm_config))
rocm_defines["%{linker_files}"] = "clang/bin/crosstool_wrapper_driver_is_not_gcc"
- rocm_defines["%{win_linker_files}"] = ":empty"
-
- # Add the dummy defines for windows...requried to pass the "verify_build_defines" check
- rocm_defines.update(_get_win_rocm_defines(repository_ctx))
-
verify_build_defines(rocm_defines)
# Only expand template variables in the BUILD file
- _tpl(repository_ctx, "crosstool:BUILD", rocm_defines)
+ _tpl(
+ repository_ctx,
+ "crosstool:BUILD.rocm",
+ rocm_defines,
+ out = "crosstool/BUILD",
+ )
# No templating of cc_toolchain_config - use attributes and templatize the
# BUILD file.
diff --git a/third_party/toolchains/preconfig/generate/generate.bzl b/third_party/toolchains/preconfig/generate/generate.bzl
index 66e551d..08b4ef3 100644
--- a/third_party/toolchains/preconfig/generate/generate.bzl
+++ b/third_party/toolchains/preconfig/generate/generate.bzl
@@ -72,7 +72,7 @@
docker_toolchain_autoconfig(
name = name,
base = base,
- bazel_version = "0.24.1",
+ bazel_version = "0.29.1",
build_bazel_src = build_bazel_src,
config_repos = config_repos,
env = env,
diff --git a/third_party/toolchains/preconfig/ubuntu16.04/gcc5-rocm/BUILD b/third_party/toolchains/preconfig/ubuntu16.04/gcc5-rocm/BUILD
index dcfaf20..00daa60 100755
--- a/third_party/toolchains/preconfig/ubuntu16.04/gcc5-rocm/BUILD
+++ b/third_party/toolchains/preconfig/ubuntu16.04/gcc5-rocm/BUILD
@@ -25,15 +25,11 @@
name = "toolchain",
toolchains = {
"local|compiler": ":cc-compiler-local",
- "darwin|compiler": ":cc-compiler-darwin",
- "x64_windows|msvc-cl": ":cc-compiler-windows",
- "x64_windows": ":cc-compiler-windows",
"arm": ":cc-compiler-local",
"aarch64": ":cc-compiler-local",
"k8": ":cc-compiler-local",
"piii": ":cc-compiler-local",
"ppc": ":cc-compiler-local",
- "darwin": ":cc-compiler-darwin",
},
)
@@ -56,71 +52,21 @@
cc_toolchain_config(
name = "cc-compiler-local-config",
- builtin_include_directories = [
- "/usr/include/c++/5",
- "/usr/include/x86_64-linux-gnu/c++/5",
- "/usr/include/c++/5/backward",
- "/usr/lib/gcc/x86_64-linux-gnu/5/include",
- "/usr/local/include",
- "/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed",
- "/usr/include/x86_64-linux-gnu",
- "/usr/include",
- "/opt/rocm/include",
- "/opt/rocm/hsa/include",
- "/opt/rocm/include/hip",
- "/opt/rocm/include/hip/hcc_detail",
- "/opt/rocm/hip/include",
- "/opt/rocm/llvm/lib/clang/8.0/include",
- "/opt/rocm/llvm/lib/clang/9.0.0/include",
- "/opt/rocm/llvm/lib/clang/10.0.0/include",
- "/opt/rocm/rocrand/include",
- "/opt/rocm/hiprand/include",
- "/opt/rocm/rocfft/include",
- "/opt/rocm/rocblas/include",
- "/opt/rocm/miopen/include",
- "/opt/rocm/rccl/include",
- "/opt/rocm/hcc/include",
- "/opt/rocm/hcc/compiler/lib/clang/7.0.0/include/",
- "/opt/rocm/hcc/lib/clang/7.0.0/include",
- "/opt/rocm/hcc/compiler/lib/clang/8.0.0/include/",
- "/opt/rocm/hcc/lib/clang/8.0.0/include",
- "/opt/rocm/hcc/compiler/lib/clang/9.0.0/include/",
- "/opt/rocm/hcc/lib/clang/9.0.0/include",
- "/opt/rocm/hcc/compiler/lib/clang/10.0.0/include/",
- "/opt/rocm/hcc/lib/clang/10.0.0/include",
+ abi_libc_version = "local",
+ abi_version = "local",
+ compile_flags = [
+ "-U_FORTIFY_SOURCE",
+ "-fstack-protector",
+ "-Wall",
+ "-Wunused-but-set-parameter",
+ "-Wno-free-nonheap-object",
+ "-fno-omit-frame-pointer",
],
+ compiler = "compiler",
+ coverage_compile_flags = ["--coverage"],
+ coverage_link_flags = ["--coverage"],
cpu = "local",
- extra_no_canonical_prefixes_flags = ["-fno-canonical-system-headers"],
- host_compiler_path = "clang/bin/crosstool_wrapper_driver_is_not_gcc",
- host_compiler_prefix = "/usr/bin",
- host_compiler_warnings = [
- "-Wunused-but-set-parameter",
- "-Wno-free-nonheap-object",
- ],
- host_unfiltered_compile_flags = [
- "-DTENSORFLOW_USE_ROCM=1",
- "-D__HIP_PLATFORM_HCC__",
- "-DEIGEN_USE_HIP",
- ],
- linker_bin_path = "/opt/rocm/hcc/compiler/bin",
-)
-
-cc_toolchain(
- name = "cc-compiler-darwin",
- all_files = "clang/bin/crosstool_wrapper_driver_is_not_gcc",
- compiler_files = ":empty",
- dwp_files = ":empty",
- linker_files = "clang/bin/crosstool_wrapper_driver_is_not_gcc",
- objcopy_files = ":empty",
- strip_files = ":empty",
- supports_param_files = 0,
- toolchain_config = ":cc-compiler-local-darwin",
- toolchain_identifier = "local_darwin",
-)
-
-cc_toolchain_config(
- name = "cc-compiler-local-darwin",
- builtin_include_directories = [
+ cxx_builtin_include_directories = [
"/usr/include/c++/5",
"/usr/include/x86_64-linux-gnu/c++/5",
"/usr/include/c++/5/backward",
@@ -153,79 +99,45 @@
"/opt/rocm/hcc/compiler/lib/clang/10.0.0/include/",
"/opt/rocm/hcc/lib/clang/10.0.0/include",
],
- cpu = "darwin",
- extra_no_canonical_prefixes_flags = ["-fno-canonical-system-headers"],
+ cxx_flags = ["-std=c++11"],
+ dbg_compile_flags = ["-g"],
host_compiler_path = "clang/bin/crosstool_wrapper_driver_is_not_gcc",
host_compiler_prefix = "/usr/bin",
- host_compiler_warnings = [
- "-Wunused-but-set-parameter",
- "-Wno-free-nonheap-object",
+ host_system_name = "local",
+ link_flags = [
+ "-fuse-ld=gold",
+ "-Wl,-no-as-needed",
+ "-Wl,-z,relro,-z,now",
+ "-pass-exit-codes",
+ "-lstdc++",
+ "-lm",
],
- host_unfiltered_compile_flags = [
+ link_libs = [],
+ linker_bin_path = "/opt/rocm/hcc/compiler/bin",
+ opt_compile_flags = [
+ "-g0",
+ "-O2",
+ "-D_FORTIFY_SOURCE=1",
+ "-DNDEBUG",
+ "-ffunction-sections",
+ "-fdata-sections",
+ ],
+ opt_link_flags = ["-Wl,--gc-sections"],
+ supports_start_end_lib = True,
+ target_libc = "local",
+ target_system_name = "local",
+ toolchain_identifier = "local_linux",
+ unfiltered_compile_flags = [
+ "-fno-canonical-system-headers",
+ "-Wno-builtin-macro-redefined",
+ "-D__DATE__=\"redacted\"",
+ "-D__TIMESTAMP__=\"redacted\"",
+ "-D__TIME__=\"redacted\"",
+ ] + [
"-DTENSORFLOW_USE_ROCM=1",
"-D__HIP_PLATFORM_HCC__",
"-DEIGEN_USE_HIP",
],
- linker_bin_path = "/opt/rocm/hcc/compiler/bin",
-)
-
-cc_toolchain(
- name = "cc-compiler-windows",
- all_files = ":empty",
- compiler_files = ":empty",
- dwp_files = ":empty",
- linker_files = ":empty",
- objcopy_files = ":empty",
- strip_files = ":empty",
- supports_param_files = 1,
- toolchain_config = ":cc-compiler-windows-config",
- toolchain_identifier = "local_windows",
-)
-
-cc_toolchain_config(
- name = "cc-compiler-windows-config",
- builtin_include_directories = [
- "/usr/include/c++/5",
- "/usr/include/x86_64-linux-gnu/c++/5",
- "/usr/include/c++/5/backward",
- "/usr/lib/gcc/x86_64-linux-gnu/5/include",
- "/usr/local/include",
- "/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed",
- "/usr/include/x86_64-linux-gnu",
- "/usr/include",
- "/opt/rocm/include",
- "/opt/rocm/hsa/include",
- "/opt/rocm/include/hip",
- "/opt/rocm/include/hip/hcc_detail",
- "/opt/rocm/hip/include",
- "/opt/rocm/llvm/lib/clang/8.0/include",
- "/opt/rocm/llvm/lib/clang/9.0.0/include",
- "/opt/rocm/llvm/lib/clang/10.0.0/include",
- "/opt/rocm/rocrand/include",
- "/opt/rocm/hiprand/include",
- "/opt/rocm/rocfft/include",
- "/opt/rocm/rocblas/include",
- "/opt/rocm/miopen/include",
- "/opt/rocm/rccl/include",
- "/opt/rocm/hcc/include",
- "/opt/rocm/hcc/compiler/lib/clang/7.0.0/include/",
- "/opt/rocm/hcc/lib/clang/7.0.0/include",
- "/opt/rocm/hcc/compiler/lib/clang/8.0.0/include/",
- "/opt/rocm/hcc/lib/clang/8.0.0/include",
- "/opt/rocm/hcc/compiler/lib/clang/9.0.0/include/",
- "/opt/rocm/hcc/lib/clang/9.0.0/include",
- "/opt/rocm/hcc/compiler/lib/clang/10.0.0/include/",
- "/opt/rocm/hcc/lib/clang/10.0.0/include",
- ],
- cpu = "x64_windows",
- msvc_cl_path = "msvc_not_used",
- msvc_env_include = "msvc_not_used",
- msvc_env_lib = "msvc_not_used",
- msvc_env_path = "msvc_not_used",
- msvc_env_tmp = "msvc_not_used",
- msvc_lib_path = "msvc_not_used",
- msvc_link_path = "msvc_not_used",
- msvc_ml_path = "msvc_not_used",
)
filegroup(
@@ -237,8 +149,3 @@
name = "crosstool_wrapper_driver_is_not_gcc",
srcs = ["clang/bin/crosstool_wrapper_driver_is_not_gcc"],
)
-
-filegroup(
- name = "windows_msvc_wrapper_files",
- srcs = glob(["windows/msvc_*"]),
-)
diff --git a/third_party/toolchains/preconfig/ubuntu16.04/gcc5-rocm/cc_toolchain_config.bzl b/third_party/toolchains/preconfig/ubuntu16.04/gcc5-rocm/cc_toolchain_config.bzl
index d80081f..49f2bb3 100755
--- a/third_party/toolchains/preconfig/ubuntu16.04/gcc5-rocm/cc_toolchain_config.bzl
+++ b/third_party/toolchains/preconfig/ubuntu16.04/gcc5-rocm/cc_toolchain_config.bzl
@@ -2,406 +2,133 @@
load(
"@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl",
- "action_config",
- "env_entry",
- "env_set",
"feature",
"feature_set",
"flag_group",
"flag_set",
- "tool",
"tool_path",
"variable_with_value",
+ "with_feature_set",
)
-load(
- "@bazel_tools//tools/build_defs/cc:action_names.bzl",
- "ASSEMBLE_ACTION_NAME",
- "CC_FLAGS_MAKE_VARIABLE_ACTION_NAME",
- "CLIF_MATCH_ACTION_NAME",
- "CPP_COMPILE_ACTION_NAME",
- "CPP_HEADER_PARSING_ACTION_NAME",
- "CPP_LINK_DYNAMIC_LIBRARY_ACTION_NAME",
- "CPP_LINK_EXECUTABLE_ACTION_NAME",
- "CPP_LINK_NODEPS_DYNAMIC_LIBRARY_ACTION_NAME",
- "CPP_LINK_STATIC_LIBRARY_ACTION_NAME",
- "CPP_MODULE_CODEGEN_ACTION_NAME",
- "CPP_MODULE_COMPILE_ACTION_NAME",
- "C_COMPILE_ACTION_NAME",
- "LINKSTAMP_COMPILE_ACTION_NAME",
- "LTO_BACKEND_ACTION_NAME",
- "LTO_INDEXING_ACTION_NAME",
- "OBJCPP_COMPILE_ACTION_NAME",
- "OBJCPP_EXECUTABLE_ACTION_NAME",
- "OBJC_ARCHIVE_ACTION_NAME",
- "OBJC_COMPILE_ACTION_NAME",
- "OBJC_EXECUTABLE_ACTION_NAME",
- "OBJC_FULLY_LINK_ACTION_NAME",
- "PREPROCESS_ASSEMBLE_ACTION_NAME",
- "STRIP_ACTION_NAME",
-)
+load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES")
-ACTION_NAMES = struct(
- c_compile = C_COMPILE_ACTION_NAME,
- cpp_compile = CPP_COMPILE_ACTION_NAME,
- linkstamp_compile = LINKSTAMP_COMPILE_ACTION_NAME,
- cc_flags_make_variable = CC_FLAGS_MAKE_VARIABLE_ACTION_NAME,
- cpp_module_codegen = CPP_MODULE_CODEGEN_ACTION_NAME,
- cpp_header_parsing = CPP_HEADER_PARSING_ACTION_NAME,
- cpp_module_compile = CPP_MODULE_COMPILE_ACTION_NAME,
- assemble = ASSEMBLE_ACTION_NAME,
- preprocess_assemble = PREPROCESS_ASSEMBLE_ACTION_NAME,
- lto_indexing = LTO_INDEXING_ACTION_NAME,
- lto_backend = LTO_BACKEND_ACTION_NAME,
- cpp_link_executable = CPP_LINK_EXECUTABLE_ACTION_NAME,
- cpp_link_dynamic_library = CPP_LINK_DYNAMIC_LIBRARY_ACTION_NAME,
- cpp_link_nodeps_dynamic_library = CPP_LINK_NODEPS_DYNAMIC_LIBRARY_ACTION_NAME,
- cpp_link_static_library = CPP_LINK_STATIC_LIBRARY_ACTION_NAME,
- strip = STRIP_ACTION_NAME,
- objc_archive = OBJC_ARCHIVE_ACTION_NAME,
- objc_compile = OBJC_COMPILE_ACTION_NAME,
- objc_executable = OBJC_EXECUTABLE_ACTION_NAME,
- objc_fully_link = OBJC_FULLY_LINK_ACTION_NAME,
- objcpp_compile = OBJCPP_COMPILE_ACTION_NAME,
- objcpp_executable = OBJCPP_EXECUTABLE_ACTION_NAME,
- clif_match = CLIF_MATCH_ACTION_NAME,
- objcopy_embed_data = "objcopy_embed_data",
- ld_embed_data = "ld_embed_data",
-)
+all_compile_actions = [
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.linkstamp_compile,
+ ACTION_NAMES.assemble,
+ ACTION_NAMES.preprocess_assemble,
+ ACTION_NAMES.cpp_header_parsing,
+ ACTION_NAMES.cpp_module_compile,
+ ACTION_NAMES.cpp_module_codegen,
+ ACTION_NAMES.clif_match,
+ ACTION_NAMES.lto_backend,
+]
+
+all_cpp_compile_actions = [
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.linkstamp_compile,
+ ACTION_NAMES.cpp_header_parsing,
+ ACTION_NAMES.cpp_module_compile,
+ ACTION_NAMES.cpp_module_codegen,
+ ACTION_NAMES.clif_match,
+]
+
+preprocessor_compile_actions = [
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.linkstamp_compile,
+ ACTION_NAMES.preprocess_assemble,
+ ACTION_NAMES.cpp_header_parsing,
+ ACTION_NAMES.cpp_module_compile,
+ ACTION_NAMES.clif_match,
+]
+
+codegen_compile_actions = [
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.linkstamp_compile,
+ ACTION_NAMES.assemble,
+ ACTION_NAMES.preprocess_assemble,
+ ACTION_NAMES.cpp_module_codegen,
+ ACTION_NAMES.lto_backend,
+]
+
+all_link_actions = [
+ ACTION_NAMES.cpp_link_executable,
+ ACTION_NAMES.cpp_link_dynamic_library,
+ ACTION_NAMES.cpp_link_nodeps_dynamic_library,
+]
+
+lto_index_actions = [
+ ACTION_NAMES.lto_index_for_executable,
+ ACTION_NAMES.lto_index_for_dynamic_library,
+ ACTION_NAMES.lto_index_for_nodeps_dynamic_library,
+]
def _impl(ctx):
- if (ctx.attr.cpu == "darwin"):
- toolchain_identifier = "local_darwin"
- elif (ctx.attr.cpu == "local"):
- toolchain_identifier = "local_linux"
- elif (ctx.attr.cpu == "x64_windows"):
- toolchain_identifier = "local_windows"
- else:
- fail("Unreachable")
-
- host_system_name = "local"
-
- target_system_name = "local"
-
- if (ctx.attr.cpu == "darwin"):
- target_cpu = "darwin"
- elif (ctx.attr.cpu == "local"):
- target_cpu = "local"
- elif (ctx.attr.cpu == "x64_windows"):
- target_cpu = "x64_windows"
- else:
- fail("Unreachable")
-
- if (ctx.attr.cpu == "local"):
- target_libc = "local"
- elif (ctx.attr.cpu == "darwin"):
- target_libc = "macosx"
- elif (ctx.attr.cpu == "x64_windows"):
- target_libc = "msvcrt"
- else:
- fail("Unreachable")
-
- if (ctx.attr.cpu == "darwin" or
- ctx.attr.cpu == "local"):
- compiler = "compiler"
- elif (ctx.attr.cpu == "x64_windows"):
- compiler = "msvc-cl"
- else:
- fail("Unreachable")
-
- abi_version = "local"
-
- abi_libc_version = "local"
-
- cc_target_os = None
-
- builtin_sysroot = None
-
- all_link_actions = [
- ACTION_NAMES.cpp_link_executable,
- ACTION_NAMES.cpp_link_dynamic_library,
- ACTION_NAMES.cpp_link_nodeps_dynamic_library,
+ tool_paths = [
+ tool_path(name = "gcc", path = ctx.attr.host_compiler_path),
+ tool_path(name = "ar", path = ctx.attr.host_compiler_prefix + "/ar"),
+ tool_path(name = "compat-ld", path = ctx.attr.host_compiler_prefix + "/ld"),
+ tool_path(name = "cpp", path = ctx.attr.host_compiler_prefix + "/cpp"),
+ tool_path(name = "dwp", path = ctx.attr.host_compiler_prefix + "/dwp"),
+ tool_path(name = "gcov", path = ctx.attr.host_compiler_prefix + "/gcov"),
+ tool_path(name = "ld", path = ctx.attr.host_compiler_prefix + "/ld"),
+ tool_path(name = "nm", path = ctx.attr.host_compiler_prefix + "/nm"),
+ tool_path(name = "objcopy", path = ctx.attr.host_compiler_prefix + "/objcopy"),
+ tool_path(name = "objdump", path = ctx.attr.host_compiler_prefix + "/objdump"),
+ tool_path(name = "strip", path = ctx.attr.host_compiler_prefix + "/strip"),
]
- cpp_link_dynamic_library_action = action_config(
- action_name = ACTION_NAMES.cpp_link_dynamic_library,
- implies = [
- "nologo",
- "shared_flag",
- "linkstamps",
- "output_execpath_flags",
- "input_param_flags",
- "user_link_flags",
- "linker_subsystem_flag",
- "linker_param_file",
- "msvc_env",
- "no_stripping",
- "has_configured_linker_path",
- "def_file",
- ],
- tools = [tool(path = ctx.attr.msvc_link_path)],
+ action_configs = []
+
+ supports_pic_feature = feature(
+ name = "supports_pic",
+ enabled = True,
+ )
+ supports_start_end_lib_feature = feature(
+ name = "supports_start_end_lib",
+ enabled = True,
)
- cpp_link_nodeps_dynamic_library_action = action_config(
- action_name = ACTION_NAMES.cpp_link_nodeps_dynamic_library,
- implies = [
- "nologo",
- "shared_flag",
- "linkstamps",
- "output_execpath_flags",
- "input_param_flags",
- "user_link_flags",
- "linker_subsystem_flag",
- "linker_param_file",
- "msvc_env",
- "no_stripping",
- "has_configured_linker_path",
- "def_file",
- ],
- tools = [tool(path = ctx.attr.msvc_link_path)],
- )
-
- cpp_link_static_library_action = action_config(
- action_name = ACTION_NAMES.cpp_link_static_library,
- implies = [
- "nologo",
- "archiver_flags",
- "input_param_flags",
- "linker_param_file",
- "msvc_env",
- ],
- tools = [tool(path = ctx.attr.msvc_lib_path)],
- )
-
- assemble_action = action_config(
- action_name = ACTION_NAMES.assemble,
- implies = [
- "compiler_input_flags",
- "compiler_output_flags",
- "nologo",
- "msvc_env",
- "sysroot",
- ],
- tools = [tool(path = ctx.attr.msvc_ml_path)],
- )
-
- preprocess_assemble_action = action_config(
- action_name = ACTION_NAMES.preprocess_assemble,
- implies = [
- "compiler_input_flags",
- "compiler_output_flags",
- "nologo",
- "msvc_env",
- "sysroot",
- ],
- tools = [tool(path = ctx.attr.msvc_ml_path)],
- )
-
- c_compile_action = action_config(
- action_name = ACTION_NAMES.c_compile,
- implies = [
- "compiler_input_flags",
- "compiler_output_flags",
- "nologo",
- "msvc_env",
- "parse_showincludes",
- "user_compile_flags",
- "sysroot",
- "unfiltered_compile_flags",
- ],
- tools = [tool(path = ctx.attr.msvc_cl_path)],
- )
-
- cpp_compile_action = action_config(
- action_name = ACTION_NAMES.cpp_compile,
- implies = [
- "compiler_input_flags",
- "compiler_output_flags",
- "nologo",
- "msvc_env",
- "parse_showincludes",
- "user_compile_flags",
- "sysroot",
- "unfiltered_compile_flags",
- ],
- tools = [tool(path = ctx.attr.msvc_cl_path)],
- )
-
- cpp_link_executable_action = action_config(
- action_name = ACTION_NAMES.cpp_link_executable,
- implies = [
- "nologo",
- "linkstamps",
- "output_execpath_flags",
- "input_param_flags",
- "user_link_flags",
- "linker_subsystem_flag",
- "linker_param_file",
- "msvc_env",
- "no_stripping",
- ],
- tools = [tool(path = ctx.attr.msvc_link_path)],
- )
-
- if (ctx.attr.cpu == "darwin" or
- ctx.attr.cpu == "local"):
- action_configs = []
- elif (ctx.attr.cpu == "x64_windows"):
- action_configs = [
- assemble_action,
- preprocess_assemble_action,
- c_compile_action,
- cpp_compile_action,
- cpp_link_executable_action,
- cpp_link_dynamic_library_action,
- cpp_link_nodeps_dynamic_library_action,
- cpp_link_static_library_action,
- ]
- else:
- fail("Unreachable")
-
- no_windows_export_all_symbols_feature = feature(name = "no_windows_export_all_symbols")
-
- pic_feature = feature(
- name = "pic",
+ default_compile_flags_feature = feature(
+ name = "default_compile_flags",
enabled = True,
flag_sets = [
flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [
- flag_group(flags = ["-fPIC"], expand_if_available = "pic"),
- #
- # Commented out in CROSSTOOL_hipcc.tpl
- #
- # flag_group(
- # flags = ["-fPIE"],
- # expand_if_not_available = "pic",
- # ),
- ],
- ),
- ],
- )
-
- preprocessor_defines_feature = feature(
- name = "preprocessor_defines",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.assemble,
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ],
- flag_groups = [
+ actions = all_compile_actions,
+ flag_groups = ([
flag_group(
- flags = ["/D%{preprocessor_defines}"],
- iterate_over = "preprocessor_defines",
+ flags = ctx.attr.compile_flags,
),
- ],
+ ] if ctx.attr.compile_flags else []),
),
- ],
- )
-
- generate_pdb_file_feature = feature(
- name = "generate_pdb_file",
- requires = [
- feature_set(features = ["dbg"]),
- feature_set(features = ["fastbuild"]),
- ],
- )
-
- linkstamps_feature = feature(
- name = "linkstamps",
- flag_sets = [
flag_set(
- actions = all_link_actions,
- flag_groups = [
+ actions = all_compile_actions,
+ flag_groups = ([
flag_group(
- flags = ["%{linkstamp_paths}"],
- iterate_over = "linkstamp_paths",
- expand_if_available = "linkstamp_paths",
+ flags = ctx.attr.dbg_compile_flags,
),
- ],
+ ] if ctx.attr.dbg_compile_flags else []),
+ with_features = [with_feature_set(features = ["dbg"])],
),
- ],
- )
-
- unfiltered_compile_flags_feature = feature(
- name = "unfiltered_compile_flags",
- flag_sets = ([
flag_set(
- actions = [
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.cpp_module_codegen,
- ],
- flag_groups = [
+ actions = all_compile_actions,
+ flag_groups = ([
flag_group(
- flags = ctx.attr.host_unfiltered_compile_flags,
+ flags = ctx.attr.opt_compile_flags,
),
- ],
+ ] if ctx.attr.opt_compile_flags else []),
+ with_features = [with_feature_set(features = ["opt"])],
),
- ] if ctx.attr.host_unfiltered_compile_flags else []),
- )
-
- determinism_feature = feature(
- name = "determinism",
- flag_sets = [
flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [
+ actions = all_cpp_compile_actions + [ACTION_NAMES.lto_backend],
+ flag_groups = ([
flag_group(
- flags = [
- "-Wno-builtin-macro-redefined",
- "-D__DATE__=\"redacted\"",
- "-D__TIMESTAMP__=\"redacted\"",
- "-D__TIME__=\"redacted\"",
- ],
+ flags = ctx.attr.cxx_flags,
),
- ],
- ),
- ],
- )
-
- nologo_feature = feature(
- name = "nologo",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.cpp_module_codegen,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.assemble,
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.cpp_link_executable,
- ACTION_NAMES.cpp_link_dynamic_library,
- ACTION_NAMES.cpp_link_nodeps_dynamic_library,
- ACTION_NAMES.cpp_link_static_library,
- ],
- flag_groups = [flag_group(flags = ["/nologo"])],
- ),
- ],
- )
-
- supports_pic_feature = feature(name = "supports_pic", enabled = True)
-
- output_execpath_flags_feature = feature(
- name = "output_execpath_flags",
- flag_sets = [
- flag_set(
- actions = all_link_actions,
- flag_groups = [
- flag_group(
- flags = ["/OUT:%{output_execpath}"],
- expand_if_available = "output_execpath",
- ),
- ],
+ ] if ctx.attr.cxx_flags else []),
),
],
)
@@ -411,244 +138,35 @@
enabled = True,
flag_sets = [
flag_set(
- actions = all_link_actions,
- flag_groups = [flag_group(flags = ["/MACHINE:X64"])],
- ),
- ],
- )
-
- rocm_link_flags_feature = feature(
- name = "rocm_link_flags",
- enabled = True,
- flag_sets = [
- flag_set(
- actions = all_link_actions,
- flag_groups = [flag_group(flags = ["-pass-exit-codes"])],
- ),
- ],
- )
-
- if (ctx.attr.cpu == "local"):
- hardening_feature = feature(
- name = "hardening",
- flag_sets = [
- #
- # Commented out in CROSSTOOL_hipcc.tpl
- #
- # flag_set(
- # actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- # flag_groups = [
- # flag_group(
- # flags = [
- # "-U_FORTIFY_SOURCE",
- # "-D_FORTIFY_SOURCE=1",
- # "-fstack-protector",
- # ],
- # ),
- # ],
- # ),
- # flag_set(
- # actions = [
- # ACTION_NAMES.cpp_link_dynamic_library,
- # ACTION_NAMES.cpp_link_nodeps_dynamic_library,
- # ],
- # flag_groups = [flag_group(flags = ["-Wl,-z,relro,-z,now"])],
- # ),
- # flag_set(
- # actions = [ACTION_NAMES.cpp_link_executable],
- # flag_groups = [flag_group(flags = ["-pie", "-Wl,-z,relro,-z,now"])],
- # ),
- ],
- )
- elif (ctx.attr.cpu == "darwin"):
- hardening_feature = feature(
- name = "hardening",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [
- flag_group(
- flags = [
- "-U_FORTIFY_SOURCE",
- "-D_FORTIFY_SOURCE=1",
- "-fstack-protector",
- ],
- ),
- ],
- ),
- flag_set(
- actions = [ACTION_NAMES.cpp_link_executable],
- flag_groups = [flag_group(flags = ["-pie"])],
- ),
- ],
- )
- else:
- hardening_feature = None
-
- supports_dynamic_linker_feature = feature(name = "supports_dynamic_linker", enabled = True)
-
- targets_windows_feature = feature(
- name = "targets_windows",
- enabled = True,
- implies = ["copy_dynamic_libraries_to_binary"],
- )
-
- msvc_env_feature = feature(
- name = "msvc_env",
- env_sets = [
- env_set(
- actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.cpp_module_codegen,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.assemble,
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.cpp_link_executable,
- ACTION_NAMES.cpp_link_dynamic_library,
- ACTION_NAMES.cpp_link_nodeps_dynamic_library,
- ACTION_NAMES.cpp_link_static_library,
- ],
- env_entries = [
- env_entry(key = "PATH", value = ctx.attr.msvc_env_path),
- env_entry(
- key = "INCLUDE",
- value = ctx.attr.msvc_env_include,
- ),
- env_entry(key = "LIB", value = ctx.attr.msvc_env_lib),
- env_entry(key = "TMP", value = ctx.attr.msvc_env_tmp),
- env_entry(key = "TEMP", value = ctx.attr.msvc_env_tmp),
- ],
- ),
- ],
- )
-
- linker_subsystem_flag_feature = feature(
- name = "linker_subsystem_flag",
- flag_sets = [
- flag_set(
- actions = all_link_actions,
- flag_groups = [flag_group(flags = ["/SUBSYSTEM:CONSOLE"])],
- ),
- ],
- )
-
- dynamic_link_msvcrt_no_debug_feature = feature(
- name = "dynamic_link_msvcrt_no_debug",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [flag_group(flags = ["/MD"])],
- ),
- flag_set(
- actions = all_link_actions,
- flag_groups = [flag_group(flags = ["/DEFAULTLIB:msvcrt.lib"])],
- ),
- ],
- requires = [
- feature_set(features = ["fastbuild"]),
- feature_set(features = ["opt"]),
- ],
- )
-
- warnings_feature = feature(
- name = "warnings",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [
+ actions = all_link_actions + lto_index_actions,
+ flag_groups = ([
flag_group(
- flags = ["-Wall"] + ctx.attr.host_compiler_warnings,
+ flags = ctx.attr.link_flags,
),
- ],
+ ] if ctx.attr.link_flags else []),
+ ),
+ flag_set(
+ actions = all_link_actions + lto_index_actions,
+ flag_groups = ([
+ flag_group(
+ flags = ctx.attr.opt_link_flags,
+ ),
+ ] if ctx.attr.opt_link_flags else []),
+ with_features = [with_feature_set(features = ["opt"])],
),
],
)
- dynamic_link_msvcrt_debug_feature = feature(
- name = "dynamic_link_msvcrt_debug",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [flag_group(flags = ["/MDd"])],
- ),
- flag_set(
- actions = all_link_actions,
- flag_groups = [flag_group(flags = ["/DEFAULTLIB:msvcrtd.lib"])],
- ),
- ],
- requires = [feature_set(features = ["dbg"])],
- )
+ dbg_feature = feature(name = "dbg")
- compiler_output_flags_feature = feature(
- name = "compiler_output_flags",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.assemble],
- flag_groups = [
- flag_group(
- flag_groups = [
- flag_group(
- flags = ["/Fo%{output_file}", "/Zi"],
- expand_if_not_available = "output_preprocess_file",
- ),
- ],
- expand_if_available = "output_file",
- expand_if_not_available = "output_assembly_file",
- ),
- ],
- ),
- flag_set(
- actions = [
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.cpp_module_codegen,
- ],
- flag_groups = [
- flag_group(
- flag_groups = [
- flag_group(
- flags = ["/Fo%{output_file}"],
- expand_if_not_available = "output_preprocess_file",
- ),
- ],
- expand_if_available = "output_file",
- expand_if_not_available = "output_assembly_file",
- ),
- flag_group(
- flag_groups = [
- flag_group(
- flags = ["/Fa%{output_file}"],
- expand_if_available = "output_assembly_file",
- ),
- ],
- expand_if_available = "output_file",
- ),
- flag_group(
- flag_groups = [
- flag_group(
- flags = ["/P", "/Fi%{output_file}"],
- expand_if_available = "output_preprocess_file",
- ),
- ],
- expand_if_available = "output_file",
- ),
- ],
- ),
- ],
- )
+ opt_feature = feature(name = "opt")
- default_compile_flags_feature = feature(
- name = "default_compile_flags",
+ sysroot_feature = feature(
+ name = "sysroot",
enabled = True,
flag_sets = [
flag_set(
actions = [
- ACTION_NAMES.assemble,
ACTION_NAMES.preprocess_assemble,
ACTION_NAMES.linkstamp_compile,
ACTION_NAMES.c_compile,
@@ -658,194 +176,44 @@
ACTION_NAMES.cpp_module_codegen,
ACTION_NAMES.lto_backend,
ACTION_NAMES.clif_match,
+ ] + all_link_actions + lto_index_actions,
+ flag_groups = [
+ flag_group(
+ flags = ["--sysroot=%{sysroot}"],
+ expand_if_available = "sysroot",
+ ),
],
+ ),
+ ],
+ )
+
+ fdo_optimize_feature = feature(
+ name = "fdo_optimize",
+ flag_sets = [
+ flag_set(
+ actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
flag_groups = [
flag_group(
flags = [
- "/DCOMPILER_MSVC",
- "/DNOMINMAX",
- "/D_WIN32_WINNT=0x0600",
- "/D_CRT_SECURE_NO_DEPRECATE",
- "/D_CRT_SECURE_NO_WARNINGS",
- "/D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS",
- "/bigobj",
- "/Zm500",
- "/J",
- "/Gy",
- "/GF",
- "/EHsc",
- "/wd4351",
- "/wd4291",
- "/wd4250",
- "/wd4996",
+ "-fprofile-use=%{fdo_profile_path}",
+ "-fprofile-correction",
],
+ expand_if_available = "fdo_profile_path",
),
],
),
],
+ provides = ["profile"],
)
- static_link_msvcrt_debug_feature = feature(
- name = "static_link_msvcrt_debug",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [flag_group(flags = ["/MTd"])],
- ),
- flag_set(
- actions = all_link_actions,
- flag_groups = [flag_group(flags = ["/DEFAULTLIB:libcmtd.lib"])],
- ),
- ],
- requires = [feature_set(features = ["dbg"])],
- )
-
- static_link_msvcrt_feature = feature(name = "static_link_msvcrt")
-
- if (ctx.attr.cpu == "darwin" or
- ctx.attr.cpu == "local"):
- dbg_feature = feature(
- name = "dbg",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [flag_group(flags = ["-g"])],
- ),
- ],
- implies = ["common"],
- )
- elif (ctx.attr.cpu == "x64_windows"):
- dbg_feature = feature(
- name = "dbg",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [flag_group(flags = ["/Od", "/Z7", "/DDEBUG"])],
- ),
- flag_set(
- actions = all_link_actions,
- flag_groups = [flag_group(flags = ["/DEBUG:FULL", "/INCREMENTAL:NO"])],
- ),
- ],
- implies = ["generate_pdb_file"],
- )
- else:
- dbg_feature = None
-
- undefined_dynamic_feature = feature(
- name = "undefined-dynamic",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.cpp_link_dynamic_library,
- ACTION_NAMES.cpp_link_nodeps_dynamic_library,
- ACTION_NAMES.cpp_link_executable,
- ],
- flag_groups = [flag_group(flags = ["-undefined", "dynamic_lookup"])],
- ),
- ],
- )
-
- parse_showincludes_feature = feature(
- name = "parse_showincludes",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.cpp_header_parsing,
- ],
- flag_groups = [flag_group(flags = ["/showIncludes"])],
- ),
- ],
- )
-
- linker_param_file_feature = feature(
- name = "linker_param_file",
- flag_sets = [
- flag_set(
- actions = all_link_actions +
- [ACTION_NAMES.cpp_link_static_library],
- flag_groups = [
- flag_group(
- flags = ["@%{linker_param_file}"],
- expand_if_available = "linker_param_file",
- ),
- ],
- ),
- ],
- )
-
- static_link_msvcrt_no_debug_feature = feature(
- name = "static_link_msvcrt_no_debug",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [flag_group(flags = ["/MT"])],
- ),
- flag_set(
- actions = all_link_actions,
- flag_groups = [flag_group(flags = ["/DEFAULTLIB:libcmt.lib"])],
- ),
- ],
- requires = [
- feature_set(features = ["fastbuild"]),
- feature_set(features = ["opt"]),
- ],
- )
-
- supports_interface_shared_libraries_feature = feature(
- name = "supports_interface_shared_libraries",
- enabled = True,
- )
-
- disable_assertions_feature = feature(
- name = "disable-assertions",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [flag_group(flags = ["-DNDEBUG"])],
- ),
- ],
- )
-
- if (ctx.attr.cpu == "x64_windows"):
- fastbuild_feature = feature(
- name = "fastbuild",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [flag_group(flags = ["/Od", "/Z7", "/DDEBUG"])],
- ),
- flag_set(
- actions = all_link_actions,
- flag_groups = [
- flag_group(flags = ["/DEBUG:FASTLINK", "/INCREMENTAL:NO"]),
- ],
- ),
- ],
- implies = ["generate_pdb_file"],
- )
- elif (ctx.attr.cpu == "darwin" or
- ctx.attr.cpu == "local"):
- fastbuild_feature = feature(name = "fastbuild", implies = ["common"])
- else:
- fastbuild_feature = None
+ supports_dynamic_linker_feature = feature(name = "supports_dynamic_linker", enabled = True)
user_compile_flags_feature = feature(
name = "user_compile_flags",
+ enabled = True,
flag_sets = [
flag_set(
- actions = [
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.cpp_module_codegen,
- ],
+ actions = all_compile_actions,
flag_groups = [
flag_group(
flags = ["%{user_compile_flags}"],
@@ -857,161 +225,226 @@
],
)
- compiler_input_flags_feature = feature(
- name = "compiler_input_flags",
+ unfiltered_compile_flags_feature = feature(
+ name = "unfiltered_compile_flags",
+ enabled = True,
flag_sets = [
flag_set(
- actions = [
- ACTION_NAMES.assemble,
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.cpp_module_codegen,
- ],
+ actions = all_compile_actions,
+ flag_groups = ([
+ flag_group(
+ flags = ctx.attr.unfiltered_compile_flags,
+ ),
+ ] if ctx.attr.unfiltered_compile_flags else []),
+ ),
+ ],
+ )
+
+ library_search_directories_feature = feature(
+ name = "library_search_directories",
+ flag_sets = [
+ flag_set(
+ actions = all_link_actions + lto_index_actions,
flag_groups = [
flag_group(
- flags = ["/c", "%{source_file}"],
- expand_if_available = "source_file",
+ flags = ["-L%{library_search_directories}"],
+ iterate_over = "library_search_directories",
+ expand_if_available = "library_search_directories",
),
],
),
],
)
- no_legacy_features_feature = feature(name = "no_legacy_features")
-
- archiver_flags_feature = feature(
- name = "archiver_flags",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.cpp_link_static_library],
- flag_groups = [
- flag_group(
- flags = ["/OUT:%{output_execpath}"],
- expand_if_available = "output_execpath",
- ),
- ],
- ),
- ],
- )
-
- redirector_feature = feature(
- name = "redirector",
+ static_libgcc_feature = feature(
+ name = "static_libgcc",
enabled = True,
flag_sets = [
flag_set(
actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.cpp_module_codegen,
- ACTION_NAMES.cpp_header_parsing,
+ ACTION_NAMES.cpp_link_executable,
+ ACTION_NAMES.cpp_link_dynamic_library,
+ ACTION_NAMES.lto_index_for_executable,
+ ACTION_NAMES.lto_index_for_dynamic_library,
+ ],
+ flag_groups = [flag_group(flags = ["-static-libgcc"])],
+ with_features = [
+ with_feature_set(features = ["static_link_cpp_runtimes"]),
+ ],
+ ),
+ ],
+ )
+
+ pic_feature = feature(
+ name = "pic",
+ enabled = True,
+ flag_sets = [
+ flag_set(
+ actions = [
ACTION_NAMES.assemble,
ACTION_NAMES.preprocess_assemble,
+ ACTION_NAMES.linkstamp_compile,
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.cpp_module_codegen,
+ ACTION_NAMES.cpp_module_compile,
],
flag_groups = [
+ flag_group(flags = ["-fPIC"], expand_if_available = "pic"),
+ ],
+ ),
+ ],
+ )
+
+ per_object_debug_info_feature = feature(
+ name = "per_object_debug_info",
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.assemble,
+ ACTION_NAMES.preprocess_assemble,
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.cpp_module_codegen,
+ ],
+ flag_groups = [
+ flag_group(
+ flags = ["-gsplit-dwarf"],
+ expand_if_available = "per_object_debug_info_file",
+ ),
+ ],
+ ),
+ ],
+ )
+
+ preprocessor_defines_feature = feature(
+ name = "preprocessor_defines",
+ enabled = True,
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.preprocess_assemble,
+ ACTION_NAMES.linkstamp_compile,
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.cpp_header_parsing,
+ ACTION_NAMES.cpp_module_compile,
+ ACTION_NAMES.clif_match,
+ ],
+ flag_groups = [
+ flag_group(
+ flags = ["-D%{preprocessor_defines}"],
+ iterate_over = "preprocessor_defines",
+ ),
+ ],
+ ),
+ ],
+ )
+
+ cs_fdo_optimize_feature = feature(
+ name = "cs_fdo_optimize",
+ flag_sets = [
+ flag_set(
+ actions = [ACTION_NAMES.lto_backend],
+ flag_groups = [
flag_group(
flags = [
- "-B",
- "external/local_config_cuda/crosstool/windows/msvc_wrapper_for_nvcc.py",
+ "-fprofile-use=%{fdo_profile_path}",
+ "-Xclang-only=-Wno-profile-instr-unprofiled",
+ "-Xclang-only=-Wno-profile-instr-out-of-date",
+ "-fprofile-correction",
],
+ expand_if_available = "fdo_profile_path",
),
],
),
],
+ provides = ["csprofile"],
)
- linker_bin_path_feature = feature(
- name = "linker-bin-path",
+ autofdo_feature = feature(
+ name = "autofdo",
flag_sets = [
flag_set(
- actions = all_link_actions,
- flag_groups = [flag_group(flags = ["-B" + ctx.attr.linker_bin_path])],
- ),
- ],
- )
-
- if (ctx.attr.cpu == "local"):
- opt_feature = feature(
- name = "opt",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [
- flag_group(
- flags = ["-g0", "-O2", "-ffunction-sections", "-fdata-sections"],
- ),
- ],
- ),
- #
- # commented out in CROSSTOOL_hipcc.tpl
- #
- # flag_set(
- # actions = [
- # ACTION_NAMES.cpp_link_dynamic_library,
- # ACTION_NAMES.cpp_link_nodeps_dynamic_library,
- # ACTION_NAMES.cpp_link_executable,
- # ],
- # flag_groups = [flag_group(flags = ["-Wl,--gc-sections"])],
- # ),
- ],
- implies = ["common", "disable-assertions"],
- )
- elif (ctx.attr.cpu == "darwin"):
- opt_feature = feature(
- name = "opt",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [
- flag_group(
- flags = ["-g0", "-O2", "-ffunction-sections", "-fdata-sections"],
- ),
- ],
- ),
- ],
- implies = ["common", "disable-assertions"],
- )
- elif (ctx.attr.cpu == "x64_windows"):
- opt_feature = feature(
- name = "opt",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [flag_group(flags = ["/O2", "/DNDEBUG"])],
- ),
- ],
- )
- else:
- opt_feature = None
-
- include_paths_feature = feature(
- name = "include_paths",
- enabled = True,
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.assemble,
- ACTION_NAMES.preprocess_assemble,
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ],
+ actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
flag_groups = [
flag_group(
- flags = ["/I%{quote_include_paths}"],
- iterate_over = "quote_include_paths",
+ flags = [
+ "-fauto-profile=%{fdo_profile_path}",
+ "-fprofile-correction",
+ ],
+ expand_if_available = "fdo_profile_path",
),
+ ],
+ ),
+ ],
+ provides = ["profile"],
+ )
+
+ runtime_library_search_directories_feature = feature(
+ name = "runtime_library_search_directories",
+ flag_sets = [
+ flag_set(
+ actions = all_link_actions + lto_index_actions,
+ flag_groups = [
flag_group(
- flags = ["/I%{include_paths}"],
- iterate_over = "include_paths",
+ iterate_over = "runtime_library_search_directories",
+ flag_groups = [
+ flag_group(
+ flags = [
+ "-Wl,-rpath,$EXEC_ORIGIN/%{runtime_library_search_directories}",
+ ],
+ expand_if_true = "is_cc_test",
+ ),
+ flag_group(
+ flags = [
+ "-Wl,-rpath,$ORIGIN/%{runtime_library_search_directories}",
+ ],
+ expand_if_false = "is_cc_test",
+ ),
+ ],
+ expand_if_available =
+ "runtime_library_search_directories",
),
+ ],
+ with_features = [
+ with_feature_set(features = ["static_link_cpp_runtimes"]),
+ ],
+ ),
+ flag_set(
+ actions = all_link_actions + lto_index_actions,
+ flag_groups = [
flag_group(
- flags = ["/I%{system_include_paths}"],
- iterate_over = "system_include_paths",
+ iterate_over = "runtime_library_search_directories",
+ flag_groups = [
+ flag_group(
+ flags = [
+ "-Wl,-rpath,$ORIGIN/%{runtime_library_search_directories}",
+ ],
+ ),
+ ],
+ expand_if_available =
+ "runtime_library_search_directories",
+ ),
+ ],
+ with_features = [
+ with_feature_set(
+ not_features = ["static_link_cpp_runtimes"],
+ ),
+ ],
+ ),
+ ],
+ )
+
+ fission_support_feature = feature(
+ name = "fission_support",
+ flag_sets = [
+ flag_set(
+ actions = all_link_actions + lto_index_actions,
+ flag_groups = [
+ flag_group(
+ flags = ["-Wl,--gdb-index"],
+ expand_if_available = "is_using_fission",
),
],
),
@@ -1025,26 +458,566 @@
actions = [
ACTION_NAMES.cpp_link_dynamic_library,
ACTION_NAMES.cpp_link_nodeps_dynamic_library,
+ ACTION_NAMES.lto_index_for_dynamic_library,
+ ACTION_NAMES.lto_index_for_nodeps_dynamic_library,
],
- flag_groups = [flag_group(flags = ["/DLL"])],
+ flag_groups = [flag_group(flags = ["-shared"])],
),
],
)
- windows_export_all_symbols_feature = feature(name = "windows_export_all_symbols")
-
- frame_pointer_feature = feature(
- name = "frame-pointer",
+ random_seed_feature = feature(
+ name = "random_seed",
+ enabled = True,
flag_sets = [
flag_set(
- actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile],
- flag_groups = [flag_group(flags = ["-fno-omit-frame-pointer"])],
+ actions = [
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.cpp_module_codegen,
+ ACTION_NAMES.cpp_module_compile,
+ ],
+ flag_groups = [
+ flag_group(
+ flags = ["-frandom-seed=%{output_file}"],
+ expand_if_available = "output_file",
+ ),
+ ],
+ ),
+ ],
+ )
+
+ includes_feature = feature(
+ name = "includes",
+ enabled = True,
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.preprocess_assemble,
+ ACTION_NAMES.linkstamp_compile,
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.cpp_header_parsing,
+ ACTION_NAMES.cpp_module_compile,
+ ACTION_NAMES.clif_match,
+ ACTION_NAMES.objc_compile,
+ ACTION_NAMES.objcpp_compile,
+ ],
+ flag_groups = [
+ flag_group(
+ flags = ["-include", "%{includes}"],
+ iterate_over = "includes",
+ expand_if_available = "includes",
+ ),
+ ],
+ ),
+ ],
+ )
+
+ fdo_instrument_feature = feature(
+ name = "fdo_instrument",
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ] + all_link_actions + lto_index_actions,
+ flag_groups = [
+ flag_group(
+ flags = [
+ "-fprofile-generate=%{fdo_instrument_path}",
+ "-fno-data-sections",
+ ],
+ expand_if_available = "fdo_instrument_path",
+ ),
+ ],
+ ),
+ ],
+ provides = ["profile"],
+ )
+
+ cs_fdo_instrument_feature = feature(
+ name = "cs_fdo_instrument",
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.lto_backend,
+ ] + all_link_actions + lto_index_actions,
+ flag_groups = [
+ flag_group(
+ flags = [
+ "-fcs-profile-generate=%{cs_fdo_instrument_path}",
+ ],
+ expand_if_available = "cs_fdo_instrument_path",
+ ),
+ ],
+ ),
+ ],
+ provides = ["csprofile"],
+ )
+
+ include_paths_feature = feature(
+ name = "include_paths",
+ enabled = True,
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.preprocess_assemble,
+ ACTION_NAMES.linkstamp_compile,
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.cpp_header_parsing,
+ ACTION_NAMES.cpp_module_compile,
+ ACTION_NAMES.clif_match,
+ ACTION_NAMES.objc_compile,
+ ACTION_NAMES.objcpp_compile,
+ ],
+ flag_groups = [
+ flag_group(
+ flags = ["-iquote", "%{quote_include_paths}"],
+ iterate_over = "quote_include_paths",
+ ),
+ flag_group(
+ flags = ["-I%{include_paths}"],
+ iterate_over = "include_paths",
+ ),
+ flag_group(
+ flags = ["-isystem", "%{system_include_paths}"],
+ iterate_over = "system_include_paths",
+ ),
+ ],
+ ),
+ ],
+ )
+
+ symbol_counts_feature = feature(
+ name = "symbol_counts",
+ flag_sets = [
+ flag_set(
+ actions = all_link_actions + lto_index_actions,
+ flag_groups = [
+ flag_group(
+ flags = [
+ "-Wl,--print-symbol-counts=%{symbol_counts_output}",
+ ],
+ expand_if_available = "symbol_counts_output",
+ ),
+ ],
+ ),
+ ],
+ )
+
+ llvm_coverage_map_format_feature = feature(
+ name = "llvm_coverage_map_format",
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.preprocess_assemble,
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.cpp_module_compile,
+ ACTION_NAMES.objc_compile,
+ ACTION_NAMES.objcpp_compile,
+ ],
+ flag_groups = [
+ flag_group(
+ flags = [
+ "-fprofile-instr-generate",
+ "-fcoverage-mapping",
+ ],
+ ),
+ ],
+ ),
+ flag_set(
+ actions = all_link_actions + lto_index_actions + [
+ "objc-executable",
+ "objc++-executable",
+ ],
+ flag_groups = [
+ flag_group(flags = ["-fprofile-instr-generate"]),
+ ],
+ ),
+ ],
+ requires = [feature_set(features = ["coverage"])],
+ provides = ["profile"],
+ )
+
+ strip_debug_symbols_feature = feature(
+ name = "strip_debug_symbols",
+ flag_sets = [
+ flag_set(
+ actions = all_link_actions + lto_index_actions,
+ flag_groups = [
+ flag_group(
+ flags = ["-Wl,-S"],
+ expand_if_available = "strip_debug_symbols",
+ ),
+ ],
+ ),
+ ],
+ )
+
+ build_interface_libraries_feature = feature(
+ name = "build_interface_libraries",
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.cpp_link_dynamic_library,
+ ACTION_NAMES.cpp_link_nodeps_dynamic_library,
+ ACTION_NAMES.lto_index_for_dynamic_library,
+ ACTION_NAMES.lto_index_for_nodeps_dynamic_library,
+ ],
+ flag_groups = [
+ flag_group(
+ flags = [
+ "%{generate_interface_library}",
+ "%{interface_library_builder_path}",
+ "%{interface_library_input_path}",
+ "%{interface_library_output_path}",
+ ],
+ expand_if_available = "generate_interface_library",
+ ),
+ ],
+ with_features = [
+ with_feature_set(
+ features = ["supports_interface_shared_libraries"],
+ ),
+ ],
+ ),
+ ],
+ )
+
+ libraries_to_link_feature = feature(
+ name = "libraries_to_link",
+ flag_sets = [
+ flag_set(
+ actions = all_link_actions + lto_index_actions,
+ flag_groups = [
+ flag_group(
+ iterate_over = "libraries_to_link",
+ flag_groups = [
+ flag_group(
+ flags = ["-Wl,--start-lib"],
+ expand_if_equal = variable_with_value(
+ name = "libraries_to_link.type",
+ value = "object_file_group",
+ ),
+ ),
+ flag_group(
+ flags = ["-Wl,-whole-archive"],
+ expand_if_true =
+ "libraries_to_link.is_whole_archive",
+ ),
+ flag_group(
+ flags = ["%{libraries_to_link.object_files}"],
+ iterate_over = "libraries_to_link.object_files",
+ expand_if_equal = variable_with_value(
+ name = "libraries_to_link.type",
+ value = "object_file_group",
+ ),
+ ),
+ flag_group(
+ flags = ["%{libraries_to_link.name}"],
+ expand_if_equal = variable_with_value(
+ name = "libraries_to_link.type",
+ value = "object_file",
+ ),
+ ),
+ flag_group(
+ flags = ["%{libraries_to_link.name}"],
+ expand_if_equal = variable_with_value(
+ name = "libraries_to_link.type",
+ value = "interface_library",
+ ),
+ ),
+ flag_group(
+ flags = ["%{libraries_to_link.name}"],
+ expand_if_equal = variable_with_value(
+ name = "libraries_to_link.type",
+ value = "static_library",
+ ),
+ ),
+ flag_group(
+ flags = ["-l%{libraries_to_link.name}"],
+ expand_if_equal = variable_with_value(
+ name = "libraries_to_link.type",
+ value = "dynamic_library",
+ ),
+ ),
+ flag_group(
+ flags = ["-l:%{libraries_to_link.name}"],
+ expand_if_equal = variable_with_value(
+ name = "libraries_to_link.type",
+ value = "versioned_dynamic_library",
+ ),
+ ),
+ flag_group(
+ flags = ["-Wl,-no-whole-archive"],
+ expand_if_true = "libraries_to_link.is_whole_archive",
+ ),
+ flag_group(
+ flags = ["-Wl,--end-lib"],
+ expand_if_equal = variable_with_value(
+ name = "libraries_to_link.type",
+ value = "object_file_group",
+ ),
+ ),
+ ],
+ expand_if_available = "libraries_to_link",
+ ),
+ flag_group(
+ flags = ["-Wl,@%{thinlto_param_file}"],
+ expand_if_true = "thinlto_param_file",
+ ),
+ ],
+ ),
+ ],
+ )
+
+ user_link_flags_feature = feature(
+ name = "user_link_flags",
+ flag_sets = [
+ flag_set(
+ actions = all_link_actions + lto_index_actions,
+ flag_groups = [
+ flag_group(
+ flags = ["%{user_link_flags}"],
+ iterate_over = "user_link_flags",
+ expand_if_available = "user_link_flags",
+ ),
+ ] + ([flag_group(flags = ctx.attr.link_libs)] if ctx.attr.link_libs else []),
+ ),
+ ],
+ )
+
+ fdo_prefetch_hints_feature = feature(
+ name = "fdo_prefetch_hints",
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.lto_backend,
+ ],
+ flag_groups = [
+ flag_group(
+ flags = [
+ "-Xclang-only=-mllvm",
+ "-Xclang-only=-prefetch-hints-file=%{fdo_prefetch_hints_path}",
+ ],
+ expand_if_available = "fdo_prefetch_hints_path",
+ ),
+ ],
+ ),
+ ],
+ )
+
+ linkstamps_feature = feature(
+ name = "linkstamps",
+ flag_sets = [
+ flag_set(
+ actions = all_link_actions + lto_index_actions,
+ flag_groups = [
+ flag_group(
+ flags = ["%{linkstamp_paths}"],
+ iterate_over = "linkstamp_paths",
+ expand_if_available = "linkstamp_paths",
+ ),
+ ],
+ ),
+ ],
+ )
+
+ gcc_coverage_map_format_feature = feature(
+ name = "gcc_coverage_map_format",
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.preprocess_assemble,
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.cpp_module_compile,
+ ACTION_NAMES.objc_compile,
+ ACTION_NAMES.objcpp_compile,
+ "objc-executable",
+ "objc++-executable",
+ ],
+ flag_groups = [
+ flag_group(
+ flags = ["-fprofile-arcs", "-ftest-coverage"],
+ expand_if_available = "gcov_gcno_file",
+ ),
+ ],
+ ),
+ flag_set(
+ actions = all_link_actions + lto_index_actions,
+ flag_groups = [flag_group(flags = ["--coverage"])],
+ ),
+ ],
+ requires = [feature_set(features = ["coverage"])],
+ provides = ["profile"],
+ )
+
+ archiver_flags_feature = feature(
+ name = "archiver_flags",
+ flag_sets = [
+ flag_set(
+ actions = [ACTION_NAMES.cpp_link_static_library],
+ flag_groups = [
+ flag_group(flags = ["rcsD"]),
+ flag_group(
+ flags = ["%{output_execpath}"],
+ expand_if_available = "output_execpath",
+ ),
+ ],
+ ),
+ flag_set(
+ actions = [ACTION_NAMES.cpp_link_static_library],
+ flag_groups = [
+ flag_group(
+ iterate_over = "libraries_to_link",
+ flag_groups = [
+ flag_group(
+ flags = ["%{libraries_to_link.name}"],
+ expand_if_equal = variable_with_value(
+ name = "libraries_to_link.type",
+ value = "object_file",
+ ),
+ ),
+ flag_group(
+ flags = ["%{libraries_to_link.object_files}"],
+ iterate_over = "libraries_to_link.object_files",
+ expand_if_equal = variable_with_value(
+ name = "libraries_to_link.type",
+ value = "object_file_group",
+ ),
+ ),
+ ],
+ expand_if_available = "libraries_to_link",
+ ),
+ ],
+ ),
+ ],
+ )
+
+ force_pic_flags_feature = feature(
+ name = "force_pic_flags",
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.cpp_link_executable,
+ ACTION_NAMES.lto_index_for_executable,
+ ],
+ flag_groups = [
+ flag_group(
+ flags = ["-pie"],
+ expand_if_available = "force_pic",
+ ),
+ ],
+ ),
+ ],
+ )
+
+ dependency_file_feature = feature(
+ name = "dependency_file",
+ enabled = True,
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.assemble,
+ ACTION_NAMES.preprocess_assemble,
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.cpp_module_compile,
+ ACTION_NAMES.objc_compile,
+ ACTION_NAMES.objcpp_compile,
+ ACTION_NAMES.cpp_header_parsing,
+ ACTION_NAMES.clif_match,
+ ],
+ flag_groups = [
+ flag_group(
+ flags = ["-MD", "-MF", "%{dependency_file}"],
+ expand_if_available = "dependency_file",
+ ),
+ ],
+ ),
+ ],
+ )
+
+ dynamic_library_linker_tool_path = tool_paths
+ dynamic_library_linker_tool_feature = feature(
+ name = "dynamic_library_linker_tool",
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.cpp_link_dynamic_library,
+ ACTION_NAMES.cpp_link_nodeps_dynamic_library,
+ ACTION_NAMES.lto_index_for_dynamic_library,
+ ACTION_NAMES.lto_index_for_nodeps_dynamic_library,
+ ],
+ flag_groups = [
+ flag_group(
+ flags = [" + cppLinkDynamicLibraryToolPath + "],
+ expand_if_available = "generate_interface_library",
+ ),
+ ],
+ with_features = [
+ with_feature_set(
+ features = ["supports_interface_shared_libraries"],
+ ),
+ ],
+ ),
+ ],
+ )
+
+ output_execpath_flags_feature = feature(
+ name = "output_execpath_flags",
+ flag_sets = [
+ flag_set(
+ actions = all_link_actions + lto_index_actions,
+ flag_groups = [
+ flag_group(
+ flags = ["-o", "%{output_execpath}"],
+ expand_if_available = "output_execpath",
+ ),
+ ],
+ ),
+ ],
+ )
+
+ # Note that we also set --coverage for c++-link-nodeps-dynamic-library. The
+ # generated code contains references to gcov symbols, and the dynamic linker
+ # can't resolve them unless the library is linked against gcov.
+ coverage_feature = feature(
+ name = "coverage",
+ provides = ["profile"],
+ flag_sets = [
+ flag_set(
+ actions = [
+ ACTION_NAMES.preprocess_assemble,
+ ACTION_NAMES.c_compile,
+ ACTION_NAMES.cpp_compile,
+ ACTION_NAMES.cpp_header_parsing,
+ ACTION_NAMES.cpp_module_compile,
+ ],
+ flag_groups = ([
+ flag_group(flags = ctx.attr.coverage_compile_flags),
+ ] if ctx.attr.coverage_compile_flags else []),
+ ),
+ flag_set(
+ actions = all_link_actions + lto_index_actions,
+ flag_groups = ([
+ flag_group(flags = ctx.attr.coverage_link_flags),
+ ] if ctx.attr.coverage_link_flags else []),
),
],
)
build_id_feature = feature(
name = "build-id",
+ enabled = True,
flag_sets = [
flag_set(
actions = all_link_actions,
@@ -1057,451 +1030,132 @@
],
)
- sysroot_feature = feature(
- name = "sysroot",
+ no_canonical_prefixes_feature = feature(
+ name = "no-canonical-prefixes",
+ enabled = True,
flag_sets = [
flag_set(
actions = [
- ACTION_NAMES.assemble,
- ACTION_NAMES.preprocess_assemble,
ACTION_NAMES.c_compile,
ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_header_parsing,
- ACTION_NAMES.cpp_module_compile,
- ACTION_NAMES.cpp_module_codegen,
ACTION_NAMES.cpp_link_executable,
ACTION_NAMES.cpp_link_dynamic_library,
ACTION_NAMES.cpp_link_nodeps_dynamic_library,
],
flag_groups = [
flag_group(
- flags = ["--sysroot=%{sysroot}"],
- iterate_over = "sysroot",
- expand_if_available = "sysroot",
- ),
- ],
- ),
- ],
- )
-
- def_file_feature = feature(
- name = "def_file",
- flag_sets = [
- flag_set(
- actions = all_link_actions,
- flag_groups = [
- flag_group(
- flags = ["/DEF:%{def_file_path}", "/ignore:4070"],
- expand_if_available = "def_file_path",
- ),
- ],
- ),
- ],
- )
-
- if (ctx.attr.cpu == "darwin"):
- stdlib_feature = feature(
- name = "stdlib",
- flag_sets = [
- flag_set(
- actions = all_link_actions,
- flag_groups = [flag_group(flags = ["-lc++"])],
- ),
- ],
- )
- elif (ctx.attr.cpu == "local"):
- stdlib_feature = feature(
- name = "stdlib",
- flag_sets = [
- flag_set(
- actions = all_link_actions,
- flag_groups = [flag_group(flags = ["-lstdc++"])],
- ),
- ],
- )
- else:
- stdlib_feature = None
-
- no_stripping_feature = feature(name = "no_stripping")
-
- alwayslink_feature = feature(
- name = "alwayslink",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.cpp_link_dynamic_library,
- ACTION_NAMES.cpp_link_nodeps_dynamic_library,
- ACTION_NAMES.cpp_link_executable,
- ],
- flag_groups = [flag_group(flags = ["-Wl,-no-as-needed"])],
- ),
- ],
- )
-
- input_param_flags_feature = feature(
- name = "input_param_flags",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.cpp_link_dynamic_library,
- ACTION_NAMES.cpp_link_nodeps_dynamic_library,
- ],
- flag_groups = [
- flag_group(
- flags = ["/IMPLIB:%{interface_library_output_path}"],
- expand_if_available = "interface_library_output_path",
- ),
- ],
- ),
- flag_set(
- actions = all_link_actions +
- [ACTION_NAMES.cpp_link_static_library],
- flag_groups = [
- flag_group(
- iterate_over = "libraries_to_link",
- flag_groups = [
- flag_group(
- iterate_over = "libraries_to_link.object_files",
- flag_groups = [flag_group(flags = ["%{libraries_to_link.object_files}"])],
- expand_if_equal = variable_with_value(
- name = "libraries_to_link.type",
- value = "object_file_group",
- ),
- ),
- flag_group(
- flag_groups = [flag_group(flags = ["%{libraries_to_link.name}"])],
- expand_if_equal = variable_with_value(
- name = "libraries_to_link.type",
- value = "object_file",
- ),
- ),
- flag_group(
- flag_groups = [flag_group(flags = ["%{libraries_to_link.name}"])],
- expand_if_equal = variable_with_value(
- name = "libraries_to_link.type",
- value = "interface_library",
- ),
- ),
- flag_group(
- flag_groups = [
- flag_group(
- flags = ["%{libraries_to_link.name}"],
- expand_if_false = "libraries_to_link.is_whole_archive",
- ),
- flag_group(
- flags = ["/WHOLEARCHIVE:%{libraries_to_link.name}"],
- expand_if_true = "libraries_to_link.is_whole_archive",
- ),
- ],
- expand_if_equal = variable_with_value(
- name = "libraries_to_link.type",
- value = "static_library",
- ),
- ),
+ flags = [
+ "-no-canonical-prefixes",
+ "-fno-canonical-system-headers",
],
- expand_if_available = "libraries_to_link",
),
],
),
],
)
- if (ctx.attr.cpu == "local"):
- no_canonical_prefixes_feature = feature(
- name = "no-canonical-prefixes",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_link_executable,
- ACTION_NAMES.cpp_link_dynamic_library,
- ACTION_NAMES.cpp_link_nodeps_dynamic_library,
- ],
- flag_groups = [
- flag_group(
- flags = [
- "-no-canonical-prefixes",
- ] + ctx.attr.extra_no_canonical_prefixes_flags,
- ),
- ],
- ),
- ],
- )
- elif (ctx.attr.cpu == "darwin"):
- no_canonical_prefixes_feature = feature(
- name = "no-canonical-prefixes",
- flag_sets = [
- flag_set(
- actions = [
- ACTION_NAMES.c_compile,
- ACTION_NAMES.cpp_compile,
- ACTION_NAMES.cpp_link_executable,
- ACTION_NAMES.cpp_link_dynamic_library,
- ACTION_NAMES.cpp_link_nodeps_dynamic_library,
- ],
- flag_groups = [flag_group(flags = ["-no-canonical-prefixes"])],
- ),
- ],
- )
- else:
- no_canonical_prefixes_feature = None
-
- has_configured_linker_path_feature = feature(name = "has_configured_linker_path")
-
- copy_dynamic_libraries_to_binary_feature = feature(name = "copy_dynamic_libraries_to_binary")
-
- user_link_flags_feature = feature(
- name = "user_link_flags",
+ linker_bin_path_feature = feature(
+ name = "linker-bin-path",
+ enabled = True,
flag_sets = [
flag_set(
actions = all_link_actions,
- flag_groups = [
- flag_group(
- flags = ["%{user_link_flags}"],
- iterate_over = "user_link_flags",
- expand_if_available = "user_link_flags",
- ),
- ],
+ flag_groups = [flag_group(flags = ["-B" + ctx.attr.linker_bin_path])],
),
],
)
- cpp11_feature = feature(
- name = "c++11",
- flag_sets = [
- flag_set(
- actions = [ACTION_NAMES.cpp_compile],
- flag_groups = [flag_group(flags = ["-std=c++11"])],
- ),
- ],
- )
-
- if (ctx.attr.cpu == "local"):
- common_feature = feature(
- name = "common",
- implies = [
- "stdlib",
- "c++11",
- "determinism",
- "alwayslink",
- "hardening",
- "warnings",
- "frame-pointer",
- "build-id",
- "no-canonical-prefixes",
- "linker-bin-path",
- ],
- )
- elif (ctx.attr.cpu == "darwin"):
- common_feature = feature(
- name = "common",
- implies = [
- "stdlib",
- "c++11",
- "determinism",
- "hardening",
- "warnings",
- "frame-pointer",
- "no-canonical-prefixes",
- "linker-bin-path",
- "undefined-dynamic",
- ],
- )
- else:
- common_feature = None
-
- if (ctx.attr.cpu == "local"):
- features = [
- cpp11_feature,
- stdlib_feature,
- determinism_feature,
- alwayslink_feature,
- pic_feature,
- hardening_feature,
- warnings_feature,
- frame_pointer_feature,
- build_id_feature,
- no_canonical_prefixes_feature,
- disable_assertions_feature,
- linker_bin_path_feature,
- common_feature,
- opt_feature,
- fastbuild_feature,
- dbg_feature,
- supports_dynamic_linker_feature,
- supports_pic_feature,
- unfiltered_compile_flags_feature,
- rocm_link_flags_feature,
- ]
- elif (ctx.attr.cpu == "darwin"):
- features = [
- cpp11_feature,
- stdlib_feature,
- determinism_feature,
- pic_feature,
- hardening_feature,
- warnings_feature,
- frame_pointer_feature,
- no_canonical_prefixes_feature,
- disable_assertions_feature,
- linker_bin_path_feature,
- undefined_dynamic_feature,
- common_feature,
- opt_feature,
- fastbuild_feature,
- dbg_feature,
- supports_dynamic_linker_feature,
- supports_pic_feature,
- ]
- elif (ctx.attr.cpu == "x64_windows"):
- features = [
- no_legacy_features_feature,
- redirector_feature,
- nologo_feature,
- has_configured_linker_path_feature,
- no_stripping_feature,
- targets_windows_feature,
- copy_dynamic_libraries_to_binary_feature,
- default_compile_flags_feature,
- msvc_env_feature,
- include_paths_feature,
- preprocessor_defines_feature,
- parse_showincludes_feature,
- generate_pdb_file_feature,
- shared_flag_feature,
- linkstamps_feature,
- output_execpath_flags_feature,
- archiver_flags_feature,
- input_param_flags_feature,
- linker_subsystem_flag_feature,
- user_link_flags_feature,
- default_link_flags_feature,
- linker_param_file_feature,
- static_link_msvcrt_feature,
- static_link_msvcrt_no_debug_feature,
- dynamic_link_msvcrt_no_debug_feature,
- static_link_msvcrt_debug_feature,
- dynamic_link_msvcrt_debug_feature,
- dbg_feature,
- fastbuild_feature,
- opt_feature,
- user_compile_flags_feature,
- sysroot_feature,
- unfiltered_compile_flags_feature,
- compiler_output_flags_feature,
- compiler_input_flags_feature,
- def_file_feature,
- windows_export_all_symbols_feature,
- no_windows_export_all_symbols_feature,
- supports_dynamic_linker_feature,
- supports_interface_shared_libraries_feature,
- ]
- else:
- fail("Unreachable")
-
- cxx_builtin_include_directories = ctx.attr.builtin_include_directories
-
- if (ctx.attr.cpu == "x64_windows"):
- tool_paths = [
- tool_path(name = "ar", path = ctx.attr.msvc_lib_path),
- tool_path(name = "ml", path = ctx.attr.msvc_ml_path),
- tool_path(name = "cpp", path = ctx.attr.msvc_cl_path),
- tool_path(name = "gcc", path = ctx.attr.msvc_cl_path),
- tool_path(name = "gcov", path = "wrapper/bin/msvc_nop.bat"),
- tool_path(name = "ld", path = ctx.attr.msvc_link_path),
- tool_path(name = "nm", path = "wrapper/bin/msvc_nop.bat"),
- tool_path(
- name = "objcopy",
- path = "wrapper/bin/msvc_nop.bat",
- ),
- tool_path(
- name = "objdump",
- path = "wrapper/bin/msvc_nop.bat",
- ),
- tool_path(
- name = "strip",
- path = "wrapper/bin/msvc_nop.bat",
- ),
- ]
- elif (ctx.attr.cpu == "local"):
- tool_paths = [
- tool_path(name = "gcc", path = ctx.attr.host_compiler_path),
- tool_path(name = "ar", path = ctx.attr.host_compiler_prefix + "/ar"),
- tool_path(name = "compat-ld", path = ctx.attr.host_compiler_prefix + "/ld"),
- tool_path(name = "cpp", path = ctx.attr.host_compiler_prefix + "/cpp"),
- tool_path(name = "dwp", path = ctx.attr.host_compiler_prefix + "/dwp"),
- tool_path(name = "gcov", path = ctx.attr.host_compiler_prefix + "/gcov"),
- tool_path(name = "ld", path = ctx.attr.host_compiler_prefix + "/ld"),
- tool_path(name = "nm", path = ctx.attr.host_compiler_prefix + "/nm"),
- tool_path(name = "objcopy", path = ctx.attr.host_compiler_prefix + "/objcopy"),
- tool_path(name = "objdump", path = ctx.attr.host_compiler_prefix + "/objdump"),
- tool_path(name = "strip", path = ctx.attr.host_compiler_prefix + "/strip"),
- ]
- elif (ctx.attr.cpu == "darwin"):
- tool_paths = [
- tool_path(name = "gcc", path = ctx.attr.host_compiler_path),
- tool_path(name = "ar", path = ctx.attr.host_compiler_prefix + "/libtool"),
- tool_path(name = "compat-ld", path = ctx.attr.host_compiler_prefix + "/ld"),
- tool_path(name = "cpp", path = ctx.attr.host_compiler_prefix + "/cpp"),
- tool_path(name = "dwp", path = ctx.attr.host_compiler_prefix + "/dwp"),
- tool_path(name = "gcov", path = ctx.attr.host_compiler_prefix + "/gcov"),
- tool_path(name = "ld", path = ctx.attr.host_compiler_prefix + "/ld"),
- tool_path(name = "nm", path = ctx.attr.host_compiler_prefix + "/nm"),
- tool_path(name = "objcopy", path = ctx.attr.host_compiler_prefix + "/objcopy"),
- tool_path(name = "objdump", path = ctx.attr.host_compiler_prefix + "/objdump"),
- tool_path(name = "strip", path = ctx.attr.host_compiler_prefix + "/strip"),
- ]
- else:
- fail("Unreachable")
-
- out = ctx.actions.declare_file(ctx.label.name)
- ctx.actions.write(out, "Fake executable")
- return [
- cc_common.create_cc_toolchain_config_info(
- ctx = ctx,
- features = features,
- action_configs = action_configs,
- artifact_name_patterns = [],
- cxx_builtin_include_directories = cxx_builtin_include_directories,
- toolchain_identifier = toolchain_identifier,
- host_system_name = host_system_name,
- target_system_name = target_system_name,
- target_cpu = target_cpu,
- target_libc = target_libc,
- compiler = compiler,
- abi_version = abi_version,
- abi_libc_version = abi_libc_version,
- tool_paths = tool_paths,
- make_variables = [],
- builtin_sysroot = builtin_sysroot,
- cc_target_os = cc_target_os,
- ),
- DefaultInfo(
- executable = out,
- ),
+ features = [
+ dependency_file_feature,
+ random_seed_feature,
+ pic_feature,
+ per_object_debug_info_feature,
+ preprocessor_defines_feature,
+ includes_feature,
+ include_paths_feature,
+ fdo_instrument_feature,
+ cs_fdo_instrument_feature,
+ cs_fdo_optimize_feature,
+ fdo_prefetch_hints_feature,
+ autofdo_feature,
+ build_interface_libraries_feature,
+ dynamic_library_linker_tool_feature,
+ symbol_counts_feature,
+ shared_flag_feature,
+ linkstamps_feature,
+ output_execpath_flags_feature,
+ runtime_library_search_directories_feature,
+ library_search_directories_feature,
+ archiver_flags_feature,
+ force_pic_flags_feature,
+ fission_support_feature,
+ strip_debug_symbols_feature,
+ coverage_feature,
+ supports_pic_feature,
+ ] + (
+ [
+ supports_start_end_lib_feature,
+ ] if ctx.attr.supports_start_end_lib else []
+ ) + [
+ default_compile_flags_feature,
+ default_link_flags_feature,
+ libraries_to_link_feature,
+ user_link_flags_feature,
+ static_libgcc_feature,
+ fdo_optimize_feature,
+ supports_dynamic_linker_feature,
+ dbg_feature,
+ opt_feature,
+ user_compile_flags_feature,
+ sysroot_feature,
+ unfiltered_compile_flags_feature,
+ build_id_feature,
+ no_canonical_prefixes_feature,
+ linker_bin_path_feature,
]
+ return cc_common.create_cc_toolchain_config_info(
+ ctx = ctx,
+ features = features,
+ action_configs = action_configs,
+ cxx_builtin_include_directories = ctx.attr.cxx_builtin_include_directories,
+ toolchain_identifier = ctx.attr.toolchain_identifier,
+ host_system_name = ctx.attr.host_system_name,
+ target_system_name = ctx.attr.target_system_name,
+ target_cpu = ctx.attr.cpu,
+ target_libc = ctx.attr.target_libc,
+ compiler = ctx.attr.compiler,
+ abi_version = ctx.attr.abi_version,
+ abi_libc_version = ctx.attr.abi_libc_version,
+ tool_paths = tool_paths,
+ )
+
cc_toolchain_config = rule(
implementation = _impl,
attrs = {
- "cpu": attr.string(mandatory = True, values = ["darwin", "local", "x64_windows"]),
- "builtin_include_directories": attr.string_list(),
- "extra_no_canonical_prefixes_flags": attr.string_list(),
+ "cpu": attr.string(mandatory = True),
+ "compiler": attr.string(mandatory = True),
+ "toolchain_identifier": attr.string(mandatory = True),
+ "host_system_name": attr.string(mandatory = True),
+ "target_system_name": attr.string(mandatory = True),
+ "target_libc": attr.string(mandatory = True),
+ "abi_version": attr.string(mandatory = True),
+ "abi_libc_version": attr.string(mandatory = True),
+ "cxx_builtin_include_directories": attr.string_list(),
+ "compile_flags": attr.string_list(),
+ "dbg_compile_flags": attr.string_list(),
+ "opt_compile_flags": attr.string_list(),
+ "cxx_flags": attr.string_list(),
+ "link_flags": attr.string_list(),
+ "link_libs": attr.string_list(),
+ "opt_link_flags": attr.string_list(),
+ "unfiltered_compile_flags": attr.string_list(),
+ "coverage_compile_flags": attr.string_list(),
+ "coverage_link_flags": attr.string_list(),
+ "supports_start_end_lib": attr.bool(),
"host_compiler_path": attr.string(),
"host_compiler_prefix": attr.string(),
- "host_compiler_warnings": attr.string_list(),
- "host_unfiltered_compile_flags": attr.string_list(),
"linker_bin_path": attr.string(),
- "msvc_cl_path": attr.string(default = "msvc_not_used"),
- "msvc_env_include": attr.string(default = "msvc_not_used"),
- "msvc_env_lib": attr.string(default = "msvc_not_used"),
- "msvc_env_path": attr.string(default = "msvc_not_used"),
- "msvc_env_tmp": attr.string(default = "msvc_not_used"),
- "msvc_lib_path": attr.string(default = "msvc_not_used"),
- "msvc_link_path": attr.string(default = "msvc_not_used"),
- "msvc_ml_path": attr.string(default = "msvc_not_used"),
},
provides = [CcToolchainConfigInfo],
- executable = True,
)
diff --git a/third_party/toolchains/preconfig/ubuntu16.04/gcc5-rocm/clang/bin/crosstool_wrapper_driver_is_not_gcc b/third_party/toolchains/preconfig/ubuntu16.04/gcc5-rocm/clang/bin/crosstool_wrapper_driver_is_not_gcc
index 2ecf998..a04d036 100755
--- a/third_party/toolchains/preconfig/ubuntu16.04/gcc5-rocm/clang/bin/crosstool_wrapper_driver_is_not_gcc
+++ b/third_party/toolchains/preconfig/ubuntu16.04/gcc5-rocm/clang/bin/crosstool_wrapper_driver_is_not_gcc
@@ -215,7 +215,7 @@
# ignore PWD env var
os.environ['PWD']=''
- parser = ArgumentParser()
+ parser = ArgumentParser(fromfile_prefix_chars='@')
parser.add_argument('-x', nargs=1)
parser.add_argument('--rocm_log', action='store_true')
parser.add_argument('-pass-exit-codes', action='store_true')
diff --git a/third_party/toolchains/preconfig/ubuntu16.04/rocm/rocm/BUILD b/third_party/toolchains/preconfig/ubuntu16.04/rocm/rocm/BUILD
index a78224c..a1ecadf 100755
--- a/third_party/toolchains/preconfig/ubuntu16.04/rocm/rocm/BUILD
+++ b/third_party/toolchains/preconfig/ubuntu16.04/rocm/rocm/BUILD
@@ -1,36 +1,9 @@
load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
-load("@bazel_tools//tools/python:toolchain.bzl", "py_runtime_pair")
licenses(["restricted"]) # MPL2, portions GPL v3, LGPL v3, BSD-like
package(default_visibility = ["//visibility:public"])
-# Point both runtimes to the same python binary to ensure we always
-# use the python binary specified by ./configure.py script.
-py_runtime(
- name = "py2_runtime",
- interpreter_path = "/usr/bin/python3",
- python_version = "PY2",
-)
-
-py_runtime(
- name = "py3_runtime",
- interpreter_path = "/usr/bin/python3",
- python_version = "PY3",
-)
-
-py_runtime_pair(
- name = "py_runtime_pair",
- py2_runtime = ":py2_runtime",
- py3_runtime = ":py3_runtime",
-)
-
-toolchain(
- name = "py_toolchain",
- toolchain = ":py_runtime_pair",
- toolchain_type = "@bazel_tools//tools/python:toolchain_type",
-)
-
config_setting(
name = "using_hipcc",
values = {