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 22func init() { 23 RegisterFdoProfileBuildComponents(android.InitRegistrationContext) 24} 25 26func RegisterFdoProfileBuildComponents(ctx android.RegistrationContext) { 27 ctx.RegisterModuleType("fdo_profile", FdoProfileFactory) 28} 29 30type fdoProfile struct { 31 android.ModuleBase 32 33 properties fdoProfileProperties 34} 35 36type fdoProfileProperties struct { 37 Profile *string `android:"arch_variant"` 38} 39 40// FdoProfileInfo is provided by FdoProfileProvider 41type FdoProfileInfo struct { 42 Path android.Path 43} 44 45// FdoProfileProvider is used to provide path to an fdo profile 46var FdoProfileProvider = blueprint.NewProvider[FdoProfileInfo]() 47 48// GenerateAndroidBuildActions of fdo_profile does not have any build actions 49func (fp *fdoProfile) GenerateAndroidBuildActions(ctx android.ModuleContext) { 50 if fp.properties.Profile != nil { 51 path := android.PathForModuleSrc(ctx, *fp.properties.Profile) 52 android.SetProvider(ctx, FdoProfileProvider, FdoProfileInfo{ 53 Path: path, 54 }) 55 } 56} 57 58func FdoProfileFactory() android.Module { 59 m := &fdoProfile{} 60 m.AddProperties(&m.properties) 61 android.InitAndroidMultiTargetsArchModule(m, android.DeviceSupported, android.MultilibBoth) 62 return m 63} 64