diff options
Diffstat (limited to 'rust/prebuilt.go')
| -rw-r--r-- | rust/prebuilt.go | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/rust/prebuilt.go b/rust/prebuilt.go new file mode 100644 index 000000000..45bef9ea3 --- /dev/null +++ b/rust/prebuilt.go @@ -0,0 +1,71 @@ +// Copyright 2019 The Android Open Source Project +// +// 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 rust + +import ( + "android/soong/android" +) + +func init() { + android.RegisterModuleType("rust_prebuilt_dylib", PrebuiltDylibFactory) +} + +type PrebuiltProperties struct { + // path to the prebuilt file + Srcs []string `android:"path,arch_variant"` +} + +type prebuiltLibraryDecorator struct { + *libraryDecorator + Properties PrebuiltProperties +} + +var _ compiler = (*prebuiltLibraryDecorator)(nil) + +func PrebuiltDylibFactory() android.Module { + module, _ := NewPrebuiltDylib(android.HostAndDeviceSupported) + return module.Init() +} + +func NewPrebuiltDylib(hod android.HostOrDeviceSupported) (*Module, *prebuiltLibraryDecorator) { + module, library := NewRustLibrary(hod) + library.BuildOnlyDylib() + library.setNoStdlibs() + library.setDylib() + prebuilt := &prebuiltLibraryDecorator{ + libraryDecorator: library, + } + module.compiler = prebuilt + module.AddProperties(&library.Properties) + return module, prebuilt +} + +func (prebuilt *prebuiltLibraryDecorator) compilerProps() []interface{} { + return append(prebuilt.baseCompiler.compilerProps(), + &prebuilt.Properties) +} + +func (prebuilt *prebuiltLibraryDecorator) compile(ctx ModuleContext, flags Flags, deps PathDeps) android.Path { + srcPath := srcPathFromModuleSrcs(ctx, prebuilt.Properties.Srcs) + + prebuilt.unstrippedOutputFile = srcPath + + return srcPath +} + +func (prebuilt *prebuiltLibraryDecorator) compilerDeps(ctx DepsContext, deps Deps) Deps { + deps = prebuilt.baseCompiler.compilerDeps(ctx, deps) + return deps +} |