summaryrefslogtreecommitdiff
path: root/rust/compiler.go
diff options
context:
space:
mode:
authorChih-Hung Hsieh <chh@google.com>2020-05-15 17:36:30 -0700
committerChih-Hung Hsieh <chh@google.com>2020-07-08 23:50:00 -0700
commitbbd25aeb428edaa7fb332cc0a6771aeede38e286 (patch)
tree315941dd2e085d7a332fbc0122b9673dab212653 /rust/compiler.go
parentecc495fd096871feff67f598fc768ba972a84dd9 (diff)
Specify module dependency in the srcs list
* "srcs" list contains one main Rust source file, followed by optional dependent modules. * A dependent module included in the "srcs" list is the module name prefixed with ":". * Add a simple test. Bug: 160331255 Test: make and manual test build dependencies on genrule modules Change-Id: I4f079138c2599158810b6412fce81b612a3f64a4
Diffstat (limited to 'rust/compiler.go')
-rw-r--r--rust/compiler.go24
1 files changed, 19 insertions, 5 deletions
diff --git a/rust/compiler.go b/rust/compiler.go
index 92a3b07f2..c20179bd0 100644
--- a/rust/compiler.go
+++ b/rust/compiler.go
@@ -253,10 +253,24 @@ func (compiler *baseCompiler) relativeInstallPath() string {
return String(compiler.Properties.Relative_install_path)
}
-func srcPathFromModuleSrcs(ctx ModuleContext, srcs []string) android.Path {
- srcPaths := android.PathsForModuleSrc(ctx, srcs)
- if len(srcPaths) != 1 {
- ctx.PropertyErrorf("srcs", "srcs can only contain one path for rust modules")
+func srcPathFromModuleSrcs(ctx ModuleContext, srcs []string) (android.Path, android.Paths) {
+ // The srcs can contain strings with prefix ":".
+ // They are dependent modules of this module, with android.SourceDepTag.
+ // They are not the main source file compiled by rustc.
+ numSrcs := 0
+ srcIndex := 0
+ for i, s := range srcs {
+ if android.SrcIsModule(s) == "" {
+ numSrcs++
+ srcIndex = i
+ }
+ }
+ if numSrcs != 1 {
+ ctx.PropertyErrorf("srcs", "srcs can only contain one path for a rust file")
+ }
+ if srcIndex != 0 {
+ ctx.PropertyErrorf("srcs", "main source file must be the first in srcs")
}
- return srcPaths[0]
+ paths := android.PathsForModuleSrc(ctx, srcs)
+ return paths[srcIndex], paths
}