diff options
Diffstat (limited to 'rust/compiler.go')
| -rw-r--r-- | rust/compiler.go | 31 | 
1 files changed, 31 insertions, 0 deletions
diff --git a/rust/compiler.go b/rust/compiler.go index e6a7a9356..3fa3ccd69 100644 --- a/rust/compiler.go +++ b/rust/compiler.go @@ -73,6 +73,18 @@ type BaseCompilerProperties struct {  	// 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"` +	// Entry point that is passed to rustc to begin the compilation. E.g. main.rs or lib.rs. +	// When this property is set, +	//    * sandboxing is enabled for this module, and +	//    * the srcs attribute is interpreted as a list of all source files potentially +	//          used in compilation, including the entrypoint, and +	//    * compile_data can be used to add additional files used in compilation that +	//          not directly used as source files. +	Crate_root *string `android:"path,arch_variant"` + +	// Additional data files that are used during compilation only. These are not accessible at runtime. +	Compile_data []string `android:"path,arch_variant"` +  	// name of the lint set that should be used to validate this module.  	//  	// Possible values are "default" (for using a sensible set of lints @@ -334,6 +346,23 @@ func (compiler *baseCompiler) compile(ctx ModuleContext, flags Flags, deps PathD  	panic(fmt.Errorf("baseCrater doesn't know how to crate things!"))  } +func (compile *baseCompiler) crateRoot(ctx ModuleContext) android.Path { +	if compile.Properties.Crate_root != nil { +		return android.PathForModuleSrc(ctx, *compile.Properties.Crate_root) +	} +	return nil +} + +// compilationSourcesAndData returns a list of files necessary to complete the compilation. +// This includes the rust source files as well as any other data files that +// are referenced during the build. +func (compile *baseCompiler) compilationSourcesAndData(ctx ModuleContext) android.Paths { +	return android.PathsForModuleSrc(ctx, android.Concat( +		compile.Properties.Srcs, +		compile.Properties.Compile_data, +	)) +} +  func (compiler *baseCompiler) rustdoc(ctx ModuleContext, flags Flags,  	deps PathDeps) android.OptionalPath { @@ -511,6 +540,8 @@ func srcPathFromModuleSrcs(ctx ModuleContext, srcs []string) (android.Path, andr  		ctx.PropertyErrorf("srcs", "only a single generated source module can be defined without a main source file.")  	} +	// TODO: b/297264540 - once all modules are sandboxed, we need to select the proper +	// entry point file from Srcs rather than taking the first one  	paths := android.PathsForModuleSrc(ctx, srcs)  	return paths[srcIndex], paths[1:]  }  |