Merge "bp2build conversion for rscript srcs in cc modules" am: 8131290360 am: f94ea863fa am: ee92099785

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/2210056

Change-Id: I44a95918c82bf422f3d5b12707732c1e266431a0
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Alix Espino
2023-06-23 23:17:36 +00:00
committed by Automerger Merge Worker
7 changed files with 159 additions and 11 deletions

View File

@@ -131,6 +131,7 @@ var (
"external/brotli": Bp2BuildDefaultTrue,
"external/bsdiff": Bp2BuildDefaultTrueRecursively,
"external/bzip2": Bp2BuildDefaultTrueRecursively,
"external/clang/lib": Bp2BuildDefaultTrue,
"external/conscrypt": Bp2BuildDefaultTrue,
"external/e2fsprogs": Bp2BuildDefaultTrueRecursively,
"external/eigen": Bp2BuildDefaultTrueRecursively,
@@ -796,6 +797,13 @@ var (
// for platform_compat_config
"process-compat-config",
// cc_* modules with rscript srcs
"rstest-latency",
"libRScpp_static",
"rs-headers",
"rs_script_api",
"libRSDispatch",
}
Bp2buildModuleTypeAlwaysConvertList = []string{

View File

@@ -1182,3 +1182,35 @@ cc_binary {
},
})
}
func TestCCBinaryRscriptSrc(t *testing.T) {
runCcBinaryTests(t, ccBinaryBp2buildTestCase{
description: `cc_binary with rscript files in sources`,
blueprint: `
{rule_name} {
name : "foo",
srcs : [
"ccSrc.cc",
"rsSrc.rscript",
],
include_build_directory: false,
}
`,
targets: []testBazelTarget{
{"rscript_to_cpp", "foo_renderscript", AttrNameToString{
"srcs": `["rsSrc.rscript"]`,
}},
{"cc_binary", "foo", AttrNameToString{
"absolute_includes": `[
"frameworks/rs",
"frameworks/rs/cpp",
]`,
"local_includes": `["."]`,
"srcs": `[
"ccSrc.cc",
"foo_renderscript",
]`,
}},
},
})
}

View File

@@ -1555,3 +1555,33 @@ cc_library_shared {
},
})
}
func TestCCLibrarySharedRscriptSrc(t *testing.T) {
runCcLibrarySharedTestCase(t, Bp2buildTestCase{
Description: ``,
Blueprint: `
cc_library_shared{
name : "foo",
srcs : [
"ccSrc.cc",
"rsSrc.rscript",
],
include_build_directory: false,
}
`,
ExpectedBazelTargets: []string{
MakeBazelTarget("rscript_to_cpp", "foo_renderscript", AttrNameToString{
"srcs": `["rsSrc.rscript"]`,
}),
MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{
"absolute_includes": `[
"frameworks/rs",
"frameworks/rs/cpp",
]`,
"local_includes": `["."]`,
"srcs": `[
"ccSrc.cc",
"foo_renderscript",
]`,
})}})
}

View File

@@ -2185,3 +2185,33 @@ cc_library_static {
},
})
}
func TestCCLibraryStaticRscriptSrc(t *testing.T) {
runCcLibraryStaticTestCase(t, Bp2buildTestCase{
Description: `cc_library_static with rscript files in sources`,
Blueprint: `
cc_library_static{
name : "foo",
srcs : [
"ccSrc.cc",
"rsSrc.rscript",
],
include_build_directory: false,
}
`,
ExpectedBazelTargets: []string{
MakeBazelTarget("rscript_to_cpp", "foo_renderscript", AttrNameToString{
"srcs": `["rsSrc.rscript"]`,
}),
MakeBazelTarget("cc_library_static", "foo", AttrNameToString{
"absolute_includes": `[
"frameworks/rs",
"frameworks/rs/cpp",
]`,
"local_includes": `["."]`,
"srcs": `[
"ccSrc.cc",
"foo_renderscript",
]`,
})}})
}

View File

