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:
commit
953bf91c49
8 changed files with 84 additions and 125 deletions
|
@ -255,13 +255,11 @@ cc_library {
|
|||
blueprint: soongCcLibraryPreamble,
|
||||
expectedBazelTargets: []string{`cc_library(
|
||||
name = "fake-libarm-optimized-routines-math",
|
||||
copts = [
|
||||
"-Iexternal",
|
||||
"-I$(BINDIR)/external",
|
||||
] + select({
|
||||
copts = select({
|
||||
"//build/bazel/platforms/arch:arm64": ["-DHAVE_FAST_FMA=1"],
|
||||
"//conditions:default": [],
|
||||
}),
|
||||
local_includes = ["."],
|
||||
srcs_c = ["math/cosf.c"],
|
||||
)`},
|
||||
})
|
||||
|
@ -494,12 +492,9 @@ cc_library_static { name: "android_dep_for_shared" }
|
|||
blueprint: soongCcLibraryPreamble,
|
||||
expectedBazelTargets: []string{`cc_library(
|
||||
name = "a",
|
||||
copts = [
|
||||
"bothflag",
|
||||
"-Ifoo/bar",
|
||||
"-I$(BINDIR)/foo/bar",
|
||||
],
|
||||
copts = ["bothflag"],
|
||||
implementation_deps = [":static_dep_for_both"],
|
||||
local_includes = ["."],
|
||||
shared = {
|
||||
"copts": ["sharedflag"] + select({
|
||||
"//build/bazel/platforms/arch:arm": ["-DARM_SHARED"],
|
||||
|
@ -635,14 +630,7 @@ filegroup {
|
|||
blueprint: soongCcLibraryPreamble,
|
||||
expectedBazelTargets: []string{`cc_library(
|
||||
name = "a",
|
||||
asflags = [
|
||||
"-Ifoo/bar",
|
||||
"-I$(BINDIR)/foo/bar",
|
||||
],
|
||||
copts = [
|
||||
"-Ifoo/bar",
|
||||
"-I$(BINDIR)/foo/bar",
|
||||
],
|
||||
local_includes = ["."],
|
||||
shared = {
|
||||
"srcs": [
|
||||
":shared_filegroup_cpp_srcs",
|
||||
|
|
|
@ -130,10 +130,6 @@ cc_library_headers {
|
|||
}`,
|
||||
expectedBazelTargets: []string{`cc_library_headers(
|
||||
name = "foo_headers",
|
||||
copts = [
|
||||
"-I.",
|
||||
"-I$(BINDIR)/.",
|
||||
],
|
||||
export_includes = [
|
||||
"dir-1",
|
||||
"dir-2",
|
||||
|
|
|
@ -184,19 +184,13 @@ cc_library_static {
|
|||
}`,
|
||||
expectedBazelTargets: []string{`cc_library_static(
|
||||
name = "foo_static",
|
||||
absolute_includes = [
|
||||
"include_dir_1",
|
||||
"include_dir_2",
|
||||
],
|
||||
copts = [
|
||||
"-Dflag1",
|
||||
"-Dflag2",
|
||||
"-Iinclude_dir_1",
|
||||
"-I$(BINDIR)/include_dir_1",
|
||||
"-Iinclude_dir_2",
|
||||
"-I$(BINDIR)/include_dir_2",
|
||||
"-Ilocal_include_dir_1",
|
||||
"-I$(BINDIR)/local_include_dir_1",
|
||||
"-Ilocal_include_dir_2",
|
||||
"-I$(BINDIR)/local_include_dir_2",
|
||||
"-I.",
|
||||
"-I$(BINDIR)/.",
|
||||
],
|
||||
export_includes = [
|
||||
"export_include_dir_1",
|
||||
|
@ -209,6 +203,11 @@ cc_library_static {
|
|||
":static_lib_2",
|
||||
],
|
||||
linkstatic = True,
|
||||
local_includes = [
|
||||
"local_include_dir_1",
|
||||
"local_include_dir_2",
|
||||
".",
|
||||
],
|
||||
srcs = [
|
||||
"foo_static1.cc",
|
||||
"foo_static2.cc",
|
||||
|
@ -244,21 +243,16 @@ func TestCcLibraryStaticSubpackage(t *testing.T) {
|
|||
blueprint: soongCcLibraryStaticPreamble + `
|
||||
cc_library_static {
|
||||
name: "foo_static",
|
||||
srcs: [
|
||||
],
|
||||
srcs: [],
|
||||
include_dirs: [
|
||||
"subpackage",
|
||||
"subpackage",
|
||||
],
|
||||
}`,
|
||||
expectedBazelTargets: []string{`cc_library_static(
|
||||
name = "foo_static",
|
||||
copts = [
|
||||
"-Isubpackage",
|
||||
"-I$(BINDIR)/subpackage",
|
||||
"-I.",
|
||||
"-I$(BINDIR)/.",
|
||||
],
|
||||
absolute_includes = ["subpackage"],
|
||||
linkstatic = True,
|
||||
local_includes = ["."],
|
||||
)`},
|
||||
})
|
||||
}
|
||||
|
@ -347,20 +341,17 @@ cc_library_static {
|
|||
blueprint: soongCcLibraryStaticPreamble,
|
||||
expectedBazelTargets: []string{`cc_library_static(
|
||||
name = "foo_static",
|
||||
copts = [
|
||||
"-Isubpackage/subsubpackage",
|
||||
"-I$(BINDIR)/subpackage/subsubpackage",
|
||||
"-Isubpackage2",
|
||||
"-I$(BINDIR)/subpackage2",
|
||||
"-Isubpackage3/subsubpackage",
|
||||
"-I$(BINDIR)/subpackage3/subsubpackage",
|
||||
"-Isubpackage/subsubpackage2",
|
||||
"-I$(BINDIR)/subpackage/subsubpackage2",
|
||||
"-Isubpackage",
|
||||
"-I$(BINDIR)/subpackage",
|
||||
absolute_includes = [
|
||||
"subpackage/subsubpackage",
|
||||
"subpackage2",
|
||||
"subpackage3/subsubpackage",
|
||||
],
|
||||
export_includes = ["./exported_subsubpackage"],
|
||||
linkstatic = True,
|
||||
local_includes = [
|
||||
"subsubpackage2",
|
||||
".",
|
||||
],
|
||||
)`},
|
||||
})
|
||||
}
|
||||
|
@ -386,13 +377,9 @@ cc_library_static {
|
|||
}`,
|
||||
expectedBazelTargets: []string{`cc_library_static(
|
||||
name = "foo_static",
|
||||
copts = [
|
||||
"-Isubpackage",
|
||||
"-I$(BINDIR)/subpackage",
|
||||
"-Isubpackage2",
|
||||
"-I$(BINDIR)/subpackage2",
|
||||
],
|
||||
absolute_includes = ["subpackage"],
|
||||
linkstatic = True,
|
||||
local_includes = ["subpackage2"],
|
||||
)`},
|
||||
})
|
||||
}
|
||||
|
@ -420,15 +407,12 @@ cc_library_static {
|
|||
}`,
|
||||
expectedBazelTargets: []string{`cc_library_static(
|
||||
name = "foo_static",
|
||||
copts = [
|
||||
"-Isubpackage",
|
||||
"-I$(BINDIR)/subpackage",
|
||||
"-Isubpackage2",
|
||||
"-I$(BINDIR)/subpackage2",
|
||||
"-I.",
|
||||
"-I$(BINDIR)/.",
|
||||
],
|
||||
absolute_includes = ["subpackage"],
|
||||
linkstatic = True,
|
||||
local_includes = [
|
||||
"subpackage2",
|
||||
".",
|
||||
],
|
||||
)`},
|
||||
})
|
||||
}
|
||||
|
|
|
@ -65,10 +65,10 @@ func TestCcObjectSimple(t *testing.T) {
|
|||
"-Wno-gcc-compat",
|
||||
"-Wall",
|
||||
"-Werror",
|
||||
"-Iinclude",
|
||||
"-I$(BINDIR)/include",
|
||||
"-I.",
|
||||
"-I$(BINDIR)/.",
|
||||
],
|
||||
local_includes = [
|
||||
"include",
|
||||
".",
|
||||
],
|
||||
srcs = ["a/b/c.c"],
|
||||
)`,
|
||||
|
@ -113,9 +113,8 @@ cc_defaults {
|
|||
"-Wall",
|
||||
"-Werror",
|
||||
"-fno-addrsig",
|
||||
"-I.",
|
||||
"-I$(BINDIR)/.",
|
||||
],
|
||||
local_includes = ["."],
|
||||
srcs = ["a/b/c.c"],
|
||||
)`,
|
||||
}})
|
||||
|
|
|
@ -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{
|
||||
|
|
Loading…
Reference in a new issue