func (l *BuildProps) processPaths(ctx blueprint.BaseModuleContext, g generatorBackend) {
	prefix := projectModuleDir(ctx)
	l.Export_local_include_dirs = utils.PrefixDirs(l.Export_local_include_dirs, prefix)
	l.processBuildWrapper(ctx)
}
Add module paths to srcs, exclude_srcs, local_include_dirs, export_local_include_dirs
and post_install_tool
package core
import (
	"errors"
	"fmt"
	"path/filepath"
	"regexp"
	"strings"
	"github.com/google/blueprint"
	"github.com/ARM-software/bob-build/internal/graph"
	"github.com/ARM-software/bob-build/internal/utils"
)
const (
	tocExt = ".toc"
)
var depOutputsVarRegexp = regexp.MustCompile(`^\$\{(.+)_out\}$`)
type propertyExporter interface {
	exportCflags() []string
	exportIncludeDirs() []string
	exportLdflags() []string
	exportLdlibs() []string
	exportLocalIncludeDirs() []string
	exportSharedLibs() []string
}
type CommonProps struct {
	SourceProps
	IncludeDirsProps
	InstallableProps
	EnableableProps
	AndroidProps
	AliasableProps
	Cflags []string
}
type BuildProps struct {
	Out *string
	Export_cflags []string
	Conlyflags []string
	Cxxflags []string
	Asflags []string
	Ldflags []string
	Export_ldflags []string
	Library_version string
	Version_script *string
	Shared_libs []string `bob:"first_overrides"`
	ExtraSharedLibs []string `blueprint:"mutated"`
	Static_libs []string `bob:"first_overrides"`
	Reexport_libs []string `bob:"first_overrides"`
	ResolvedReexportedLibs []string `blueprint:"mutated"`
	ResolvedStaticLibs []string `blueprint:"mutated"`
	Whole_static_libs []string `bob:"first_overrides"`
	Header_libs []string `bob:"first_overrides"`
	Export_header_libs []string `bob:"first_overrides"`
	Ldlibs []string `bob:"first_overrides"`
	Generated_headers []string `bob:"first_overrides"`
	Export_generated_headers []string `bob:"first_overrides"`
	Generated_sources []string
	Generated_deps []string
	Export_local_include_dirs []string `bob:"first_overrides"`
	Export_include_dirs []string `bob:"first_overrides"`
	Build_wrapper *string
	Add_lib_dirs_to_rpath *bool
	Forwarding_shlib *bool
	StripProps
	AndroidPGOProps
	AndroidMTEProps
	TargetType tgtType `blueprint:"mutated"`
}
func (b *BuildProps) processBuildWrapper(ctx blueprint.BaseModuleContext) {
	if b.Build_wrapper != nil {
		*b.Build_wrapper = strings.TrimSpace(*b.Build_wrapper)
		firstWord := strings.SplitN(*b.Build_wrapper, " ", 1)[0]
		if firstWord[0] != '/' {
			if strings.ContainsAny(firstWord, "/") {
				*b.Build_wrapper = getBackendPathInSourceDir(getBackend(ctx), *b.Build_wrapper)
			}
		}
	}
}
type Build struct {
	CommonProps
	BuildProps
	Target TargetSpecific
	Host   TargetSpecific
	SplittableProps
}
func (l *Build) getTargetSpecific(tgt tgtType) *TargetSpecific {
	if tgt == tgtTypeHost {
		return &l.Host
	} else if tgt == tgtTypeTarget {
		return &l.Target
	} else {
		panic(fmt.Errorf("Unsupported target type: %s", tgt))
	}
}
func (l *Build) isHostSupported() bool {
	if l.Host_supported == nil {
		return false
	}
	return *l.Host_supported
}
func (l *Build) isTargetSupported() bool {
	if l.Target_supported == nil {
		return true
	}
	return *l.Target_supported
}
func (l *Build) isForwardingSharedLibrary() bool {
	if l.Forwarding_shlib == nil {
		return false
	}
	return *l.Forwarding_shlib
}
func (l *Build) isRpathWanted() bool {
	if l.Add_lib_dirs_to_rpath == nil {
		return false
	}
	return *l.Add_lib_dirs_to_rpath
}
func (l *Build) getBuildWrapperAndDeps(ctx blueprint.ModuleContext) (string, []string) {
	if l.Build_wrapper != nil {
		depargs := map[string]string{}
		files := getDependentArgsAndFiles(ctx, depargs)
		buildWrapper := *l.Build_wrapper
		for k, v := range depargs {
			buildWrapper = strings.Replace(buildWrapper, "${"+k+"}", v, -1)
		}
		return buildWrapper, files
	}
	return "", []string{}
}