| # Copyright 2019 The Bazel Authors. All rights reserved. | |
| # | |
| # Licensed under the Apache License, Version 2.0 (the "License"); | |
| # you may not use this file except in compliance with the License. | |
| # You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, software | |
| # distributed under the License is distributed on an "AS IS" BASIS, | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| # See the License for the specific language governing permissions and | |
| # limitations under the License. | |
| """A Starlark cc_toolchain configuration rule""" | |
| load( | |
| "@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl", | |
| "action_config", | |
| "feature", | |
| "flag_group", | |
| "flag_set", | |
| "tool", | |
| "tool_path", | |
| "with_feature_set", | |
| ) | |
| load( | |
| "@bazel_tools//tools/build_defs/cc:action_names.bzl", | |
| _ASSEMBLE_ACTION_NAME = "ASSEMBLE_ACTION_NAME", | |
| _CLIF_MATCH_ACTION_NAME = "CLIF_MATCH_ACTION_NAME", | |
| _CPP_COMPILE_ACTION_NAME = "CPP_COMPILE_ACTION_NAME", | |
| _CPP_HEADER_PARSING_ACTION_NAME = "CPP_HEADER_PARSING_ACTION_NAME", | |
| _CPP_LINK_DYNAMIC_LIBRARY_ACTION_NAME = "CPP_LINK_DYNAMIC_LIBRARY_ACTION_NAME", | |
| _CPP_LINK_EXECUTABLE_ACTION_NAME = "CPP_LINK_EXECUTABLE_ACTION_NAME", | |
| _CPP_LINK_NODEPS_DYNAMIC_LIBRARY_ACTION_NAME = "CPP_LINK_NODEPS_DYNAMIC_LIBRARY_ACTION_NAME", | |
| _CPP_MODULE_CODEGEN_ACTION_NAME = "CPP_MODULE_CODEGEN_ACTION_NAME", | |
| _CPP_MODULE_COMPILE_ACTION_NAME = "CPP_MODULE_COMPILE_ACTION_NAME", | |
| _C_COMPILE_ACTION_NAME = "C_COMPILE_ACTION_NAME", | |
| _LINKSTAMP_COMPILE_ACTION_NAME = "LINKSTAMP_COMPILE_ACTION_NAME", | |
| _LTO_BACKEND_ACTION_NAME = "LTO_BACKEND_ACTION_NAME", | |
| _PREPROCESS_ASSEMBLE_ACTION_NAME = "PREPROCESS_ASSEMBLE_ACTION_NAME", | |
| ) | |
| all_compile_actions = [ | |
| _C_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _LINKSTAMP_COMPILE_ACTION_NAME, | |
| _ASSEMBLE_ACTION_NAME, | |
| _PREPROCESS_ASSEMBLE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| _CLIF_MATCH_ACTION_NAME, | |
| _LTO_BACKEND_ACTION_NAME, | |
| ] | |
| all_cpp_compile_actions = [ | |
| _CPP_COMPILE_ACTION_NAME, | |
| _LINKSTAMP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| _CLIF_MATCH_ACTION_NAME, | |
| ] | |
| preprocessor_compile_actions = [ | |
| _C_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _LINKSTAMP_COMPILE_ACTION_NAME, | |
| _PREPROCESS_ASSEMBLE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CLIF_MATCH_ACTION_NAME, | |
| ] | |
| codegen_compile_actions = [ | |
| _C_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _LINKSTAMP_COMPILE_ACTION_NAME, | |
| _ASSEMBLE_ACTION_NAME, | |
| _PREPROCESS_ASSEMBLE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| _LTO_BACKEND_ACTION_NAME, | |
| ] | |
| all_link_actions = [ | |
| _CPP_LINK_EXECUTABLE_ACTION_NAME, | |
| _CPP_LINK_DYNAMIC_LIBRARY_ACTION_NAME, | |
| _CPP_LINK_NODEPS_DYNAMIC_LIBRARY_ACTION_NAME, | |
| ] | |
| def _impl(ctx): | |
| if ctx.attr.disable_static_cc_toolchains: | |
| fail("@bazel_tools//tools/cpp:default-toolchain, as well as the cc_toolchains it points " + | |
| "to have been removed. See https://github.com/bazelbuild/bazel/issues/8546.") | |
| if (ctx.attr.cpu == "darwin"): | |
| toolchain_identifier = "local_darwin" | |
| elif (ctx.attr.cpu == "freebsd"): | |
| toolchain_identifier = "local_freebsd" | |
| elif (ctx.attr.cpu == "openbsd"): | |
| toolchain_identifier = "local_openbsd" | |
| elif (ctx.attr.cpu == "local"): | |
| toolchain_identifier = "local_linux" | |
| elif (ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_clang"): | |
| toolchain_identifier = "local_windows_clang" | |
| elif (ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_mingw"): | |
| toolchain_identifier = "local_windows_mingw" | |
| elif (ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_msys64"): | |
| toolchain_identifier = "local_windows_msys64" | |
| elif (ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_msys64_mingw64"): | |
| toolchain_identifier = "local_windows_msys64_mingw64" | |
| elif (ctx.attr.cpu == "armeabi-v7a"): | |
| toolchain_identifier = "stub_armeabi-v7a" | |
| elif (ctx.attr.cpu == "x64_windows_msvc"): | |
| toolchain_identifier = "vc_14_0_x64" | |
| else: | |
| fail("Unreachable") | |
| if (ctx.attr.cpu == "armeabi-v7a"): | |
| host_system_name = "armeabi-v7a" | |
| elif (ctx.attr.cpu == "darwin" or | |
| ctx.attr.cpu == "freebsd" or | |
| ctx.attr.cpu == "openbsd" or | |
| ctx.attr.cpu == "local" or | |
| ctx.attr.cpu == "x64_windows" or | |
| ctx.attr.cpu == "x64_windows_msvc"): | |
| host_system_name = "local" | |
| else: | |
| fail("Unreachable") | |
| if (ctx.attr.cpu == "armeabi-v7a"): | |
| target_system_name = "armeabi-v7a" | |
| elif (ctx.attr.cpu == "darwin" or | |
| ctx.attr.cpu == "freebsd" or | |
| ctx.attr.cpu == "openbsd" or | |
| ctx.attr.cpu == "local" or | |
| ctx.attr.cpu == "x64_windows" or | |
| ctx.attr.cpu == "x64_windows_msvc"): | |
| target_system_name = "local" | |
| else: | |
| fail("Unreachable") | |
| if (ctx.attr.cpu == "armeabi-v7a"): | |
| target_cpu = "armeabi-v7a" | |
| elif (ctx.attr.cpu == "darwin"): | |
| target_cpu = "darwin" | |
| elif (ctx.attr.cpu == "freebsd"): | |
| target_cpu = "freebsd" | |
| elif (ctx.attr.cpu == "openbsd"): | |
| target_cpu = "openbsd" | |
| elif (ctx.attr.cpu == "local"): | |
| target_cpu = "local" | |
| elif (ctx.attr.cpu == "x64_windows"): | |
| target_cpu = "x64_windows" | |
| elif (ctx.attr.cpu == "x64_windows_msvc"): | |
| target_cpu = "x64_windows_msvc" | |
| else: | |
| fail("Unreachable") | |
| if (ctx.attr.cpu == "armeabi-v7a"): | |
| target_libc = "armeabi-v7a" | |
| elif (ctx.attr.cpu == "freebsd" or | |
| ctx.attr.cpu == "openbsd" or | |
| ctx.attr.cpu == "local" or | |
| ctx.attr.cpu == "x64_windows"): | |
| target_libc = "local" | |
| elif (ctx.attr.cpu == "darwin"): | |
| target_libc = "macosx" | |
| elif (ctx.attr.cpu == "x64_windows_msvc"): | |
| target_libc = "msvcrt140" | |
| else: | |
| fail("Unreachable") | |
| if (ctx.attr.cpu == "x64_windows_msvc"): | |
| compiler = "cl" | |
| elif (ctx.attr.cpu == "armeabi-v7a" or | |
| ctx.attr.cpu == "darwin" or | |
| ctx.attr.cpu == "freebsd" or | |
| ctx.attr.cpu == "openbsd" or | |
| ctx.attr.cpu == "local"): | |
| compiler = "compiler" | |
| elif (ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_clang"): | |
| compiler = "windows_clang" | |
| elif (ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_mingw"): | |
| compiler = "windows_mingw" | |
| elif (ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_msys64"): | |
| compiler = "windows_msys64" | |
| elif (ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_msys64_mingw64"): | |
| compiler = "windows_msys64_mingw64" | |
| else: | |
| fail("Unreachable") | |
| if (ctx.attr.cpu == "armeabi-v7a"): | |
| abi_version = "armeabi-v7a" | |
| elif (ctx.attr.cpu == "darwin" or | |
| ctx.attr.cpu == "freebsd" or | |
| ctx.attr.cpu == "openbsd" or | |
| ctx.attr.cpu == "local" or | |
| ctx.attr.cpu == "x64_windows" or | |
| ctx.attr.cpu == "x64_windows_msvc"): | |
| abi_version = "local" | |
| else: | |
| fail("Unreachable") | |
| if (ctx.attr.cpu == "armeabi-v7a"): | |
| abi_libc_version = "armeabi-v7a" | |
| elif (ctx.attr.cpu == "darwin" or | |
| ctx.attr.cpu == "freebsd" or | |
| ctx.attr.cpu == "openbsd" or | |
| ctx.attr.cpu == "local" or | |
| ctx.attr.cpu == "x64_windows" or | |
| ctx.attr.cpu == "x64_windows_msvc"): | |
| abi_libc_version = "local" | |
| else: | |
| fail("Unreachable") | |
| cc_target_os = None | |
| builtin_sysroot = None | |
| if (ctx.attr.cpu == "darwin" or | |
| ctx.attr.cpu == "freebsd" or | |
| ctx.attr.cpu == "openbsd" or | |
| ctx.attr.cpu == "local"): | |
| objcopy_embed_data_action = action_config( | |
| action_name = "objcopy_embed_data", | |
| enabled = True, | |
| tools = [tool(path = "/usr/bin/objcopy")], | |
| ) | |
| elif (ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_clang"): | |
| objcopy_embed_data_action = action_config( | |
| action_name = "objcopy_embed_data", | |
| enabled = True, | |
| tools = [tool(path = "C:/Program Files (x86)/LLVM/bin/objcopy")], | |
| ) | |
| elif (ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_mingw"): | |
| objcopy_embed_data_action = action_config( | |
| action_name = "objcopy_embed_data", | |
| enabled = True, | |
| tools = [tool(path = "C:/mingw/bin/objcopy")], | |
| ) | |
| elif (ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_msys64_mingw64"): | |
| objcopy_embed_data_action = action_config( | |
| action_name = "objcopy_embed_data", | |
| enabled = True, | |
| tools = [tool(path = "C:/tools/msys64/mingw64/bin/objcopy")], | |
| ) | |
| elif (ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_msys64"): | |
| objcopy_embed_data_action = action_config( | |
| action_name = "objcopy_embed_data", | |
| enabled = True, | |
| tools = [tool(path = "C:/tools/msys64/usr/bin/objcopy")], | |
| ) | |
| c_compile_action = action_config( | |
| action_name = _C_COMPILE_ACTION_NAME, | |
| implies = [ | |
| "compiler_input_flags", | |
| "compiler_output_flags", | |
| "default_compile_flags", | |
| "user_compile_flags", | |
| "sysroot", | |
| "unfiltered_compile_flags", | |
| ], | |
| tools = [tool(path = "wrapper/bin/msvc_cl.bat")], | |
| ) | |
| cpp_compile_action = action_config( | |
| action_name = _CPP_COMPILE_ACTION_NAME, | |
| implies = [ | |
| "compiler_input_flags", | |
| "compiler_output_flags", | |
| "default_compile_flags", | |
| "user_compile_flags", | |
| "sysroot", | |
| "unfiltered_compile_flags", | |
| ], | |
| tools = [tool(path = "wrapper/bin/msvc_cl.bat")], | |
| ) | |
| if (ctx.attr.cpu == "armeabi-v7a"): | |
| action_configs = [] | |
| elif (ctx.attr.cpu == "x64_windows_msvc"): | |
| action_configs = [c_compile_action, cpp_compile_action] | |
| elif (ctx.attr.cpu == "darwin" or | |
| ctx.attr.cpu == "freebsd" or | |
| ctx.attr.cpu == "openbsd" or | |
| ctx.attr.cpu == "local" or | |
| ctx.attr.cpu == "x64_windows"): | |
| action_configs = [objcopy_embed_data_action] | |
| else: | |
| fail("Unreachable") | |
| random_seed_feature = feature(name = "random_seed", enabled = True) | |
| compiler_output_flags_feature = feature( | |
| name = "compiler_output_flags", | |
| flag_sets = [ | |
| flag_set( | |
| actions = [_ASSEMBLE_ACTION_NAME], | |
| flag_groups = [ | |
| flag_group( | |
| flags = ["/Fo%{output_file}", "/Zi"], | |
| expand_if_available = "output_file", | |
| expand_if_not_available = "output_assembly_file", | |
| ), | |
| ], | |
| ), | |
| flag_set( | |
| actions = [ | |
| _PREPROCESS_ASSEMBLE_ACTION_NAME, | |
| _C_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| ], | |
| flag_groups = [ | |
| flag_group( | |
| flags = ["/Fo%{output_file}"], | |
| expand_if_available = "output_file", | |
| expand_if_not_available = "output_assembly_file", | |
| ), | |
| flag_group( | |
| flags = ["/Fa%{output_file}"], | |
| expand_if_available = "output_file", | |
| ), | |
| flag_group( | |
| flags = ["/P", "/Fi%{output_file}"], | |
| expand_if_available = "output_file", | |
| ), | |
| ], | |
| ), | |
| ], | |
| ) | |
| if (ctx.attr.cpu == "local"): | |
| default_link_flags_feature = feature( | |
| name = "default_link_flags", | |
| enabled = True, | |
| flag_sets = [ | |
| flag_set( | |
| actions = all_link_actions, | |
| flag_groups = [ | |
| flag_group( | |
| flags = [ | |
| "-lstdc++", | |
| "-Wl,-z,relro,-z,now", | |
| "-no-canonical-prefixes", | |
| "-pass-exit-codes", | |
| ], | |
| ), | |
| ], | |
| ), | |
| flag_set( | |
| actions = all_link_actions, | |
| flag_groups = [flag_group(flags = ["-Wl,--gc-sections"])], | |
| with_features = [with_feature_set(features = ["opt"])], | |
| ), | |
| ], | |
| ) | |
| elif (ctx.attr.cpu == "freebsd" or | |
| ctx.atr.cpu == "openbsd"): | |
| default_link_flags_feature = feature( | |
| name = "default_link_flags", | |
| enabled = True, | |
| flag_sets = [ | |
| flag_set( | |
| actions = all_link_actions, | |
| flag_groups = [ | |
| flag_group( | |
| flags = [ | |
| "-lstdc++", | |
| "-Wl,-z,relro,-z,now", | |
| "-no-canonical-prefixes", | |
| ], | |
| ), | |
| ], | |
| ), | |
| flag_set( | |
| actions = all_link_actions, | |
| flag_groups = [flag_group(flags = ["-Wl,--gc-sections"])], | |
| with_features = [with_feature_set(features = ["opt"])], | |
| ), | |
| ], | |
| ) | |
| elif (ctx.attr.cpu == "darwin"): | |
| default_link_flags_feature = feature( | |
| name = "default_link_flags", | |
| enabled = True, | |
| flag_sets = [ | |
| flag_set( | |
| actions = all_link_actions, | |
| flag_groups = [ | |
| flag_group( | |
| flags = [ | |
| "-lstdc++", | |
| "-undefined", | |
| "dynamic_lookup", | |
| "-headerpad_max_install_names", | |
| "-no-canonical-prefixes", | |
| ], | |
| ), | |
| ], | |
| ), | |
| ], | |
| ) | |
| elif (ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_msys64"): | |
| default_link_flags_feature = feature( | |
| name = "default_link_flags", | |
| enabled = True, | |
| flag_sets = [ | |
| flag_set( | |
| actions = all_link_actions, | |
| flag_groups = [flag_group(flags = ["-lstdc++"])], | |
| ), | |
| ], | |
| ) | |
| elif (ctx.attr.cpu == "x64_windows_msvc"): | |
| default_link_flags_feature = feature( | |
| name = "default_link_flags", | |
| enabled = True, | |
| flag_sets = [ | |
| flag_set( | |
| actions = all_link_actions, | |
| flag_groups = [flag_group(flags = ["-m64"])], | |
| ), | |
| ], | |
| ) | |
| if (ctx.attr.cpu == "darwin" or | |
| ctx.attr.cpu == "freebsd" or | |
| ctx.attr.cpu == "openbsd"): | |
| unfiltered_compile_flags_feature = feature( | |
| name = "unfiltered_compile_flags", | |
| enabled = True, | |
| flag_sets = [ | |
| flag_set( | |
| actions = [ | |
| _ASSEMBLE_ACTION_NAME, | |
| _PREPROCESS_ASSEMBLE_ACTION_NAME, | |
| _LINKSTAMP_COMPILE_ACTION_NAME, | |
| _C_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| _LTO_BACKEND_ACTION_NAME, | |
| _CLIF_MATCH_ACTION_NAME, | |
| ], | |
| flag_groups = [ | |
| flag_group( | |
| flags = [ | |
| "-no-canonical-prefixes", | |
| "-Wno-builtin-macro-redefined", | |
| "-D__DATE__=\"redacted\"", | |
| "-D__TIMESTAMP__=\"redacted\"", | |
| "-D__TIME__=\"redacted\"", | |
| ], | |
| ), | |
| ], | |
| ), | |
| ], | |
| ) | |
| elif (ctx.attr.cpu == "local"): | |
| unfiltered_compile_flags_feature = feature( | |
| name = "unfiltered_compile_flags", | |
| enabled = True, | |
| flag_sets = [ | |
| flag_set( | |
| actions = [ | |
| _ASSEMBLE_ACTION_NAME, | |
| _PREPROCESS_ASSEMBLE_ACTION_NAME, | |
| _LINKSTAMP_COMPILE_ACTION_NAME, | |
| _C_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| _LTO_BACKEND_ACTION_NAME, | |
| _CLIF_MATCH_ACTION_NAME, | |
| ], | |
| flag_groups = [ | |
| flag_group( | |
| flags = [ | |
| "-no-canonical-prefixes", | |
| "-fno-canonical-system-headers", | |
| "-Wno-builtin-macro-redefined", | |
| "-D__DATE__=\"redacted\"", | |
| "-D__TIMESTAMP__=\"redacted\"", | |
| "-D__TIME__=\"redacted\"", | |
| ], | |
| ), | |
| ], | |
| ), | |
| ], | |
| ) | |
| elif (ctx.attr.cpu == "x64_windows_msvc"): | |
| unfiltered_compile_flags_feature = feature( | |
| name = "unfiltered_compile_flags", | |
| flag_sets = [ | |
| flag_set( | |
| actions = [ | |
| _ASSEMBLE_ACTION_NAME, | |
| _PREPROCESS_ASSEMBLE_ACTION_NAME, | |
| _C_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| ], | |
| flag_groups = [ | |
| flag_group( | |
| flags = ["%{unfiltered_compile_flags}"], | |
| iterate_over = "unfiltered_compile_flags", | |
| expand_if_available = "unfiltered_compile_flags", | |
| ), | |
| ], | |
| ), | |
| ], | |
| ) | |
| supports_pic_feature = feature(name = "supports_pic", enabled = True) | |
| if (ctx.attr.cpu == "darwin"): | |
| default_compile_flags_feature = feature( | |
| name = "default_compile_flags", | |
| enabled = True, | |
| flag_sets = [ | |
| flag_set( | |
| actions = [ | |
| _ASSEMBLE_ACTION_NAME, | |
| _PREPROCESS_ASSEMBLE_ACTION_NAME, | |
| _LINKSTAMP_COMPILE_ACTION_NAME, | |
| _C_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| _LTO_BACKEND_ACTION_NAME, | |
| _CLIF_MATCH_ACTION_NAME, | |
| ], | |
| flag_groups = [ | |
| flag_group( | |
| flags = [ | |
| "-D_FORTIFY_SOURCE=1", | |
| "-fstack-protector", | |
| "-fcolor-diagnostics", | |
| "-Wall", | |
| "-Wthread-safety", | |
| "-Wself-assign", | |
| "-fno-omit-frame-pointer", | |
| ], | |
| ), | |
| ], | |
| ), | |
| flag_set( | |
| actions = [ | |
| _ASSEMBLE_ACTION_NAME, | |
| _PREPROCESS_ASSEMBLE_ACTION_NAME, | |
| _LINKSTAMP_COMPILE_ACTION_NAME, | |
| _C_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| _LTO_BACKEND_ACTION_NAME, | |
| _CLIF_MATCH_ACTION_NAME, | |
| ], | |
| flag_groups = [flag_group(flags = ["-g"])], | |
| with_features = [with_feature_set(features = ["dbg"])], | |
| ), | |
| flag_set( | |
| actions = [ | |
| _ASSEMBLE_ACTION_NAME, | |
| _PREPROCESS_ASSEMBLE_ACTION_NAME, | |
| _LINKSTAMP_COMPILE_ACTION_NAME, | |
| _C_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| _LTO_BACKEND_ACTION_NAME, | |
| _CLIF_MATCH_ACTION_NAME, | |
| ], | |
| flag_groups = [ | |
| flag_group( | |
| flags = [ | |
| "-g0", | |
| "-O2", | |
| "-DNDEBUG", | |
| "-ffunction-sections", | |
| "-fdata-sections", | |
| ], | |
| ), | |
| ], | |
| with_features = [with_feature_set(features = ["opt"])], | |
| ), | |
| flag_set( | |
| actions = [ | |
| _LINKSTAMP_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| _LTO_BACKEND_ACTION_NAME, | |
| _CLIF_MATCH_ACTION_NAME, | |
| ], | |
| flag_groups = [flag_group(flags = ["-std=c++0x"])], | |
| ), | |
| ], | |
| ) | |
| elif (ctx.attr.cpu == "local"): | |
| default_compile_flags_feature = feature( | |
| name = "default_compile_flags", | |
| enabled = True, | |
| flag_sets = [ | |
| flag_set( | |
| actions = [ | |
| _ASSEMBLE_ACTION_NAME, | |
| _PREPROCESS_ASSEMBLE_ACTION_NAME, | |
| _LINKSTAMP_COMPILE_ACTION_NAME, | |
| _C_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| _LTO_BACKEND_ACTION_NAME, | |
| _CLIF_MATCH_ACTION_NAME, | |
| ], | |
| flag_groups = [ | |
| flag_group( | |
| flags = [ | |
| "-U_FORTIFY_SOURCE", | |
| "-D_FORTIFY_SOURCE=1", | |
| "-fstack-protector", | |
| "-Wall", | |
| "-Wunused-but-set-parameter", | |
| "-Wno-free-nonheap-object", | |
| "-fno-omit-frame-pointer", | |
| ], | |
| ), | |
| ], | |
| ), | |
| flag_set( | |
| actions = [ | |
| _ASSEMBLE_ACTION_NAME, | |
| _PREPROCESS_ASSEMBLE_ACTION_NAME, | |
| _LINKSTAMP_COMPILE_ACTION_NAME, | |
| _C_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| _LTO_BACKEND_ACTION_NAME, | |
| _CLIF_MATCH_ACTION_NAME, | |
| ], | |
| flag_groups = [flag_group(flags = ["-g"])], | |
| with_features = [with_feature_set(features = ["dbg"])], | |
| ), | |
| flag_set( | |
| actions = [ | |
| _ASSEMBLE_ACTION_NAME, | |
| _PREPROCESS_ASSEMBLE_ACTION_NAME, | |
| _LINKSTAMP_COMPILE_ACTION_NAME, | |
| _C_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| _LTO_BACKEND_ACTION_NAME, | |
| _CLIF_MATCH_ACTION_NAME, | |
| ], | |
| flag_groups = [ | |
| flag_group( | |
| flags = [ | |
| "-g0", | |
| "-O2", | |
| "-DNDEBUG", | |
| "-ffunction-sections", | |
| "-fdata-sections", | |
| ], | |
| ), | |
| ], | |
| with_features = [with_feature_set(features = ["opt"])], | |
| ), | |
| flag_set( | |
| actions = [ | |
| _LINKSTAMP_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| _LTO_BACKEND_ACTION_NAME, | |
| _CLIF_MATCH_ACTION_NAME, | |
| ], | |
| flag_groups = [flag_group(flags = ["-std=c++0x"])], | |
| ), | |
| ], | |
| ) | |
| elif (ctx.attr.cpu == "freebsd" or | |
| ctx.attr.cpu == "openbsd"): | |
| default_compile_flags_feature = feature( | |
| name = "default_compile_flags", | |
| enabled = True, | |
| flag_sets = [ | |
| flag_set( | |
| actions = [ | |
| _ASSEMBLE_ACTION_NAME, | |
| _PREPROCESS_ASSEMBLE_ACTION_NAME, | |
| _LINKSTAMP_COMPILE_ACTION_NAME, | |
| _C_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| _LTO_BACKEND_ACTION_NAME, | |
| _CLIF_MATCH_ACTION_NAME, | |
| ], | |
| flag_groups = [ | |
| flag_group( | |
| flags = [ | |
| "-U_FORTIFY_SOURCE", | |
| "-D_FORTIFY_SOURCE=1", | |
| "-fstack-protector", | |
| "-Wall", | |
| "-fno-omit-frame-pointer", | |
| ], | |
| ), | |
| ], | |
| ), | |
| flag_set( | |
| actions = [ | |
| _ASSEMBLE_ACTION_NAME, | |
| _PREPROCESS_ASSEMBLE_ACTION_NAME, | |
| _LINKSTAMP_COMPILE_ACTION_NAME, | |
| _C_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| _LTO_BACKEND_ACTION_NAME, | |
| _CLIF_MATCH_ACTION_NAME, | |
| ], | |
| flag_groups = [flag_group(flags = ["-g"])], | |
| with_features = [with_feature_set(features = ["dbg"])], | |
| ), | |
| flag_set( | |
| actions = [ | |
| _ASSEMBLE_ACTION_NAME, | |
| _PREPROCESS_ASSEMBLE_ACTION_NAME, | |
| _LINKSTAMP_COMPILE_ACTION_NAME, | |
| _C_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| _LTO_BACKEND_ACTION_NAME, | |
| _CLIF_MATCH_ACTION_NAME, | |
| ], | |
| flag_groups = [ | |
| flag_group( | |
| flags = [ | |
| "-g0", | |
| "-O2", | |
| "-DNDEBUG", | |
| "-ffunction-sections", | |
| "-fdata-sections", | |
| ], | |
| ), | |
| ], | |
| with_features = [with_feature_set(features = ["opt"])], | |
| ), | |
| flag_set( | |
| actions = [ | |
| _LINKSTAMP_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| _LTO_BACKEND_ACTION_NAME, | |
| _CLIF_MATCH_ACTION_NAME, | |
| ], | |
| flag_groups = [flag_group(flags = ["-std=c++0x"])], | |
| ), | |
| ], | |
| ) | |
| elif (ctx.attr.cpu == "x64_windows_msvc"): | |
| default_compile_flags_feature = feature( | |
| name = "default_compile_flags", | |
| enabled = True, | |
| flag_sets = [ | |
| flag_set( | |
| actions = [ | |
| _ASSEMBLE_ACTION_NAME, | |
| _PREPROCESS_ASSEMBLE_ACTION_NAME, | |
| _LINKSTAMP_COMPILE_ACTION_NAME, | |
| _C_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| _LTO_BACKEND_ACTION_NAME, | |
| _CLIF_MATCH_ACTION_NAME, | |
| ], | |
| flag_groups = [ | |
| flag_group( | |
| flags = [ | |
| "-m64", | |
| "/D__inline__=__inline", | |
| "/DCOMPILER_MSVC", | |
| "/DNOGDI", | |
| "/DNOMINMAX", | |
| "/DPRAGMA_SUPPORTED", | |
| "/D_WIN32_WINNT=0x0601", | |
| "/D_CRT_SECURE_NO_DEPRECATE", | |
| "/D_CRT_SECURE_NO_WARNINGS", | |
| "/D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS", | |
| "/D_USE_MATH_DEFINES", | |
| "/nologo", | |
| "/bigobj", | |
| "/Zm500", | |
| "/J", | |
| "/Gy", | |
| "/GF", | |
| "/W3", | |
| "/EHsc", | |
| "/wd4351", | |
| "/wd4291", | |
| "/wd4250", | |
| "/wd4996", | |
| ], | |
| ), | |
| ], | |
| ), | |
| flag_set( | |
| actions = [ | |
| _ASSEMBLE_ACTION_NAME, | |
| _PREPROCESS_ASSEMBLE_ACTION_NAME, | |
| _LINKSTAMP_COMPILE_ACTION_NAME, | |
| _C_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| _LTO_BACKEND_ACTION_NAME, | |
| _CLIF_MATCH_ACTION_NAME, | |
| ], | |
| flag_groups = [ | |
| flag_group( | |
| flags = ["/DDEBUG=1", "-g", "/Od", "-Xcompilation-mode=dbg"], | |
| ), | |
| ], | |
| with_features = [with_feature_set(features = ["dbg"])], | |
| ), | |
| flag_set( | |
| actions = [ | |
| _ASSEMBLE_ACTION_NAME, | |
| _PREPROCESS_ASSEMBLE_ACTION_NAME, | |
| _LINKSTAMP_COMPILE_ACTION_NAME, | |
| _C_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| _LTO_BACKEND_ACTION_NAME, | |
| _CLIF_MATCH_ACTION_NAME, | |
| ], | |
| flag_groups = [ | |
| flag_group( | |
| flags = ["/DNDEBUG", "/Od", "-Xcompilation-mode=fastbuild"], | |
| ), | |
| ], | |
| with_features = [with_feature_set(features = ["fastbuild"])], | |
| ), | |
| flag_set( | |
| actions = [ | |
| _ASSEMBLE_ACTION_NAME, | |
| _PREPROCESS_ASSEMBLE_ACTION_NAME, | |
| _LINKSTAMP_COMPILE_ACTION_NAME, | |
| _C_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| _LTO_BACKEND_ACTION_NAME, | |
| _CLIF_MATCH_ACTION_NAME, | |
| ], | |
| flag_groups = [ | |
| flag_group( | |
| flags = ["/DNDEBUG", "/O2", "-Xcompilation-mode=opt"], | |
| ), | |
| ], | |
| with_features = [with_feature_set(features = ["opt"])], | |
| ), | |
| ], | |
| ) | |
| elif (ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_clang" or | |
| ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_mingw" or | |
| ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_msys64_mingw64"): | |
| default_compile_flags_feature = feature( | |
| name = "default_compile_flags", | |
| enabled = True, | |
| flag_sets = [ | |
| flag_set( | |
| actions = [ | |
| _LINKSTAMP_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| _LTO_BACKEND_ACTION_NAME, | |
| _CLIF_MATCH_ACTION_NAME, | |
| ], | |
| flag_groups = [flag_group(flags = ["-std=c++0x"])], | |
| ), | |
| ], | |
| ) | |
| elif (ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_msys64"): | |
| default_compile_flags_feature = feature( | |
| name = "default_compile_flags", | |
| enabled = True, | |
| flag_sets = [ | |
| flag_set( | |
| actions = [ | |
| _LINKSTAMP_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| _LTO_BACKEND_ACTION_NAME, | |
| _CLIF_MATCH_ACTION_NAME, | |
| ], | |
| flag_groups = [flag_group(flags = ["-std=gnu++0x"])], | |
| ), | |
| ], | |
| ) | |
| opt_feature = feature(name = "opt") | |
| supports_dynamic_linker_feature = feature(name = "supports_dynamic_linker", enabled = True) | |
| objcopy_embed_flags_feature = feature( | |
| name = "objcopy_embed_flags", | |
| enabled = True, | |
| flag_sets = [ | |
| flag_set( | |
| actions = ["objcopy_embed_data"], | |
| flag_groups = [flag_group(flags = ["-I", "binary"])], | |
| ), | |
| ], | |
| ) | |
| dbg_feature = feature(name = "dbg") | |
| if (ctx.attr.cpu == "darwin" or | |
| ctx.attr.cpu == "freebsd" or | |
| ctx.attr.cpu == "openbsd" or | |
| ctx.attr.cpu == "local"): | |
| user_compile_flags_feature = feature( | |
| name = "user_compile_flags", | |
| enabled = True, | |
| flag_sets = [ | |
| flag_set( | |
| actions = [ | |
| _ASSEMBLE_ACTION_NAME, | |
| _PREPROCESS_ASSEMBLE_ACTION_NAME, | |
| _LINKSTAMP_COMPILE_ACTION_NAME, | |
| _C_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| _LTO_BACKEND_ACTION_NAME, | |
| _CLIF_MATCH_ACTION_NAME, | |
| ], | |
| flag_groups = [ | |
| flag_group( | |
| flags = ["%{user_compile_flags}"], | |
| iterate_over = "user_compile_flags", | |
| expand_if_available = "user_compile_flags", | |
| ), | |
| ], | |
| ), | |
| ], | |
| ) | |
| elif (ctx.attr.cpu == "x64_windows_msvc"): | |
| user_compile_flags_feature = feature( | |
| name = "user_compile_flags", | |
| flag_sets = [ | |
| flag_set( | |
| actions = [ | |
| _ASSEMBLE_ACTION_NAME, | |
| _PREPROCESS_ASSEMBLE_ACTION_NAME, | |
| _C_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| ], | |
| flag_groups = [ | |
| flag_group( | |
| flags = ["%{user_compile_flags}"], | |
| iterate_over = "user_compile_flags", | |
| expand_if_available = "user_compile_flags", | |
| ), | |
| ], | |
| ), | |
| ], | |
| ) | |
| if (ctx.attr.cpu == "darwin" or | |
| ctx.attr.cpu == "freebsd" or | |
| ctx.attr.cpu == "openbsd" or | |
| ctx.attr.cpu == "local"): | |
| sysroot_feature = feature( | |
| name = "sysroot", | |
| enabled = True, | |
| flag_sets = [ | |
| flag_set( | |
| actions = [ | |
| _PREPROCESS_ASSEMBLE_ACTION_NAME, | |
| _LINKSTAMP_COMPILE_ACTION_NAME, | |
| _C_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| _LTO_BACKEND_ACTION_NAME, | |
| _CLIF_MATCH_ACTION_NAME, | |
| _CPP_LINK_EXECUTABLE_ACTION_NAME, | |
| _CPP_LINK_DYNAMIC_LIBRARY_ACTION_NAME, | |
| _CPP_LINK_NODEPS_DYNAMIC_LIBRARY_ACTION_NAME, | |
| ], | |
| flag_groups = [ | |
| flag_group( | |
| flags = ["--sysroot=%{sysroot}"], | |
| expand_if_available = "sysroot", | |
| ), | |
| ], | |
| ), | |
| ], | |
| ) | |
| elif (ctx.attr.cpu == "x64_windows_msvc"): | |
| sysroot_feature = feature( | |
| name = "sysroot", | |
| flag_sets = [ | |
| flag_set( | |
| actions = [ | |
| _ASSEMBLE_ACTION_NAME, | |
| _PREPROCESS_ASSEMBLE_ACTION_NAME, | |
| _C_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| _CPP_LINK_EXECUTABLE_ACTION_NAME, | |
| _CPP_LINK_DYNAMIC_LIBRARY_ACTION_NAME, | |
| _CPP_LINK_NODEPS_DYNAMIC_LIBRARY_ACTION_NAME, | |
| ], | |
| flag_groups = [ | |
| flag_group( | |
| flags = ["--sysroot=%{sysroot}"], | |
| iterate_over = "sysroot", | |
| expand_if_available = "sysroot", | |
| ), | |
| ], | |
| ), | |
| ], | |
| ) | |
| include_paths_feature = feature( | |
| name = "include_paths", | |
| enabled = True, | |
| flag_sets = [ | |
| flag_set( | |
| actions = [ | |
| _PREPROCESS_ASSEMBLE_ACTION_NAME, | |
| _C_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| ], | |
| flag_groups = [ | |
| flag_group( | |
| flags = ["/I%{quote_include_paths}"], | |
| iterate_over = "quote_include_paths", | |
| ), | |
| flag_group( | |
| flags = ["/I%{include_paths}"], | |
| iterate_over = "include_paths", | |
| ), | |
| flag_group( | |
| flags = ["/I%{system_include_paths}"], | |
| iterate_over = "system_include_paths", | |
| ), | |
| ], | |
| ), | |
| ], | |
| ) | |
| dependency_file_feature = feature( | |
| name = "dependency_file", | |
| enabled = True, | |
| flag_sets = [ | |
| flag_set( | |
| actions = [ | |
| _ASSEMBLE_ACTION_NAME, | |
| _PREPROCESS_ASSEMBLE_ACTION_NAME, | |
| _C_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| ], | |
| flag_groups = [ | |
| flag_group( | |
| flags = ["/DEPENDENCY_FILE", "%{dependency_file}"], | |
| expand_if_available = "dependency_file", | |
| ), | |
| ], | |
| ), | |
| ], | |
| ) | |
| compiler_input_flags_feature = feature( | |
| name = "compiler_input_flags", | |
| flag_sets = [ | |
| flag_set( | |
| actions = [ | |
| _ASSEMBLE_ACTION_NAME, | |
| _PREPROCESS_ASSEMBLE_ACTION_NAME, | |
| _C_COMPILE_ACTION_NAME, | |
| _CPP_COMPILE_ACTION_NAME, | |
| _CPP_HEADER_PARSING_ACTION_NAME, | |
| _CPP_MODULE_COMPILE_ACTION_NAME, | |
| _CPP_MODULE_CODEGEN_ACTION_NAME, | |
| ], | |
| flag_groups = [ | |
| flag_group( | |
| flags = ["/c", "%{source_file}"], | |
| expand_if_available = "source_file", | |
| ), | |
| ], | |
| ), | |
| ], | |
| ) | |
| fastbuild_feature = feature(name = "fastbuild") | |
| if (ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_msys64"): | |
| features = [ | |
| default_compile_flags_feature, | |
| default_link_flags_feature, | |
| supports_dynamic_linker_feature, | |
| objcopy_embed_flags_feature, | |
| ] | |
| elif (ctx.attr.cpu == "darwin"): | |
| features = [ | |
| default_compile_flags_feature, | |
| default_link_flags_feature, | |
| supports_dynamic_linker_feature, | |
| supports_pic_feature, | |
| objcopy_embed_flags_feature, | |
| dbg_feature, | |
| opt_feature, | |
| user_compile_flags_feature, | |
| sysroot_feature, | |
| unfiltered_compile_flags_feature, | |
| ] | |
| elif (ctx.attr.cpu == "freebsd" or | |
| ctx.attr.cpu == "openbsd" or | |
| ctx.attr.cpu == "local"): | |
| features = [ | |
| default_compile_flags_feature, | |
| default_link_flags_feature, | |
| supports_dynamic_linker_feature, | |
| supports_pic_feature, | |
| objcopy_embed_flags_feature, | |
| opt_feature, | |
| dbg_feature, | |
| user_compile_flags_feature, | |
| sysroot_feature, | |
| unfiltered_compile_flags_feature, | |
| ] | |
| elif (ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_clang" or | |
| ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_mingw" or | |
| ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_msys64_mingw64"): | |
| features = [ | |
| default_compile_flags_feature, | |
| supports_dynamic_linker_feature, | |
| objcopy_embed_flags_feature, | |
| ] | |
| elif (ctx.attr.cpu == "x64_windows_msvc"): | |
| features = [ | |
| default_link_flags_feature, | |
| random_seed_feature, | |
| default_compile_flags_feature, | |
| include_paths_feature, | |
| dependency_file_feature, | |
| user_compile_flags_feature, | |
| sysroot_feature, | |
| unfiltered_compile_flags_feature, | |
| compiler_output_flags_feature, | |
| compiler_input_flags_feature, | |
| dbg_feature, | |
| fastbuild_feature, | |
| opt_feature, | |
| ] | |
| elif (ctx.attr.cpu == "armeabi-v7a"): | |
| features = [supports_dynamic_linker_feature, supports_pic_feature] | |
| if (ctx.attr.cpu == "armeabi-v7a"): | |
| cxx_builtin_include_directories = [] | |
| elif (ctx.attr.cpu == "darwin"): | |
| cxx_builtin_include_directories = ["/"] | |
| elif (ctx.attr.cpu == "freebsd" or | |
| ctx.attr.cpu == "openbsd"): | |
| cxx_builtin_include_directories = ["/usr/lib/clang", "/usr/local/include", "/usr/include"] | |
| elif (ctx.attr.cpu == "local" or | |
| ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_clang"): | |
| cxx_builtin_include_directories = ["/usr/lib/gcc/", "/usr/local/include", "/usr/include"] | |
| elif (ctx.attr.cpu == "x64_windows_msvc"): | |
| cxx_builtin_include_directories = [ | |
| "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/INCLUDE", | |
| "C:/Program Files (x86)/Windows Kits/10/include/", | |
| "C:/Program Files (x86)/Windows Kits/8.1/include/", | |
| "C:/Program Files (x86)/GnuWin32/include/", | |
| "C:/python_27_amd64/files/include", | |
| ] | |
| elif (ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_mingw"): | |
| cxx_builtin_include_directories = ["C:/mingw/include", "C:/mingw/lib/gcc"] | |
| elif (ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_msys64_mingw64"): | |
| cxx_builtin_include_directories = ["C:/tools/msys64/mingw64/x86_64-w64-mingw32/include"] | |
| elif (ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_msys64"): | |
| cxx_builtin_include_directories = ["C:/tools/msys64/", "/usr/"] | |
| else: | |
| fail("Unreachable") | |
| artifact_name_patterns = [] | |
| make_variables = [] | |
| if (ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_msys64_mingw64"): | |
| tool_paths = [ | |
| tool_path( | |
| name = "ar", | |
| path = "C:/tools/msys64/mingw64/bin/ar", | |
| ), | |
| tool_path( | |
| name = "compat-ld", | |
| path = "C:/tools/msys64/mingw64/bin/ld", | |
| ), | |
| tool_path( | |
| name = "cpp", | |
| path = "C:/tools/msys64/mingw64/bin/cpp", | |
| ), | |
| tool_path( | |
| name = "dwp", | |
| path = "C:/tools/msys64/mingw64/bin/dwp", | |
| ), | |
| tool_path( | |
| name = "gcc", | |
| path = "C:/tools/msys64/mingw64/bin/gcc", | |
| ), | |
| tool_path( | |
| name = "gcov", | |
| path = "C:/tools/msys64/mingw64/bin/gcov", | |
| ), | |
| tool_path( | |
| name = "ld", | |
| path = "C:/tools/msys64/mingw64/bin/ld", | |
| ), | |
| tool_path( | |
| name = "nm", | |
| path = "C:/tools/msys64/mingw64/bin/nm", | |
| ), | |
| tool_path( | |
| name = "objcopy", | |
| path = "C:/tools/msys64/mingw64/bin/objcopy", | |
| ), | |
| tool_path( | |
| name = "objdump", | |
| path = "C:/tools/msys64/mingw64/bin/objdump", | |
| ), | |
| tool_path( | |
| name = "strip", | |
| path = "C:/tools/msys64/mingw64/bin/strip", | |
| ), | |
| ] | |
| elif (ctx.attr.cpu == "armeabi-v7a"): | |
| tool_paths = [ | |
| tool_path(name = "ar", path = "/bin/false"), | |
| tool_path(name = "compat-ld", path = "/bin/false"), | |
| tool_path(name = "cpp", path = "/bin/false"), | |
| tool_path(name = "dwp", path = "/bin/false"), | |
| tool_path(name = "gcc", path = "/bin/false"), | |
| tool_path(name = "gcov", path = "/bin/false"), | |
| tool_path(name = "ld", path = "/bin/false"), | |
| tool_path(name = "nm", path = "/bin/false"), | |
| tool_path(name = "objcopy", path = "/bin/false"), | |
| tool_path(name = "objdump", path = "/bin/false"), | |
| tool_path(name = "strip", path = "/bin/false"), | |
| ] | |
| elif (ctx.attr.cpu == "freebsd"): | |
| tool_paths = [ | |
| tool_path(name = "ar", path = "/usr/bin/ar"), | |
| tool_path(name = "compat-ld", path = "/usr/bin/ld"), | |
| tool_path(name = "cpp", path = "/usr/bin/cpp"), | |
| tool_path(name = "dwp", path = "/usr/bin/dwp"), | |
| tool_path(name = "gcc", path = "/usr/bin/clang"), | |
| tool_path(name = "gcov", path = "/usr/bin/gcov"), | |
| tool_path(name = "ld", path = "/usr/bin/ld"), | |
| tool_path(name = "nm", path = "/usr/bin/nm"), | |
| tool_path(name = "objcopy", path = "/usr/bin/objcopy"), | |
| tool_path(name = "objdump", path = "/usr/bin/objdump"), | |
| tool_path(name = "strip", path = "/usr/bin/strip"), | |
| ] | |
| elif (ctx.attr.cpu == "openbsd"): | |
| tool_paths = [ | |
| tool_path(name = "ar", path = "/usr/bin/ar"), | |
| tool_path(name = "compat-ld", path = "/usr/bin/ld"), | |
| tool_path(name = "cpp", path = "/usr/bin/cpp"), | |
| tool_path(name = "dwp", path = "/usr/bin/false"), | |
| tool_path(name = "gcc", path = "/usr/bin/clang"), | |
| tool_path(name = "gcov", path = "/usr/bin/gcov"), | |
| tool_path(name = "ld", path = "/usr/bin/ld"), | |
| tool_path(name = "nm", path = "/usr/bin/nm"), | |
| tool_path(name = "objcopy", path = "/usr/bin/objcopy"), | |
| tool_path(name = "objdump", path = "/usr/bin/objdump"), | |
| tool_path(name = "strip", path = "/usr/bin/strip"), | |
| ] | |
| elif (ctx.attr.cpu == "local"): | |
| tool_paths = [ | |
| tool_path(name = "ar", path = "/usr/bin/ar"), | |
| tool_path(name = "compat-ld", path = "/usr/bin/ld"), | |
| tool_path(name = "cpp", path = "/usr/bin/cpp"), | |
| tool_path(name = "dwp", path = "/usr/bin/dwp"), | |
| tool_path(name = "gcc", path = "/usr/bin/gcc"), | |
| tool_path(name = "gcov", path = "/usr/bin/gcov"), | |
| tool_path(name = "ld", path = "/usr/bin/ld"), | |
| tool_path(name = "nm", path = "/usr/bin/nm"), | |
| tool_path(name = "objcopy", path = "/usr/bin/objcopy"), | |
| tool_path(name = "objdump", path = "/usr/bin/objdump"), | |
| tool_path(name = "strip", path = "/usr/bin/strip"), | |
| ] | |
| elif (ctx.attr.cpu == "darwin"): | |
| tool_paths = [ | |
| tool_path(name = "ar", path = "/usr/bin/libtool"), | |
| tool_path(name = "compat-ld", path = "/usr/bin/ld"), | |
| tool_path(name = "cpp", path = "/usr/bin/cpp"), | |
| tool_path(name = "dwp", path = "/usr/bin/dwp"), | |
| tool_path(name = "gcc", path = "osx_cc_wrapper.sh"), | |
| tool_path(name = "gcov", path = "/usr/bin/gcov"), | |
| tool_path(name = "ld", path = "/usr/bin/ld"), | |
| tool_path(name = "nm", path = "/usr/bin/nm"), | |
| tool_path(name = "objcopy", path = "/usr/bin/objcopy"), | |
| tool_path(name = "objdump", path = "/usr/bin/objdump"), | |
| tool_path(name = "strip", path = "/usr/bin/strip"), | |
| ] | |
| elif (ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_clang"): | |
| tool_paths = [ | |
| tool_path(name = "ar", path = "C:/mingw/bin/ar"), | |
| tool_path( | |
| name = "compat-ld", | |
| path = "C:/Program Files (x86)/LLVM/bin/ld", | |
| ), | |
| tool_path( | |
| name = "cpp", | |
| path = "C:/Program Files (x86)/LLVM/bin/cpp", | |
| ), | |
| tool_path( | |
| name = "dwp", | |
| path = "C:/Program Files (x86)/LLVM/bin/dwp", | |
| ), | |
| tool_path( | |
| name = "gcc", | |
| path = "C:/Program Files (x86)/LLVM/bin/clang", | |
| ), | |
| tool_path( | |
| name = "gcov", | |
| path = "C:/Program Files (x86)/LLVM/bin/gcov", | |
| ), | |
| tool_path( | |
| name = "ld", | |
| path = "C:/Program Files (x86)/LLVM/bin/ld", | |
| ), | |
| tool_path( | |
| name = "nm", | |
| path = "C:/Program Files (x86)/LLVM/bin/nm", | |
| ), | |
| tool_path( | |
| name = "objcopy", | |
| path = "C:/Program Files (x86)/LLVM/bin/objcopy", | |
| ), | |
| tool_path( | |
| name = "objdump", | |
| path = "C:/Program Files (x86)/LLVM/bin/objdump", | |
| ), | |
| tool_path( | |
| name = "strip", | |
| path = "C:/Program Files (x86)/LLVM/bin/strip", | |
| ), | |
| ] | |
| elif (ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_mingw"): | |
| tool_paths = [ | |
| tool_path(name = "ar", path = "C:/mingw/bin/ar"), | |
| tool_path(name = "compat-ld", path = "C:/mingw/bin/ld"), | |
| tool_path(name = "cpp", path = "C:/mingw/bin/cpp"), | |
| tool_path(name = "dwp", path = "C:/mingw/bin/dwp"), | |
| tool_path(name = "gcc", path = "C:/mingw/bin/gcc"), | |
| tool_path(name = "gcov", path = "C:/mingw/bin/gcov"), | |
| tool_path(name = "ld", path = "C:/mingw/bin/ld"), | |
| tool_path(name = "nm", path = "C:/mingw/bin/nm"), | |
| tool_path(name = "objcopy", path = "C:/mingw/bin/objcopy"), | |
| tool_path(name = "objdump", path = "C:/mingw/bin/objdump"), | |
| tool_path(name = "strip", path = "C:/mingw/bin/strip"), | |
| ] | |
| elif (ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "windows_msys64"): | |
| tool_paths = [ | |
| tool_path(name = "ar", path = "C:/tools/msys64/usr/bin/ar"), | |
| tool_path( | |
| name = "compat-ld", | |
| path = "C:/tools/msys64/usr/bin/ld", | |
| ), | |
| tool_path( | |
| name = "cpp", | |
| path = "C:/tools/msys64/usr/bin/cpp", | |
| ), | |
| tool_path( | |
| name = "dwp", | |
| path = "C:/tools/msys64/usr/bin/dwp", | |
| ), | |
| tool_path( | |
| name = "gcc", | |
| path = "C:/tools/msys64/usr/bin/gcc", | |
| ), | |
| tool_path( | |
| name = "gcov", | |
| path = "C:/tools/msys64/usr/bin/gcov", | |
| ), | |
| tool_path(name = "ld", path = "C:/tools/msys64/usr/bin/ld"), | |
| tool_path(name = "nm", path = "C:/tools/msys64/usr/bin/nm"), | |
| tool_path( | |
| name = "objcopy", | |
| path = "C:/tools/msys64/usr/bin/objcopy", | |
| ), | |
| tool_path( | |
| name = "objdump", | |
| path = "C:/tools/msys64/usr/bin/objdump", | |
| ), | |
| tool_path( | |
| name = "strip", | |
| path = "C:/tools/msys64/usr/bin/strip", | |
| ), | |
| ] | |
| elif (ctx.attr.cpu == "x64_windows_msvc"): | |
| tool_paths = [ | |
| tool_path(name = "ar", path = "wrapper/bin/msvc_link.bat"), | |
| tool_path(name = "cpp", path = "wrapper/bin/msvc_cl.bat"), | |
| tool_path(name = "gcc", path = "wrapper/bin/msvc_cl.bat"), | |
| tool_path(name = "gcov", path = "wrapper/bin/msvc_nop.bat"), | |
| tool_path(name = "ld", path = "wrapper/bin/msvc_link.bat"), | |
| 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", | |
| ), | |
| ] | |
| 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 = 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 = make_variables, | |
| builtin_sysroot = builtin_sysroot, | |
| cc_target_os = cc_target_os, | |
| ), | |
| DefaultInfo( | |
| executable = out, | |
| ), | |
| ] | |
| cc_toolchain_config = rule( | |
| implementation = _impl, | |
| attrs = { | |
| "cpu": attr.string(mandatory = True), | |
| "compiler": attr.string(), | |
| "disable_static_cc_toolchains": attr.bool(), | |
| }, | |
| provides = [CcToolchainConfigInfo], | |
| executable = True, | |
| ) |