diff options
author | Colin Cross <ccross@android.com> | 2016-12-13 15:23:47 -0800 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2016-12-17 16:34:03 +0000 |
commit | 068e0feace82595d98f08fadc855ed5fab6ea43e (patch) | |
tree | 887cce23997524b2bc5d5811eb13c541f248ac1e /genrule | |
parent | 35e39720686e47fb936d3b7b671d478132f71f81 (diff) | |
download | build_soong-068e0feace82595d98f08fadc855ed5fab6ea43e.tar.gz build_soong-068e0feace82595d98f08fadc855ed5fab6ea43e.tar.bz2 build_soong-068e0feace82595d98f08fadc855ed5fab6ea43e.zip |
Support filegroups
filegroup is a module that contains a list of files, and can be used
to export files across package boundaries. filegroups (and genrules)
can be referenced from srcs properties of other modules using the
syntax ":module".
Test: m -j
Change-Id: I3d6fc4819c0b4225b474e0ad42f0d947f55a5961
Diffstat (limited to 'genrule')
-rw-r--r-- | genrule/filegroup.go | 61 | ||||
-rw-r--r-- | genrule/genrule.go | 4 |
2 files changed, 65 insertions, 0 deletions
diff --git a/genrule/filegroup.go b/genrule/filegroup.go new file mode 100644 index 00000000..9b53c9f7 --- /dev/null +++ b/genrule/filegroup.go @@ -0,0 +1,61 @@ +// Copyright 2016 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package genrule + +import ( + "github.com/google/blueprint" + + "android/soong/android" +) + +func init() { + android.RegisterModuleType("filegroup", fileGroupFactory) +} + +type fileGroupProperties struct { + // srcs lists files that will be included in this filegroup + Srcs []string + + Exclude_srcs []string +} + +type fileGroup struct { + android.ModuleBase + properties fileGroupProperties + srcs android.Paths +} + +var _ android.SourceFileProducer = (*fileGroup)(nil) + +// filegroup modules contain a list of files, and can be used to export files across package +// boundaries. filegroups (and genrules) can be referenced from srcs properties of other modules +// using the syntax ":module". +func fileGroupFactory() (blueprint.Module, []interface{}) { + module := &fileGroup{} + + return android.InitAndroidModule(module, &module.properties) +} + +func (fg *fileGroup) DepsMutator(ctx android.BottomUpMutatorContext) { + android.ExtractSourcesDeps(ctx, fg.properties.Srcs) +} + +func (fg *fileGroup) GenerateAndroidBuildActions(ctx android.ModuleContext) { + fg.srcs = ctx.ExpandSources(fg.properties.Srcs, fg.properties.Exclude_srcs) +} + +func (fg *fileGroup) Srcs() android.Paths { + return fg.srcs +} diff --git a/genrule/genrule.go b/genrule/genrule.go index bb78b1f8..5a2ac845 100644 --- a/genrule/genrule.go +++ b/genrule/genrule.go @@ -96,6 +96,10 @@ func (g *generator) GeneratedSourceFiles() android.Paths { return g.outputFiles } +func (g *generator) Srcs() android.Paths { + return g.outputFiles +} + func (g *generator) GeneratedHeaderDirs() android.Paths { return g.exportedIncludeDirs } |