summaryrefslogtreecommitdiff
path: root/cc/cc.go
AgeCommit message (Collapse)Author
2025-03-19Clear as much of cc.Module as possible after GenerateBuildActions Colin Cross
Reduce peak memory usage by adding a CleanupAfterBuildActions method that is called at the end GenerateBuidlActions, nad use it to clear as much of cc.Module as possible. This is a temporary measure, eventually the entire module should be released by blueprint once all interactions are performed through providers. Test: all soong tests pass Change-Id: Idc3390ae4506ff2eef3231691e1de7446067961a
2025-03-13Change CommonModuleInfoProvider to a pointer. Yu Liu
Bug: 358427516 Test: Manually verified genereated ninja and mk files, unit tests. Change-Id: I53a6dd718232735decbeb93febfd269dd9449e86
2025-03-11Expand TestSuiteInfoProvider to all test modules Cole Faust
Test suites have been historically only defined in the AndroidMk functions. But in soong-only builds, we don't run AndroidMk. It appears Colin already started making a TestSuiteInfo provider, but hadn't set it on all test modules yet. Expand it to all the test modules, and add export it to make so that make can check that it matches LOCAL_COMPATIBILITY_SUITES. Bug: 388850000 Test: m nothing Change-Id: Iee8959742117604fd560c95be60f3cb7cf3d9ae4
2025-03-07Rename CommonModuleInfoKey to be consistent with others. Yu Liu
Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: I1ce8bc782666586633ded9cfaf1b9590e3c0efde
2025-03-07Convert singletonModuleSingletonAdaptor, rustdocSingleton, Yu Liu
sizesSingleton, movedToApexLlndkLibraries and allBuildFlagDeclarationsSingleton to use ModuleProxy. Bug: 377723687 Test: Unit tests and compare the ninja json and mk files generated. Change-Id: I90ea5599a55975b27e9ce6e91b20104849f5887f
2025-02-28Merge changes from topics "EqualModules", "tidyPhonySingleton" into main Yu Liu
* changes: Convert tidyPhonySingleton, jdepsGeneratorSingleton and genNoticeBuildRules to use ModuleProxy. Make EqualModules a free function.
2025-02-26Make EqualModules a free function. Yu Liu
Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: I7e00f09a15f2857f58bea70bcedc4798630a40bc
2025-02-26Merge "Convert ccRustFuzzPackager to use ModuleProxy." into main Yu Liu
2025-02-25Convert ccRustFuzzPackager to use ModuleProxy. Yu Liu
Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: I156341b32a0db554602b6bd1e8f4dbb87dcabd6f
2025-02-25Merge "Convert ndkSingleton, apexDepsInfoSingleton, allTeamsSingleton, ↵ Yu Liu
apexPrebuiltInfo to use ModuleProxy." into main
2025-02-25Merge "Convert the following singletons to use ModuleProxy:" into main Yu Liu
2025-02-25Convert ndkSingleton, apexDepsInfoSingleton, allTeamsSingleton, Yu Liu
apexPrebuiltInfo to use ModuleProxy. Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: I77b05e8b54843bfa8b91376a6796c2b5c69be3c1
2025-02-25Convert the following singletons to use ModuleProxy: Yu Liu
buildTargetSingleton exportedJavaDeclarationsLibrarySingleton javaFuzzPackager kytheExtractAllSingleton kytheExtractJavaSingleton kytheExtractRustSingleton lintSingleton logtagsSingleton makeVarsSingleton ndkAbiDiffSingleton ndkAbiDumpSingleton phonySingleton platformCompatConfigSingleton sdkSingleton Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: I625ac8a209ca93755b2ba232202cfb44ecefde0a
2025-02-24Remove DistFiles from AndroidMk datastructures Cole Faust
The code that collects dists also supports getting them from OutputFiles. Switch the few remaining usages of AndroidMk-based disted files over to OutputFiles, and remove DistFiles from the AndroidMk datastructures. This should allow us to clean up more AndroidMk code in a followup cl. Bug: 398938465 Test: Confirmed that the ninja files for "m nothing dist" don't change after this cl. Change-Id: I9eaed21018ef73ec36276556e7daa7201b272009
2025-02-20Merge "Convert stubLibraries, soongMetricsSingleton, sdkSingleton, ↵ Yu Liu
complianceMetadataSingleton, freezeApiSingleton and testSuiteFiles to use ModuleProxy." into main
2025-02-19Remove special case that installs apex variants of test modules Colin Cross
b/146995717 installed apex variants of test modules, claiming that the tests won't be included in an apex, but the only use of this appears to be the tests in the com.android.art.testing apex. Those tests are packaged in an apex, and the special case to also install them results in duplicate install rules that then require the workaround in b/395617594 to hide them from the platform. Remove both the special case and the workaround. This causes the platform variants of the tests in the com.android.art.testing apex that are installe to /data/nativetest to come from the platform variant instead of the apex variant, and causes libart-broken.so to no longer be installed in /data/nativetest. Bug: 395617594 Test: compare installs-${TARGET_PRODUCT}.mk Change-Id: Ie2fc70508ababd0bb6965bdc66450d71f2a342f7
2025-02-19Convert stubLibraries, soongMetricsSingleton, sdkSingleton, Yu Liu
complianceMetadataSingleton, freezeApiSingleton and testSuiteFiles to use ModuleProxy. Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: I91789633ff0d4e0ab170717caf0a6b4f63c38593
2025-02-19Change depVisitor to use providers instead of type-asserting to Yu Liu
interfaces directly, the next step is to change it to use ModuleProxy once IsDepInSameApex is ready. Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: I13a4e256a26dbf7f9b3b746d628ac8f68b4e598e
2025-02-13Convert CheckMinSdkVersion to use providers. Yu Liu
Next step is to convert it to use ModuleProxy once IsDepInSameApex is converted to use providers. Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: I20cb052666fa95eb964e63e3302ac892d3324183
2025-02-13Support DepIsInSameApex using provider. Yu Liu
Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: I8ec5e8a3a06d078602ebaa902cacb70987f1deda
2025-02-10Convert android.TransitionMutator to TransitionInfo Colin Cross
Use the ApexInfo instead of a string as the TransitionInfo for apex variations. This removes the need for apexInfoMutator, which is the last remaining top down mutator. This has a variety of ramifications. One is that it is no longer possible to add a dependency onto the apex variation of a module, as that would require constructing a matching ApexInfo. Instead, anything that wants to add a dependency on the apex variation has to depend on the apex instead, and get to the module by walking its transistive dependencies. Another ramification is that modules in apexes can no longer determine which apexes they are in (unless they set UniqueApexVariations so that each variation is in exactly one apex). This prevents some of the existing container violation checks from working after this CL, tracked in b/394955484. It also requires using unique variation names for the prebuilt and source dependencies of apexes, so the apex variations for dependencies of prebuilts now have a prebuilt_ prefix. Bug: 372543712 Bug: 394955484 Test: go test ./... Change-Id: I3d08aca1ac956ab0e343ec3f235a736cd93be0e1
2025-02-06Remove configurable values from providers Cole Faust
Providers are data exported from one module to another. Configurable properties are the collection of all possible values of a property, to be resolved under the module's configuration. If you export a configurable from one module to another and then resolve it there, it will be evaluated with the wrong configuration. Bug: 394967253 Test: m nothing Change-Id: I934b08538bcc3267b3ec44925591f16a1c59292c
2025-02-03Add explicitlyImpl to shared library dependency tags Colin Cross
Instead of testing that explicit implementation libraries are not incorrectly used in an apex after the fact add the explicitlyImpl flag to dependency tags and use it in cc.DepIsInSameApex and rust.DepIsInSameApex to require that explicit implementation dependencies are in the same apex. Bug: 372543712 Test: go test ./... Change-Id: Ia968e06b578d5ab886a965c3981565d4895dddcd
2025-01-23Convert rust to use ModuleProxy. Yu Liu
Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: I2eb0134bb727f5875d579dae1fff5b70658bd2bb
2025-01-15Add compliance metadata of crt libs and header libs of cc modules Wei Li
Bug: 330949782 Test: CIs Change-Id: I291859a4ddb866fa639eecd73929c2657ab9cff8
2025-01-15Convert dex2oatPathFromDep to use ModuleProxy. Yu Liu
Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: I99ffe88179991da8e5963605bf76666c8945d290
2025-01-15Convert collectJniDeps to use ModuleProxy. Yu Liu
Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: I36f8b339f70ab47be84c598231cb971145fc4ef7
2025-01-10rust: Add stub support for rust_ffi modules Ivan Lozano
This adds stubs support for rust_ffi and rust_ffi_shared modules. Usage should match current cc usage. The stubs generator leveraged is the cc stubs generator. Bug: 203478530 Test: m blueprint_tests Change-Id: I043b9714a357cd5fe17c183ccdf86900f5172e0e
2025-01-10Refactor cc/rust to prep for Rust stubs Ivan Lozano
This CL largely handles this refactoring in preparation for Rust stubs support. Rust modules need to be able to communicate stubs information to cc, and certain bits of cc needs to be exported so rust can reuse them. A new VersionedLinkableInterface is added to capture most of the stubs-related interface definitions. Bug: 203478530 Test: m blueprint_tests Change-Id: I380225402fa85a3c39e7b18deb657054b3a52fbe
2025-01-08Convert getLibsForLinkerConfig to use ModuleProxy. Yu Liu
Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: Ib8020db0d1cf9e035ace52e2a893bb3df7975127
2025-01-08Convert install and checkContainerViolations to use ModuleProxy. Yu Liu
Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: I19ec2142415e88d7486ee58613065f8cdb6aca73
2025-01-08Convert CollectAllSharedDependencies to use ModuleProxy. Yu Liu
Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: Ie3b6d1f8fa684ab191123bd57645b86f3bfa97b4
2025-01-08Convert depsToPaths to use ModuleProxy for both cc and rust. Yu Liu
Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: Id465f293c3615fc803b34c990f19b4386ebece1c
2025-01-06Convert maybeInjectBoringSSLHash and linkShared to use ModuleProxy. Yu Liu
Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: I3a45013471fff1acf44865a549057557318419b4
2024-12-19Merge "Remove TestApexes from ApexInfo" into main Colin Cross
2024-12-18Remove source_file_provider.go after it's last usage was removed. Yu Liu
Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: Iff10448dc4dda49e1f02258a4c113db75778a95d
2024-12-18Convert getFdoProfilePathFromDep and addStubDependencyProviders to use Yu Liu
ModuleProxy. Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: If06de5f852e6e4574ce0e383ba0bc4fc3508b4b4
2024-12-18Convert findImplementationLibrary and compilerFlags to use ModuleProxy. Yu Liu
Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: If1f4a1bf81737c49046cd268a34110a0e38bb2f5
2024-12-17Convert CmakeSnapshot to use ModuleProxy. Yu Liu
Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: I2a49e3a2fe3c80a29b06572d0e21da9c98f1b511
2024-12-17Convert GeneratorBuildActions, GeneratorSources, Yu Liu
buildComplianceMetadataInfo to use ModuleProxy. Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: I22520e7dd3ae2ddcfa36dd39658f04c69e9e6012
2024-12-17Merge "rust: Alias rust_ffi_rlib to rust_library_rlib" into main Maciej Żenczykowski
2024-12-13rust: Alias rust_ffi_rlib to rust_library_rlib Ivan Lozano
With the new transition mutators, the distinctions between rust_ffi_rlib and rust_library_rlib are not necessary. This CL removes the remaining distinctions to allow an unusual use case where a rust_library and a rust_ffi_rlib would otherwise be created from the same source. This would allow defining a single rust_library_rlib that works for both rust modules and cc modules. One key change is that rust_ffi_rlibs only produced an rlib-std variant previously, and now produce dylib-std variants as well.This surfaced an issue where a libstd linkage mismatch would cause rustc to throw a consufing missing crate error. We instead add logic to catch this in Soong and provide a more useful error message. Bug: 383552450 Test: m rust Test: m blueprint_tests Change-Id: I611ca46934059735d06229952cfd8e0ab7050486
2024-12-12Remove TestApexes from ApexInfo Colin Cross
TestApexes is used to enforce the "Stub libraries should have a single apex_available" check, but requires propagating information from multiple apexes in order to filter out the test apexes. Instead, all test apexes used by stub libraries will set apex_available_name to masquerade as their non-test counterpart for apex_available checks. Bug: 383592644 Test: TestStubLibrariesMultipleApexViolation Change-Id: I57dcf1e6fabbe70f40d702490b93fc7f28d6eba2
2024-12-12Simplify cc.IncomingDepIsInSameApex Colin Cross
The libDepTag checks don't need to be in IncomingDepIsInSameApex, move them back to OutgoingDepIsInSamApex. This also means that the fromStatic field in libraryDependencyTag is no longer necessary, as OutgoingDepIsInSameApex can access c.static() directly. Bug: 372543712 Test: builds Change-Id: I1d97a02055460445bfa854f3d9b78f185d4a6a15
2024-12-11Split DepIsInSameApex into outgoing and incoming Colin Cross
Prepare for calling DepIsInSameApex from the apex transition mutator by splitting all the implementations in two, one that is called on the outgoing module and only takes the depTag, and one that is called on the incoming module and only takes the depTag. apexBundle.depVisitor was passing the child into android.IsDepInSameApex for both the parent and child paramters. The parent field was only used to find the type on which to call DepIsInSameApex, so this effectively used the child's implementation of DepIsInSameApex. That used to be necessary when the parent and child were of different module types, as the parent module type may not have been aware of the rules for the child module type, but is no longer necessary with split outgoing and incoming DepIsInSameApex. Bug: 372543712 Test: all soong tests pass Change-Id: If7c81ec3f7b1ea69d77e9ad7694e238820194e59
2024-12-11Merge "Move parent static check in cc.Module.DepIsInSameApex into tag" into main Colin Cross
2024-12-10Convert checkApexAvailability to use ModuleProxy. Yu Liu
Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: I7582db8e22e94d0a9db7715a76bb6ed34c166a4e
2024-12-09Move parent static check in cc.Module.DepIsInSameApex into tag Colin Cross
In order to prepare for splitting DepIsInSameApex so it can be called separately on the outgoing and incoming modules during a transtion, add fromStatic to libraryDependencyTag so that the check doesn't need to access both the parent and the child module. This also fixes cases where the static parent was misdetected, which causes a single test failure that seems correct, TestApexWithTests. cc.Module.DepIsInSameApex correctly identifies that the "mytest" module is static and the "mylib" shared library dependency is not used in the apex. Fix the test to make "mytest" non-static so that "mylib" is included. Bug: 372543712 Test: all Soong tests pass Change-Id: Ibb0cfff77adefb804ff6c66467ac761b723597de
2024-12-09Add and use staticLibrary() Colin Cross
Add staticLibrary() that returns true for a static variant of a library, and replace all instances of foo.static() && !foo.staticBinary() with foo.staticLibrary. Test: builds Change-Id: I0bf0c18669c24f23ebc9cc33d525b86d81e22d40
2024-12-05Convert checkStaticLinkingToStubLibraries to use module proxy. Yu Liu
Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: Id776727a431f2ce8fd4c7b352dc0bd282ac57f90