Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Android/build/build/soong/rust/   (Android Betriebssystem Version 17©)  Datei vom 26.5.2026 mit Größe 2 kB image not shown  

Quelle  toolchain_object.go   Sprache: unbekannt

 
Spracherkennung für: .go vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

//
// Copyright (C) 2025 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"
)

// This module is used to compile the rust toolchain objects
// When RUST_PREBUILTS_VERSION is set, the object will generated
// from the given Rust version.
func init() {
 android.RegisterModuleType("rust_toolchain_object",
  rustToolchainObjectFactory)
 android.RegisterModuleType("rust_toolchain_object_host",
  rustToolchainObjectHostFactory)
}

type toolchainObjectProperties struct {
 // path to the toolchain object crate root, relative to the top of the toolchain source
 Toolchain_crate_root *string `android:"arch_variant"`
 // path to the rest of the toolchain srcs, relative to the top of the toolchain source
 Toolchain_srcs []string `android:"arch_variant"`
}

type toolchainObjectDecorator struct {
 *objectDecorator
 Properties toolchainObjectProperties
}

// toolchainCrateRoot implements toolchainCompiler.
func (t *toolchainObjectDecorator) toolchainCrateRoot() *string {
 return t.Properties.Toolchain_crate_root
}

// toolchainSrcs implements toolchainCompiler.
func (t *toolchainObjectDecorator) toolchainSrcs() []string {
 return t.Properties.Toolchain_srcs
}

// rust_toolchain_library produces all rust variants.
func rustToolchainObjectFactory() android.Module {
 module, object := NewRustObject(android.HostAndDeviceSupported)
 return initToolchainObject(module, object)
}

// rust_toolchain_library produces all rust variants.
func rustToolchainObjectHostFactory() android.Module {
 module, object := NewRustObject(android.HostSupported)
 return initToolchainObject(module, object)
}

func initToolchainObject(module *Module, object *objectDecorator) android.Module {
 toolchainObject := &toolchainObjectDecorator{
  objectDecorator: object,
 }
 module.compiler = toolchainObject
 module.AddProperties(&toolchainObject.Properties)

 android.AddLoadHook(module, rustSetToolchainSource)

 return module.Init()
}

func (t *toolchainObjectDecorator) compilerProps() []any {
 return append(t.objectDecorator.compilerProps(), &t.Properties)
}

func (t *toolchainObjectDecorator) crt() bool {
 return t.objectDecorator.crt()
}

func (t *toolchainObjectDecorator) install(ctx ModuleContext) {
 // Objects aren't installable, so do nothing.
}

func (t *toolchainObjectDecorator) everInstallable() bool {
 // Objects aren't installable.
 return false
}

var _ toolchainCompiler = (*toolchainObjectDecorator)(nil)

[Dauer der Verarbeitung: 0.1 Sekunden, vorverarbeitet 2026-06-28]