github.com/johnnyeven/libtools@v0.0.0-20191126065708-61829c1adf46/third_party/toolchains/preconfig/ubuntu16.04/clang/cc_toolchain_config.bzl (about) 1 # Copyright 2019 The Bazel Authors. All rights reserved. 2 # 3 # Licensed under the Apache License, Version 2.0 (the "License"); 4 # you may not use this file except in compliance with the License. 5 # You may obtain a copy of the License at 6 # 7 # http://www.apache.org/licenses/LICENSE-2.0 8 # 9 # Unless required by applicable law or agreed to in writing, software 10 # distributed under the License is distributed on an "AS IS" BASIS, 11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 # See the License for the specific language governing permissions and 13 # limitations under the License. 14 15 """A Starlark cc_toolchain configuration rule""" 16 17 load( 18 "@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl", 19 "action_config", 20 "artifact_name_pattern", 21 "env_entry", 22 "env_set", 23 "feature", 24 "feature_set", 25 "flag_group", 26 "flag_set", 27 "tool", 28 "tool_path", 29 "variable_with_value", 30 "with_feature_set", 31 ) 32 load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES") 33 34 all_compile_actions = [ 35 ACTION_NAMES.c_compile, 36 ACTION_NAMES.cpp_compile, 37 ACTION_NAMES.linkstamp_compile, 38 ACTION_NAMES.assemble, 39 ACTION_NAMES.preprocess_assemble, 40 ACTION_NAMES.cpp_header_parsing, 41 ACTION_NAMES.cpp_module_compile, 42 ACTION_NAMES.cpp_module_codegen, 43 ACTION_NAMES.clif_match, 44 ACTION_NAMES.lto_backend, 45 ] 46 47 all_cpp_compile_actions = [ 48 ACTION_NAMES.cpp_compile, 49 ACTION_NAMES.linkstamp_compile, 50 ACTION_NAMES.cpp_header_parsing, 51 ACTION_NAMES.cpp_module_compile, 52 ACTION_NAMES.cpp_module_codegen, 53 ACTION_NAMES.clif_match, 54 ] 55 56 preprocessor_compile_actions = [ 57 ACTION_NAMES.c_compile, 58 ACTION_NAMES.cpp_compile, 59 ACTION_NAMES.linkstamp_compile, 60 ACTION_NAMES.preprocess_assemble, 61 ACTION_NAMES.cpp_header_parsing, 62 ACTION_NAMES.cpp_module_compile, 63 ACTION_NAMES.clif_match, 64 ] 65 66 codegen_compile_actions = [ 67 ACTION_NAMES.c_compile, 68 ACTION_NAMES.cpp_compile, 69 ACTION_NAMES.linkstamp_compile, 70 ACTION_NAMES.assemble, 71 ACTION_NAMES.preprocess_assemble, 72 ACTION_NAMES.cpp_module_codegen, 73 ACTION_NAMES.lto_backend, 74 ] 75 76 all_link_actions = [ 77 ACTION_NAMES.cpp_link_executable, 78 ACTION_NAMES.cpp_link_dynamic_library, 79 ACTION_NAMES.cpp_link_nodeps_dynamic_library, 80 ] 81 82 def _windows_msvc_impl(ctx): 83 toolchain_identifier = "msvc_x64" 84 host_system_name = "local" 85 target_system_name = "local" 86 target_cpu = "x64_windows" 87 target_libc = "msvcrt" 88 compiler = "msvc-cl" 89 abi_version = "local" 90 abi_libc_version = "local" 91 cc_target_os = None 92 builtin_sysroot = None 93 94 cxx_builtin_include_directories = [ 95 "/usr/local/include", 96 "/usr/local/lib/clang/7.0.0/include", 97 "/usr/include/x86_64-linux-gnu", 98 "/usr/include", 99 "/usr/include/c++/4.9", 100 "/usr/include/x86_64-linux-gnu/c++/4.9", 101 "/usr/include/c++/4.9/backward", 102 ] 103 104 cpp_link_nodeps_dynamic_library_action = action_config( 105 action_name = ACTION_NAMES.cpp_link_nodeps_dynamic_library, 106 implies = [ 107 "nologo", 108 "shared_flag", 109 "linkstamps", 110 "output_execpath_flags", 111 "input_param_flags", 112 "user_link_flags", 113 "default_link_flags", 114 "linker_subsystem_flag", 115 "linker_param_file", 116 "msvc_env", 117 "no_stripping", 118 "has_configured_linker_path", 119 "def_file", 120 ], 121 tools = [tool(path = "")], 122 ) 123 124 cpp_link_static_library_action = action_config( 125 action_name = ACTION_NAMES.cpp_link_static_library, 126 implies = [ 127 "nologo", 128 "archiver_flags", 129 "input_param_flags", 130 "linker_param_file", 131 "msvc_env", 132 ], 133 tools = [tool(path = "")], 134 ) 135 136 assemble_action = action_config( 137 action_name = ACTION_NAMES.assemble, 138 implies = [ 139 "compiler_input_flags", 140 "compiler_output_flags", 141 "nologo", 142 "msvc_env", 143 "sysroot", 144 ], 145 tools = [tool(path = "")], 146 ) 147 148 preprocess_assemble_action = action_config( 149 action_name = ACTION_NAMES.preprocess_assemble, 150 implies = [ 151 "compiler_input_flags", 152 "compiler_output_flags", 153 "nologo", 154 "msvc_env", 155 "sysroot", 156 ], 157 tools = [tool(path = "")], 158 ) 159 160 c_compile_action = action_config( 161 action_name = ACTION_NAMES.c_compile, 162 implies = [ 163 "compiler_input_flags", 164 "compiler_output_flags", 165 "default_compile_flags", 166 "nologo", 167 "msvc_env", 168 "parse_showincludes", 169 "user_compile_flags", 170 "sysroot", 171 "unfiltered_compile_flags", 172 ], 173 tools = [tool(path = "")], 174 ) 175 176 cpp_compile_action = action_config( 177 action_name = ACTION_NAMES.cpp_compile, 178 implies = [ 179 "compiler_input_flags", 180 "compiler_output_flags", 181 "default_compile_flags", 182 "nologo", 183 "msvc_env", 184 "parse_showincludes", 185 "user_compile_flags", 186 "sysroot", 187 "unfiltered_compile_flags", 188 ], 189 tools = [tool(path = "")], 190 ) 191 192 cpp_link_executable_action = action_config( 193 action_name = ACTION_NAMES.cpp_link_executable, 194 implies = [ 195 "nologo", 196 "linkstamps", 197 "output_execpath_flags", 198 "input_param_flags", 199 "user_link_flags", 200 "default_link_flags", 201 "linker_subsystem_flag", 202 "linker_param_file", 203 "msvc_env", 204 "no_stripping", 205 ], 206 tools = [tool(path = "")], 207 ) 208 209 cpp_link_dynamic_library_action = action_config( 210 action_name = ACTION_NAMES.cpp_link_dynamic_library, 211 implies = [ 212 "nologo", 213 "shared_flag", 214 "linkstamps", 215 "output_execpath_flags", 216 "input_param_flags", 217 "user_link_flags", 218 "default_link_flags", 219 "linker_subsystem_flag", 220 "linker_param_file", 221 "msvc_env", 222 "no_stripping", 223 "has_configured_linker_path", 224 "def_file", 225 ], 226 tools = [tool(path = "")], 227 ) 228 229 action_configs = [ 230 assemble_action, 231 preprocess_assemble_action, 232 c_compile_action, 233 cpp_compile_action, 234 cpp_link_executable_action, 235 cpp_link_dynamic_library_action, 236 cpp_link_nodeps_dynamic_library_action, 237 cpp_link_static_library_action, 238 ] 239 240 msvc_link_env_feature = feature( 241 name = "msvc_link_env", 242 env_sets = [ 243 env_set( 244 actions = all_link_actions + 245 [ACTION_NAMES.cpp_link_static_library], 246 env_entries = [env_entry(key = "LIB", value = "")], 247 ), 248 ], 249 ) 250 251 shared_flag_feature = feature( 252 name = "shared_flag", 253 flag_sets = [ 254 flag_set( 255 actions = [ 256 ACTION_NAMES.cpp_link_dynamic_library, 257 ACTION_NAMES.cpp_link_nodeps_dynamic_library, 258 ], 259 flag_groups = [flag_group(flags = ["/DLL"])], 260 ), 261 ], 262 ) 263 264 determinism_feature = feature( 265 name = "determinism", 266 enabled = True, 267 flag_sets = [ 268 flag_set( 269 actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile], 270 flag_groups = [ 271 flag_group( 272 flags = [ 273 "/wd4117", 274 "-D__DATE__=\"redacted\"", 275 "-D__TIMESTAMP__=\"redacted\"", 276 "-D__TIME__=\"redacted\"", 277 ], 278 ), 279 ], 280 ), 281 ], 282 ) 283 284 sysroot_feature = feature( 285 name = "sysroot", 286 flag_sets = [ 287 flag_set( 288 actions = [ 289 ACTION_NAMES.assemble, 290 ACTION_NAMES.preprocess_assemble, 291 ACTION_NAMES.c_compile, 292 ACTION_NAMES.cpp_compile, 293 ACTION_NAMES.cpp_header_parsing, 294 ACTION_NAMES.cpp_module_compile, 295 ACTION_NAMES.cpp_module_codegen, 296 ACTION_NAMES.cpp_link_executable, 297 ACTION_NAMES.cpp_link_dynamic_library, 298 ACTION_NAMES.cpp_link_nodeps_dynamic_library, 299 ], 300 flag_groups = [ 301 flag_group( 302 flags = ["--sysroot=%{sysroot}"], 303 iterate_over = "sysroot", 304 expand_if_available = "sysroot", 305 ), 306 ], 307 ), 308 ], 309 ) 310 311 unfiltered_compile_flags_feature = feature( 312 name = "unfiltered_compile_flags", 313 flag_sets = [ 314 flag_set( 315 actions = [ 316 ACTION_NAMES.preprocess_assemble, 317 ACTION_NAMES.c_compile, 318 ACTION_NAMES.cpp_compile, 319 ACTION_NAMES.cpp_header_parsing, 320 ACTION_NAMES.cpp_module_compile, 321 ACTION_NAMES.cpp_module_codegen, 322 ], 323 flag_groups = [ 324 flag_group( 325 flags = ["%{unfiltered_compile_flags}"], 326 iterate_over = "unfiltered_compile_flags", 327 expand_if_available = "unfiltered_compile_flags", 328 ), 329 ], 330 ), 331 ], 332 ) 333 334 copy_dynamic_libraries_to_binary_feature = feature(name = "copy_dynamic_libraries_to_binary") 335 336 input_param_flags_feature = feature( 337 name = "input_param_flags", 338 flag_sets = [ 339 flag_set( 340 actions = [ 341 ACTION_NAMES.cpp_link_dynamic_library, 342 ACTION_NAMES.cpp_link_nodeps_dynamic_library, 343 ], 344 flag_groups = [ 345 flag_group( 346 flags = ["/IMPLIB:%{interface_library_output_path}"], 347 expand_if_available = "interface_library_output_path", 348 ), 349 ], 350 ), 351 flag_set( 352 actions = all_link_actions, 353 flag_groups = [ 354 flag_group( 355 flags = ["%{libopts}"], 356 iterate_over = "libopts", 357 expand_if_available = "libopts", 358 ), 359 ], 360 ), 361 flag_set( 362 actions = all_link_actions + 363 [ACTION_NAMES.cpp_link_static_library], 364 flag_groups = [ 365 flag_group( 366 iterate_over = "libraries_to_link", 367 flag_groups = [ 368 flag_group( 369 iterate_over = "libraries_to_link.object_files", 370 flag_groups = [flag_group(flags = ["%{libraries_to_link.object_files}"])], 371 expand_if_equal = variable_with_value( 372 name = "libraries_to_link.type", 373 value = "object_file_group", 374 ), 375 ), 376 flag_group( 377 flag_groups = [flag_group(flags = ["%{libraries_to_link.name}"])], 378 expand_if_equal = variable_with_value( 379 name = "libraries_to_link.type", 380 value = "object_file", 381 ), 382 ), 383 flag_group( 384 flag_groups = [flag_group(flags = ["%{libraries_to_link.name}"])], 385 expand_if_equal = variable_with_value( 386 name = "libraries_to_link.type", 387 value = "interface_library", 388 ), 389 ), 390 flag_group( 391 flag_groups = [ 392 flag_group( 393 flags = ["%{libraries_to_link.name}"], 394 expand_if_false = "libraries_to_link.is_whole_archive", 395 ), 396 flag_group( 397 flags = ["/WHOLEARCHIVE:%{libraries_to_link.name}"], 398 expand_if_true = "libraries_to_link.is_whole_archive", 399 ), 400 ], 401 expand_if_equal = variable_with_value( 402 name = "libraries_to_link.type", 403 value = "static_library", 404 ), 405 ), 406 ], 407 expand_if_available = "libraries_to_link", 408 ), 409 ], 410 ), 411 ], 412 ) 413 414 fastbuild_feature = feature( 415 name = "fastbuild", 416 flag_sets = [ 417 flag_set( 418 actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile], 419 flag_groups = [flag_group(flags = ["/Od", "/Z7"])], 420 ), 421 flag_set( 422 actions = all_link_actions, 423 flag_groups = [ 424 flag_group( 425 flags = ["", "/INCREMENTAL:NO"], 426 ), 427 ], 428 ), 429 ], 430 implies = ["generate_pdb_file"], 431 ) 432 433 user_compile_flags_feature = feature( 434 name = "user_compile_flags", 435 flag_sets = [ 436 flag_set( 437 actions = [ 438 ACTION_NAMES.preprocess_assemble, 439 ACTION_NAMES.c_compile, 440 ACTION_NAMES.cpp_compile, 441 ACTION_NAMES.cpp_header_parsing, 442 ACTION_NAMES.cpp_module_compile, 443 ACTION_NAMES.cpp_module_codegen, 444 ], 445 flag_groups = [ 446 flag_group( 447 flags = ["%{user_compile_flags}"], 448 iterate_over = "user_compile_flags", 449 expand_if_available = "user_compile_flags", 450 ), 451 ], 452 ), 453 ], 454 ) 455 456 archiver_flags_feature = feature( 457 name = "archiver_flags", 458 flag_sets = [ 459 flag_set( 460 actions = [ACTION_NAMES.cpp_link_static_library], 461 flag_groups = [ 462 flag_group( 463 flags = ["/OUT:%{output_execpath}"], 464 expand_if_available = "output_execpath", 465 ), 466 ], 467 ), 468 ], 469 ) 470 471 default_link_flags_feature = feature( 472 name = "default_link_flags", 473 enabled = True, 474 flag_sets = [ 475 flag_set( 476 actions = all_link_actions, 477 flag_groups = [flag_group(flags = ["/MACHINE:X64"])], 478 ), 479 ], 480 ) 481 482 static_link_msvcrt_feature = feature(name = "static_link_msvcrt") 483 484 dynamic_link_msvcrt_debug_feature = feature( 485 name = "dynamic_link_msvcrt_debug", 486 flag_sets = [ 487 flag_set( 488 actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile], 489 flag_groups = [flag_group(flags = ["/MDd"])], 490 ), 491 flag_set( 492 actions = all_link_actions, 493 flag_groups = [flag_group(flags = ["/DEFAULTLIB:msvcrtd.lib"])], 494 ), 495 ], 496 requires = [feature_set(features = ["dbg"])], 497 ) 498 499 dbg_feature = feature( 500 name = "dbg", 501 flag_sets = [ 502 flag_set( 503 actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile], 504 flag_groups = [flag_group(flags = ["/Od", "/Z7"])], 505 ), 506 flag_set( 507 actions = all_link_actions, 508 flag_groups = [ 509 flag_group( 510 flags = ["", "/INCREMENTAL:NO"], 511 ), 512 ], 513 ), 514 ], 515 implies = ["generate_pdb_file"], 516 ) 517 518 opt_feature = feature( 519 name = "opt", 520 flag_sets = [ 521 flag_set( 522 actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile], 523 flag_groups = [flag_group(flags = ["/O2"])], 524 ), 525 ], 526 implies = ["frame_pointer"], 527 ) 528 529 supports_interface_shared_libraries_feature = feature( 530 name = "supports_interface_shared_libraries", 531 enabled = True, 532 ) 533 534 user_link_flags_feature = feature( 535 name = "user_link_flags", 536 flag_sets = [ 537 flag_set( 538 actions = all_link_actions, 539 flag_groups = [ 540 flag_group( 541 flags = ["%{user_link_flags}"], 542 iterate_over = "user_link_flags", 543 expand_if_available = "user_link_flags", 544 ), 545 ], 546 ), 547 ], 548 ) 549 550 default_compile_flags_feature = feature( 551 name = "default_compile_flags", 552 enabled = True, 553 flag_sets = [ 554 flag_set( 555 actions = [ 556 ACTION_NAMES.assemble, 557 ACTION_NAMES.preprocess_assemble, 558 ACTION_NAMES.linkstamp_compile, 559 ACTION_NAMES.c_compile, 560 ACTION_NAMES.cpp_compile, 561 ACTION_NAMES.cpp_header_parsing, 562 ACTION_NAMES.cpp_module_compile, 563 ACTION_NAMES.cpp_module_codegen, 564 ACTION_NAMES.lto_backend, 565 ACTION_NAMES.clif_match, 566 ], 567 flag_groups = [ 568 flag_group( 569 flags = [ 570 "/DCOMPILER_MSVC", 571 "/DNOMINMAX", 572 "/D_WIN32_WINNT=0x0601", 573 "/D_CRT_SECURE_NO_DEPRECATE", 574 "/D_CRT_SECURE_NO_WARNINGS", 575 "/bigobj", 576 "/Zm500", 577 "/EHsc", 578 "/wd4351", 579 "/wd4291", 580 "/wd4250", 581 "/wd4996", 582 ], 583 ), 584 ], 585 ), 586 ], 587 ) 588 589 msvc_compile_env_feature = feature( 590 name = "msvc_compile_env", 591 env_sets = [ 592 env_set( 593 actions = [ 594 ACTION_NAMES.c_compile, 595 ACTION_NAMES.cpp_compile, 596 ACTION_NAMES.cpp_module_compile, 597 ACTION_NAMES.cpp_module_codegen, 598 ACTION_NAMES.cpp_header_parsing, 599 ACTION_NAMES.assemble, 600 ACTION_NAMES.preprocess_assemble, 601 ], 602 env_entries = [env_entry(key = "INCLUDE", value = "")], 603 ), 604 ], 605 ) 606 607 preprocessor_defines_feature = feature( 608 name = "preprocessor_defines", 609 enabled = True, 610 flag_sets = [ 611 flag_set( 612 actions = [ 613 ACTION_NAMES.assemble, 614 ACTION_NAMES.preprocess_assemble, 615 ACTION_NAMES.c_compile, 616 ACTION_NAMES.cpp_compile, 617 ACTION_NAMES.cpp_header_parsing, 618 ACTION_NAMES.cpp_module_compile, 619 ], 620 flag_groups = [ 621 flag_group( 622 flags = ["/D%{preprocessor_defines}"], 623 iterate_over = "preprocessor_defines", 624 ), 625 ], 626 ), 627 ], 628 ) 629 630 generate_pdb_file_feature = feature( 631 name = "generate_pdb_file", 632 requires = [ 633 feature_set(features = ["dbg"]), 634 feature_set(features = ["fastbuild"]), 635 ], 636 ) 637 638 output_execpath_flags_feature = feature( 639 name = "output_execpath_flags", 640 flag_sets = [ 641 flag_set( 642 actions = all_link_actions, 643 flag_groups = [ 644 flag_group( 645 flags = ["/OUT:%{output_execpath}"], 646 expand_if_available = "output_execpath", 647 ), 648 ], 649 ), 650 ], 651 ) 652 653 dynamic_link_msvcrt_no_debug_feature = feature( 654 name = "dynamic_link_msvcrt_no_debug", 655 flag_sets = [ 656 flag_set( 657 actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile], 658 flag_groups = [flag_group(flags = ["/MD"])], 659 ), 660 flag_set( 661 actions = all_link_actions, 662 flag_groups = [flag_group(flags = ["/DEFAULTLIB:msvcrt.lib"])], 663 ), 664 ], 665 requires = [ 666 feature_set(features = ["fastbuild"]), 667 feature_set(features = ["opt"]), 668 ], 669 ) 670 671 disable_assertions_feature = feature( 672 name = "disable_assertions", 673 enabled = True, 674 flag_sets = [ 675 flag_set( 676 actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile], 677 flag_groups = [flag_group(flags = ["/DNDEBUG"])], 678 with_features = [with_feature_set(features = ["opt"])], 679 ), 680 ], 681 ) 682 683 has_configured_linker_path_feature = feature(name = "has_configured_linker_path") 684 685 supports_dynamic_linker_feature = feature(name = "supports_dynamic_linker", enabled = True) 686 687 no_stripping_feature = feature(name = "no_stripping") 688 689 linker_param_file_feature = feature( 690 name = "linker_param_file", 691 flag_sets = [ 692 flag_set( 693 actions = all_link_actions + 694 [ACTION_NAMES.cpp_link_static_library], 695 flag_groups = [ 696 flag_group( 697 flags = ["@%{linker_param_file}"], 698 expand_if_available = "linker_param_file", 699 ), 700 ], 701 ), 702 ], 703 ) 704 705 ignore_noisy_warnings_feature = feature( 706 name = "ignore_noisy_warnings", 707 enabled = True, 708 flag_sets = [ 709 flag_set( 710 actions = [ACTION_NAMES.cpp_link_static_library], 711 flag_groups = [flag_group(flags = ["/ignore:4221"])], 712 ), 713 ], 714 ) 715 716 no_legacy_features_feature = feature(name = "no_legacy_features") 717 718 parse_showincludes_feature = feature( 719 name = "parse_showincludes", 720 flag_sets = [ 721 flag_set( 722 actions = [ 723 ACTION_NAMES.preprocess_assemble, 724 ACTION_NAMES.c_compile, 725 ACTION_NAMES.cpp_compile, 726 ACTION_NAMES.cpp_module_compile, 727 ACTION_NAMES.cpp_header_parsing, 728 ], 729 flag_groups = [flag_group(flags = ["/showIncludes"])], 730 ), 731 ], 732 ) 733 734 static_link_msvcrt_no_debug_feature = feature( 735 name = "static_link_msvcrt_no_debug", 736 flag_sets = [ 737 flag_set( 738 actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile], 739 flag_groups = [flag_group(flags = ["/MT"])], 740 ), 741 flag_set( 742 actions = all_link_actions, 743 flag_groups = [flag_group(flags = ["/DEFAULTLIB:libcmt.lib"])], 744 ), 745 ], 746 requires = [ 747 feature_set(features = ["fastbuild"]), 748 feature_set(features = ["opt"]), 749 ], 750 ) 751 752 treat_warnings_as_errors_feature = feature( 753 name = "treat_warnings_as_errors", 754 flag_sets = [ 755 flag_set( 756 actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile], 757 flag_groups = [flag_group(flags = ["/WX"])], 758 ), 759 ], 760 ) 761 762 windows_export_all_symbols_feature = feature(name = "windows_export_all_symbols") 763 764 no_windows_export_all_symbols_feature = feature(name = "no_windows_export_all_symbols") 765 766 include_paths_feature = feature( 767 name = "include_paths", 768 enabled = True, 769 flag_sets = [ 770 flag_set( 771 actions = [ 772 ACTION_NAMES.assemble, 773 ACTION_NAMES.preprocess_assemble, 774 ACTION_NAMES.c_compile, 775 ACTION_NAMES.cpp_compile, 776 ACTION_NAMES.cpp_header_parsing, 777 ACTION_NAMES.cpp_module_compile, 778 ], 779 flag_groups = [ 780 flag_group( 781 flags = ["/I%{quote_include_paths}"], 782 iterate_over = "quote_include_paths", 783 ), 784 flag_group( 785 flags = ["/I%{include_paths}"], 786 iterate_over = "include_paths", 787 ), 788 flag_group( 789 flags = ["/I%{system_include_paths}"], 790 iterate_over = "system_include_paths", 791 ), 792 ], 793 ), 794 ], 795 ) 796 797 linkstamps_feature = feature( 798 name = "linkstamps", 799 flag_sets = [ 800 flag_set( 801 actions = all_link_actions, 802 flag_groups = [ 803 flag_group( 804 flags = ["%{linkstamp_paths}"], 805 iterate_over = "linkstamp_paths", 806 expand_if_available = "linkstamp_paths", 807 ), 808 ], 809 ), 810 ], 811 ) 812 813 targets_windows_feature = feature( 814 name = "targets_windows", 815 enabled = True, 816 implies = ["copy_dynamic_libraries_to_binary"], 817 ) 818 819 linker_subsystem_flag_feature = feature( 820 name = "linker_subsystem_flag", 821 flag_sets = [ 822 flag_set( 823 actions = all_link_actions, 824 flag_groups = [flag_group(flags = ["/SUBSYSTEM:CONSOLE"])], 825 ), 826 ], 827 ) 828 829 static_link_msvcrt_debug_feature = feature( 830 name = "static_link_msvcrt_debug", 831 flag_sets = [ 832 flag_set( 833 actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile], 834 flag_groups = [flag_group(flags = ["/MTd"])], 835 ), 836 flag_set( 837 actions = all_link_actions, 838 flag_groups = [flag_group(flags = ["/DEFAULTLIB:libcmtd.lib"])], 839 ), 840 ], 841 requires = [feature_set(features = ["dbg"])], 842 ) 843 844 frame_pointer_feature = feature( 845 name = "frame_pointer", 846 flag_sets = [ 847 flag_set( 848 actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile], 849 flag_groups = [flag_group(flags = ["/Oy-"])], 850 ), 851 ], 852 ) 853 854 compiler_output_flags_feature = feature( 855 name = "compiler_output_flags", 856 flag_sets = [ 857 flag_set( 858 actions = [ACTION_NAMES.assemble], 859 flag_groups = [ 860 flag_group( 861 flag_groups = [ 862 flag_group( 863 flags = ["/Fo%{output_file}", "/Zi"], 864 expand_if_available = "output_file", 865 expand_if_not_available = "output_assembly_file", 866 ), 867 ], 868 expand_if_not_available = "output_preprocess_file", 869 ), 870 ], 871 ), 872 flag_set( 873 actions = [ 874 ACTION_NAMES.preprocess_assemble, 875 ACTION_NAMES.c_compile, 876 ACTION_NAMES.cpp_compile, 877 ACTION_NAMES.cpp_header_parsing, 878 ACTION_NAMES.cpp_module_compile, 879 ACTION_NAMES.cpp_module_codegen, 880 ], 881 flag_groups = [ 882 flag_group( 883 flag_groups = [ 884 flag_group( 885 flags = ["/Fo%{output_file}"], 886 expand_if_not_available = "output_preprocess_file", 887 ), 888 ], 889 expand_if_available = "output_file", 890 expand_if_not_available = "output_assembly_file", 891 ), 892 flag_group( 893 flag_groups = [ 894 flag_group( 895 flags = ["/Fa%{output_file}"], 896 expand_if_available = "output_assembly_file", 897 ), 898 ], 899 expand_if_available = "output_file", 900 ), 901 flag_group( 902 flag_groups = [ 903 flag_group( 904 flags = ["/P", "/Fi%{output_file}"], 905 expand_if_available = "output_preprocess_file", 906 ), 907 ], 908 expand_if_available = "output_file", 909 ), 910 ], 911 ), 912 ], 913 ) 914 915 nologo_feature = feature( 916 name = "nologo", 917 flag_sets = [ 918 flag_set( 919 actions = [ 920 ACTION_NAMES.c_compile, 921 ACTION_NAMES.cpp_compile, 922 ACTION_NAMES.cpp_module_compile, 923 ACTION_NAMES.cpp_module_codegen, 924 ACTION_NAMES.cpp_header_parsing, 925 ACTION_NAMES.assemble, 926 ACTION_NAMES.preprocess_assemble, 927 ACTION_NAMES.cpp_link_executable, 928 ACTION_NAMES.cpp_link_dynamic_library, 929 ACTION_NAMES.cpp_link_nodeps_dynamic_library, 930 ACTION_NAMES.cpp_link_static_library, 931 ], 932 flag_groups = [flag_group(flags = ["/nologo"])], 933 ), 934 ], 935 ) 936 937 smaller_binary_feature = feature( 938 name = "smaller_binary", 939 enabled = True, 940 flag_sets = [ 941 flag_set( 942 actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile], 943 flag_groups = [flag_group(flags = ["/Gy", "/Gw"])], 944 with_features = [with_feature_set(features = ["opt"])], 945 ), 946 flag_set( 947 actions = all_link_actions, 948 flag_groups = [flag_group(flags = ["/OPT:ICF", "/OPT:REF"])], 949 with_features = [with_feature_set(features = ["opt"])], 950 ), 951 ], 952 ) 953 954 compiler_input_flags_feature = feature( 955 name = "compiler_input_flags", 956 flag_sets = [ 957 flag_set( 958 actions = [ 959 ACTION_NAMES.assemble, 960 ACTION_NAMES.preprocess_assemble, 961 ACTION_NAMES.c_compile, 962 ACTION_NAMES.cpp_compile, 963 ACTION_NAMES.cpp_header_parsing, 964 ACTION_NAMES.cpp_module_compile, 965 ACTION_NAMES.cpp_module_codegen, 966 ], 967 flag_groups = [ 968 flag_group( 969 flags = ["/c", "%{source_file}"], 970 expand_if_available = "source_file", 971 ), 972 ], 973 ), 974 ], 975 ) 976 977 def_file_feature = feature( 978 name = "def_file", 979 flag_sets = [ 980 flag_set( 981 actions = all_link_actions, 982 flag_groups = [ 983 flag_group( 984 flags = ["/DEF:%{def_file_path}", "/ignore:4070"], 985 expand_if_available = "def_file_path", 986 ), 987 ], 988 ), 989 ], 990 ) 991 992 msvc_env_feature = feature( 993 name = "msvc_env", 994 env_sets = [ 995 env_set( 996 actions = [ 997 ACTION_NAMES.c_compile, 998 ACTION_NAMES.cpp_compile, 999 ACTION_NAMES.cpp_module_compile, 1000 ACTION_NAMES.cpp_module_codegen, 1001 ACTION_NAMES.cpp_header_parsing, 1002 ACTION_NAMES.assemble, 1003 ACTION_NAMES.preprocess_assemble, 1004 ACTION_NAMES.cpp_link_executable, 1005 ACTION_NAMES.cpp_link_dynamic_library, 1006 ACTION_NAMES.cpp_link_nodeps_dynamic_library, 1007 ACTION_NAMES.cpp_link_static_library, 1008 ], 1009 env_entries = [ 1010 env_entry(key = "PATH", value = ""), 1011 env_entry(key = "TMP", value = ""), 1012 env_entry(key = "TEMP", value = ""), 1013 ], 1014 ), 1015 ], 1016 implies = ["msvc_compile_env", "msvc_link_env"], 1017 ) 1018 1019 features = [ 1020 no_legacy_features_feature, 1021 nologo_feature, 1022 has_configured_linker_path_feature, 1023 no_stripping_feature, 1024 targets_windows_feature, 1025 copy_dynamic_libraries_to_binary_feature, 1026 default_compile_flags_feature, 1027 msvc_env_feature, 1028 msvc_compile_env_feature, 1029 msvc_link_env_feature, 1030 include_paths_feature, 1031 preprocessor_defines_feature, 1032 parse_showincludes_feature, 1033 generate_pdb_file_feature, 1034 shared_flag_feature, 1035 linkstamps_feature, 1036 output_execpath_flags_feature, 1037 archiver_flags_feature, 1038 input_param_flags_feature, 1039 linker_subsystem_flag_feature, 1040 user_link_flags_feature, 1041 default_link_flags_feature, 1042 linker_param_file_feature, 1043 static_link_msvcrt_feature, 1044 static_link_msvcrt_no_debug_feature, 1045 dynamic_link_msvcrt_no_debug_feature, 1046 static_link_msvcrt_debug_feature, 1047 dynamic_link_msvcrt_debug_feature, 1048 dbg_feature, 1049 fastbuild_feature, 1050 opt_feature, 1051 frame_pointer_feature, 1052 disable_assertions_feature, 1053 determinism_feature, 1054 treat_warnings_as_errors_feature, 1055 smaller_binary_feature, 1056 ignore_noisy_warnings_feature, 1057 user_compile_flags_feature, 1058 sysroot_feature, 1059 unfiltered_compile_flags_feature, 1060 compiler_output_flags_feature, 1061 compiler_input_flags_feature, 1062 def_file_feature, 1063 windows_export_all_symbols_feature, 1064 no_windows_export_all_symbols_feature, 1065 supports_dynamic_linker_feature, 1066 supports_interface_shared_libraries_feature, 1067 ] 1068 1069 artifact_name_patterns = [ 1070 artifact_name_pattern( 1071 category_name = "object_file", 1072 prefix = "", 1073 extension = ".obj", 1074 ), 1075 artifact_name_pattern( 1076 category_name = "static_library", 1077 prefix = "", 1078 extension = ".lib", 1079 ), 1080 artifact_name_pattern( 1081 category_name = "alwayslink_static_library", 1082 prefix = "", 1083 extension = ".lo.lib", 1084 ), 1085 artifact_name_pattern( 1086 category_name = "executable", 1087 prefix = "", 1088 extension = ".exe", 1089 ), 1090 artifact_name_pattern( 1091 category_name = "dynamic_library", 1092 prefix = "", 1093 extension = ".dll", 1094 ), 1095 artifact_name_pattern( 1096 category_name = "interface_library", 1097 prefix = "", 1098 extension = ".if.lib", 1099 ), 1100 ] 1101 1102 make_variables = [] 1103 1104 tool_paths = [ 1105 tool_path(name = "ar", path = ""), 1106 tool_path(name = "ml", path = ""), 1107 tool_path(name = "cpp", path = ""), 1108 tool_path(name = "gcc", path = ""), 1109 tool_path(name = "gcov", path = "wrapper/bin/msvc_nop.bat"), 1110 tool_path(name = "ld", path = ""), 1111 tool_path(name = "nm", path = "wrapper/bin/msvc_nop.bat"), 1112 tool_path( 1113 name = "objcopy", 1114 path = "wrapper/bin/msvc_nop.bat", 1115 ), 1116 tool_path( 1117 name = "objdump", 1118 path = "wrapper/bin/msvc_nop.bat", 1119 ), 1120 tool_path( 1121 name = "strip", 1122 path = "wrapper/bin/msvc_nop.bat", 1123 ), 1124 ] 1125 1126 return cc_common.create_cc_toolchain_config_info( 1127 ctx = ctx, 1128 features = features, 1129 action_configs = action_configs, 1130 artifact_name_patterns = artifact_name_patterns, 1131 cxx_builtin_include_directories = cxx_builtin_include_directories, 1132 toolchain_identifier = toolchain_identifier, 1133 host_system_name = host_system_name, 1134 target_system_name = target_system_name, 1135 target_cpu = target_cpu, 1136 target_libc = target_libc, 1137 compiler = compiler, 1138 abi_version = abi_version, 1139 abi_libc_version = abi_libc_version, 1140 tool_paths = tool_paths, 1141 make_variables = make_variables, 1142 builtin_sysroot = builtin_sysroot, 1143 cc_target_os = None, 1144 ) 1145 1146 def _windows_msys_mingw_impl(ctx): 1147 toolchain_identifier = "msys_x64_mingw" 1148 host_system_name = "local" 1149 target_system_name = "local" 1150 target_cpu = "x64_windows" 1151 target_libc = "mingw" 1152 compiler = "mingw-gcc" 1153 abi_version = "local" 1154 abi_libc_version = "local" 1155 cc_target_os = None 1156 builtin_sysroot = None 1157 action_configs = [] 1158 1159 targets_windows_feature = feature( 1160 name = "targets_windows", 1161 implies = ["copy_dynamic_libraries_to_binary"], 1162 enabled = True, 1163 ) 1164 1165 copy_dynamic_libraries_to_binary_feature = feature(name = "copy_dynamic_libraries_to_binary") 1166 1167 gcc_env_feature = feature( 1168 name = "gcc_env", 1169 enabled = True, 1170 env_sets = [ 1171 env_set( 1172 actions = [ 1173 ACTION_NAMES.c_compile, 1174 ACTION_NAMES.cpp_compile, 1175 ACTION_NAMES.cpp_module_compile, 1176 ACTION_NAMES.cpp_module_codegen, 1177 ACTION_NAMES.cpp_header_parsing, 1178 ACTION_NAMES.assemble, 1179 ACTION_NAMES.preprocess_assemble, 1180 ACTION_NAMES.cpp_link_executable, 1181 ACTION_NAMES.cpp_link_dynamic_library, 1182 ACTION_NAMES.cpp_link_nodeps_dynamic_library, 1183 ACTION_NAMES.cpp_link_static_library, 1184 ], 1185 env_entries = [ 1186 env_entry(key = "PATH", value = "NOT_USED"), 1187 ], 1188 ), 1189 ], 1190 ) 1191 1192 msys_mingw_flags = [ 1193 ] 1194 msys_mingw_link_flags = [ 1195 ] 1196 1197 default_compile_flags_feature = feature( 1198 name = "default_compile_flags", 1199 enabled = True, 1200 flag_sets = [ 1201 flag_set( 1202 actions = [ 1203 ACTION_NAMES.assemble, 1204 ACTION_NAMES.preprocess_assemble, 1205 ACTION_NAMES.linkstamp_compile, 1206 ACTION_NAMES.c_compile, 1207 ACTION_NAMES.cpp_compile, 1208 ACTION_NAMES.cpp_header_parsing, 1209 ACTION_NAMES.cpp_module_compile, 1210 ACTION_NAMES.cpp_module_codegen, 1211 ACTION_NAMES.lto_backend, 1212 ACTION_NAMES.clif_match, 1213 ], 1214 ), 1215 flag_set( 1216 actions = [ 1217 ACTION_NAMES.linkstamp_compile, 1218 ACTION_NAMES.cpp_compile, 1219 ACTION_NAMES.cpp_header_parsing, 1220 ACTION_NAMES.cpp_module_compile, 1221 ACTION_NAMES.cpp_module_codegen, 1222 ACTION_NAMES.lto_backend, 1223 ACTION_NAMES.clif_match, 1224 ], 1225 flag_groups = ([flag_group(flags = msys_mingw_flags)] if msys_mingw_flags else []), 1226 ), 1227 ], 1228 ) 1229 1230 default_link_flags_feature = feature( 1231 name = "default_link_flags", 1232 enabled = True, 1233 flag_sets = [ 1234 flag_set( 1235 actions = all_link_actions, 1236 flag_groups = ([flag_group(flags = msys_mingw_link_flags)] if msys_mingw_link_flags else []), 1237 ), 1238 ], 1239 ) 1240 1241 supports_dynamic_linker_feature = feature(name = "supports_dynamic_linker", enabled = True) 1242 1243 features = [ 1244 targets_windows_feature, 1245 copy_dynamic_libraries_to_binary_feature, 1246 gcc_env_feature, 1247 default_compile_flags_feature, 1248 default_link_flags_feature, 1249 supports_dynamic_linker_feature, 1250 ] 1251 1252 cxx_builtin_include_directories = [ 1253 ] 1254 1255 artifact_name_patterns = [ 1256 artifact_name_pattern( 1257 category_name = "executable", 1258 prefix = "", 1259 extension = ".exe", 1260 ), 1261 ] 1262 1263 make_variables = [] 1264 tool_paths = [ 1265 ] 1266 1267 return cc_common.create_cc_toolchain_config_info( 1268 ctx = ctx, 1269 features = features, 1270 action_configs = action_configs, 1271 artifact_name_patterns = artifact_name_patterns, 1272 cxx_builtin_include_directories = cxx_builtin_include_directories, 1273 toolchain_identifier = toolchain_identifier, 1274 host_system_name = host_system_name, 1275 target_system_name = target_system_name, 1276 target_cpu = target_cpu, 1277 target_libc = target_libc, 1278 compiler = compiler, 1279 abi_version = abi_version, 1280 abi_libc_version = abi_libc_version, 1281 tool_paths = tool_paths, 1282 make_variables = make_variables, 1283 builtin_sysroot = builtin_sysroot, 1284 cc_target_os = cc_target_os, 1285 ) 1286 1287 def _armeabi_impl(ctx): 1288 toolchain_identifier = "stub_armeabi-v7a" 1289 host_system_name = "armeabi-v7a" 1290 target_system_name = "armeabi-v7a" 1291 target_cpu = "armeabi-v7a" 1292 target_libc = "armeabi-v7a" 1293 compiler = "compiler" 1294 abi_version = "armeabi-v7a" 1295 abi_libc_version = "armeabi-v7a" 1296 cc_target_os = None 1297 builtin_sysroot = None 1298 action_configs = [] 1299 1300 supports_pic_feature = feature(name = "supports_pic", enabled = True) 1301 supports_dynamic_linker_feature = feature(name = "supports_dynamic_linker", enabled = True) 1302 features = [supports_dynamic_linker_feature, supports_pic_feature] 1303 1304 cxx_builtin_include_directories = [] 1305 artifact_name_patterns = [] 1306 make_variables = [] 1307 1308 tool_paths = [ 1309 tool_path(name = "ar", path = "/bin/false"), 1310 tool_path(name = "compat-ld", path = "/bin/false"), 1311 tool_path(name = "cpp", path = "/bin/false"), 1312 tool_path(name = "dwp", path = "/bin/false"), 1313 tool_path(name = "gcc", path = "/bin/false"), 1314 tool_path(name = "gcov", path = "/bin/false"), 1315 tool_path(name = "ld", path = "/bin/false"), 1316 tool_path(name = "nm", path = "/bin/false"), 1317 tool_path(name = "objcopy", path = "/bin/false"), 1318 tool_path(name = "objdump", path = "/bin/false"), 1319 tool_path(name = "strip", path = "/bin/false"), 1320 ] 1321 1322 return cc_common.create_cc_toolchain_config_info( 1323 ctx = ctx, 1324 features = features, 1325 action_configs = action_configs, 1326 artifact_name_patterns = artifact_name_patterns, 1327 cxx_builtin_include_directories = cxx_builtin_include_directories, 1328 toolchain_identifier = toolchain_identifier, 1329 host_system_name = host_system_name, 1330 target_system_name = target_system_name, 1331 target_cpu = target_cpu, 1332 target_libc = target_libc, 1333 compiler = compiler, 1334 abi_version = abi_version, 1335 abi_libc_version = abi_libc_version, 1336 tool_paths = tool_paths, 1337 make_variables = make_variables, 1338 builtin_sysroot = builtin_sysroot, 1339 cc_target_os = cc_target_os, 1340 ) 1341 1342 def _impl(ctx): 1343 if ctx.attr.cpu == "armeabi-v7a": 1344 return _armeabi_impl(ctx) 1345 elif ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "msvc-cl": 1346 return _windows_msvc_impl(ctx) 1347 elif ctx.attr.cpu == "x64_windows" and ctx.attr.compiler == "mingw-gcc": 1348 return _windows_msys_mingw_impl(ctx) 1349 1350 tool_paths = [ 1351 tool_path(name = "ar", path = "/usr/bin/ar"), 1352 tool_path(name = "ld", path = "/usr/bin/ld"), 1353 tool_path(name = "cpp", path = "/usr/bin/cpp"), 1354 tool_path(name = "gcc", path = "/usr/local/bin/clang"), 1355 tool_path(name = "dwp", path = "/usr/bin/dwp"), 1356 tool_path(name = "gcov", path = "None"), 1357 tool_path(name = "nm", path = "/usr/bin/nm"), 1358 tool_path(name = "objcopy", path = "/usr/bin/objcopy"), 1359 tool_path(name = "objdump", path = "/usr/bin/objdump"), 1360 tool_path(name = "strip", path = "/usr/bin/strip"), 1361 ] 1362 1363 cxx_builtin_include_directories = [ 1364 "/usr/local/include", 1365 "/usr/local/lib/clang/7.0.0/include", 1366 "/usr/include/x86_64-linux-gnu", 1367 "/usr/include", 1368 "/usr/include/c++/4.9", 1369 "/usr/include/x86_64-linux-gnu/c++/4.9", 1370 "/usr/include/c++/4.9/backward", 1371 ] 1372 1373 action_configs = [] 1374 1375 compile_flags = [ 1376 "-U_FORTIFY_SOURCE", 1377 "-fstack-protector", 1378 "-Wall", 1379 "-Wthread-safety", 1380 "-Wself-assign", 1381 "-fcolor-diagnostics", 1382 "-fno-omit-frame-pointer", 1383 ] 1384 1385 dbg_compile_flags = [ 1386 "-g", 1387 ] 1388 1389 opt_compile_flags = [ 1390 "-g0", 1391 "-O2", 1392 "-D_FORTIFY_SOURCE=1", 1393 "-DNDEBUG", 1394 "-ffunction-sections", 1395 "-fdata-sections", 1396 ] 1397 1398 cxx_flags = [ 1399 "-std=c++0x", 1400 ] 1401 1402 link_flags = [ 1403 "-fuse-ld=gold", 1404 "-Wl,-no-as-needed", 1405 "-Wl,-z,relro,-z,now", 1406 "-B/usr/local/bin", 1407 "-lstdc++", 1408 "-lm", 1409 ] 1410 1411 opt_link_flags = [ 1412 "-Wl,--gc-sections", 1413 ] 1414 1415 unfiltered_compile_flags = [ 1416 "-no-canonical-prefixes", 1417 "-Wno-builtin-macro-redefined", 1418 "-D__DATE__=\"redacted\"", 1419 "-D__TIMESTAMP__=\"redacted\"", 1420 "-D__TIME__=\"redacted\"", 1421 ] 1422 1423 targets_windows_feature = feature( 1424 name = "targets_windows", 1425 implies = ["copy_dynamic_libraries_to_binary"], 1426 enabled = True, 1427 ) 1428 1429 copy_dynamic_libraries_to_binary_feature = feature(name = "copy_dynamic_libraries_to_binary") 1430 1431 gcc_env_feature = feature( 1432 name = "gcc_env", 1433 enabled = True, 1434 env_sets = [ 1435 env_set( 1436 actions = [ 1437 ACTION_NAMES.c_compile, 1438 ACTION_NAMES.cpp_compile, 1439 ACTION_NAMES.cpp_module_compile, 1440 ACTION_NAMES.cpp_module_codegen, 1441 ACTION_NAMES.cpp_header_parsing, 1442 ACTION_NAMES.assemble, 1443 ACTION_NAMES.preprocess_assemble, 1444 ACTION_NAMES.cpp_link_executable, 1445 ACTION_NAMES.cpp_link_dynamic_library, 1446 ACTION_NAMES.cpp_link_nodeps_dynamic_library, 1447 ACTION_NAMES.cpp_link_static_library, 1448 ], 1449 env_entries = [ 1450 env_entry(key = "PATH", value = "NOT_USED"), 1451 ], 1452 ), 1453 ], 1454 ) 1455 1456 windows_features = [ 1457 targets_windows_feature, 1458 copy_dynamic_libraries_to_binary_feature, 1459 gcc_env_feature, 1460 ] 1461 1462 coverage_feature = feature( 1463 name = "coverage", 1464 provides = ["profile"], 1465 flag_sets = [ 1466 flag_set( 1467 actions = [ 1468 ACTION_NAMES.preprocess_assemble, 1469 ACTION_NAMES.c_compile, 1470 ACTION_NAMES.cpp_compile, 1471 ACTION_NAMES.cpp_header_parsing, 1472 ACTION_NAMES.cpp_module_compile, 1473 ], 1474 flag_groups = [ 1475 flag_group(flags = ["--coverage"]), 1476 ], 1477 ), 1478 flag_set( 1479 actions = [ 1480 ACTION_NAMES.cpp_link_dynamic_library, 1481 ACTION_NAMES.cpp_link_nodeps_dynamic_library, 1482 ACTION_NAMES.cpp_link_executable, 1483 ], 1484 flag_groups = [ 1485 flag_group(flags = ["--coverage"]), 1486 ], 1487 ), 1488 ], 1489 ) 1490 1491 supports_pic_feature = feature( 1492 name = "supports_pic", 1493 enabled = True, 1494 ) 1495 supports_start_end_lib_feature = feature( 1496 name = "supports_start_end_lib", 1497 enabled = True, 1498 ) 1499 1500 default_compile_flags_feature = feature( 1501 name = "default_compile_flags", 1502 enabled = True, 1503 flag_sets = [ 1504 flag_set( 1505 actions = [ 1506 ACTION_NAMES.assemble, 1507 ACTION_NAMES.preprocess_assemble, 1508 ACTION_NAMES.linkstamp_compile, 1509 ACTION_NAMES.c_compile, 1510 ACTION_NAMES.cpp_compile, 1511 ACTION_NAMES.cpp_header_parsing, 1512 ACTION_NAMES.cpp_module_compile, 1513 ACTION_NAMES.cpp_module_codegen, 1514 ACTION_NAMES.lto_backend, 1515 ACTION_NAMES.clif_match, 1516 ], 1517 flag_groups = ([flag_group(flags = compile_flags)] if compile_flags else []), 1518 ), 1519 flag_set( 1520 actions = [ 1521 ACTION_NAMES.assemble, 1522 ACTION_NAMES.preprocess_assemble, 1523 ACTION_NAMES.linkstamp_compile, 1524 ACTION_NAMES.c_compile, 1525 ACTION_NAMES.cpp_compile, 1526 ACTION_NAMES.cpp_header_parsing, 1527 ACTION_NAMES.cpp_module_compile, 1528 ACTION_NAMES.cpp_module_codegen, 1529 ACTION_NAMES.lto_backend, 1530 ACTION_NAMES.clif_match, 1531 ], 1532 flag_groups = ([flag_group(flags = dbg_compile_flags)] if dbg_compile_flags else []), 1533 with_features = [with_feature_set(features = ["dbg"])], 1534 ), 1535 flag_set( 1536 actions = [ 1537 ACTION_NAMES.assemble, 1538 ACTION_NAMES.preprocess_assemble, 1539 ACTION_NAMES.linkstamp_compile, 1540 ACTION_NAMES.c_compile, 1541 ACTION_NAMES.cpp_compile, 1542 ACTION_NAMES.cpp_header_parsing, 1543 ACTION_NAMES.cpp_module_compile, 1544 ACTION_NAMES.cpp_module_codegen, 1545 ACTION_NAMES.lto_backend, 1546 ACTION_NAMES.clif_match, 1547 ], 1548 flag_groups = ([flag_group(flags = opt_compile_flags)] if opt_compile_flags else []), 1549 with_features = [with_feature_set(features = ["opt"])], 1550 ), 1551 flag_set( 1552 actions = [ 1553 ACTION_NAMES.linkstamp_compile, 1554 ACTION_NAMES.cpp_compile, 1555 ACTION_NAMES.cpp_header_parsing, 1556 ACTION_NAMES.cpp_module_compile, 1557 ACTION_NAMES.cpp_module_codegen, 1558 ACTION_NAMES.lto_backend, 1559 ACTION_NAMES.clif_match, 1560 ], 1561 flag_groups = ([flag_group(flags = cxx_flags)] if cxx_flags else []), 1562 ), 1563 ], 1564 ) 1565 1566 default_link_flags_feature = feature( 1567 name = "default_link_flags", 1568 enabled = True, 1569 flag_sets = [ 1570 flag_set( 1571 actions = all_link_actions, 1572 flag_groups = ([flag_group(flags = link_flags)] if link_flags else []), 1573 ), 1574 flag_set( 1575 actions = all_link_actions, 1576 flag_groups = ([flag_group(flags = opt_link_flags)] if opt_link_flags else []), 1577 with_features = [with_feature_set(features = ["opt"])], 1578 ), 1579 ], 1580 ) 1581 1582 dbg_feature = feature(name = "dbg") 1583 1584 opt_feature = feature(name = "opt") 1585 1586 sysroot_feature = feature( 1587 name = "sysroot", 1588 enabled = True, 1589 flag_sets = [ 1590 flag_set( 1591 actions = [ 1592 ACTION_NAMES.preprocess_assemble, 1593 ACTION_NAMES.linkstamp_compile, 1594 ACTION_NAMES.c_compile, 1595 ACTION_NAMES.cpp_compile, 1596 ACTION_NAMES.cpp_header_parsing, 1597 ACTION_NAMES.cpp_module_compile, 1598 ACTION_NAMES.cpp_module_codegen, 1599 ACTION_NAMES.lto_backend, 1600 ACTION_NAMES.clif_match, 1601 ACTION_NAMES.cpp_link_executable, 1602 ACTION_NAMES.cpp_link_dynamic_library, 1603 ACTION_NAMES.cpp_link_nodeps_dynamic_library, 1604 ], 1605 flag_groups = [ 1606 flag_group( 1607 flags = ["--sysroot=%{sysroot}"], 1608 expand_if_available = "sysroot", 1609 ), 1610 ], 1611 ), 1612 ], 1613 ) 1614 1615 fdo_optimize_feature = feature( 1616 name = "fdo_optimize", 1617 flag_sets = [ 1618 flag_set( 1619 actions = [ACTION_NAMES.c_compile, ACTION_NAMES.cpp_compile], 1620 flag_groups = [ 1621 flag_group( 1622 flags = [ 1623 "-fprofile-use=%{fdo_profile_path}", 1624 "-fprofile-correction", 1625 ], 1626 expand_if_available = "fdo_profile_path", 1627 ), 1628 ], 1629 ), 1630 ], 1631 provides = ["profile"], 1632 ) 1633 1634 supports_dynamic_linker_feature = feature(name = "supports_dynamic_linker", enabled = True) 1635 1636 user_compile_flags_feature = feature( 1637 name = "user_compile_flags", 1638 enabled = True, 1639 flag_sets = [ 1640 flag_set( 1641 actions = [ 1642 ACTION_NAMES.assemble, 1643 ACTION_NAMES.preprocess_assemble, 1644 ACTION_NAMES.linkstamp_compile, 1645 ACTION_NAMES.c_compile, 1646 ACTION_NAMES.cpp_compile, 1647 ACTION_NAMES.cpp_header_parsing, 1648 ACTION_NAMES.cpp_module_compile, 1649 ACTION_NAMES.cpp_module_codegen, 1650 ACTION_NAMES.lto_backend, 1651 ACTION_NAMES.clif_match, 1652 ], 1653 flag_groups = [ 1654 flag_group( 1655 flags = ["%{user_compile_flags}"], 1656 iterate_over = "user_compile_flags", 1657 expand_if_available = "user_compile_flags", 1658 ), 1659 ], 1660 ), 1661 ], 1662 ) 1663 1664 unfiltered_compile_flags_feature = feature( 1665 name = "unfiltered_compile_flags", 1666 enabled = True, 1667 flag_sets = [ 1668 flag_set( 1669 actions = [ 1670 ACTION_NAMES.assemble, 1671 ACTION_NAMES.preprocess_assemble, 1672 ACTION_NAMES.linkstamp_compile, 1673 ACTION_NAMES.c_compile, 1674 ACTION_NAMES.cpp_compile, 1675 ACTION_NAMES.cpp_header_parsing, 1676 ACTION_NAMES.cpp_module_compile, 1677 ACTION_NAMES.cpp_module_codegen, 1678 ACTION_NAMES.lto_backend, 1679 ACTION_NAMES.clif_match, 1680 ], 1681 flag_groups = ([flag_group(flags = unfiltered_compile_flags)] if unfiltered_compile_flags else []), 1682 ), 1683 ], 1684 ) 1685 1686 features = [ 1687 supports_pic_feature, 1688 supports_start_end_lib_feature, 1689 coverage_feature, 1690 default_compile_flags_feature, 1691 default_link_flags_feature, 1692 fdo_optimize_feature, 1693 supports_dynamic_linker_feature, 1694 dbg_feature, 1695 opt_feature, 1696 user_compile_flags_feature, 1697 sysroot_feature, 1698 unfiltered_compile_flags_feature, 1699 ] 1700 1701 artifact_name_patterns = [ 1702 ] 1703 1704 make_variables = [] 1705 1706 return cc_common.create_cc_toolchain_config_info( 1707 ctx = ctx, 1708 features = features, 1709 action_configs = action_configs, 1710 artifact_name_patterns = artifact_name_patterns, 1711 cxx_builtin_include_directories = cxx_builtin_include_directories, 1712 toolchain_identifier = "linux_gnu_x86", 1713 host_system_name = "i686-unknown-linux-gnu", 1714 target_system_name = "x86_64-unknown-linux-gnu", 1715 target_cpu = "k8", 1716 target_libc = "glibc_2.19", 1717 compiler = "clang", 1718 abi_version = "gcc", 1719 abi_libc_version = "glibc_2.19", 1720 tool_paths = tool_paths, 1721 make_variables = make_variables, 1722 builtin_sysroot = "", 1723 cc_target_os = None, 1724 ) 1725 1726 cc_toolchain_config = rule( 1727 implementation = _impl, 1728 attrs = { 1729 "cpu": attr.string(mandatory = True), 1730 "compiler": attr.string(), 1731 }, 1732 provides = [CcToolchainConfigInfo], 1733 )