1// Copyright 2023 Google Inc. All rights reserved. 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15package cc 16 17import ( 18 "android/soong/android" 19 "github.com/google/blueprint" 20 21 "github.com/google/blueprint/proptools" 22) 23 24func init() { 25 RegisterFdoProfileBuildComponents(android.InitRegistrationContext) 26} 27 28func RegisterFdoProfileBuildComponents(ctx android.RegistrationContext) { 29 ctx.RegisterModuleType("fdo_profile", FdoProfileFactory) 30} 31 32type fdoProfile struct { 33 android.ModuleBase 34 35 properties fdoProfileProperties 36} 37 38type fdoProfileProperties struct { 39 Profile proptools.Configurable[string] `android:"arch_variant,replace_instead_of_append"` 40} 41 42// FdoProfileInfo is provided by FdoProfileProvider 43type FdoProfileInfo struct { 44 Path android.Path 45} 46 47// FdoProfileProvider is used to provide path to an fdo profile 48var FdoProfileProvider = blueprint.NewProvider[FdoProfileInfo]() 49 50// GenerateAndroidBuildActions of fdo_profile does not have any build actions 51func (fp *fdoProfile) GenerateAndroidBuildActions(ctx android.ModuleContext) { 52 profile := fp.properties.Profile.GetOrDefault(ctx, "") 53 if profile != "" { 54 path := android.PathForModuleSrc(ctx, profile) 55 android.SetProvider(ctx, FdoProfileProvider, FdoProfileInfo{ 56 Path: path, 57 }) 58 } 59} 60 61func FdoProfileFactory() android.Module { 62 m := &fdoProfile{} 63 m.AddProperties(&m.properties) 64 android.InitAndroidMultiTargetsArchModule(m, android.DeviceSupported, android.MultilibBoth) 65 return m 66} 67