blob: e5dc2b36b83fc05d7010ea5a8607d457b8cafade [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 {
Ivan Lozanof9e21722020-12-02 09:00:51 -050010 android.Module
11
Ivan Lozano183a3212019-10-18 14:18:45 -070012 Module() android.Module
13 CcLibrary() bool
14 CcLibraryInterface() bool
15
Ivan Lozano183a3212019-10-18 14:18:45 -070016 OutputFile() android.OptionalPath
Ivan Lozanoa0cd8f92020-04-09 09:56:02 -040017 CoverageFiles() android.Paths
Ivan Lozano183a3212019-10-18 14:18:45 -070018
Ivan Lozano2b262972019-11-21 12:30:50 -080019 NonCcVariants() bool
20
Ivan Lozano52767be2019-10-18 14:49:46 -070021 SelectedStl() string
Ivan Lozano183a3212019-10-18 14:18:45 -070022
23 BuildStaticVariant() bool
24 BuildSharedVariant() bool
25 SetStatic()
26 SetShared()
Ivan Lozano52767be2019-10-18 14:49:46 -070027 Static() bool
28 Shared() bool
29 Toc() android.OptionalPath
30
Jooyung Han624d35c2020-04-10 12:57:24 +090031 Host() bool
32
Yifan Hong1b3348d2020-01-21 15:53:22 -080033 InRamdisk() bool
34 OnlyInRamdisk() bool
35
Yifan Hong60e0cfb2020-10-21 15:17:56 -070036 InVendorRamdisk() bool
37 OnlyInVendorRamdisk() bool
38
Ivan Lozano52767be2019-10-18 14:49:46 -070039 InRecovery() bool
40 OnlyInRecovery() bool
41
Colin Crossc511bc52020-04-07 16:50:32 +000042 UseSdk() bool
Ivan Lozano52767be2019-10-18 14:49:46 -070043 UseVndk() bool
44 MustUseVendorVariant() bool
45 IsVndk() bool
Ivan Lozanof9e21722020-12-02 09:00:51 -050046 IsVndkExt() bool
47 IsVndkPrivate(config android.Config) bool
Ivan Lozano52767be2019-10-18 14:49:46 -070048 HasVendorVariant() bool
Ivan Lozanof9e21722020-12-02 09:00:51 -050049 InProduct() bool
Ivan Lozano52767be2019-10-18 14:49:46 -070050
51 SdkVersion() string
Colin Crossc511bc52020-04-07 16:50:32 +000052 AlwaysSdk() bool
Jiyong Park2286afd2020-06-16 21:58:53 +090053 IsSdkVariant() bool
Ivan Lozano52767be2019-10-18 14:49:46 -070054
Colin Cross1348ce32020-10-01 13:37:16 -070055 SplitPerApiLevel() bool
Ivan Lozano183a3212019-10-18 14:18:45 -070056}
57
Colin Cross6e511a92020-07-27 21:26:48 -070058var (
59 CrtBeginDepTag = dependencyTag{name: "crtbegin"}
60 CrtEndDepTag = dependencyTag{name: "crtend"}
61 CoverageDepTag = dependencyTag{name: "coverage"}
62)
Ivan Lozano183a3212019-10-18 14:18:45 -070063
Colin Cross6e511a92020-07-27 21:26:48 -070064func SharedDepTag() blueprint.DependencyTag {
65 return libraryDependencyTag{Kind: sharedLibraryDependency}
Ivan Lozano183a3212019-10-18 14:18:45 -070066}
67
Colin Cross6e511a92020-07-27 21:26:48 -070068func StaticDepTag() blueprint.DependencyTag {
69 return libraryDependencyTag{Kind: staticLibraryDependency}
70}
Colin Cross0de8a1e2020-09-18 14:15:30 -070071
Zach Johnson3df4e632020-11-06 11:56:27 -080072func HeaderDepTag() blueprint.DependencyTag {
73 return libraryDependencyTag{Kind: headerLibraryDependency}
74}
75
Colin Cross0de8a1e2020-09-18 14:15:30 -070076type SharedLibraryInfo struct {
77 SharedLibrary android.Path
78 UnstrippedSharedLibrary android.Path
79
80 TableOfContents android.OptionalPath
81 CoverageSharedLibrary android.OptionalPath
82
83 StaticAnalogue *StaticLibraryInfo
84}
85
86var SharedLibraryInfoProvider = blueprint.NewProvider(SharedLibraryInfo{})
87
88type SharedLibraryImplementationStubsInfo struct {
89 SharedLibraryStubsInfos []SharedLibraryStubsInfo
90
91 IsLLNDK bool
92}
93
94var SharedLibraryImplementationStubsInfoProvider = blueprint.NewProvider(SharedLibraryImplementationStubsInfo{})
95
96type SharedLibraryStubsInfo struct {
97 Version string
98 SharedLibraryInfo SharedLibraryInfo
99 FlagExporterInfo FlagExporterInfo
100}
101
102var SharedLibraryStubsInfoProvider = blueprint.NewProvider(SharedLibraryStubsInfo{})
103
104type StaticLibraryInfo struct {
105 StaticLibrary android.Path
106 Objects Objects
107 ReuseObjects Objects
108
109 // This isn't the actual transitive DepSet, shared library dependencies have been
110 // converted into static library analogues. It is only used to order the static
111 // library dependencies that were specified for the current module.
112 TransitiveStaticLibrariesForOrdering *android.DepSet
113}
114
115var StaticLibraryInfoProvider = blueprint.NewProvider(StaticLibraryInfo{})
116
117type FlagExporterInfo struct {
118 IncludeDirs android.Paths
119 SystemIncludeDirs android.Paths
120 Flags []string
121 Deps android.Paths
122 GeneratedHeaders android.Paths
123}
124
125var FlagExporterInfoProvider = blueprint.NewProvider(FlagExporterInfo{})