Merge "Split local/absolute include into attributes" am: 04e0a1551d
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1824019 Change-Id: I05e64f79fd95836e92630941f276e64fd6c5b98f
This commit is contained in:
@@ -216,6 +216,9 @@ type compilerAttributes struct {
|
||||
srcs bazel.LabelListAttribute
|
||||
|
||||
rtti bazel.BoolAttribute
|
||||
|
||||
localIncludes bazel.StringListAttribute
|
||||
absoluteIncludes bazel.StringListAttribute
|
||||
}
|
||||
|
||||
// bp2BuildParseCompilerProps returns copts, srcs and hdrs and other attributes.
|
||||
@@ -226,28 +229,8 @@ func bp2BuildParseCompilerProps(ctx android.TopDownMutatorContext, module *Modul
|
||||
var conlyFlags bazel.StringListAttribute
|
||||
var cppFlags bazel.StringListAttribute
|
||||
var rtti bazel.BoolAttribute
|
||||
|
||||
// Creates the -I flags for a directory, while making the directory relative
|
||||
// to the exec root for Bazel to work.
|
||||
includeFlags := func(dir string) []string {
|
||||
// filepath.Join canonicalizes the path, i.e. it takes care of . or .. elements.
|
||||
moduleDirRootedPath := filepath.Join(ctx.ModuleDir(), dir)
|
||||
return []string{
|
||||
"-I" + moduleDirRootedPath,
|
||||
// Include the bindir-rooted path (using make variable substitution). This most
|
||||
// closely matches Bazel's native include path handling, which allows for dependency
|
||||
// on generated headers in these directories.
|
||||
// TODO(b/188084383): Handle local include directories in Bazel.
|
||||
"-I$(BINDIR)/" + moduleDirRootedPath,
|
||||
}
|
||||
}
|
||||
|
||||
// Parse the list of module-relative include directories (-I).
|
||||
parseLocalIncludeDirs := func(baseCompilerProps *BaseCompilerProperties) []string {
|
||||
// include_dirs are root-relative, not module-relative.
|
||||
includeDirs := bp2BuildMakePathsRelativeToModule(ctx, baseCompilerProps.Include_dirs)
|
||||
return append(includeDirs, baseCompilerProps.Local_include_dirs...)
|
||||
}
|
||||
var localIncludes bazel.StringListAttribute
|
||||
var absoluteIncludes bazel.StringListAttribute
|
||||
|
||||
parseCommandLineFlags := func(soongFlags []string) []string {
|
||||
var result []string
|
||||
@@ -285,18 +268,14 @@ func bp2BuildParseCompilerProps(ctx android.TopDownMutatorContext, module *Modul
|
||||
|
||||
archVariantCopts := parseCommandLineFlags(baseCompilerProps.Cflags)
|
||||
archVariantAsflags := parseCommandLineFlags(baseCompilerProps.Asflags)
|
||||
for _, dir := range parseLocalIncludeDirs(baseCompilerProps) {
|
||||
archVariantCopts = append(archVariantCopts, includeFlags(dir)...)
|
||||
archVariantAsflags = append(archVariantAsflags, includeFlags(dir)...)
|
||||
|
||||
localIncludeDirs := baseCompilerProps.Local_include_dirs
|
||||
if axis == bazel.NoConfigAxis && includeBuildDirectory(baseCompilerProps.Include_build_directory) {
|
||||
localIncludeDirs = append(localIncludeDirs, ".")
|
||||
}
|
||||
|
||||
if axis == bazel.NoConfigAxis {
|
||||
if includeBuildDirectory(baseCompilerProps.Include_build_directory) {
|
||||
flags := includeFlags(".")
|
||||
archVariantCopts = append(archVariantCopts, flags...)
|
||||
archVariantAsflags = append(archVariantAsflags, flags...)
|
||||
}
|
||||
}
|
||||
absoluteIncludes.SetSelectValue(axis, config, baseCompilerProps.Include_dirs)
|
||||
localIncludes.SetSelectValue(axis, config, localIncludeDirs)
|
||||
|
||||
copts.SetSelectValue(axis, config, archVariantCopts)
|
||||
asFlags.SetSelectValue(axis, config, archVariantAsflags)
|
||||
@@ -308,6 +287,8 @@ func bp2BuildParseCompilerProps(ctx android.TopDownMutatorContext, module *Modul
|
||||
}
|
||||
|
||||
srcs.ResolveExcludes()
|
||||
absoluteIncludes.DeduplicateAxesFromBase()
|
||||
localIncludes.DeduplicateAxesFromBase()
|
||||
|
||||
productVarPropNameToAttribute := map[string]*bazel.StringListAttribute{
|
||||
"Cflags": &copts,
|
||||
@@ -331,14 +312,16 @@ func bp2BuildParseCompilerProps(ctx android.TopDownMutatorContext, module *Modul
|
||||
srcs, cSrcs, asSrcs := groupSrcsByExtension(ctx, srcs)
|
||||
|
||||
return compilerAttributes{
|
||||
copts: copts,
|
||||
srcs: srcs,
|
||||
asFlags: asFlags,
|
||||
asSrcs: asSrcs,
|
||||
cSrcs: cSrcs,
|
||||
conlyFlags: conlyFlags,
|
||||
cppFlags: cppFlags,
|
||||
rtti: rtti,
|
||||
copts: copts,
|
||||
srcs: srcs,
|
||||
asFlags: asFlags,
|
||||
asSrcs: asSrcs,
|
||||
cSrcs: cSrcs,
|
||||
conlyFlags: conlyFlags,
|
||||
cppFlags: cppFlags,
|
||||
rtti: rtti,
|
||||
localIncludes: localIncludes,
|
||||
absoluteIncludes: absoluteIncludes,
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -236,6 +236,8 @@ type bazelCcLibraryAttributes struct {
|
||||
System_dynamic_deps bazel.LabelListAttribute
|
||||
Export_includes bazel.StringListAttribute
|
||||
Export_system_includes bazel.StringListAttribute
|
||||
Local_includes bazel.StringListAttribute
|
||||
Absolute_includes bazel.StringListAttribute
|
||||
Linkopts bazel.StringListAttribute
|
||||
Use_libcrt bazel.BoolAttribute
|
||||
Rtti bazel.BoolAttribute
|
||||
@@ -307,6 +309,8 @@ func CcLibraryBp2Build(ctx android.TopDownMutatorContext) {
|
||||
System_dynamic_deps: linkerAttrs.systemDynamicDeps,
|
||||
Export_includes: exportedIncludes.Includes,
|
||||
Export_system_includes: exportedIncludes.SystemIncludes,
|
||||
Local_includes: compilerAttrs.localIncludes,
|
||||
Absolute_includes: compilerAttrs.absoluteIncludes,
|
||||
Linkopts: linkerAttrs.linkopts,
|
||||
Use_libcrt: linkerAttrs.useLibcrt,
|
||||
Rtti: compilerAttrs.rtti,
|
||||
@@ -2333,6 +2337,8 @@ type bazelCcLibraryStaticAttributes struct {
|
||||
Rtti bazel.BoolAttribute
|
||||
Export_includes bazel.StringListAttribute
|
||||
Export_system_includes bazel.StringListAttribute
|
||||
Local_includes bazel.StringListAttribute
|
||||
Absolute_includes bazel.StringListAttribute
|
||||
Hdrs bazel.LabelListAttribute
|
||||
|
||||
Cppflags bazel.StringListAttribute
|
||||
@@ -2384,6 +2390,8 @@ func ccLibraryStaticBp2BuildInternal(ctx android.TopDownMutatorContext, module *
|
||||
Rtti: compilerAttrs.rtti,
|
||||
Export_includes: exportedIncludes.Includes,
|
||||
Export_system_includes: exportedIncludes.SystemIncludes,
|
||||
Local_includes: compilerAttrs.localIncludes,
|
||||
Absolute_includes: compilerAttrs.absoluteIncludes,
|
||||
|
||||
Cppflags: compilerAttrs.cppFlags,
|
||||
Srcs_c: compilerAttrs.cSrcs,
|
||||
|
@@ -103,7 +103,6 @@ func prebuiltLibraryHeaderFactory() android.Module {
|
||||
}
|
||||
|
||||
type bazelCcLibraryHeadersAttributes struct {
|
||||
Copts bazel.StringListAttribute
|
||||
Hdrs bazel.LabelListAttribute
|
||||
Export_includes bazel.StringListAttribute
|
||||
Export_system_includes bazel.StringListAttribute
|
||||
@@ -128,11 +127,9 @@ func CcLibraryHeadersBp2Build(ctx android.TopDownMutatorContext) {
|
||||
}
|
||||
|
||||
exportedIncludes := bp2BuildParseExportedIncludes(ctx, module)
|
||||
compilerAttrs := bp2BuildParseCompilerProps(ctx, module)
|
||||
linkerAttrs := bp2BuildParseLinkerProps(ctx, module)
|
||||
|
||||
attrs := &bazelCcLibraryHeadersAttributes{
|
||||
Copts: compilerAttrs.copts,
|
||||
Export_includes: exportedIncludes.Includes,
|
||||
Export_system_includes: exportedIncludes.SystemIncludes,
|
||||
Implementation_deps: linkerAttrs.deps,
|
||||
|
26
cc/object.go
26
cc/object.go
@@ -122,12 +122,14 @@ func ObjectFactory() android.Module {
|
||||
|
||||
// For bp2build conversion.
|
||||
type bazelObjectAttributes struct {
|
||||
Srcs bazel.LabelListAttribute
|
||||
Srcs_as bazel.LabelListAttribute
|
||||
Hdrs bazel.LabelListAttribute
|
||||
Deps bazel.LabelListAttribute
|
||||
Copts bazel.StringListAttribute
|
||||
Asflags bazel.StringListAttribute
|
||||
Srcs bazel.LabelListAttribute
|
||||
Srcs_as bazel.LabelListAttribute
|
||||
Hdrs bazel.LabelListAttribute
|
||||
Deps bazel.LabelListAttribute
|
||||
Copts bazel.StringListAttribute
|
||||
Asflags bazel.StringListAttribute
|
||||
Local_includes bazel.StringListAttribute
|
||||
Absolute_includes bazel.StringListAttribute
|
||||
}
|
||||
|
||||
// ObjectBp2Build is the bp2build converter from cc_object modules to the
|
||||
@@ -170,11 +172,13 @@ func ObjectBp2Build(ctx android.TopDownMutatorContext) {
|
||||
}
|
||||
|
||||
attrs := &bazelObjectAttributes{
|
||||
Srcs: srcs,
|
||||
Srcs_as: compilerAttrs.asSrcs,
|
||||
Deps: deps,
|
||||
Copts: compilerAttrs.copts,
|
||||
Asflags: asFlags,
|
||||
Srcs: srcs,
|
||||
Srcs_as: compilerAttrs.asSrcs,
|
||||
Deps: deps,
|
||||
Copts: compilerAttrs.copts,
|
||||
Asflags: asFlags,
|
||||
Local_includes: compilerAttrs.localIncludes,
|
||||
Absolute_includes: compilerAttrs.absoluteIncludes,
|
||||
}
|
||||
|
||||
props := bazel.BazelTargetModuleProperties{
|
||||
|
Reference in New Issue
Block a user