in src/main/java/com/google/devtools/build/lib/rules/cpp/CppActionConfigs.java [1019:1378]
public static ImmutableList<CToolchain.ActionConfig> getLegacyActionConfigs(
CppPlatform platform,
String gccToolPath,
String arToolPath,
String stripToolPath,
boolean supportsInterfaceSharedLibraries,
ImmutableSet<String> existingActionConfigNames) {
try {
ImmutableList.Builder<CToolchain.ActionConfig> actionConfigBuilder = ImmutableList.builder();
if (!existingActionConfigNames.contains(CppActionNames.ASSEMBLE)) {
actionConfigBuilder.add(
getActionConfig(
Joiner.on("\n")
.join(
" config_name: 'assemble'",
" action_name: 'assemble'",
" tool {",
" tool_path: '" + gccToolPath + "'",
" }",
" implies: 'legacy_compile_flags'",
" implies: 'user_compile_flags'",
" implies: 'sysroot'",
" implies: 'unfiltered_compile_flags'",
" implies: 'compiler_input_flags'",
" implies: 'compiler_output_flags'")));
}
if (!existingActionConfigNames.contains(CppActionNames.PREPROCESS_ASSEMBLE)) {
actionConfigBuilder.add(
getActionConfig(
Joiner.on("\n")
.join(
" config_name: 'preprocess-assemble'",
" action_name: 'preprocess-assemble'",
" tool {",
" tool_path: '" + gccToolPath + "'",
" }",
" implies: 'legacy_compile_flags'",
" implies: 'user_compile_flags'",
" implies: 'sysroot'",
" implies: 'unfiltered_compile_flags'",
" implies: 'compiler_input_flags'",
" implies: 'compiler_output_flags'")));
}
if (!existingActionConfigNames.contains(CppActionNames.LINKSTAMP_COMPILE)) {
actionConfigBuilder.add(
getActionConfig(
Joiner.on("\n")
.join(
" config_name: 'linkstamp-compile'",
" action_name: 'linkstamp-compile'",
" tool {",
" tool_path: '" + gccToolPath + "'",
" }",
" implies: 'legacy_compile_flags'",
" implies: 'user_compile_flags'",
" implies: 'sysroot'",
" implies: 'unfiltered_compile_flags'",
" implies: 'compiler_input_flags'",
" implies: 'compiler_output_flags'")));
}
if (!existingActionConfigNames.contains(CppActionNames.LTO_BACKEND)) {
actionConfigBuilder.add(
getActionConfig(
Joiner.on("\n")
.join(
" config_name: 'lto-backend'",
" action_name: 'lto-backend'",
" tool {",
" tool_path: '" + gccToolPath + "'",
" }",
" implies: 'legacy_compile_flags'",
" implies: 'user_compile_flags'",
" implies: 'sysroot'",
" implies: 'unfiltered_compile_flags'",
" implies: 'compiler_input_flags'",
" implies: 'compiler_output_flags'")));
}
if (!existingActionConfigNames.contains(CppActionNames.C_COMPILE)) {
actionConfigBuilder.add(
getActionConfig(
Joiner.on("\n")
.join(
" config_name: 'c-compile'",
" action_name: 'c-compile'",
" tool {",
" tool_path: '" + gccToolPath + "'",
" }",
" implies: 'legacy_compile_flags'",
" implies: 'user_compile_flags'",
" implies: 'sysroot'",
" implies: 'unfiltered_compile_flags'",
" implies: 'compiler_input_flags'",
" implies: 'compiler_output_flags'")));
}
if (!existingActionConfigNames.contains(CppActionNames.CPP_COMPILE)) {
actionConfigBuilder.add(
getActionConfig(
Joiner.on("\n")
.join(
" config_name: 'c++-compile'",
" action_name: 'c++-compile'",
" tool {",
" tool_path: '" + gccToolPath + "'",
" }",
" implies: 'legacy_compile_flags'",
" implies: 'user_compile_flags'",
" implies: 'sysroot'",
" implies: 'unfiltered_compile_flags'",
" implies: 'compiler_input_flags'",
" implies: 'compiler_output_flags'")));
}
if (!existingActionConfigNames.contains(CppActionNames.CPP_HEADER_PARSING)) {
actionConfigBuilder.add(
getActionConfig(
Joiner.on("\n")
.join(
" config_name: 'c++-header-parsing'",
" action_name: 'c++-header-parsing'",
" tool {",
" tool_path: '" + gccToolPath + "'",
" }",
" implies: 'legacy_compile_flags'",
" implies: 'user_compile_flags'",
" implies: 'sysroot'",
" implies: 'unfiltered_compile_flags'",
" implies: 'compiler_input_flags'",
" implies: 'compiler_output_flags'")));
}
if (!existingActionConfigNames.contains(CppActionNames.CPP_MODULE_COMPILE)) {
actionConfigBuilder.add(
getActionConfig(
Joiner.on("\n")
.join(
" config_name: 'c++-module-compile'",
" action_name: 'c++-module-compile'",
" tool {",
" tool_path: '" + gccToolPath + "'",
" }",
" implies: 'legacy_compile_flags'",
" implies: 'user_compile_flags'",
" implies: 'sysroot'",
" implies: 'unfiltered_compile_flags'",
" implies: 'compiler_input_flags'",
" implies: 'compiler_output_flags'")));
}
if (!existingActionConfigNames.contains(CppActionNames.CPP_MODULE_CODEGEN)) {
actionConfigBuilder.add(
getActionConfig(
Joiner.on("\n")
.join(
" config_name: 'c++-module-codegen'",
" action_name: 'c++-module-codegen'",
" tool {",
" tool_path: '" + gccToolPath + "'",
" }",
" implies: 'legacy_compile_flags'",
" implies: 'user_compile_flags'",
" implies: 'sysroot'",
" implies: 'unfiltered_compile_flags'",
" implies: 'compiler_input_flags'",
" implies: 'compiler_output_flags'")));
}
if (!existingActionConfigNames.contains(CppActionNames.CPP_LINK_EXECUTABLE)) {
actionConfigBuilder.add(
getActionConfig(
Joiner.on("\n")
.join(
" config_name: 'c++-link-executable'",
" action_name: 'c++-link-executable'",
" tool {",
" tool_path: '" + gccToolPath + "'",
" }",
" implies: 'symbol_counts'",
" implies: 'strip_debug_symbols'",
" implies: 'linkstamps'",
" implies: 'output_execpath_flags'",
" implies: 'runtime_library_search_directories'",
" implies: 'library_search_directories'",
" implies: 'libraries_to_link'",
" implies: 'force_pic_flags'",
" implies: 'user_link_flags'",
" implies: 'legacy_link_flags'",
" implies: 'linker_param_file'",
" implies: 'fission_support'",
" implies: 'sysroot'")));
}
if (!existingActionConfigNames.contains(CppActionNames.LTO_INDEX_EXECUTABLE)) {
actionConfigBuilder.add(
getActionConfig(
Joiner.on("\n")
.join(
" config_name: 'lto-index-for-executable'",
" action_name: 'lto-index-for-executable'",
" tool {",
" tool_path: '" + gccToolPath + "'",
" }",
" implies: 'symbol_counts'",
" implies: 'strip_debug_symbols'",
" implies: 'linkstamps'",
" implies: 'output_execpath_flags'",
" implies: 'runtime_library_search_directories'",
" implies: 'library_search_directories'",
" implies: 'libraries_to_link'",
" implies: 'force_pic_flags'",
" implies: 'user_link_flags'",
" implies: 'legacy_link_flags'",
" implies: 'linker_param_file'",
" implies: 'fission_support'",
" implies: 'sysroot'")));
}
if (!existingActionConfigNames.contains(CppActionNames.CPP_LINK_NODEPS_DYNAMIC_LIBRARY)) {
actionConfigBuilder.add(
getActionConfig(
Joiner.on("\n")
.join(
" config_name: 'c++-link-nodeps-dynamic-library'",
" action_name: 'c++-link-nodeps-dynamic-library'",
" tool {",
" tool_path: '" + gccToolPath + "'",
" }",
" implies: 'build_interface_libraries'",
" implies: 'dynamic_library_linker_tool'",
" implies: 'symbol_counts'",
" implies: 'strip_debug_symbols'",
" implies: 'shared_flag'",
" implies: 'linkstamps'",
" implies: 'output_execpath_flags'",
" implies: 'runtime_library_search_directories'",
" implies: 'library_search_directories'",
" implies: 'libraries_to_link'",
" implies: 'user_link_flags'",
" implies: 'legacy_link_flags'",
" implies: 'linker_param_file'",
" implies: 'fission_support'",
" implies: 'sysroot'")));
}
if (!existingActionConfigNames.contains(CppActionNames.LTO_INDEX_NODEPS_DYNAMIC_LIBRARY)) {
actionConfigBuilder.add(
getActionConfig(
Joiner.on("\n")
.join(
" config_name: 'lto-index-for-nodeps-dynamic-library'",
" action_name: 'lto-index-for-nodeps-dynamic-library'",
" tool {",
" tool_path: '" + gccToolPath + "'",
" }",
" implies: 'build_interface_libraries'",
" implies: 'dynamic_library_linker_tool'",
" implies: 'symbol_counts'",
" implies: 'strip_debug_symbols'",
" implies: 'shared_flag'",
" implies: 'linkstamps'",
" implies: 'output_execpath_flags'",
" implies: 'runtime_library_search_directories'",
" implies: 'library_search_directories'",
" implies: 'libraries_to_link'",
" implies: 'user_link_flags'",
" implies: 'legacy_link_flags'",
" implies: 'linker_param_file'",
" implies: 'fission_support'",
" implies: 'sysroot'")));
}
if (!existingActionConfigNames.contains(CppActionNames.CPP_LINK_DYNAMIC_LIBRARY)) {
actionConfigBuilder.add(
getActionConfig(
Joiner.on("\n")
.join(
" config_name: 'c++-link-dynamic-library'",
" action_name: 'c++-link-dynamic-library'",
" tool {",
" tool_path: '" + gccToolPath + "'",
" }",
" implies: 'build_interface_libraries'",
" implies: 'dynamic_library_linker_tool'",
" implies: 'symbol_counts'",
" implies: 'strip_debug_symbols'",
" implies: 'shared_flag'",
" implies: 'linkstamps'",
" implies: 'output_execpath_flags'",
" implies: 'runtime_library_search_directories'",
" implies: 'library_search_directories'",
" implies: 'libraries_to_link'",
" implies: 'user_link_flags'",
" implies: 'legacy_link_flags'",
" implies: 'linker_param_file'",
" implies: 'fission_support'",
" implies: 'sysroot'")));
}
if (!existingActionConfigNames.contains(CppActionNames.LTO_INDEX_DYNAMIC_LIBRARY)) {
actionConfigBuilder.add(
getActionConfig(
Joiner.on("\n")
.join(
" config_name: 'lto-index-for-dynamic-library'",
" action_name: 'lto-index-for-dynamic-library'",
" tool {",
" tool_path: '" + gccToolPath + "'",
" }",
" implies: 'build_interface_libraries'",
" implies: 'dynamic_library_linker_tool'",
" implies: 'symbol_counts'",
" implies: 'strip_debug_symbols'",
" implies: 'shared_flag'",
" implies: 'linkstamps'",
" implies: 'output_execpath_flags'",
" implies: 'runtime_library_search_directories'",
" implies: 'library_search_directories'",
" implies: 'libraries_to_link'",
" implies: 'user_link_flags'",
" implies: 'legacy_link_flags'",
" implies: 'linker_param_file'",
" implies: 'fission_support'",
" implies: 'sysroot'")));
}
if (!existingActionConfigNames.contains(CppActionNames.CPP_LINK_STATIC_LIBRARY)) {
actionConfigBuilder.add(
getActionConfig(
Joiner.on("\n")
.join(
" config_name: 'c++-link-static-library'",
" action_name: 'c++-link-static-library'",
" tool {",
" tool_path: '" + arToolPath + "'",
" }",
" implies: 'archiver_flags'",
" implies: 'linker_param_file'")));
}
if (!existingActionConfigNames.contains(CppActionNames.STRIP)) {
actionConfigBuilder.add(
getActionConfig(
Joiner.on("\n")
.join(
" config_name: 'strip'",
" action_name: 'strip'",
" tool {",
" tool_path: '" + stripToolPath + "'",
" }",
" flag_set {",
" flag_group {",
" flag: '-S'",
ifLinux(platform, "flag: '-p'"),
" flag: '-o'",
" flag: '%{output_file}'",
" }",
" flag_group {",
" iterate_over: 'stripopts'",
" flag: '%{stripopts}'",
" }",
" flag_group {",
" flag: '%{input_file}'",
" }",
" }")));
}
return actionConfigBuilder.build();
} catch (ParseException e) {
// Can only happen if we change the proto definition without changing our
// configuration above.
throw new IllegalStateException(e);
}
}