diff options
author | 2021-08-11 13:39:33 -0400 | |
---|---|---|
committer | 2021-08-13 13:37:19 -0400 | |
commit | e4db0036d7612cf68b63e52c13f6904cab461ce5 (patch) | |
tree | f819f80d738550de7bc9f79c8ec72c3b2aa48579 /rust/compiler.go | |
parent | adffbe9166d8740083e245f179a9e9eb705b3837 (diff) |
rust: Allow modules to use only generated sources
Removes the need for rust_test modules that test generated source to
define a source file that simply calls include()! to pull in the
generated source.
Bug: 196076408
Test: m libselinux_bindgen_test
Change-Id: I600301ab74f6ece861916fa2545b061c81b0d92d
Diffstat (limited to 'rust/compiler.go')
-rw-r--r-- | rust/compiler.go | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/rust/compiler.go b/rust/compiler.go index de59f39ac..04fef3580 100644 --- a/rust/compiler.go +++ b/rust/compiler.go @@ -65,7 +65,11 @@ const ( ) type BaseCompilerProperties struct { - // path to the source file that is the main entry point of the program (e.g. main.rs or lib.rs) + // path to the source file that is the main entry point of the program (e.g. main.rs or lib.rs). + // Only a single source file can be defined. Modules which generate source can be included by prefixing + // the module name with ":", for example ":libfoo_bindgen" + // + // If no source file is defined, a single generated source module can be defined to be used as the main source. Srcs []string `android:"path,arch_variant"` // name of the lint set that should be used to validate this module. @@ -420,12 +424,18 @@ func srcPathFromModuleSrcs(ctx ModuleContext, srcs []string) (android.Path, andr srcIndex = i } } - if numSrcs != 1 { + if numSrcs > 1 { ctx.PropertyErrorf("srcs", incorrectSourcesError) } + + // If a main source file is not provided we expect only a single SourceProvider module to be defined + // within srcs, with the expectation that the first source it provides is the entry point. if srcIndex != 0 { ctx.PropertyErrorf("srcs", "main source file must be the first in srcs") + } else if numSrcs > 1 { + ctx.PropertyErrorf("srcs", "only a single generated source module can be defined without a main source file.") } + paths := android.PathsForModuleSrc(ctx, srcs) return paths[srcIndex], paths[1:] } |