| // 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.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 |
| } |