Automatic code cleanup. PiperOrigin-RevId: 234750806
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java index 5291383..a46e459 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
@@ -840,6 +840,9 @@ } if (cppConfiguration.forcePic()) { + if (unsupportedFeatures.contains(CppRuleClasses.SUPPORTS_PIC)) { + throw new EvalException(/* location= */ null, PIC_CONFIGURATION_ERROR); + } allRequestedFeaturesBuilder.add(CppRuleClasses.SUPPORTS_PIC); }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkCommandLine.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkCommandLine.java index e62d88d..fd599d7 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkCommandLine.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkCommandLine.java
@@ -99,6 +99,12 @@ return linkerInputArtifacts; } + @Nullable + @VisibleForTesting + public FeatureConfiguration getFeatureConfiguration() { + return featureConfiguration; + } + /** * Returns the current type of link target set. */
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/mock/MOCK_CROSSTOOL b/src/test/java/com/google/devtools/build/lib/analysis/mock/MOCK_CROSSTOOL index a8bee889..b7ca89c 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/mock/MOCK_CROSSTOOL +++ b/src/test/java/com/google/devtools/build/lib/analysis/mock/MOCK_CROSSTOOL
@@ -1,408 +1,1009 @@ -# This test resource file is the default test setup - it largely matches what -# we have in our repository cover; individual test cases can override this in -# order to test more scenarios. - major_version: "1" minor_version: "42" - toolchain { - abi_version: "local" - abi_libc_version: "local" - builtin_sysroot: "/test/" - compiler: "compiler" - host_system_name: "local" - needsPic: true - supports_incremental_linker: false - supports_fission: false - supports_interface_shared_objects: false - supports_normalizing_ar: false - supports_start_end_lib: false - target_libc: "local" - target_cpu: "local" - target_system_name: "local" toolchain_identifier: "toolchain-identifier-local" - - 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" } - cxx_flag: "-std=c++0x" - linker_flag: "-lstdc++" - - # TODO(bazel-team): In theory, the path here ought to exactly match the path - # used by gcc. That works because bazel currently doesn't track files at - # absolute locations and has no remote execution, yet. However, this will need - # to be fixed, maybe with auto-detection? - cxx_builtin_include_directory: "/usr/lib/gcc/" - cxx_builtin_include_directory: "/usr/local/include" - cxx_builtin_include_directory: "/usr/include" - tool_path { name: "gcov" path: "/usr/bin/gcov" } - - # C(++) compiles invoke the compiler (as that is the one knowing where - # to find libraries), but we provide LD so other rules can invoke the linker. - tool_path { name: "ld" path: "/usr/bin/ld" } - - tool_path { name: "nm" path: "/usr/bin/nm" } - tool_path { name: "objcopy" path: "/usr/bin/objcopy" } - objcopy_embed_flag: "-I" - objcopy_embed_flag: "binary" - tool_path { name: "objdump" path: "/usr/bin/objdump" } - tool_path { name: "strip" path: "/usr/bin/strip" } - tool_path { name: "llvm-profdata" path: "/usr/bin/llvm-profdata" } - - # Anticipated future default. - unfiltered_cxx_flag: "-no-canonical-prefixes" - unfiltered_cxx_flag: "-fno-canonical-system-headers" - - # Make C++ compilation deterministic. Use linkstamping instead of these - # compiler symbols. - 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\"" - - # Security hardening on by default. - # Conservative choice; -D_FORTIFY_SOURCE=2 may be unsafe in some cases. - # We need to undef it before redefining it as some distributions now have - # it enabled by default. - compiler_flag: "-U_FORTIFY_SOURCE" - compiler_flag: "-D_FORTIFY_SOURCE=1" - compiler_flag: "-fstack-protector" - linker_flag: "-Wl,-z,relro,-z,now" - - # Enable coloring even if there's no attached terminal. Bazel removes the - # escape sequences if --nocolor is specified. This isn't supported by gcc - # on Ubuntu 14.04. - # compiler_flag: "-fcolor-diagnostics" - - # All warnings are enabled. Maybe enable -Werror as well? - compiler_flag: "-Wall" - # Enable a few more warnings that aren't part of -Wall. - compiler_flag: "-Wunused-but-set-parameter" - # But disable some that are problematic. - compiler_flag: "-Wno-free-nonheap-object" # has false positives - - # Keep stack frames for debugging, even in opt mode. - compiler_flag: "-fno-omit-frame-pointer" - - # Anticipated future default. - linker_flag: "-no-canonical-prefixes" - # Have gcc return the exit code from ld. - linker_flag: "-pass-exit-codes" - # Gold linker only? Can we enable this by default? - # linker_flag: "-Wl,--warn-execstack" - # linker_flag: "-Wl,--detect-odr-violations" - - compilation_mode_flags { - mode: DBG - # Enable debug symbols. - compiler_flag: "-g" - } - compilation_mode_flags { - mode: OPT - - # No debug symbols. - # Maybe we should enable https://gcc.gnu.org/wiki/DebugFission for opt or - # even generally? However, that can't happen here, as it requires special - # handling in Bazel. - compiler_flag: "-g0" - - # Conservative choice for -O - # -O3 can increase binary size and even slow down the resulting binaries. - # Profile first and / or use FDO if you need better performance than this. - compiler_flag: "-O2" - - # Disable assertions - compiler_flag: "-DNDEBUG" - - # Removal of unused code and data at link time (can this increase binary size in some cases?). - compiler_flag: "-ffunction-sections" - compiler_flag: "-fdata-sections" - linker_flag: "-Wl,--gc-sections" - } - linking_mode_flags { mode: DYNAMIC } -} - -toolchain { + host_system_name: "local" + target_system_name: "local" + target_cpu: "local" + target_libc: "local" + compiler: "compiler" abi_version: "local" abi_libc_version: "local" - builtin_sysroot: "/test/" - compiler: "compiler" - host_system_name: "local" - needsPic: true - supports_incremental_linker: false - supports_fission: false - supports_interface_shared_objects: false - supports_normalizing_ar: false - supports_start_end_lib: false - target_libc: "local" - target_cpu: "ppc" - target_system_name: "local" - toolchain_identifier: "toolchain-identifier-ppc" - - 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" } - cxx_flag: "-std=c++0x" - linker_flag: "-lstdc++" - - # TODO(bazel-team): In theory, the path here ought to exactly match the path - # used by gcc. That works because bazel currently doesn't track files at - # absolute locations and has no remote execution, yet. However, this will need - # to be fixed, maybe with auto-detection? + 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" + } + tool_path { + name: "llvm-profdata" + path: "/usr/bin/llvm-profdata" + } cxx_builtin_include_directory: "/usr/lib/gcc/" cxx_builtin_include_directory: "/usr/local/include" cxx_builtin_include_directory: "/usr/include" - tool_path { name: "gcov" path: "/usr/bin/gcov" } - - # C(++) compiles invoke the compiler (as that is the one knowing where - # to find libraries), but we provide LD so other rules can invoke the linker. - tool_path { name: "ld" path: "/usr/bin/ld" } - - tool_path { name: "nm" path: "/usr/bin/nm" } - tool_path { name: "objcopy" path: "/usr/bin/objcopy" } - objcopy_embed_flag: "-I" - objcopy_embed_flag: "binary" - tool_path { name: "objdump" path: "/usr/bin/objdump" } - tool_path { name: "strip" path: "/usr/bin/strip" } - tool_path { name: "llvm-profdata" path: "/usr/bin/llvm-profdata" } - - # Anticipated future default. - unfiltered_cxx_flag: "-no-canonical-prefixes" - unfiltered_cxx_flag: "-fno-canonical-system-headers" - - # Make C++ compilation deterministic. Use linkstamping instead of these - # compiler symbols. - 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\"" - - # Security hardening on by default. - # Conservative choice; -D_FORTIFY_SOURCE=2 may be unsafe in some cases. - # We need to undef it before redefining it as some distributions now have - # it enabled by default. - compiler_flag: "-U_FORTIFY_SOURCE" - compiler_flag: "-D_FORTIFY_SOURCE=1" - compiler_flag: "-fstack-protector" - linker_flag: "-Wl,-z,relro,-z,now" - - # Enable coloring even if there's no attached terminal. Bazel removes the - # escape sequences if --nocolor is specified. This isn't supported by gcc - # on Ubuntu 14.04. - # compiler_flag: "-fcolor-diagnostics" - - # All warnings are enabled. Maybe enable -Werror as well? - compiler_flag: "-Wall" - # Enable a few more warnings that aren't part of -Wall. - compiler_flag: "-Wunused-but-set-parameter" - # But disable some that are problematic. - compiler_flag: "-Wno-free-nonheap-object" # has false positives - - # Keep stack frames for debugging, even in opt mode. - compiler_flag: "-fno-omit-frame-pointer" - - # Anticipated future default. - linker_flag: "-no-canonical-prefixes" - # Have gcc return the exit code from ld. - linker_flag: "-pass-exit-codes" - # Gold linker only? Can we enable this by default? - # linker_flag: "-Wl,--warn-execstack" - # linker_flag: "-Wl,--detect-odr-violations" - - compilation_mode_flags { - mode: DBG - # Enable debug symbols. - compiler_flag: "-g" + builtin_sysroot: "/test/" + feature { + name: "default_compile_flags" + flag_set { + action: "assemble" + action: "preprocess-assemble" + action: "linkstamp-compile" + action: "c-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-U_FORTIFY_SOURCE" + flag: "-D_FORTIFY_SOURCE=1" + flag: "-fstack-protector" + flag: "-Wall" + flag: "-Wunused-but-set-parameter" + flag: "-Wno-free-nonheap-object" + flag: "-fno-omit-frame-pointer" + } + } + flag_set { + action: "assemble" + action: "preprocess-assemble" + action: "linkstamp-compile" + action: "c-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-g" + } + with_feature { + feature: "dbg" + } + } + flag_set { + action: "assemble" + action: "preprocess-assemble" + action: "linkstamp-compile" + action: "c-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-g0" + flag: "-O2" + flag: "-DNDEBUG" + flag: "-ffunction-sections" + flag: "-fdata-sections" + } + with_feature { + feature: "opt" + } + } + flag_set { + action: "linkstamp-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-std=c++0x" + } + } + enabled: true } - compilation_mode_flags { - mode: OPT - - # No debug symbols. - # Maybe we should enable https://gcc.gnu.org/wiki/DebugFission for opt or - # even generally? However, that can't happen here, as it requires special - # handling in Bazel. - compiler_flag: "-g0" - - # Conservative choice for -O - # -O3 can increase binary size and even slow down the resulting binaries. - # Profile first and / or use FDO if you need better performance than this. - compiler_flag: "-O2" - - # Disable assertions - compiler_flag: "-DNDEBUG" - - # Removal of unused code and data at link time (can this increase binary size in some cases?). - compiler_flag: "-ffunction-sections" - compiler_flag: "-fdata-sections" - linker_flag: "-Wl,--gc-sections" + feature { + name: "default_link_flags" + flag_set { + action: "c++-link-executable" + action: "c++-link-dynamic-library" + action: "c++-link-nodeps-dynamic-library" + flag_group { + flag: "-lstdc++" + flag: "-Wl,-z,relro,-z,now" + flag: "-no-canonical-prefixes" + flag: "-pass-exit-codes" + } + } + flag_set { + action: "c++-link-executable" + action: "c++-link-dynamic-library" + action: "c++-link-nodeps-dynamic-library" + flag_group { + flag: "-Wl,--gc-sections" + } + with_feature { + feature: "opt" + } + } + enabled: true } - linking_mode_flags { mode: DYNAMIC } + feature { + name: "supports_dynamic_linker" + enabled: true + } + feature { + name: "supports_pic" + enabled: true + } + feature { + name: "objcopy_embed_flags" + flag_set { + action: "objcopy_embed_data" + flag_group { + flag: "-I" + flag: "binary" + } + } + enabled: true + } + feature { + name: "opt" + } + feature { + name: "dbg" + } + feature { + name: "user_compile_flags" + flag_set { + action: "assemble" + action: "preprocess-assemble" + action: "linkstamp-compile" + action: "c-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "%{user_compile_flags}" + iterate_over: "user_compile_flags" + expand_if_all_available: "user_compile_flags" + } + } + enabled: true + } + feature { + name: "sysroot" + flag_set { + action: "preprocess-assemble" + action: "linkstamp-compile" + action: "c-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + action: "c++-link-executable" + action: "c++-link-dynamic-library" + action: "c++-link-nodeps-dynamic-library" + flag_group { + flag: "--sysroot=%{sysroot}" + expand_if_all_available: "sysroot" + } + } + enabled: true + } + feature { + name: "unfiltered_compile_flags" + flag_set { + action: "assemble" + action: "preprocess-assemble" + action: "linkstamp-compile" + action: "c-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-no-canonical-prefixes" + flag: "-fno-canonical-system-headers" + flag: "-Wno-builtin-macro-redefined" + flag: "-D__DATE__=\"redacted\"" + flag: "-D__TIMESTAMP__=\"redacted\"" + flag: "-D__TIME__=\"redacted\"" + } + } + enabled: true + } + action_config { + config_name: "objcopy_embed_data" + action_name: "objcopy_embed_data" + tool { + tool_path: "/usr/bin/objcopy" + } + enabled: true + } } - +toolchain { + toolchain_identifier: "toolchain-identifier-ppc" + host_system_name: "local" + target_system_name: "local" + target_cpu: "ppc" + target_libc: "local" + compiler: "compiler" + abi_version: "local" + abi_libc_version: "local" + 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" + } + tool_path { + name: "llvm-profdata" + path: "/usr/bin/llvm-profdata" + } + cxx_builtin_include_directory: "/usr/lib/gcc/" + cxx_builtin_include_directory: "/usr/local/include" + cxx_builtin_include_directory: "/usr/include" + builtin_sysroot: "/test/" + feature { + name: "default_compile_flags" + flag_set { + action: "assemble" + action: "preprocess-assemble" + action: "linkstamp-compile" + action: "c-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-U_FORTIFY_SOURCE" + flag: "-D_FORTIFY_SOURCE=1" + flag: "-fstack-protector" + flag: "-Wall" + flag: "-Wunused-but-set-parameter" + flag: "-Wno-free-nonheap-object" + flag: "-fno-omit-frame-pointer" + } + } + flag_set { + action: "assemble" + action: "preprocess-assemble" + action: "linkstamp-compile" + action: "c-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-g" + } + with_feature { + feature: "dbg" + } + } + flag_set { + action: "assemble" + action: "preprocess-assemble" + action: "linkstamp-compile" + action: "c-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-g0" + flag: "-O2" + flag: "-DNDEBUG" + flag: "-ffunction-sections" + flag: "-fdata-sections" + } + with_feature { + feature: "opt" + } + } + flag_set { + action: "linkstamp-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-std=c++0x" + } + } + enabled: true + } + feature { + name: "default_link_flags" + flag_set { + action: "c++-link-executable" + action: "c++-link-dynamic-library" + action: "c++-link-nodeps-dynamic-library" + flag_group { + flag: "-lstdc++" + flag: "-Wl,-z,relro,-z,now" + flag: "-no-canonical-prefixes" + flag: "-pass-exit-codes" + } + } + flag_set { + action: "c++-link-executable" + action: "c++-link-dynamic-library" + action: "c++-link-nodeps-dynamic-library" + flag_group { + flag: "-Wl,--gc-sections" + } + with_feature { + feature: "opt" + } + } + enabled: true + } + feature { + name: "supports_dynamic_linker" + enabled: true + } + feature { + name: "supports_pic" + enabled: true + } + feature { + name: "objcopy_embed_flags" + flag_set { + action: "objcopy_embed_data" + flag_group { + flag: "-I" + flag: "binary" + } + } + enabled: true + } + feature { + name: "opt" + } + feature { + name: "dbg" + } + feature { + name: "user_compile_flags" + flag_set { + action: "assemble" + action: "preprocess-assemble" + action: "linkstamp-compile" + action: "c-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "%{user_compile_flags}" + iterate_over: "user_compile_flags" + expand_if_all_available: "user_compile_flags" + } + } + enabled: true + } + feature { + name: "sysroot" + flag_set { + action: "preprocess-assemble" + action: "linkstamp-compile" + action: "c-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + action: "c++-link-executable" + action: "c++-link-dynamic-library" + action: "c++-link-nodeps-dynamic-library" + flag_group { + flag: "--sysroot=%{sysroot}" + expand_if_all_available: "sysroot" + } + } + enabled: true + } + feature { + name: "unfiltered_compile_flags" + flag_set { + action: "assemble" + action: "preprocess-assemble" + action: "linkstamp-compile" + action: "c-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-no-canonical-prefixes" + flag: "-fno-canonical-system-headers" + flag: "-Wno-builtin-macro-redefined" + flag: "-D__DATE__=\"redacted\"" + flag: "-D__TIMESTAMP__=\"redacted\"" + flag: "-D__TIME__=\"redacted\"" + } + } + enabled: true + } + action_config { + config_name: "objcopy_embed_data" + action_name: "objcopy_embed_data" + tool { + tool_path: "/usr/bin/objcopy" + } + enabled: true + } +} toolchain { toolchain_identifier: "toolchain-identifier-k8" - host_system_name: "local" target_system_name: "local" target_cpu: "k8" target_libc: "local" compiler: "compiler" - linking_mode_flags { mode: DYNAMIC } - abi_version: "local" abi_libc_version: "local" - - 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" } - tool_path { name: "llvm-profdata" path: "/usr/bin/llvm-profdata" } - - needsPic: true - supports_fission: true - - builtin_sysroot: "/usr/grte/v1" - cxx_flag: "-std=c++0x" - linker_flag: "-lstdc++" + 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" + } + tool_path { + name: "llvm-profdata" + path: "/usr/bin/llvm-profdata" + } cxx_builtin_include_directory: "/usr/lib/gcc/" cxx_builtin_include_directory: "/usr/local/include" cxx_builtin_include_directory: "/usr/include" - objcopy_embed_flag: "-I" - objcopy_embed_flag: "binary" - supports_interface_shared_objects: true + builtin_sysroot: "/usr/grte/v1" + feature { + name: "default_compile_flags" + flag_set { + action: "linkstamp-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-std=c++0x" + } + } + enabled: true + } + feature { + name: "default_link_flags" + flag_set { + action: "c++-link-executable" + action: "c++-link-dynamic-library" + action: "c++-link-nodeps-dynamic-library" + flag_group { + flag: "-lstdc++" + } + } + enabled: true + } + feature { + name: "supports_dynamic_linker" + enabled: true + } + feature { + name: "supports_interface_shared_libraries" + enabled: true + } + feature { + name: "supports_pic" + enabled: true + } + feature { + name: "objcopy_embed_flags" + flag_set { + action: "objcopy_embed_data" + flag_group { + flag: "-I" + flag: "binary" + } + } + enabled: true + } + action_config { + config_name: "objcopy_embed_data" + action_name: "objcopy_embed_data" + tool { + tool_path: "/usr/bin/objcopy" + } + enabled: true + } } - toolchain { toolchain_identifier: "k8-no-dyn-linker" - host_system_name: "local" target_system_name: "local" target_cpu: "k8" target_libc: "local" compiler: "compiler_no_dyn_linker" - # No linking_mode_flags here - abi_version: "local" abi_libc_version: "local" - - 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" } - tool_path { name: "llvm-profdata" path: "/usr/bin/llvm-profdata" } - - needsPic: true - supports_fission: true - - builtin_sysroot: "" - cxx_flag: "-std=c++0x" - linker_flag: "-lstdc++" + 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" + } + tool_path { + name: "llvm-profdata" + path: "/usr/bin/llvm-profdata" + } cxx_builtin_include_directory: "/usr/lib/gcc/" cxx_builtin_include_directory: "/usr/local/include" cxx_builtin_include_directory: "/usr/include" - objcopy_embed_flag: "-I" - objcopy_embed_flag: "binary" - supports_interface_shared_objects: true + builtin_sysroot: "" + feature { + name: "default_compile_flags" + flag_set { + action: "linkstamp-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-std=c++0x" + } + } + enabled: true + } + feature { + name: "default_link_flags" + flag_set { + action: "c++-link-executable" + action: "c++-link-dynamic-library" + action: "c++-link-nodeps-dynamic-library" + flag_group { + flag: "-lstdc++" + } + } + enabled: true + } + feature { + name: "supports_interface_shared_libraries" + enabled: true + } + feature { + name: "supports_pic" + enabled: true + } + feature { + name: "objcopy_embed_flags" + flag_set { + action: "objcopy_embed_data" + flag_group { + flag: "-I" + flag: "binary" + } + } + enabled: true + } + action_config { + config_name: "objcopy_embed_data" + action_name: "objcopy_embed_data" + tool { + tool_path: "/usr/bin/objcopy" + } + enabled: true + } } - toolchain { toolchain_identifier: "piii" - host_system_name: "local" target_system_name: "local" target_cpu: "piii" target_libc: "local" compiler: "compiler" - linking_mode_flags { mode: DYNAMIC } - abi_version: "local" abi_libc_version: "local" - - 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" } - tool_path { name: "llvm-profdata" path: "/usr/bin/llvm-profdata" } - - needsPic: false - - builtin_sysroot: "" - cxx_flag: "-std=c++0x" - linker_flag: "-lstdc++" + 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" + } + tool_path { + name: "llvm-profdata" + path: "/usr/bin/llvm-profdata" + } cxx_builtin_include_directory: "/usr/lib/gcc/" cxx_builtin_include_directory: "/usr/local/include" cxx_builtin_include_directory: "/usr/include" - objcopy_embed_flag: "-I" - objcopy_embed_flag: "binary" - supports_interface_shared_objects: true + builtin_sysroot: "" + feature { + name: "default_compile_flags" + flag_set { + action: "linkstamp-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-std=c++0x" + } + } + enabled: true + } + feature { + name: "default_link_flags" + flag_set { + action: "c++-link-executable" + action: "c++-link-dynamic-library" + action: "c++-link-nodeps-dynamic-library" + flag_group { + flag: "-lstdc++" + } + } + enabled: true + } + feature { + name: "supports_dynamic_linker" + enabled: true + } + feature { + name: "supports_interface_shared_libraries" + enabled: true + } + feature { + name: "objcopy_embed_flags" + flag_set { + action: "objcopy_embed_data" + flag_group { + flag: "-I" + flag: "binary" + } + } + enabled: true + } + action_config { + config_name: "objcopy_embed_data" + action_name: "objcopy_embed_data" + tool { + tool_path: "/usr/bin/objcopy" + } + enabled: true + } } - toolchain { toolchain_identifier: "local_darwin" - host_system_name: "local" target_system_name: "local" target_cpu: "darwin" target_libc: "macosx" compiler: "compiler" - linking_mode_flags { mode: DYNAMIC } - abi_version: "local" abi_libc_version: "local" - - 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: "/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" } - tool_path { name: "llvm-profdata" path: "/usr/bin/llvm-profdata" } - - needsPic: false - - builtin_sysroot: "/usr/grte/v1" - cxx_flag: "-std=c++0x" - linker_flag: "-lstdc++" + 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: "/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" + } + tool_path { + name: "llvm-profdata" + path: "/usr/bin/llvm-profdata" + } cxx_builtin_include_directory: "/usr/include" cxx_builtin_include_directory: "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain" cxx_builtin_include_directory: "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs" cxx_builtin_include_directory: "/opt/local/include" cxx_builtin_include_directory: "/Library/Developer/CommandLineTools" - objcopy_embed_flag: "-I" - objcopy_embed_flag: "binary" - supports_interface_shared_objects: true + builtin_sysroot: "/usr/grte/v1" + feature { + name: "default_compile_flags" + flag_set { + action: "linkstamp-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-std=c++0x" + } + } + enabled: true + } + feature { + name: "default_link_flags" + flag_set { + action: "c++-link-executable" + action: "c++-link-dynamic-library" + action: "c++-link-nodeps-dynamic-library" + flag_group { + flag: "-lstdc++" + } + } + enabled: true + } + feature { + name: "supports_dynamic_linker" + enabled: true + } + feature { + name: "supports_interface_shared_libraries" + enabled: true + } + feature { + name: "objcopy_embed_flags" + flag_set { + action: "objcopy_embed_data" + flag_group { + flag: "-I" + flag: "binary" + } + } + enabled: true + } + action_config { + config_name: "objcopy_embed_data" + action_name: "objcopy_embed_data" + tool { + tool_path: "/usr/bin/objcopy" + } + enabled: true + } } - toolchain { toolchain_identifier: "darwin-no-dyn-linker" host_system_name: "local" @@ -410,295 +1011,837 @@ target_cpu: "darwin" target_libc: "macosx" compiler: "compiler_no_dyn_linker" - # No linking_mode_flags here - abi_version: "local" abi_libc_version: "local" - - 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: "/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" } - tool_path { name: "llvm-profdata" path: "/usr/bin/llvm-profdata" } - - needsPic: false - - builtin_sysroot: "" - cxx_flag: "-std=c++0x" - linker_flag: "-lstdc++" + 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: "/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" + } + tool_path { + name: "llvm-profdata" + path: "/usr/bin/llvm-profdata" + } cxx_builtin_include_directory: "/usr/include" cxx_builtin_include_directory: "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain" cxx_builtin_include_directory: "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs" cxx_builtin_include_directory: "/opt/local/include" cxx_builtin_include_directory: "/Library/Developer/CommandLineTools" - objcopy_embed_flag: "-I" - objcopy_embed_flag: "binary" - supports_interface_shared_objects: true + builtin_sysroot: "" + feature { + name: "default_compile_flags" + flag_set { + action: "linkstamp-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-std=c++0x" + } + } + enabled: true + } + feature { + name: "default_link_flags" + flag_set { + action: "c++-link-executable" + action: "c++-link-dynamic-library" + action: "c++-link-nodeps-dynamic-library" + flag_group { + flag: "-lstdc++" + } + } + enabled: true + } + feature { + name: "supports_interface_shared_libraries" + enabled: true + } + feature { + name: "objcopy_embed_flags" + flag_set { + action: "objcopy_embed_data" + flag_group { + flag: "-I" + flag: "binary" + } + } + enabled: true + } + action_config { + config_name: "objcopy_embed_data" + action_name: "objcopy_embed_data" + tool { + tool_path: "/usr/bin/objcopy" + } + enabled: true + } } - toolchain { toolchain_identifier: "local_ios" - host_system_name: "local" target_system_name: "local" target_cpu: "ios_x86_64" target_libc: "ios" compiler: "compiler" - linking_mode_flags { mode: DYNAMIC } - abi_version: "local" abi_libc_version: "local" - - 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: "/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" } - tool_path { name: "llvm-profdata" path: "/usr/bin/llvm-profdata" } - - needsPic: false - - builtin_sysroot: "" - cxx_flag: "-std=c++0x" - linker_flag: "-lstdc++" + 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: "/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" + } + tool_path { + name: "llvm-profdata" + path: "/usr/bin/llvm-profdata" + } cxx_builtin_include_directory: "/usr/include" cxx_builtin_include_directory: "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain" cxx_builtin_include_directory: "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs" cxx_builtin_include_directory: "/opt/local/include" cxx_builtin_include_directory: "/Library/Developer/CommandLineTools" - objcopy_embed_flag: "-I" - objcopy_embed_flag: "binary" - supports_interface_shared_objects: true + builtin_sysroot: "" + feature { + name: "default_compile_flags" + flag_set { + action: "linkstamp-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-std=c++0x" + } + } + enabled: true + } + feature { + name: "default_link_flags" + flag_set { + action: "c++-link-executable" + action: "c++-link-dynamic-library" + action: "c++-link-nodeps-dynamic-library" + flag_group { + flag: "-lstdc++" + } + } + enabled: true + } + feature { + name: "supports_dynamic_linker" + enabled: true + } + feature { + name: "supports_interface_shared_libraries" + enabled: true + } + feature { + name: "objcopy_embed_flags" + flag_set { + action: "objcopy_embed_data" + flag_group { + flag: "-I" + flag: "binary" + } + } + enabled: true + } + action_config { + config_name: "objcopy_embed_data" + action_name: "objcopy_embed_data" + tool { + tool_path: "/usr/bin/objcopy" + } + enabled: true + } } - toolchain { toolchain_identifier: "local_windows_mingw" - host_system_name: "local" target_system_name: "local" target_cpu: "k8" target_libc: "local" compiler: "windows_mingw" - linking_mode_flags { mode: DYNAMIC } - abi_version: "local" abi_libc_version: "local" - - 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" } - tool_path { name: "llvm-profdata" path: "C:/mingw/bin/llvm-profdata" } - - builtin_sysroot: "" - cxx_flag: "-std=c++0x" + 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" + } + tool_path { + name: "llvm-profdata" + path: "C:/mingw/bin/llvm-profdata" + } cxx_builtin_include_directory: "C:/mingw/include" cxx_builtin_include_directory: "C:/mingw/lib/gcc" - objcopy_embed_flag: "-I" - objcopy_embed_flag: "binary" - supports_interface_shared_objects: true + builtin_sysroot: "" + feature { + name: "default_compile_flags" + flag_set { + action: "linkstamp-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-std=c++0x" + } + } + enabled: true + } + feature { + name: "supports_dynamic_linker" + enabled: true + } + feature { + name: "supports_interface_shared_libraries" + enabled: true + } + feature { + name: "objcopy_embed_flags" + flag_set { + action: "objcopy_embed_data" + flag_group { + flag: "-I" + flag: "binary" + } + } + enabled: true + } + action_config { + config_name: "objcopy_embed_data" + action_name: "objcopy_embed_data" + tool { + tool_path: "C:/mingw/bin/objcopy" + } + enabled: true + } } - toolchain { toolchain_identifier: "local_windows_msys64_mingw64" - host_system_name: "local" target_system_name: "local" target_cpu: "k8" target_libc: "local" compiler: "windows_msys64_mingw64" - linking_mode_flags { mode: DYNAMIC } - abi_version: "local" abi_libc_version: "local" - - tool_path { name: "ar" path: "C:/msys64/mingw64/bin/ar" } - tool_path { name: "compat-ld" path: "C:/msys64/mingw64/bin/ld" } - tool_path { name: "cpp" path: "C:/msys64/mingw64/bin/cpp" } - tool_path { name: "dwp" path: "C:/msys64/mingw64/bin/dwp" } - tool_path { name: "gcc" path: "C:/msys64/mingw64/bin/gcc" } - tool_path { name: "gcov" path: "C:/msys64/mingw64/bin/gcov" } - tool_path { name: "ld" path: "C:/msys64/mingw64/bin/ld" } - tool_path { name: "nm" path: "C:/msys64/mingw64/bin/nm" } - tool_path { name: "objcopy" path: "C:/msys64/mingw64/bin/objcopy" } - tool_path { name: "objdump" path: "C:/msys64/mingw64/bin/objdump" } - tool_path { name: "strip" path: "C:/msys64/mingw64/bin/strip" } - tool_path { name: "llvm-profdata" path: "C:/msys64/mingw64/bin/llvm-profdata" } - - builtin_sysroot: "/usr/grte/v1" - cxx_flag: "-std=c++0x" + tool_path { + name: "ar" + path: "C:/msys64/mingw64/bin/ar" + } + tool_path { + name: "compat-ld" + path: "C:/msys64/mingw64/bin/ld" + } + tool_path { + name: "cpp" + path: "C:/msys64/mingw64/bin/cpp" + } + tool_path { + name: "dwp" + path: "C:/msys64/mingw64/bin/dwp" + } + tool_path { + name: "gcc" + path: "C:/msys64/mingw64/bin/gcc" + } + tool_path { + name: "gcov" + path: "C:/msys64/mingw64/bin/gcov" + } + tool_path { + name: "ld" + path: "C:/msys64/mingw64/bin/ld" + } + tool_path { + name: "nm" + path: "C:/msys64/mingw64/bin/nm" + } + tool_path { + name: "objcopy" + path: "C:/msys64/mingw64/bin/objcopy" + } + tool_path { + name: "objdump" + path: "C:/msys64/mingw64/bin/objdump" + } + tool_path { + name: "strip" + path: "C:/msys64/mingw64/bin/strip" + } + tool_path { + name: "llvm-profdata" + path: "C:/msys64/mingw64/bin/llvm-profdata" + } cxx_builtin_include_directory: "C:/msys64/mingw64/x86_64-w64-mingw32/include" - objcopy_embed_flag: "-I" - objcopy_embed_flag: "binary" - supports_interface_shared_objects: true + builtin_sysroot: "/usr/grte/v1" + feature { + name: "default_compile_flags" + flag_set { + action: "linkstamp-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-std=c++0x" + } + } + enabled: true + } + feature { + name: "supports_dynamic_linker" + enabled: true + } + feature { + name: "supports_interface_shared_libraries" + enabled: true + } + feature { + name: "objcopy_embed_flags" + flag_set { + action: "objcopy_embed_data" + flag_group { + flag: "-I" + flag: "binary" + } + } + enabled: true + } + action_config { + config_name: "objcopy_embed_data" + action_name: "objcopy_embed_data" + tool { + tool_path: "C:/msys64/mingw64/bin/objcopy" + } + enabled: true + } } - toolchain { toolchain_identifier: "local_windows_clang" - host_system_name: "local" target_system_name: "local" target_cpu: "k8" target_libc: "local" compiler: "windows_clang" - linking_mode_flags { mode: DYNAMIC } - abi_version: "local" abi_libc_version: "local" - - 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" } - tool_path { name: "llvm-profdata" path: "C:/Program Files (x86)/LLVM/bin/llvm-profdata" } - - cxx_flag: "-std=c++0x" + 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" + } + tool_path { + name: "llvm-profdata" + path: "C:/Program Files (x86)/LLVM/bin/llvm-profdata" + } cxx_builtin_include_directory: "/usr/lib/gcc/" cxx_builtin_include_directory: "/usr/local/include" cxx_builtin_include_directory: "/usr/include" - objcopy_embed_flag: "-I" - objcopy_embed_flag: "binary" builtin_sysroot: "" - - supports_interface_shared_objects: true + feature { + name: "default_compile_flags" + flag_set { + action: "linkstamp-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-std=c++0x" + } + } + enabled: true + } + feature { + name: "supports_dynamic_linker" + enabled: true + } + feature { + name: "supports_interface_shared_libraries" + enabled: true + } + feature { + name: "objcopy_embed_flags" + flag_set { + action: "objcopy_embed_data" + flag_group { + flag: "-I" + flag: "binary" + } + } + enabled: true + } + action_config { + config_name: "objcopy_embed_data" + action_name: "objcopy_embed_data" + tool { + tool_path: "C:/Program Files (x86)/LLVM/bin/objcopy" + } + enabled: true + } } - toolchain { + toolchain_identifier: "stub_armeabi-v7a" + host_system_name: "armeabi-v7a" + target_system_name: "armeabi-v7a" + target_cpu: "armeabi-v7a" + target_libc: "armeabi-v7a" + compiler: "compiler" abi_version: "armeabi-v7a" abi_libc_version: "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" + } + tool_path { + name: "llvm-profdata" + path: "/bin/false" + } builtin_sysroot: "" - compiler: "compiler" - linking_mode_flags { mode: DYNAMIC } - host_system_name: "armeabi-v7a" - needsPic: true - 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" } - tool_path { name: "llvm-profdata" path: "/bin/false" } - - supports_interface_shared_objects: true + feature { + name: "supports_dynamic_linker" + enabled: true + } + feature { + name: "supports_interface_shared_libraries" + enabled: true + } + feature { + name: "supports_pic" + enabled: true + } } - toolchain { - abi_version: "local" - abi_libc_version: "local" - builtin_sysroot: "/usr/grte/v1" - compiler: "windows_msys64" - host_system_name: "local" - needsPic: false - target_libc: "local" - target_cpu: "x64_windows" - target_system_name: "local" - toolchain_identifier: "local_windows_msys64" - - 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" } - # Use gcc instead of g++ so that C will compile correctly. - tool_path { name: "gcc" path: "C:/tools/msys64/usr/bin/gcc" } - cxx_flag: "-std=gnu++0x" - linker_flag: "-lstdc++" - # TODO(bazel-team): In theory, the path here ought to exactly match the path - # used by gcc. That works because bazel currently doesn't track files at - # absolute locations and has no remote execution, yet. However, this will need - # to be fixed, maybe with auto-detection? - cxx_builtin_include_directory: "C:/tools/msys64/" - cxx_builtin_include_directory: "/usr/" - 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" } - objcopy_embed_flag: "-I" - objcopy_embed_flag: "binary" - tool_path { name: "objdump" path: "C:/tools/msys64/usr/bin/objdump" } - tool_path { name: "strip" path: "C:/tools/msys64/usr/bin/strip" } - tool_path { name: "llvm-profdata" path: "C:/tools/msys64/usr/bin/llvm-profdata" } - linking_mode_flags { mode: DYNAMIC } - - supports_interface_shared_objects: true + toolchain_identifier: "local_windows_msys64" + host_system_name: "local" + target_system_name: "local" + target_cpu: "x64_windows" + target_libc: "local" + compiler: "windows_msys64" + abi_version: "local" + abi_libc_version: "local" + 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" + } + tool_path { + name: "llvm-profdata" + path: "C:/tools/msys64/usr/bin/llvm-profdata" + } + cxx_builtin_include_directory: "C:/tools/msys64/" + cxx_builtin_include_directory: "/usr/" + builtin_sysroot: "/usr/grte/v1" + feature { + name: "default_compile_flags" + flag_set { + action: "linkstamp-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-std=gnu++0x" + } + } + enabled: true + } + feature { + name: "default_link_flags" + flag_set { + action: "c++-link-executable" + action: "c++-link-dynamic-library" + action: "c++-link-nodeps-dynamic-library" + flag_group { + flag: "-lstdc++" + } + } + enabled: true + } + feature { + name: "supports_dynamic_linker" + enabled: true + } + feature { + name: "supports_interface_shared_libraries" + enabled: true + } + feature { + name: "objcopy_embed_flags" + flag_set { + action: "objcopy_embed_data" + flag_group { + flag: "-I" + flag: "binary" + } + } + enabled: true + } + action_config { + config_name: "objcopy_embed_data" + action_name: "objcopy_embed_data" + tool { + tool_path: "C:/tools/msys64/usr/bin/objcopy" + } + enabled: true + } } - toolchain { - toolchain_identifier: "windows_msys64-no-dyn-linker" - abi_version: "local" - abi_libc_version: "local" - builtin_sysroot: "" - compiler: "compiler_no_dyn_linker" - host_system_name: "local" - needsPic: false - target_libc: "local" - target_cpu: "x64_windows" - target_system_name: "local" - - 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" } - # Use gcc instead of g++ so that C will compile correctly. - tool_path { name: "gcc" path: "C:/tools/msys64/usr/bin/gcc" } - cxx_flag: "-std=gnu++0x" - linker_flag: "-lstdc++" - # TODO(bazel-team): In theory, the path here ought to exactly match the path - # used by gcc. That works because bazel currently doesn't track files at - # absolute locations and has no remote execution, yet. However, this will need - # to be fixed, maybe with auto-detection? - cxx_builtin_include_directory: "C:/tools/msys64/" - cxx_builtin_include_directory: "/usr/" - 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" } - objcopy_embed_flag: "-I" - objcopy_embed_flag: "binary" - tool_path { name: "objdump" path: "C:/tools/msys64/usr/bin/objdump" } - tool_path { name: "strip" path: "C:/tools/msys64/usr/bin/strip" } - tool_path { name: "llvm-profdata" path: "C:/tools/msys64/usr/bin/llvm-profdata" } - # No linking_mode_flags here + toolchain_identifier: "windows_msys64-no-dyn-linker" + host_system_name: "local" + target_system_name: "local" + target_cpu: "x64_windows" + target_libc: "local" + compiler: "compiler_no_dyn_linker" + abi_version: "local" + abi_libc_version: "local" + 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" + } + tool_path { + name: "llvm-profdata" + path: "C:/tools/msys64/usr/bin/llvm-profdata" + } + cxx_builtin_include_directory: "C:/tools/msys64/" + cxx_builtin_include_directory: "/usr/" + builtin_sysroot: "" + feature { + name: "default_compile_flags" + flag_set { + action: "linkstamp-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-std=gnu++0x" + } + } + enabled: true + } + feature { + name: "default_link_flags" + flag_set { + action: "c++-link-executable" + action: "c++-link-dynamic-library" + action: "c++-link-nodeps-dynamic-library" + flag_group { + flag: "-lstdc++" + } + } + enabled: true + } + feature { + name: "objcopy_embed_flags" + flag_set { + action: "objcopy_embed_data" + flag_group { + flag: "-I" + flag: "binary" + } + } + enabled: true + } + action_config { + config_name: "objcopy_embed_data" + action_name: "objcopy_embed_data" + tool { + tool_path: "C:/tools/msys64/usr/bin/objcopy" + } + enabled: true + } }
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java index 57a22f8..c633106 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java
@@ -284,9 +284,7 @@ @Test public void testStartEndLibThroughFeature() throws Exception { - AnalysisMock.get() - .ccSupport() - .setupCrosstool(mockToolsConfig, MockCcSupport.SUPPORTS_START_END_LIB_FEATURE); + AnalysisMock.get().ccSupport().setupCrosstool(mockToolsConfig); useConfiguration("--start_end_lib"); scratch.file( "test/BUILD", @@ -528,7 +526,9 @@ public void testCcTestBuiltWithFissionHasDwp() throws Exception { // Tests that cc_tests built statically and with Fission will have the .dwp file // in their runfiles. - + getAnalysisMock() + .ccSupport() + .setupCrosstool(mockToolsConfig, MockCcSupport.PER_OBJECT_DEBUG_INFO_CONFIGURATION); useConfiguration("--cpu=k8", "--build_test_dwp", "--dynamic_mode=off", "--fission=yes"); ConfiguredTarget target = scratchConfiguredTarget( @@ -965,10 +965,8 @@ MockCcSupport.NO_LEGACY_FEATURES_FEATURE, MockCcSupport.EMPTY_STATIC_LIBRARY_ACTION_CONFIG, MockCcSupport.EMPTY_COMPILE_ACTION_CONFIG, - MockCcSupport.EMPTY_DYNAMIC_LIBRARY_ACTION_CONFIG, - "needsPic: false", - "feature { name: 'supports_pic' enabled: true }"); - useConfiguration(); + MockCcSupport.EMPTY_DYNAMIC_LIBRARY_ACTION_CONFIG); + useConfiguration("--cpu=k8"); scratch.file("x/BUILD", "cc_library(name = 'foo', srcs = ['a.cc'])"); scratch.file("x/a.cc"); @@ -992,10 +990,8 @@ MockCcSupport.NO_LEGACY_FEATURES_FEATURE, MockCcSupport.EMPTY_STATIC_LIBRARY_ACTION_CONFIG, MockCcSupport.EMPTY_COMPILE_ACTION_CONFIG, - MockCcSupport.EMPTY_DYNAMIC_LIBRARY_ACTION_CONFIG, - "needsPic: false", - "feature { name: 'supports_pic' }"); - useConfiguration(); + MockCcSupport.EMPTY_DYNAMIC_LIBRARY_ACTION_CONFIG); + useConfiguration("--features=-supports_pic"); scratch.file("x/BUILD", "cc_library(name = 'foo', srcs = ['a.cc'])"); scratch.file("x/a.cc"); @@ -1019,10 +1015,8 @@ MockCcSupport.NO_LEGACY_FEATURES_FEATURE, MockCcSupport.EMPTY_STATIC_LIBRARY_ACTION_CONFIG, MockCcSupport.EMPTY_COMPILE_ACTION_CONFIG, - MockCcSupport.EMPTY_DYNAMIC_LIBRARY_ACTION_CONFIG, - "needsPic: false", - "feature { name: 'supports_pic' }"); - useConfiguration("--force_pic"); + MockCcSupport.EMPTY_DYNAMIC_LIBRARY_ACTION_CONFIG); + useConfiguration("--force_pic", "--cpu=k8"); scratch.file("x/BUILD", "cc_library(name = 'foo', srcs = ['a.cc'])"); scratch.file("x/a.cc"); @@ -1047,9 +1041,8 @@ MockCcSupport.NO_LEGACY_FEATURES_FEATURE, MockCcSupport.EMPTY_STATIC_LIBRARY_ACTION_CONFIG, MockCcSupport.EMPTY_DYNAMIC_LIBRARY_ACTION_CONFIG, - MockCcSupport.EMPTY_COMPILE_ACTION_CONFIG, - "needsPic: false"); - useConfiguration("--force_pic"); + MockCcSupport.EMPTY_COMPILE_ACTION_CONFIG); + useConfiguration("--force_pic", "--features=-supports_pic"); scratch.file("x/BUILD", "cc_library(name = 'foo', srcs = ['a.cc'])"); scratch.file("x/a.cc");
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java index b219d81..0a77570 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
@@ -422,8 +422,6 @@ mockToolsConfig, MockCcSupport.COPY_DYNAMIC_LIBRARIES_TO_BINARY_CONFIGURATION, MockCcSupport.TARGETS_WINDOWS_CONFIGURATION, - "needsPic: false", - "supports_interface_shared_objects: true", "artifact_name_pattern {" + " category_name: 'object_file'" + " prefix: ''" @@ -455,7 +453,7 @@ + " extension: '.if.lib'" + "}"); - useConfiguration(); + useConfiguration("--features=-supports_pic"); ConfiguredTarget hello = getConfiguredTarget("//hello:hello"); Artifact helloObj = @@ -943,22 +941,6 @@ } @Test - public void testPicNotAvailableError() throws Exception { - AnalysisMock.get() - .ccSupport() - .setupCrosstool( - mockToolsConfig, - MockCcSupport.EMPTY_STATIC_LIBRARY_ACTION_CONFIG, - MockCcSupport.EMPTY_COMPILE_ACTION_CONFIG, - MockCcSupport.NO_LEGACY_FEATURES_FEATURE); - useConfiguration("--cpu=k8"); - writeSimpleCcLibrary(); - reporter.removeHandler(failFastHandler); - getConfiguredTarget("//module:map"); - assertContainsEvent("PIC compilation is requested but the toolchain does not support it"); - } - - @Test public void testToolchainWithoutPicForNoPicCompilation() throws Exception { AnalysisMock.get() .ccSupport()
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java index 3392bfb..b5a0d06 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java
@@ -95,6 +95,19 @@ private final FeatureConfiguration getMockFeatureConfiguration(RuleContext ruleContext) throws Exception { + CToolchain.FlagGroup flagGroup = + CToolchain.FlagGroup.newBuilder().addFlag("-lcpp_standard_library").build(); + CToolchain.FlagSet flagSet = + CToolchain.FlagSet.newBuilder() + .addAction("c++-link-executable") + .addFlagGroup(flagGroup) + .build(); + CToolchain.Feature linkCppStandardLibrary = + CToolchain.Feature.newBuilder() + .setName("link_cpp_standard_library") + .setEnabled(true) + .addFlagSet(flagSet) + .build(); ImmutableList<CToolchain.Feature> features = new ImmutableList.Builder<CToolchain.Feature>() .addAll( @@ -105,6 +118,7 @@ /* supportsEmbeddedRuntimes= */ true, /* supportsInterfaceSharedLibraries= */ false)) .addAll(CppActionConfigs.getFeaturesToAppearLastInFeaturesList(ImmutableSet.of())) + .add(linkCppStandardLibrary) .build(); ImmutableList<CToolchain.ActionConfig> actionConfigs = @@ -118,6 +132,7 @@ return CcToolchainFeaturesTest.buildFeatures(ruleContext, features, actionConfigs) .getFeatureConfiguration( ImmutableSet.of( + "link_cpp_standard_library", Link.LinkTargetType.EXECUTABLE.getActionName(), Link.LinkTargetType.NODEPS_DYNAMIC_LIBRARY.getActionName(), Link.LinkTargetType.DYNAMIC_LIBRARY.getActionName(), @@ -658,12 +673,7 @@ @Test public void testInterfaceOutputForDynamicLibrary() throws Exception { - AnalysisMock.get() - .ccSupport() - .setupCrosstool( - mockToolsConfig, - MockCcSupport.SUPPORTS_INTERFACE_SHARED_LIBRARIES, - "supports_interface_shared_objects: false"); + AnalysisMock.get().ccSupport().setupCrosstool(mockToolsConfig); useConfiguration(); scratch.file("foo/BUILD", "cc_library(name = 'foo', srcs = ['foo.cc'])"); @@ -1065,6 +1075,6 @@ assertThat(linkCommandLine).contains("output/path.a"); assertThat(linkCommandLine).contains("path.a-2.params"); - assertThat(result.second).contains("-lstdc++"); + assertThat(result.second).contains("-lcpp_standard_library"); } }
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/LinkBuildVariablesTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/LinkBuildVariablesTest.java index e41b96c..7a66525 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/LinkBuildVariablesTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/LinkBuildVariablesTest.java
@@ -141,9 +141,7 @@ public void testInterfaceLibraryBuildingVariablesWhenGenerationPossible() throws Exception { // Make sure the interface shared object generation is enabled in the configuration // (which it is not by default for some windows toolchains) - AnalysisMock.get() - .ccSupport() - .setupCrosstool(mockToolsConfig, MockCcSupport.SUPPORTS_INTERFACE_SHARED_LIBRARIES); + AnalysisMock.get().ccSupport().setupCrosstool(mockToolsConfig); useConfiguration(); verifyIfsoVariables();
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java index e364bb6..5dd6459 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java
@@ -595,20 +595,7 @@ public void testEmptyLinkVariablesContainSysroot() throws Exception { AnalysisMock.get() .ccSupport() - .setupCrosstool( - mockToolsConfig, - "builtin_sysroot: '/foo/bar/sysroot'", - "feature {", - " name: 'sysroot'", - " enabled: true", - " flag_set {", - " action: 'c++-link-executable'", - " flag_group {", - " expand_if_all_available: 'sysroot'", - " flag: '--yolo_sysroot_flag=%{sysroot}'", - " }", - " }", - "}"); + .setupCrosstool(mockToolsConfig, "builtin_sysroot: '/foo/bar/sysroot'"); useConfiguration(); assertThat( commandLineForVariables( @@ -617,7 +604,7 @@ "feature_configuration = feature_configuration,", "cc_toolchain = toolchain,", ")")) - .contains("--yolo_sysroot_flag=/foo/bar/sysroot"); + .contains("--sysroot=/foo/bar/sysroot"); } @Test @@ -1179,13 +1166,12 @@ .setupCrosstool( mockToolsConfig, MockCcSupport.COPY_DYNAMIC_LIBRARIES_TO_BINARY_CONFIGURATION, - MockCcSupport.TARGETS_WINDOWS_CONFIGURATION, - "supports_interface_shared_objects: false", - "needsPic: false"); + MockCcSupport.TARGETS_WINDOWS_CONFIGURATION); doTestCcLinkingContext( ImmutableList.of("a.a", "libdep2.a", "b.a", "c.a", "d.a", "libdep1.a"), ImmutableList.of("a.pic.a", "b.pic.a", "c.pic.a", "e.pic.a"), - ImmutableList.of("a.so", "libdep2.so", "b.so", "e.so", "libdep1.so")); + ImmutableList.of("a.so", "libdep2.so", "b.so", "e.so", "libdep1.so"), + /* disableSupportsPic= */ true); } @Test @@ -1195,20 +1181,23 @@ .setupCrosstool( mockToolsConfig, MockCcSupport.PIC_FEATURE, - "supports_interface_shared_objects: false", "needsPic: true"); doTestCcLinkingContext( ImmutableList.of("a.a", "b.a", "c.a", "d.a"), ImmutableList.of("a.pic.a", "libdep2.a", "b.pic.a", "c.pic.a", "e.pic.a", "libdep1.a"), - ImmutableList.of("a.so", "liba_Slibdep2.so", "b.so", "e.so", "liba_Slibdep1.so")); + ImmutableList.of("a.so", "liba_Slibdep2.so", "b.so", "e.so", "liba_Slibdep1.so"), + /* disableSupportsPic= */ false); } private void doTestCcLinkingContext( List<String> staticLibraryList, List<String> picStaticLibraryList, - List<String> dynamicLibraryList) + List<String> dynamicLibraryList, + boolean disableSupportsPic) throws Exception { - useConfiguration(); + useConfiguration( + "--features=-supports_interface_shared_libraries", + disableSupportsPic ? "--features=-supports_pic" : "--features=supports_pic"); setUpCcLinkingContextTest(); ConfiguredTarget a = getConfiguredTarget("//a:a");
diff --git a/src/test/shell/bazel/testdata/bazel_toolchain_test_data/tools/arm_compiler/CROSSTOOL b/src/test/shell/bazel/testdata/bazel_toolchain_test_data/tools/arm_compiler/CROSSTOOL index 0ede68a..2a19204 100644 --- a/src/test/shell/bazel/testdata/bazel_toolchain_test_data/tools/arm_compiler/CROSSTOOL +++ b/src/test/shell/bazel/testdata/bazel_toolchain_test_data/tools/arm_compiler/CROSSTOOL
@@ -1,61 +1,58 @@ major_version: "local" minor_version: "" - toolchain { + toolchain_identifier: "armeabi-v7a" + host_system_name: "armeabi-v7a" + target_system_name: "arm_a15" + target_cpu: "armeabi-v7a" + target_libc: "glibc_2.19" + compiler: "gcc" abi_version: "gcc" abi_libc_version: "glibc_2.19" - builtin_sysroot: "" - compiler: "gcc" - host_system_name: "armeabi-v7a" - needsPic: true - supports_incremental_linker: false - supports_fission: false - supports_interface_shared_objects: false - supports_normalizing_ar: true - supports_start_end_lib: false - supports_thin_archives: true - target_libc: "glibc_2.19" - target_cpu: "armeabi-v7a" - target_system_name: "arm_a15" - toolchain_identifier: "armeabi-v7a" - - tool_path { name: "ar" path: "linaro_linux_gcc/arm-linux-gnueabihf-ar" } - tool_path { name: "compat-ld" path: "linaro_linux_gcc/arm-linux-gnueabihf-ld" } - tool_path { name: "cpp" path: "linaro_linux_gcc/arm-linux-gnueabihf-gcc" } - tool_path { name: "dwp" path: "linaro_linux_gcc/arm-linux-gnueabihf-dwp" } - tool_path { name: "gcc" path: "linaro_linux_gcc/arm-linux-gnueabihf-gcc" } - tool_path { name: "gcov" path: "arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-gcov-4.9" } - # C(++) compiles invoke the compiler (as that is the one knowing where - # to find libraries), but we provide LD so other rules can invoke the linker. - tool_path { name: "ld" path: "linaro_linux_gcc/arm-linux-gnueabihf-ld" } - tool_path { name: "nm" path: "linaro_linux_gcc/arm-linux-gnueabihf-nm" } - tool_path { name: "objcopy" path: "linaro_linux_gcc/arm-linux-gnueabihf-objcopy" } - objcopy_embed_flag: "-I" - objcopy_embed_flag: "binary" - tool_path { name: "objdump" path: "linaro_linux_gcc/arm-linux-gnueabihf-objdump" } - tool_path { name: "strip" path: "linaro_linux_gcc/arm-linux-gnueabihf-strip" } - - compiler_flag: "--sysroot=external/org_linaro_components_toolchain_gcc_5_3_1/arm-linux-gnueabihf/libc" - compiler_flag: "-mfloat-abi=hard" - - compiler_flag: "-nostdinc" - compiler_flag: "-isystem" - compiler_flag: "external/org_linaro_components_toolchain_gcc_5_3_1/lib/gcc/arm-linux-gnueabihf/5.3.1/include" - compiler_flag: "-isystem" - compiler_flag: "external/org_linaro_components_toolchain_gcc_5_3_1/arm-linux-gnueabihf/libc/usr/include" - compiler_flag: "-isystem" - compiler_flag: "external/org_linaro_components_toolchain_gcc_5_3_1/lib/gcc/arm-linux-gnueabihf/5.3.1/include-fixed" - compiler_flag: "-isystem" - compiler_flag: "external/org_linaro_components_toolchain_gcc_5_3_1/arm-linux-gnueabihf/libc/usr/include" - cxx_flag: "-isystem" - cxx_flag: "external/org_linaro_components_toolchain_gcc_5_3_1/arm-linux-gnueabihf/include/c++/5.3.1/arm-linux-gnueabihf" - cxx_flag: "-isystem" - cxx_flag: "external/org_linaro_components_toolchain_gcc_5_3_1/arm-linux-gnueabihf/include/c++/5.3.1" - cxx_flag: "-isystem" - cxx_flag: "external/org_linaro_components_toolchain_gcc_5_3_1/include/c++/5.3.1/arm-linux-gnueabihf" - cxx_flag: "-isystem" - cxx_flag: "external/org_linaro_components_toolchain_gcc_5_3_1/include/c++/5.3.1" - + tool_path { + name: "ar" + path: "linaro_linux_gcc/arm-linux-gnueabihf-ar" + } + tool_path { + name: "compat-ld" + path: "linaro_linux_gcc/arm-linux-gnueabihf-ld" + } + tool_path { + name: "cpp" + path: "linaro_linux_gcc/arm-linux-gnueabihf-gcc" + } + tool_path { + name: "dwp" + path: "linaro_linux_gcc/arm-linux-gnueabihf-dwp" + } + tool_path { + name: "gcc" + path: "linaro_linux_gcc/arm-linux-gnueabihf-gcc" + } + tool_path { + name: "gcov" + path: "arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-gcov-4.9" + } + tool_path { + name: "ld" + path: "linaro_linux_gcc/arm-linux-gnueabihf-ld" + } + tool_path { + name: "nm" + path: "linaro_linux_gcc/arm-linux-gnueabihf-nm" + } + tool_path { + name: "objcopy" + path: "linaro_linux_gcc/arm-linux-gnueabihf-objcopy" + } + tool_path { + name: "objdump" + path: "linaro_linux_gcc/arm-linux-gnueabihf-objdump" + } + tool_path { + name: "strip" + path: "linaro_linux_gcc/arm-linux-gnueabihf-strip" + } cxx_builtin_include_directory: "%package(@org_linaro_components_toolchain_gcc_5_3_1//include)%" cxx_builtin_include_directory: "%package(@org_linaro_components_toolchain_gcc_5_3_1//arm-linux-gnueabihf/libc/usr/include)%" cxx_builtin_include_directory: "%package(@org_linaro_components_toolchain_gcc_5_3_1//arm-linux-gnueabihf/libc/usr/lib/include)%" @@ -66,97 +63,284 @@ cxx_builtin_include_directory: "%package(@org_linaro_components_toolchain_gcc_5_3_1//lib/gcc/arm-linux-gnueabihf/5.3.1/include)%" cxx_builtin_include_directory: "%package(@org_linaro_components_toolchain_gcc_5_3_1//lib/gcc/arm-linux-gnueabihf/5.3.1/include-fixed)%" cxx_builtin_include_directory: "%package(@org_linaro_components_toolchain_gcc_5_3_1//arm-linux-gnueabihf/include)%/c++/5.3.1" - - linker_flag: "--sysroot=external/org_linaro_components_toolchain_gcc_5_3_1/arm-linux-gnueabihf/libc" - linker_flag: "-lstdc++" - linker_flag: "-latomic" - linker_flag: "-lm" - linker_flag: "-lpthread" - linker_flag: "-Ltools/arm_compiler/linaro_linux_gcc/clang_more_libs" - linker_flag: "-Lexternal/org_linaro_components_toolchain_gcc_5_3_1/arm-linux-gnueabihf/lib" - linker_flag: "-Lexternal/org_linaro_components_toolchain_gcc_5_3_1/arm-linux-gnueabihf/libc/lib" - linker_flag: "-Lexternal/org_linaro_components_toolchain_gcc_5_3_1/arm-linux-gnueabihf/libc/usr/lib" - linker_flag: "-Bexternal/org_linaro_components_toolchain_gcc_5_3_1/arm-linux-gnueabihf/bin" - linker_flag: "-Wl,--dynamic-linker=/lib/ld-linux-armhf.so.3" - - # Anticipated future default. - # This makes GCC and Clang do what we want when called through symlinks. - unfiltered_cxx_flag: "-no-canonical-prefixes" - linker_flag: "-no-canonical-prefixes" - - # Make C++ compilation deterministic. Use linkstamping instead of these - # compiler symbols. - 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\"" - - # Security hardening on by default. - # Conservative choice; -D_FORTIFY_SOURCE=2 may be unsafe in some cases. - # We need to undef it before redefining it as some distributions now have - # it enabled by default. - compiler_flag: "-U_FORTIFY_SOURCE" - compiler_flag: "-fstack-protector" - compiler_flag: "-fPIE" - linker_flag: "-pie" - linker_flag: "-Wl,-z,relro,-z,now" - - # Enable coloring even if there's no attached terminal. Bazel removes the - # escape sequences if --nocolor is specified. - compiler_flag: "-fdiagnostics-color=always" - - # All warnings are enabled. Maybe enable -Werror as well? - compiler_flag: "-Wall" - # Enable a few more warnings that aren't part of -Wall. - compiler_flag: "-Wunused-but-set-parameter" - # But disable some that are problematic. - compiler_flag: "-Wno-free-nonheap-object" # has false positives - - # Keep stack frames for debugging, even in opt mode. - compiler_flag: "-fno-omit-frame-pointer" - - compilation_mode_flags { - mode: DBG - # Enable debug symbols. - compiler_flag: "-g" + builtin_sysroot: "" + feature { + name: "default_compile_flags" + flag_set { + action: "assemble" + action: "preprocess-assemble" + action: "linkstamp-compile" + action: "c-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "--sysroot=external/org_linaro_components_toolchain_gcc_5_3_1/arm-linux-gnueabihf/libc" + flag: "-mfloat-abi=hard" + flag: "-nostdinc" + flag: "-isystem" + flag: "external/org_linaro_components_toolchain_gcc_5_3_1/lib/gcc/arm-linux-gnueabihf/5.3.1/include" + flag: "-isystem" + flag: "external/org_linaro_components_toolchain_gcc_5_3_1/arm-linux-gnueabihf/libc/usr/include" + flag: "-isystem" + flag: "external/org_linaro_components_toolchain_gcc_5_3_1/lib/gcc/arm-linux-gnueabihf/5.3.1/include-fixed" + flag: "-isystem" + flag: "external/org_linaro_components_toolchain_gcc_5_3_1/arm-linux-gnueabihf/libc/usr/include" + flag: "-U_FORTIFY_SOURCE" + flag: "-fstack-protector" + flag: "-fPIE" + flag: "-fdiagnostics-color=always" + flag: "-Wall" + flag: "-Wunused-but-set-parameter" + flag: "-Wno-free-nonheap-object" + flag: "-fno-omit-frame-pointer" + } + } + flag_set { + action: "assemble" + action: "preprocess-assemble" + action: "linkstamp-compile" + action: "c-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-g" + } + with_feature { + feature: "dbg" + } + } + flag_set { + action: "assemble" + action: "preprocess-assemble" + action: "linkstamp-compile" + action: "c-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-g0" + flag: "-O2" + flag: "-DNDEBUG" + flag: "-ffunction-sections" + flag: "-fdata-sections" + } + with_feature { + feature: "opt" + } + } + flag_set { + action: "linkstamp-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-isystem" + flag: "external/org_linaro_components_toolchain_gcc_5_3_1/arm-linux-gnueabihf/include/c++/5.3.1/arm-linux-gnueabihf" + flag: "-isystem" + flag: "external/org_linaro_components_toolchain_gcc_5_3_1/arm-linux-gnueabihf/include/c++/5.3.1" + flag: "-isystem" + flag: "external/org_linaro_components_toolchain_gcc_5_3_1/include/c++/5.3.1/arm-linux-gnueabihf" + flag: "-isystem" + flag: "external/org_linaro_components_toolchain_gcc_5_3_1/include/c++/5.3.1" + } + } + enabled: true } - compilation_mode_flags { - mode: OPT - # No debug symbols. - # Maybe we should enable https://gcc.gnu.org/wiki/DebugFission for opt or - # even generally? However, that can't happen here, as it requires special - # handling in Bazel. - compiler_flag: "-g0" - - # Conservative choice for -O - # -O3 can increase binary size and even slow down the resulting binaries. - # Profile first and / or use FDO if you need better performance than this. - compiler_flag: "-O2" - - # Disable assertions - compiler_flag: "-DNDEBUG" - - # Removal of unused code and data at link time (can this increase binary size in some cases?). - compiler_flag: "-ffunction-sections" - compiler_flag: "-fdata-sections" - linker_flag: "-Wl,--gc-sections" + feature { + name: "default_link_flags" + flag_set { + action: "c++-link-executable" + action: "c++-link-dynamic-library" + action: "c++-link-nodeps-dynamic-library" + flag_group { + flag: "--sysroot=external/org_linaro_components_toolchain_gcc_5_3_1/arm-linux-gnueabihf/libc" + flag: "-lstdc++" + flag: "-latomic" + flag: "-lm" + flag: "-lpthread" + flag: "-Ltools/arm_compiler/linaro_linux_gcc/clang_more_libs" + flag: "-Lexternal/org_linaro_components_toolchain_gcc_5_3_1/arm-linux-gnueabihf/lib" + flag: "-Lexternal/org_linaro_components_toolchain_gcc_5_3_1/arm-linux-gnueabihf/libc/lib" + flag: "-Lexternal/org_linaro_components_toolchain_gcc_5_3_1/arm-linux-gnueabihf/libc/usr/lib" + flag: "-Bexternal/org_linaro_components_toolchain_gcc_5_3_1/arm-linux-gnueabihf/bin" + flag: "-Wl,--dynamic-linker=/lib/ld-linux-armhf.so.3" + flag: "-no-canonical-prefixes" + flag: "-pie" + flag: "-Wl,-z,relro,-z,now" + } + } + flag_set { + action: "c++-link-executable" + action: "c++-link-dynamic-library" + action: "c++-link-nodeps-dynamic-library" + flag_group { + flag: "-Wl,--gc-sections" + } + with_feature { + feature: "opt" + } + } + enabled: true + } + feature { + name: "supports_pic" + enabled: true + } + feature { + name: "objcopy_embed_flags" + flag_set { + action: "objcopy_embed_data" + flag_group { + flag: "-I" + flag: "binary" + } + } + enabled: true + } + feature { + name: "opt" + } + feature { + name: "dbg" + } + feature { + name: "user_compile_flags" + flag_set { + action: "assemble" + action: "preprocess-assemble" + action: "linkstamp-compile" + action: "c-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "%{user_compile_flags}" + iterate_over: "user_compile_flags" + expand_if_all_available: "user_compile_flags" + } + } + enabled: true + } + feature { + name: "sysroot" + flag_set { + action: "preprocess-assemble" + action: "linkstamp-compile" + action: "c-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + action: "c++-link-executable" + action: "c++-link-dynamic-library" + action: "c++-link-nodeps-dynamic-library" + flag_group { + flag: "--sysroot=%{sysroot}" + expand_if_all_available: "sysroot" + } + } + enabled: true + } + feature { + name: "unfiltered_compile_flags" + flag_set { + action: "assemble" + action: "preprocess-assemble" + action: "linkstamp-compile" + action: "c-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-no-canonical-prefixes" + flag: "-Wno-builtin-macro-redefined" + flag: "-D__DATE__=\"redacted\"" + flag: "-D__TIMESTAMP__=\"redacted\"" + flag: "-D__TIME__=\"redacted\"" + } + } + enabled: true + } + action_config { + config_name: "objcopy_embed_data" + action_name: "objcopy_embed_data" + tool { + tool_path: "linaro_linux_gcc/arm-linux-gnueabihf-objcopy" + } + enabled: true } } - toolchain { toolchain_identifier: "local" - abi_libc_version: "local" - abi_version: "local" - builtin_sysroot: "" + host_system_name: "local" + target_system_name: "local" + target_cpu: "k8" + target_libc: "local" compiler: "compiler" - compiler_flag: "-U_FORTIFY_SOURCE" - compiler_flag: "-D_FORTIFY_SOURCE=2" - compiler_flag: "-fstack-protector" - compiler_flag: "-Wall" - compiler_flag: "-Wl,-z,-relro,-z,now" - compiler_flag: "-Wunused-but-set-parameter" - compiler_flag: "-Wno-free-nonheap-object" - compiler_flag: "-fno-omit-frame-pointer" + abi_version: "local" + abi_libc_version: "local" + tool_path { + name: "ar" + path: "/usr/bin/ar" + } + 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" + } cxx_builtin_include_directory: "/usr/include/c++/4.8" cxx_builtin_include_directory: "/usr/include/x86_64-linux-gnu/c++/4.8" cxx_builtin_include_directory: "/usr/include/c++/4.8/backward" @@ -165,52 +349,208 @@ cxx_builtin_include_directory: "/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed" cxx_builtin_include_directory: "/usr/include/x86_64-linux-gnu" cxx_builtin_include_directory: "/usr/include" - cxx_flag: "-std=c++0x" - host_system_name: "local" - linker_flag: "-lstdc++" - linker_flag: "-lm" - linker_flag: "-Wl,-no-as-needed" - linker_flag: "-pass-exit-codes" - needsPic: true - objcopy_embed_flag: "-I" - objcopy_embed_flag: "binary" - supports_fission: false - supports_incremental_linker: false - supports_interface_shared_objects: false - supports_normalizing_ar: false - supports_start_end_lib: false - supports_thin_archives: false - target_cpu: "k8" - target_libc: "local" - target_system_name: "local" - unfiltered_cxx_flag: "-fno-canonical-system-headers" - 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\"" - tool_path {name: "ar" path: "/usr/bin/ar" } - 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" } - - compilation_mode_flags { - mode: DBG - compiler_flag: "-g" + builtin_sysroot: "" + feature { + name: "default_compile_flags" + flag_set { + action: "assemble" + action: "preprocess-assemble" + action: "linkstamp-compile" + action: "c-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-U_FORTIFY_SOURCE" + flag: "-D_FORTIFY_SOURCE=2" + flag: "-fstack-protector" + flag: "-Wall" + flag: "-Wl,-z,-relro,-z,now" + flag: "-Wunused-but-set-parameter" + flag: "-Wno-free-nonheap-object" + flag: "-fno-omit-frame-pointer" + } + } + flag_set { + action: "assemble" + action: "preprocess-assemble" + action: "linkstamp-compile" + action: "c-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-g" + } + with_feature { + feature: "dbg" + } + } + flag_set { + action: "assemble" + action: "preprocess-assemble" + action: "linkstamp-compile" + action: "c-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-g0" + flag: "-O2" + flag: "-DNDEBUG" + flag: "-ffunction-sections" + flag: "-fdata-sections" + } + with_feature { + feature: "opt" + } + } + flag_set { + action: "linkstamp-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-std=c++0x" + } + } + enabled: true } - compilation_mode_flags { - mode: OPT - compiler_flag: "-g0" - compiler_flag: "-O2" - compiler_flag: "-DNDEBUG" - compiler_flag: "-ffunction-sections" - compiler_flag: "-fdata-sections" - linker_flag: "-Wl,--gc-sections" + feature { + name: "default_link_flags" + flag_set { + action: "c++-link-executable" + action: "c++-link-dynamic-library" + action: "c++-link-nodeps-dynamic-library" + flag_group { + flag: "-lstdc++" + flag: "-lm" + flag: "-Wl,-no-as-needed" + flag: "-pass-exit-codes" + } + } + flag_set { + action: "c++-link-executable" + action: "c++-link-dynamic-library" + action: "c++-link-nodeps-dynamic-library" + flag_group { + flag: "-Wl,--gc-sections" + } + with_feature { + feature: "opt" + } + } + enabled: true } - linking_mode_flags { mode: DYNAMIC } + feature { + name: "supports_dynamic_linker" + enabled: true + } + feature { + name: "supports_pic" + enabled: true + } + feature { + name: "objcopy_embed_flags" + flag_set { + action: "objcopy_embed_data" + flag_group { + flag: "-I" + flag: "binary" + } + } + enabled: true + } + feature { + name: "opt" + } + feature { + name: "dbg" + } + feature { + name: "user_compile_flags" + flag_set { + action: "assemble" + action: "preprocess-assemble" + action: "linkstamp-compile" + action: "c-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "%{user_compile_flags}" + iterate_over: "user_compile_flags" + expand_if_all_available: "user_compile_flags" + } + } + enabled: true + } + feature { + name: "sysroot" + flag_set { + action: "preprocess-assemble" + action: "linkstamp-compile" + action: "c-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + action: "c++-link-executable" + action: "c++-link-dynamic-library" + action: "c++-link-nodeps-dynamic-library" + flag_group { + flag: "--sysroot=%{sysroot}" + expand_if_all_available: "sysroot" + } + } + enabled: true + } + feature { + name: "unfiltered_compile_flags" + flag_set { + action: "assemble" + action: "preprocess-assemble" + action: "linkstamp-compile" + action: "c-compile" + action: "c++-compile" + action: "c++-header-parsing" + action: "c++-module-compile" + action: "c++-module-codegen" + action: "lto-backend" + action: "clif-match" + flag_group { + flag: "-fno-canonical-system-headers" + flag: "-Wno-builtin-macro-redefined" + flag: "-D__DATE__=\"redacted\"" + flag: "-D__TIMESTAMP__=\"redacted\"" + flag: "-D__TIME__=\"redacted\"" + } + } + enabled: true + } + action_config { + config_name: "objcopy_embed_data" + action_name: "objcopy_embed_data" + tool { + tool_path: "/usr/bin/objcopy" + } + enabled: true + } }