blob: 177e0c489e36c8860df43ba2231258f6ba93259e [file] [log] [blame]
Ivan Lozano183a3212019-10-18 14:18:45 -07001package cc
2
3import (
Ivan Lozano183a3212019-10-18 14:18:45 -07004 "android/soong/android"
Colin Cross6e511a92020-07-27 21:26:48 -07005
6 "github.com/google/blueprint"
Ivan Lozano183a3212019-10-18 14:18:45 -07007)
8
9type LinkableInterface interface {
10 Module() android.Module
11 CcLibrary() bool
12 CcLibraryInterface() bool
13
Ivan Lozano183a3212019-10-18 14:18:45 -070014 OutputFile() android.OptionalPath
Ivan Lozanoa0cd8f92020-04-09 09:56:02 -040015 CoverageFiles() android.Paths
Ivan Lozano183a3212019-10-18 14:18:45 -070016
Ivan Lozano2b262972019-11-21 12:30:50 -080017 NonCcVariants() bool
18
Colin Cross3572cf72020-10-01 15:58:11 -070019 StubsVersions(android.BaseMutatorContext) []string
Ivan Lozano52767be2019-10-18 14:49:46 -070020 BuildStubs() bool
Ivan Lozano183a3212019-10-18 14:18:45 -070021 SetBuildStubs()
Colin Crossd1f898e2020-08-18 18:35:15 -070022 SetStubsVersion(string)
Jooyung Han03b51852020-02-26 22:45:42 +090023 StubsVersion() string
Colin Crossd1f898e2020-08-18 18:35:15 -070024 SetAllStubsVersions([]string)
25 AllStubsVersions() []string
Ivan Lozano52767be2019-10-18 14:49:46 -070026 HasStubsVariants() bool
27 SelectedStl() string
28 ApiLevel() string
Ivan Lozano183a3212019-10-18 14:18:45 -070029
30 BuildStaticVariant() bool
31 BuildSharedVariant() bool
32 SetStatic()
33 SetShared()
Ivan Lozano52767be2019-10-18 14:49:46 -070034 Static() bool
35 Shared() bool
36 Toc() android.OptionalPath
37
Jooyung Han624d35c2020-04-10 12:57:24 +090038 Host() bool
39
Yifan Hong1b3348d2020-01-21 15:53:22 -080040 InRamdisk() bool
41 OnlyInRamdisk() bool
42
Yifan Hong60e0cfb2020-10-21 15:17:56 -070043 InVendorRamdisk() bool
44 OnlyInVendorRamdisk() bool
45
Ivan Lozano52767be2019-10-18 14:49:46 -070046 InRecovery() bool
47 OnlyInRecovery() bool
48
Colin Crossc511bc52020-04-07 16:50:32 +000049 UseSdk() bool
Ivan Lozano52767be2019-10-18 14:49:46 -070050 UseVndk() bool
51 MustUseVendorVariant() bool
52 IsVndk() bool
53 HasVendorVariant() bool
54
55 SdkVersion() string
Colin Crossc511bc52020-04-07 16:50:32 +000056 AlwaysSdk() bool
Jiyong Park2286afd2020-06-16 21:58:53 +090057 IsSdkVariant() bool
Ivan Lozano52767be2019-10-18 14:49:46 -070058
59 ToolchainLibrary() bool
60 NdkPrebuiltStl() bool
61 StubDecorator() bool
Colin Cross1348ce32020-10-01 13:37:16 -070062
63 SplitPerApiLevel() bool
Ivan Lozano183a3212019-10-18 14:18:45 -070064}
65
Colin Cross6e511a92020-07-27 21:26:48 -070066var (
67 CrtBeginDepTag = dependencyTag{name: "crtbegin"}
68 CrtEndDepTag = dependencyTag{name: "crtend"}
69 CoverageDepTag = dependencyTag{name: "coverage"}
70)
Ivan Lozano183a3212019-10-18 14:18:45 -070071
Colin Cross6e511a92020-07-27 21:26:48 -070072func SharedDepTag() blueprint.DependencyTag {
73 return libraryDependencyTag{Kind: sharedLibraryDependency}
Ivan Lozano183a3212019-10-18 14:18:45 -070074}
75
Colin Cross6e511a92020-07-27 21:26:48 -070076func StaticDepTag() blueprint.DependencyTag {
77 return libraryDependencyTag{Kind: staticLibraryDependency}
78}
Colin Cross0de8a1e2020-09-18 14:15:30 -070079
80type SharedLibraryInfo struct {
81 SharedLibrary android.Path
82 UnstrippedSharedLibrary android.Path
83
84 TableOfContents android.OptionalPath
85 CoverageSharedLibrary android.OptionalPath
86
87 StaticAnalogue *StaticLibraryInfo
88}
89
90var SharedLibraryInfoProvider = blueprint.NewProvider(SharedLibraryInfo{})
91
92type SharedLibraryImplementationStubsInfo struct {
93 SharedLibraryStubsInfos []SharedLibraryStubsInfo
94
95 IsLLNDK bool
96}
97
98var SharedLibraryImplementationStubsInfoProvider = blueprint.NewProvider(SharedLibraryImplementationStubsInfo{})
99
100type SharedLibraryStubsInfo struct {
101 Version string
102 SharedLibraryInfo SharedLibraryInfo
103 FlagExporterInfo FlagExporterInfo
104}
105
106var SharedLibraryStubsInfoProvider = blueprint.NewProvider(SharedLibraryStubsInfo{})
107
108type StaticLibraryInfo struct {
109 StaticLibrary android.Path
110 Objects Objects
111 ReuseObjects Objects
112
113 // This isn't the actual transitive DepSet, shared library dependencies have been
114 // converted into static library analogues. It is only used to order the static
115 // library dependencies that were specified for the current module.
116 TransitiveStaticLibrariesForOrdering *android.DepSet
117}
118
119var StaticLibraryInfoProvider = blueprint.NewProvider(StaticLibraryInfo{})
120
121type FlagExporterInfo struct {
122 IncludeDirs android.Paths
123 SystemIncludeDirs android.Paths
124 Flags []string
125 Deps android.Paths
126 GeneratedHeaders android.Paths
127}
128
129var FlagExporterInfoProvider = blueprint.NewProvider(FlagExporterInfo{})