@@ -38,7 +38,10 @@ const (
protoSrcPartition = "proto"
aidlSrcPartition = "aidl"
syspropSrcPartition = "sysprop"
yaccSrcPartition = "yacc"
yaccSrcPartition = "yacc"
rScriptSrcPartition = "renderScript"
stubsSuffix = "_stub_libs_current"
)
@@ -149,8 +152,9 @@ func groupSrcsByExtension(ctx android.BazelConversionPathContext, srcs bazel.Lab
// contains .l or .ll files we will need to find a way to add a
// LabelMapper for these that identifies these filegroups and
// converts them appropriately
lSrcPartition: bazel.LabelPartition{Extensions: []string{".l"}},
llSrcPartition: bazel.LabelPartition{Extensions: []string{".ll"}},
lSrcPartition: bazel.LabelPartition{Extensions: []string{".l"}},
llSrcPartition: bazel.LabelPartition{Extensions: []string{".ll"}},
rScriptSrcPartition: bazel.LabelPartition{Extensions: []string{".fs", ".rscript"}},
// C++ is the "catch-all" group, and comprises generated sources because we don't
// know the language of these sources until the genrule is executed.
cppSrcPartition: bazel.LabelPartition{Extensions: []string{".cpp", ".cc", ".cxx", ".mm"}, LabelMapper: addSuffixForFilegroup("_cpp_srcs"), Keep_remainder: true},
@@ -412,6 +416,8 @@ type compilerAttributes struct {
yaccGenLocationHeader bazel.BoolAttribute
yaccGenPositionHeader bazel.BoolAttribute
rsSrcs bazel.LabelListAttribute
hdrs bazel.LabelListAttribute
rtti bazel.BoolAttribute
@@ -426,8 +432,9 @@ type compilerAttributes struct {
includes BazelIncludes
protoSrcs bazel.LabelListAttribute
aidlSrcs bazel.LabelListAttribute
protoSrcs bazel.LabelListAttribute
aidlSrcs bazel.LabelListAttribute
rscriptSrcs bazel.LabelListAttribute
stubsSymbolFile *string
stubsVersions bazel.StringListAttribute
@@ -582,6 +589,7 @@ func (ca *compilerAttributes) finalize(ctx android.BazelConversionPathContext, i
ca.yaccSrc = bazel.MakeLabelAttribute(yacc.Value.Includes[0].Label)
}
ca.syspropSrcs = partitionedSrcs[syspropSrcPartition]
ca.rscriptSrcs = partitionedSrcs[rScriptSrcPartition]
ca.absoluteIncludes.DeduplicateAxesFromBase()
ca.localIncludes.DeduplicateAxesFromBase()
@@ -903,6 +911,12 @@ func bp2BuildParseBaseProps(ctx android.Bp2buildMutatorContext, module *Module)
compilerAttrs.absoluteIncludes.Prepend = true
compilerAttrs.hdrs.Prepend = true
convertedRsSrcs, rsAbsIncludes, rsLocalIncludes := bp2buildRScript(ctx, module, compilerAttrs)
(&compilerAttrs).srcs.Add(&convertedRsSrcs)
(&compilerAttrs).absoluteIncludes.Append(rsAbsIncludes)
(&compilerAttrs).localIncludes.Append(rsLocalIncludes)
(&compilerAttrs).localIncludes.Value = android.FirstUniqueStrings(compilerAttrs.localIncludes.Value)
features := compilerAttrs.features.Clone().Append(linkerAttrs.features).Append(bp2buildSanitizerFeatures(ctx, module))
features = features.Append(bp2buildLtoFeatures(ctx, module))
features = features.Append(convertHiddenVisibilityToFeatureBase(ctx, module))

View File

@@ -448,11 +448,12 @@ func init() {
pctx.StaticVariable("RSLLVMPrebuiltsPath", "${RSClangBase}/${HostPrebuiltTag}/${RSClangVersion}/bin")
pctx.StaticVariable("RSIncludePath", "${RSLLVMPrebuiltsPath}/../lib64/clang/${RSReleaseVersion}/include")
pctx.PrefixedExistentPathsForSourcesVariable("RsGlobalIncludes", "-I",
[]string{
"external/clang/lib/Headers",
"frameworks/rs/script_api/include",
})
rsGlobalIncludes := []string{
"external/clang/lib/Headers",
"frameworks/rs/script_api/include",
}
pctx.PrefixedExistentPathsForSourcesVariable("RsGlobalIncludes", "-I", rsGlobalIncludes)
exportedVars.ExportStringList("RsGlobalIncludes", rsGlobalIncludes)
pctx.VariableFunc("CcWrapper", func(ctx android.PackageVarContext) string {
if override := ctx.Config().Getenv("CC_WRAPPER"); override != "" {

View File

@@ -15,11 +15,12 @@
package cc
import (
"android/soong/android"
"path/filepath"
"runtime"
"strings"
"android/soong/android"
"android/soong/bazel"
"github.com/google/blueprint"
)
@@ -132,3 +133,35 @@ func rsFlags(ctx ModuleContext, flags Flags, properties *BaseCompilerProperties)
return flags
}
type rscriptAttributes struct {
// Renderscript source files
Srcs bazel.LabelListAttribute
}
func bp2buildRScript(ctx android.Bp2buildMutatorContext, m *Module, ca compilerAttributes) (bazel.LabelAttribute, bazel.StringListAttribute, bazel.StringListAttribute) {
var rscriptAttrs rscriptAttributes
var rsAbsIncludes bazel.StringListAttribute
var localIncludes bazel.StringListAttribute
var rsModuleName string
var convertedRsSrcsLabel bazel.LabelAttribute
if !ca.rscriptSrcs.IsEmpty() {
rscriptAttrs.Srcs = ca.rscriptSrcs
rsModuleName = m.Name() + "_renderscript"
localIncludes.Value = []string{"."}
rsAbsIncludes.Value = []string{"frameworks/rs", "frameworks/rs/cpp"}
convertedRsSrcsLabel = bazel.LabelAttribute{Value: &bazel.Label{Label: rsModuleName}}
ctx.CreateBazelTargetModule(
bazel.BazelTargetModuleProperties{
Rule_class: "rscript_to_cpp",
Bzl_load_location: "//build/bazel/rules/cc:rscript_to_cpp.bzl",
},
android.CommonAttributes{Name: rsModuleName},
&rscriptAttrs)
}
return convertedRsSrcsLabel, rsAbsIncludes, localIncludes
}