# A crosstool configuration for CPU build used with Bazel remote # execution service # DO NOT EDIT: automatically generated file major_version: "local" minor_version: "" default_target_cpu: "same_as_host" default_toolchain { cpu: "k8" toolchain_identifier: "linux_gnu_x86" } default_toolchain { cpu: "armeabi-v7a" toolchain_identifier: "stub_armeabi-v7a" } default_toolchain { cpu: "x64_windows_msvc" toolchain_identifier: "msvc_x64" } default_toolchain { cpu: "x64_windows_msys" toolchain_identifier: "msys_x64" } default_toolchain { cpu: "s390x" toolchain_identifier: "linux_gnu_x86" } default_toolchain { cpu: "ios_x86_64" toolchain_identifier: "ios_x86_64" } # Android tooling requires a default toolchain for the armeabi-v7a cpu. toolchain { abi_version: "armeabi-v7a" abi_libc_version: "armeabi-v7a" builtin_sysroot: "" compiler: "compiler" host_system_name: "armeabi-v7a" needsPic: true supports_gold_linker: false supports_incremental_linker: false supports_fission: false supports_interface_shared_objects: false supports_normalizing_ar: false supports_start_end_lib: false target_libc: "armeabi-v7a" target_cpu: "armeabi-v7a" target_system_name: "armeabi-v7a" toolchain_identifier: "stub_armeabi-v7a" 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" } linking_mode_flags { mode: DYNAMIC } } toolchain { toolchain_identifier: "ios_x86_64" host_system_name: "x86_64-apple-macosx" target_system_name: "x86_64-apple-ios" target_cpu: "ios_x86_64" target_libc: "ios" compiler: "compiler" abi_version: "local" abi_libc_version: "local" supports_gold_linker: false supports_incremental_linker: false supports_fission: false supports_interface_shared_objects: false supports_normalizing_ar: false supports_start_end_lib: false 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" } linking_mode_flags { mode: DYNAMIC } } toolchain { toolchain_identifier: "linux_gnu_x86" abi_version: "clang" abi_libc_version: "glibc_2.19" builtin_sysroot: "" compiler: "clang" host_system_name: "i686-unknown-linux-gnu" needsPic: true supports_gold_linker: true supports_incremental_linker: false supports_fission: false supports_interface_shared_objects: false supports_normalizing_ar: false supports_start_end_lib: true target_libc: "glibc_2.19" target_cpu: "k8" target_system_name: "x86_64-unknown-linux-gnu" cxx_flag: "-std=c++0x" linker_flag: "-lstdc++" linker_flag: "-lm" linker_flag: "-fuse-ld=gold" linker_flag: "-B/usr/local/bin" linker_flag: "-B/usr/bin" cxx_builtin_include_directory: "/usr/include/c++/4.9" cxx_builtin_include_directory: "/usr/include/x86_64-linux-gnu/c++/4.9" cxx_builtin_include_directory: "/usr/include/c++/4.9/backward" cxx_builtin_include_directory: "/usr/local/include" cxx_builtin_include_directory: "/usr/local/lib/clang/5.0.0/include" cxx_builtin_include_directory: "/usr/include/x86_64-linux-gnu" cxx_builtin_include_directory: "/usr/include" objcopy_embed_flag: "-I" objcopy_embed_flag: "binary" unfiltered_cxx_flag: "-Wno-builtin-macro-redefined" unfiltered_cxx_flag: "-D__DATE__=\"redacted\"" unfiltered_cxx_flag: "-D__TIMESTAMP__=\"redacted\"" unfiltered_cxx_flag: "-D__TIME__=\"redacted\"" compiler_flag: "-U_FORTIFY_SOURCE" compiler_flag: "-fstack-protector" compiler_flag: "-Wall" compiler_flag: "-B/usr/local/bin" compiler_flag: "-B/usr/bin" compiler_flag: "-fcolor-diagnostics" compiler_flag: "-fno-omit-frame-pointer" tool_path {name: "ld" path: "/usr/bin/ld" } tool_path {name: "cpp" path: "/usr/bin/cpp" } tool_path {name: "dwp" path: "/usr/bin/dwp" } tool_path {name: "gcov" path: "/usr/bin/gcov" } 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" } tool_path {name: "gcc" path: "/usr/local/bin/clang" } tool_path {name: "ar" path: "/usr/bin/ar" } compilation_mode_flags { mode: DBG compiler_flag: "-g" } compilation_mode_flags { mode: OPT compiler_flag: "-g0" compiler_flag: "-O2" compiler_flag: "-D_FORTIFY_SOURCE=1" compiler_flag: "-DNDEBUG" compiler_flag: "-ffunction-sections" compiler_flag: "-fdata-sections" linker_flag: "-Wl,--gc-sections" } linking_mode_flags { mode: DYNAMIC } feature { name: 'coverage' provides: 'profile' flag_set { action: 'preprocess-assemble' action: 'c-compile' action: 'c++-compile' action: 'c++-header-parsing' action: 'c++-header-preprocessing' action: 'c++-module-compile' flag_group { flag: '-fprofile-arcs' flag: '-ftest-coverage' } } flag_set { action: 'c++-link-interface-dynamic-library' action: 'c++-link-dynamic-library' action: 'c++-link-executable' flag_group { flag: '-lgcov' } } } } toolchain { toolchain_identifier: "msvc_x64" host_system_name: "local" target_system_name: "local" abi_version: "local" abi_libc_version: "local" target_cpu: "x64_windows" compiler: "cl" target_libc: "msvcrt140" default_python_version: "python2.7" tool_path { name: "ar" path: "" } tool_path { name: "cpp" path: "" } tool_path { name: "gcc" path: "" } tool_path { name: "gcov" path: "wrapper/bin/msvc_nop.bat" } tool_path { name: "ld" 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" } supports_gold_linker: false supports_start_end_lib: false supports_interface_shared_objects: false supports_incremental_linker: false supports_normalizing_ar: true needsPic: false # TODO(pcloudy): Review those flags below, they should be defined by cl.exe compiler_flag: "/DOS_WINDOWS=OS_WINDOWS" compiler_flag: "/DCOMPILER_MSVC" # Don't pollute with GDI macros in windows.h. compiler_flag: "/DNOGDI" # Don't define min/max macros in windows.h. compiler_flag: "/DNOMINMAX" compiler_flag: "/DPRAGMA_SUPPORTED" # Platform defines. compiler_flag: "/D_WIN32_WINNT=0x0600" # Turn off warning messages. compiler_flag: "/D_CRT_SECURE_NO_DEPRECATE" compiler_flag: "/D_CRT_SECURE_NO_WARNINGS" compiler_flag: "/D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS" # Use math constants (M_PI, etc.) from the math library compiler_flag: "/D_USE_MATH_DEFINES" # Useful options to have on for compilation. # Increase the capacity of object files to 2^32 sections. compiler_flag: "/bigobj" # Allocate 500MB for precomputed headers. compiler_flag: "/Zm500" # Use unsigned char by default. compiler_flag: "/J" # Use function level linking. compiler_flag: "/Gy" # Use string pooling. compiler_flag: "/GF" # Catch both asynchronous (structured) and synchronous (C++) exceptions. compiler_flag: "/EHsc" # Globally disabled warnings. # Don't warn about elements of array being be default initialized. compiler_flag: "/wd4351" # Don't warn about no matching delete found. compiler_flag: "/wd4291" # Don't warn about diamond inheritance patterns. compiler_flag: "/wd4250" # Don't warn about insecure functions (e.g. non _s functions). compiler_flag: "/wd4996" linker_flag: "/MACHINE:X64" linker_flag: "/SUBSYSTEM:CONSOLE" feature { name: "no_legacy_features" } # Suppress startup banner. feature { name: "nologo" flag_set { action: "c-compile" action: "c++-compile" action: "c++-module-compile" action: "c++-module-codegen" action: "c++-header-parsing" action: "c++-header-preprocessing" action: "assemble" action: "preprocess-assemble" action: "c++-link-executable" action: "c++-link-dynamic-library" action: "c++-link-static-library" action: "c++-link-alwayslink-static-library" action: "c++-link-pic-static-library" action: "c++-link-alwayslink-pic-static-library" flag_group { flag: "/nologo" } } } feature { name: "msvc_env" env_set { action: "c-compile" action: "c++-compile" action: "c++-module-compile" action: "c++-module-codegen" action: "c++-header-parsing" action: "c++-header-preprocessing" action: "assemble" action: "preprocess-assemble" action: "c++-link-executable" action: "c++-link-dynamic-library" action: "c++-link-static-library" action: "c++-link-alwayslink-static-library" action: "c++-link-pic-static-library" action: "c++-link-alwayslink-pic-static-library" env_entry { key: "PATH" value: "" } env_entry { key: "INCLUDE" value: "" } env_entry { key: "LIB" value: "" } env_entry { key: "TMP" value: "" } } } feature { name: "use_linker" env_set { action: "c++-link-executable" action: "c++-link-dynamic-library" env_entry { key: "USE_LINKER" value: "1" } } } feature { name: 'include_paths' flag_set { action: 'preprocess-assemble' action: 'c-compile' action: 'c++-compile' action: 'c++-header-parsing' action: 'c++-header-preprocessing' action: 'c++-module-compile' flag_group { iterate_over: 'quote_include_paths' flag: '/I%{quote_include_paths}' } flag_group { iterate_over: 'include_paths' flag: '/I%{include_paths}' } flag_group { iterate_over: 'system_include_paths' flag: '/I%{system_include_paths}' } } } # Stop adding any flag for dotD file, Bazel knows how to parse the output of /showIncludes option # TODO(bazel-team): Remove this empty feature. https://github.com/bazelbuild/bazel/issues/2868 feature { name: 'dependency_file' } # Tell Bazel to parse the output of /showIncludes feature { name: 'parse_showincludes' flag_set { action: 'assemble' action: 'preprocess-assemble' action: 'c-compile' action: 'c++-compile' action: 'c++-module-compile' action: 'c++-header-preprocessing' action: 'c++-header-parsing' flag_group { flag: "/showIncludes" } } } # Stop passing -frandom-seed option feature { name: 'random_seed' } # This feature is just for enabling flag_set in action_config for -c and -o options during the transitional period feature { name: 'compile_action_flags_in_flag_set' } action_config { config_name: 'c-compile' action_name: 'c-compile' tool { tool_path: '' } flag_set { flag_group { flag: '/c' flag: '%{source_file}' } } flag_set { expand_if_all_available: 'output_object_file' flag_group { flag: '/Fo%{output_object_file}' } } flag_set { expand_if_all_available: 'output_assembly_file' flag_group { flag: '/Fa%{output_assembly_file}' } } flag_set { expand_if_all_available: 'output_preprocess_file' flag_group { flag: '/P' flag: '/Fi%{output_preprocess_file}' } } implies: 'nologo' implies: 'msvc_env' implies: 'parse_showincludes' } action_config { config_name: 'c++-compile' action_name: 'c++-compile' tool { tool_path: '' } flag_set { flag_group { flag: '/c' flag: '%{source_file}' } } flag_set { expand_if_all_available: 'output_object_file' flag_group { flag: '/Fo%{output_object_file}' } } flag_set { expand_if_all_available: 'output_assembly_file' flag_group { flag: '/Fa%{output_assembly_file}' } } flag_set { expand_if_all_available: 'output_preprocess_file' flag_group { flag: '/P' flag: '/Fi%{output_preprocess_file}' } } implies: 'nologo' implies: 'msvc_env' implies: 'parse_showincludes' } action_config { config_name: 'c++-link-executable' action_name: 'c++-link-executable' tool { tool_path: '' } implies: 'nologo' implies: 'linkstamps' implies: 'output_execpath_flags' implies: 'input_param_flags' implies: 'legacy_link_flags' implies: 'linker_param_file' implies: 'msvc_env' implies: 'use_linker' } action_config { config_name: 'c++-link-dynamic-library' action_name: 'c++-link-dynamic-library' tool { tool_path: '' } implies: 'nologo' implies: 'shared_flag' implies: 'linkstamps' implies: 'output_execpath_flags' implies: 'input_param_flags' implies: 'has_configured_linker_path' implies: 'legacy_link_flags' implies: 'linker_param_file' implies: 'msvc_env' implies: 'use_linker' } action_config { config_name: 'c++-link-static-library' action_name: 'c++-link-static-library' tool { tool_path: '' } implies: 'nologo' implies: 'archiver_flags' implies: 'input_param_flags' implies: 'linker_param_file' implies: 'msvc_env' } action_config { config_name: 'c++-link-alwayslink-static-library' action_name: 'c++-link-alwayslink-static-library' tool { tool_path: '' } implies: 'nologo' implies: 'archiver_flags' implies: 'input_param_flags' implies: 'linker_param_file' implies: 'msvc_env' } # TODO(pcloudy): The following action_config is listed in MANDATORY_LINK_TARGET_TYPES. # But do we really need them on Windows? action_config { config_name: 'c++-link-pic-static-library' action_name: 'c++-link-pic-static-library' tool { tool_path: '' } implies: 'nologo' implies: 'archiver_flags' implies: 'input_param_flags' implies: 'linker_param_file' implies: 'msvc_env' } action_config { config_name: 'c++-link-alwayslink-pic-static-library' action_name: 'c++-link-alwayslink-pic-static-library' tool { tool_path: '' } implies: 'nologo' implies: 'archiver_flags' implies: 'input_param_flags' implies: 'linker_param_file' implies: 'msvc_env' } action_config { config_name: 'c++-link-interface-dynamic-library' action_name: 'c++-link-interface-dynamic-library' tool { tool_path: '' } implies: 'nologo' implies: 'linker_param_file' implies: 'msvc_env' } feature { name: 'generate_pdb_file' requires: { feature: 'dbg' } requires: { feature: 'fastbuild' } } feature { name: 'has_configured_linker_path' } feature { name: 'shared_flag' flag_set { action: 'c++-link-dynamic-library' flag_group { flag: '/DLL' } } } feature { name: 'linkstamps' flag_set { action: 'c++-link-executable' action: 'c++-link-dynamic-library' expand_if_all_available: 'linkstamp_paths' flag_group { iterate_over: 'linkstamp_paths' flag: '%{linkstamp_paths}' } } } feature { name: 'output_execpath_flags' flag_set { expand_if_all_available: 'output_execpath' action: 'c++-link-executable' action: 'c++-link-dynamic-library' flag_group { flag: '/OUT:%{output_execpath}' } } } feature { name: 'archiver_flags' flag_set { expand_if_all_available: 'output_execpath' action: 'c++-link-static-library' action: 'c++-link-alwayslink-static-library' action: 'c++-link-pic-static-library' action: 'c++-link-alwayslink-pic-static-library' flag_group { flag: '/OUT:%{output_execpath}' } } } feature { name: 'input_param_flags' flag_set { expand_if_all_available: 'library_search_directories' action: 'c++-link-executable' action: 'c++-link-dynamic-library' flag_group { iterate_over: 'library_search_directories' flag: "-L%{library_search_directories}" } } flag_set { expand_if_all_available: 'libopts' action: 'c++-link-executable' action: 'c++-link-dynamic-library' flag_group { iterate_over: 'libopts' flag: '%{libopts}' } } flag_set { expand_if_all_available: 'libraries_to_link' action: 'c++-link-executable' action: 'c++-link-dynamic-library' action: 'c++-link-static-library' action: 'c++-link-alwayslink-static-library' action: 'c++-link-pic-static-library' action: 'c++-link-alwayslink-pic-static-library' flag_group { iterate_over: 'libraries_to_link' flag_group { expand_if_equal: { variable: 'libraries_to_link.type' value: 'object_file_group' } iterate_over: 'libraries_to_link.object_files' flag_group { flag: '%{libraries_to_link.object_files}' } } flag_group { expand_if_equal: { variable: 'libraries_to_link.type' value: 'object_file' } flag_group { flag: '%{libraries_to_link.name}' } } flag_group { expand_if_equal: { variable: 'libraries_to_link.type' value: 'interface_library' } flag_group { expand_if_false: 'libraries_to_link.is_whole_archive' flag: '%{libraries_to_link.name}' } flag_group { expand_if_true: 'libraries_to_link.is_whole_archive' flag: '/WHOLEARCHIVE:%{libraries_to_link.name}' } } flag_group { expand_if_equal: { variable: 'libraries_to_link.type' value: 'static_library' } flag_group { expand_if_false: 'libraries_to_link.is_whole_archive' flag: '%{libraries_to_link.name}' } flag_group { expand_if_true: 'libraries_to_link.is_whole_archive' flag: '/WHOLEARCHIVE:%{libraries_to_link.name}' } } flag_group { expand_if_equal: { variable: 'libraries_to_link.type' value: 'dynamic_library' } flag_group { expand_if_false: 'libraries_to_link.is_whole_archive' flag: '%{libraries_to_link.name}' } flag_group { expand_if_true: 'libraries_to_link.is_whole_archive' flag: '/WHOLEARCHIVE:%{libraries_to_link.name}' } } flag_group { expand_if_equal: { variable: 'libraries_to_link.type' value: 'versioned_dynamic_library' } flag_group { expand_if_false: 'libraries_to_link.is_whole_archive' flag: '%{libraries_to_link.name}' } flag_group { expand_if_true: 'libraries_to_link.is_whole_archive' flag: '/WHOLEARCHIVE:%{libraries_to_link.name}' } } } } } feature { name: 'legacy_link_flags' flag_set { expand_if_all_available: 'legacy_link_flags' action: 'c++-link-executable' action: 'c++-link-dynamic-library' flag_group { iterate_over: 'legacy_link_flags' flag: '%{legacy_link_flags}' } } } feature { name: 'linker_param_file' flag_set { expand_if_all_available: 'linker_param_file' action: 'c++-link-executable' action: 'c++-link-dynamic-library' action: 'c++-link-static-library' action: 'c++-link-alwayslink-static-library' action: 'c++-link-pic-static-library' action: 'c++-link-alwayslink-pic-static-library' flag_group { flag: '@%{linker_param_file}' } } } feature { name: 'link_crt_library' flag_set { action: 'c-compile' action: 'c++-compile' flag_group { # The flag is filled by cc_configure. # The default option is /MT, set USE_DYNAMIC_CRT=1 to change it to /MD flag: "" } } flag_set { action: 'c++-link-executable' action: 'c++-link-dynamic-library' flag_group { # The flag is filled by cc_configure. # The default value is libcmt.lib, set USE_DYNAMIC_CRT=1 to change it to msvcrt.lib flag: "/DEFAULTLIB:" } } } feature { name: 'link_crt_debug_library' flag_set { action: 'c-compile' action: 'c++-compile' flag_group { # The flag is filled by cc_configure. # The default option is /MTd, set USE_DYNAMIC_CRT=1 to change it to /MDd flag: "" } } flag_set { action: 'c++-link-executable' action: 'c++-link-dynamic-library' flag_group { # The flag is filled by cc_configure. # The default value is libcmtd.lib, set USE_DYNAMIC_CRT=1 to change it to msvcrtd.lib flag: "/DEFAULTLIB:" } } } feature { name: 'dbg' flag_set { action: 'c-compile' action: 'c++-compile' flag_group { flag: "/Od" flag: "/Z7" # This will signal the wrapper that we are doing a debug build, which sets # some internal state of the toolchain wrapper. It is intentionally a "-" # flag to make this very obvious. flag: "-g" } } flag_set { action: 'c++-link-executable' action: 'c++-link-dynamic-library' flag_group { flag: "/DEBUG:FULL" flag: "/INCREMENTAL:NO" } } implies: 'link_crt_debug_library' implies: 'generate_pdb_file' } feature { name: 'fastbuild' flag_set { action: 'c-compile' action: 'c++-compile' flag_group { flag: "/Od" flag: "/Z7" } } flag_set { action: 'c++-link-executable' action: 'c++-link-dynamic-library' flag_group { flag: "/DEBUG:FASTLINK" flag: "/INCREMENTAL:NO" } } implies: 'link_crt_library' implies: 'generate_pdb_file' } feature { name: 'opt' flag_set { action: 'c-compile' action: 'c++-compile' flag_group { flag: "/O2" } } implies: 'link_crt_library' } }