diff --git a/bp2build/cc_object_conversion_test.go b/bp2build/cc_object_conversion_test.go index 1d4e32221..1c058ba3e 100644 --- a/bp2build/cc_object_conversion_test.go +++ b/bp2build/cc_object_conversion_test.go @@ -70,6 +70,7 @@ func TestCcObjectBp2Build(t *testing.T) { ], local_include_dirs = [ "include", + ".", ], srcs = [ "a/b/bar.h", @@ -120,6 +121,7 @@ cc_defaults { ], local_include_dirs = [ "include", + ".", ], srcs = [ "a/b/c.c", @@ -156,6 +158,9 @@ cc_object { copts = [ "-fno-addrsig", ], + local_include_dirs = [ + ".", + ], srcs = [ "x/y/z.c", ], @@ -167,6 +172,37 @@ cc_object { deps = [ ":bar", ], + local_include_dirs = [ + ".", + ], + srcs = [ + "a/b/c.c", + ], +)`, + }, + }, + { + description: "cc_object with include_build_dir: false", + moduleTypeUnderTest: "cc_object", + moduleTypeUnderTestFactory: cc.ObjectFactory, + moduleTypeUnderTestBp2BuildMutator: cc.ObjectBp2Build, + filesystem: map[string]string{ + "a/b/c.c": "", + "x/y/z.c": "", + }, + blueprint: `cc_object { + name: "foo", + srcs: ["a/b/c.c"], + include_build_directory: false, + + bazel_module: { bp2build_available: true }, +} +`, + expectedBazelTargets: []string{`cc_object( + name = "foo", + copts = [ + "-fno-addrsig", + ], srcs = [ "a/b/c.c", ], @@ -262,6 +298,9 @@ func TestCcObjectConfigurableAttributesBp2Build(t *testing.T) { "//conditions:default": [ ], }), + local_include_dirs = [ + ".", + ], )`, }, }, @@ -310,6 +349,9 @@ func TestCcObjectConfigurableAttributesBp2Build(t *testing.T) { "//conditions:default": [ ], }), + local_include_dirs = [ + ".", + ], )`, }, }, diff --git a/cc/compiler.go b/cc/compiler.go index 2e71922e1..791c95b24 100644 --- a/cc/compiler.go +++ b/cc/compiler.go @@ -256,6 +256,10 @@ func (compiler *baseCompiler) compilerProps() []interface{} { return []interface{}{&compiler.Properties, &compiler.Proto} } +func (compiler *baseCompiler) includeBuildDirectory() bool { + return proptools.BoolDefault(compiler.Properties.Include_build_directory, true) +} + func (compiler *baseCompiler) compilerInit(ctx BaseModuleContext) {} func (compiler *baseCompiler) compilerDeps(ctx DepsContext, deps Deps) Deps { @@ -332,8 +336,7 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags, deps flags.Local.YasmFlags = append(flags.Local.YasmFlags, f) } - if compiler.Properties.Include_build_directory == nil || - *compiler.Properties.Include_build_directory { + if compiler.includeBuildDirectory() { flags.Local.CommonFlags = append(flags.Local.CommonFlags, "-I"+modulePath) flags.Local.YasmFlags = append(flags.Local.YasmFlags, "-I"+modulePath) } diff --git a/cc/object.go b/cc/object.go index f9e6d2df6..6bea28b5a 100644 --- a/cc/object.go +++ b/cc/object.go @@ -160,6 +160,10 @@ func ObjectBp2Build(ctx android.TopDownMutatorContext) { } } + if c, ok := m.compiler.(*baseCompiler); ok && c.includeBuildDirectory() { + localIncludeDirs = append(localIncludeDirs, ".") + } + var deps bazel.LabelList for _, props := range m.linker.linkerProps() { if objectLinkerProps, ok := props.(*ObjectLinkerProperties); ok {