diff options
Diffstat (limited to 'cc/compiler.go')
-rw-r--r-- | cc/compiler.go | 36 |
1 files changed, 19 insertions, 17 deletions
diff --git a/cc/compiler.go b/cc/compiler.go index ed1053334..0e0b9a72d 100644 --- a/cc/compiler.go +++ b/cc/compiler.go @@ -37,7 +37,7 @@ type BaseCompilerProperties struct { // list of source files used to compile the C/C++ module. May be .c, .cpp, or .S files. // srcs may reference the outputs of other modules that produce source files like genrule // or filegroup using the syntax ":module". - Srcs []string `android:"path,arch_variant"` + Srcs proptools.Configurable[[]string] `android:"path,arch_variant"` // list of source files that should not be compiled with clang-tidy. Tidy_disabled_srcs []string `android:"path,arch_variant"` @@ -47,7 +47,7 @@ type BaseCompilerProperties struct { // list of source files that should not be used to build the C/C++ module. // This is most useful in the arch/multilib variants to remove non-common files - Exclude_srcs []string `android:"path,arch_variant"` + Exclude_srcs proptools.Configurable[[]string] `android:"path,arch_variant"` // list of module-specific flags that will be used for C and C++ compiles. Cflags proptools.Configurable[[]string] `android:"arch_variant"` @@ -229,7 +229,7 @@ type BaseCompilerProperties struct { } `android:"arch_variant"` // Stores the original list of source files before being cleared by library reuse - OriginalSrcs []string `blueprint:"mutated"` + OriginalSrcs proptools.Configurable[[]string] `blueprint:"mutated"` // Build and link with OpenMP Openmp *bool `android:"arch_variant"` @@ -300,7 +300,7 @@ func (compiler *baseCompiler) compilerDeps(ctx DepsContext, deps Deps) Deps { deps.AidlLibs = append(deps.AidlLibs, compiler.Properties.Aidl.Libs...) android.ProtoDeps(ctx, &compiler.Proto) - if compiler.hasSrcExt(".proto") { + if compiler.hasSrcExt(ctx, ".proto") { deps = protoDeps(ctx, deps, &compiler.Proto, Bool(compiler.Properties.Proto.Static)) } @@ -363,7 +363,9 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags, deps tc := ctx.toolchain() modulePath := ctx.ModuleDir() - compiler.srcsBeforeGen = android.PathsForModuleSrcExcludes(ctx, compiler.Properties.Srcs, compiler.Properties.Exclude_srcs) + srcs := compiler.Properties.Srcs.GetOrDefault(ctx, nil) + exclude_srcs := compiler.Properties.Exclude_srcs.GetOrDefault(ctx, nil) + compiler.srcsBeforeGen = android.PathsForModuleSrcExcludes(ctx, srcs, exclude_srcs) compiler.srcsBeforeGen = append(compiler.srcsBeforeGen, deps.GeneratedSources...) cflags := compiler.Properties.Cflags.GetOrDefault(ctx, nil) @@ -603,11 +605,11 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags, deps flags.Global.CFlags = append(flags.Global.CFlags, "-DANDROID_STRICT") } - if compiler.hasSrcExt(".proto") { + if compiler.hasSrcExt(ctx, ".proto") { flags = protoFlags(ctx, flags, &compiler.Proto) } - if compiler.hasSrcExt(".y") || compiler.hasSrcExt(".yy") { + if compiler.hasSrcExt(ctx, ".y") || compiler.hasSrcExt(ctx, ".yy") { flags.Local.CommonFlags = append(flags.Local.CommonFlags, "-I"+android.PathForModuleGen(ctx, "yacc", ctx.ModuleDir()).String()) } @@ -617,7 +619,7 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags, deps ctx.ModuleErrorf("aidl.libs and (aidl.include_dirs or aidl.local_include_dirs) can't be set at the same time. For aidl headers, please only use aidl.libs prop") } - if compiler.hasAidl(deps) { + if compiler.hasAidl(ctx, deps) { flags.aidlFlags = append(flags.aidlFlags, compiler.Properties.Aidl.Flags...) if len(compiler.Properties.Aidl.Local_include_dirs) > 0 { localAidlIncludeDirs := android.PathsForModuleSrc(ctx, compiler.Properties.Aidl.Local_include_dirs) @@ -646,7 +648,7 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags, deps } flags.aidlFlags = append(flags.aidlFlags, "--min_sdk_version="+aidlMinSdkVersion) - if compiler.hasSrcExt(".aidl") { + if compiler.hasSrcExt(ctx, ".aidl") { flags.Local.CommonFlags = append(flags.Local.CommonFlags, "-I"+android.PathForModuleGen(ctx, "aidl").String()) } @@ -656,16 +658,16 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags, deps } } - if compiler.hasSrcExt(".rscript") || compiler.hasSrcExt(".fs") { + if compiler.hasSrcExt(ctx, ".rscript") || compiler.hasSrcExt(ctx, ".fs") { flags = rsFlags(ctx, flags, &compiler.Properties) } - if compiler.hasSrcExt(".sysprop") { + if compiler.hasSrcExt(ctx, ".sysprop") { flags.Local.CommonFlags = append(flags.Local.CommonFlags, "-I"+android.PathForModuleGen(ctx, "sysprop", "include").String()) } - if len(compiler.Properties.Srcs) > 0 { + if len(srcs) > 0 { module := ctx.ModuleDir() + "/Android.bp:" + ctx.ModuleName() if inList("-Wno-error", flags.Local.CFlags) || inList("-Wno-error", flags.Local.CppFlags) { addToModuleList(ctx, modulesUsingWnoErrorKey, module) @@ -706,18 +708,18 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags, deps return flags } -func (compiler *baseCompiler) hasSrcExt(ext string) bool { +func (compiler *baseCompiler) hasSrcExt(ctx BaseModuleContext, ext string) bool { for _, src := range compiler.srcsBeforeGen { if src.Ext() == ext { return true } } - for _, src := range compiler.Properties.Srcs { + for _, src := range compiler.Properties.Srcs.GetOrDefault(ctx, nil) { if filepath.Ext(src) == ext { return true } } - for _, src := range compiler.Properties.OriginalSrcs { + for _, src := range compiler.Properties.OriginalSrcs.GetOrDefault(ctx, nil) { if filepath.Ext(src) == ext { return true } @@ -745,8 +747,8 @@ func ndkPathDeps(ctx ModuleContext) android.Paths { return nil } -func (compiler *baseCompiler) hasAidl(deps PathDeps) bool { - return len(deps.AidlLibraryInfos) > 0 || compiler.hasSrcExt(".aidl") +func (compiler *baseCompiler) hasAidl(ctx BaseModuleContext, deps PathDeps) bool { + return len(deps.AidlLibraryInfos) > 0 || compiler.hasSrcExt(ctx, ".aidl") } func (compiler *baseCompiler) compile(ctx ModuleContext, flags Flags, deps PathDeps) Objects { |