in tools/migration/crosstool_to_starlark_lib.go [1298:1419]
func Transform(crosstool *crosstoolpb.CrosstoolRelease) (string, error) {
var b bytes.Buffer
cToolchainIdentifiers := toolchainToCToolchainIdentifier(crosstool)
toolchainToFeatures, featureNameToFeature, err := getFeatures(crosstool)
if err != nil {
return "", err
}
toolchainToActions, actionNameToAction, err := getActions(crosstool)
if err != nil {
return "", err
}
header := getCcToolchainConfigHeader()
if _, err := b.WriteString(header); err != nil {
return "", err
}
loadActionsStmt := getLoadActionsStmt()
if _, err := b.WriteString(loadActionsStmt); err != nil {
return "", err
}
implHeader := getImplHeader()
if _, err := b.WriteString(implHeader); err != nil {
return "", err
}
stringFields := []string{
"toolchain_identifier",
"host_system_name",
"target_system_name",
"target_cpu",
"target_libc",
"compiler",
"abi_version",
"abi_libc_version",
"cc_target_os",
"builtin_sysroot",
}
for _, stringField := range stringFields {
stmt := getStringStatement(crosstool, cToolchainIdentifiers, stringField, 1)
if _, err := b.WriteString(stmt); err != nil {
return "", err
}
}
listsOfActions := []string{
"all_compile_actions",
"all_cpp_compile_actions",
"preprocessor_compile_actions",
"codegen_compile_actions",
"all_link_actions",
}
for _, listOfActions := range listsOfActions {
actions := getListOfActions(listOfActions, 1)
if _, err := b.WriteString(actions); err != nil {
return "", err
}
}
actionConfigDeclaration := getActionConfigsDeclaration(
crosstool, cToolchainIdentifiers, actionNameToAction, 1)
if _, err := b.WriteString(actionConfigDeclaration); err != nil {
return "", err
}
actionConfigStatement := getActionConfigsStmt(
cToolchainIdentifiers, toolchainToActions, 1)
if _, err := b.WriteString(actionConfigStatement); err != nil {
return "", err
}
featureDeclaration := getFeaturesDeclaration(
crosstool, cToolchainIdentifiers, featureNameToFeature, 1)
if _, err := b.WriteString(featureDeclaration); err != nil {
return "", err
}
featuresStatement := getFeaturesStmt(
cToolchainIdentifiers, toolchainToFeatures, 1)
if _, err := b.WriteString(featuresStatement); err != nil {
return "", err
}
includeDirectories := getStringArr(
crosstool, cToolchainIdentifiers, "cxx_builtin_include_directories", 1)
if _, err := b.WriteString(includeDirectories); err != nil {
return "", err
}
artifactNamePatterns := getArtifactNamePatterns(
crosstool, cToolchainIdentifiers, 1)
if _, err := b.WriteString(artifactNamePatterns); err != nil {
return "", err
}
makeVariables := getMakeVariables(crosstool, cToolchainIdentifiers, 1)
if _, err := b.WriteString(makeVariables); err != nil {
return "", err
}
toolPaths := getToolPaths(crosstool, cToolchainIdentifiers, 1)
if _, err := b.WriteString(toolPaths); err != nil {
return "", err
}
if _, err := b.WriteString(getReturnStatement()); err != nil {
return "", err
}
rule := getRule(cToolchainIdentifiers, getCompilers(crosstool))
if _, err := b.WriteString(rule); err != nil {
return "", err
}
return b.String(), nil
}