123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- // Copyright 2021 Google Inc. All rights reserved.
- //
- // 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 genrule
- import (
- "strings"
- "android/soong/android"
- )
- // location is used to service $(location) and $(locations) entries in genrule commands.
- type location interface {
- Paths(cmd *android.RuleBuilderCommand) []string
- String() string
- }
- // inputLocation is a $(location) result for an entry in the srcs property.
- type inputLocation struct {
- paths android.Paths
- }
- func (l inputLocation) String() string {
- return strings.Join(l.paths.Strings(), " ")
- }
- func (l inputLocation) Paths(cmd *android.RuleBuilderCommand) []string {
- return cmd.PathsForInputs(l.paths)
- }
- var _ location = inputLocation{}
- // outputLocation is a $(location) result for an entry in the out property.
- type outputLocation struct {
- path android.WritablePath
- }
- func (l outputLocation) String() string {
- return l.path.String()
- }
- func (l outputLocation) Paths(cmd *android.RuleBuilderCommand) []string {
- return []string{cmd.PathForOutput(l.path)}
- }
- var _ location = outputLocation{}
- // toolLocation is a $(location) result for an entry in the tools or tool_files property.
- type toolLocation struct {
- paths android.Paths
- }
- func (l toolLocation) String() string {
- return strings.Join(l.paths.Strings(), " ")
- }
- func (l toolLocation) Paths(cmd *android.RuleBuilderCommand) []string {
- return cmd.PathsForTools(l.paths)
- }
- var _ location = toolLocation{}
- // packagedToolLocation is a $(location) result for an entry in the tools or tool_files property
- // that has PackagingSpecs.
- type packagedToolLocation struct {
- spec android.PackagingSpec
- }
- func (l packagedToolLocation) String() string {
- return l.spec.FileName()
- }
- func (l packagedToolLocation) Paths(cmd *android.RuleBuilderCommand) []string {
- return []string{cmd.PathForPackagedTool(l.spec)}
- }
- var _ location = packagedToolLocation{}
- // errorLocation is a placeholder for a $(location) result that returns garbage to break the command
- // when error reporting is delayed by ALLOW_MISSING_DEPENDENCIES=true.
- type errorLocation struct {
- err string
- }
- func (l errorLocation) String() string {
- return l.err
- }
- func (l errorLocation) Paths(cmd *android.RuleBuilderCommand) []string {
- return []string{l.err}
- }
- var _ location = errorLocation{}
|