summaryrefslogtreecommitdiff
path: root/rust/project_json.go
AgeCommit message (Collapse)Author
2021-03-25rust: Add features list to rust_project.jsonThiébaud Weksteen
Bug: 183679729 Test: SOONG_GEN_RUST_PROJECT=1 m nothing Test: manually check v1 feature resolution for libprofcollectd Change-Id: Ib59b63372865f7f4545fe327e92d1642d76ce9c9
2021-03-15Export OUT_DIR variable to rust-project.jsonThiébaud Weksteen
This variable is required by rust-analyzer to correctly process crates that uses the include!(concat!(env!("OUT_DIR"), ...)) pattern. Adds an initialize method to baseCompiler to save the computed path for this directory. It is not possible to use the BeginMutator as the BaseModuleContext does not contain enough information to use PathForModuleOut. Bug: 175004835 Test: SOONG_GEN_RUST_PROJECT=1 m nothing; inspect rust-project.json Change-Id: If47b3832d3cca5712ae87773c174a61f5ee27bf8
2020-12-07Add dependencies for source-generated cratesThiébaud Weksteen
When using SourceProviders, the dependency tree does not include directly the source variant, only the built variant. For instance: liba --> libbingena_rlib --> libbingena_source However, libbindgena_rlib did not have a source associated with the module, and was therefore not added as a dependency. Modify the logic so that a SourceProvider library will find the right variant and always have a source defined. Adds display_name fields to the crate description to ease debugging. Test: rust-analyzer analysis-stats . Bug: 174158339 Change-Id: Id65708d57cd176f7e1da353f4a5f7ad65b003090
2020-12-03Includes rust_binary in rust-project.jsonThiébaud Weksteen
Until now, only rust_library (and their derivatives such as rust_library_host) were reported in rust-project.json. Adds support for rust_binary and rust_tests. Bug: 174743191 Test: Validate auto-completion in keystore2_main.rs Change-Id: I17b3ec29e233f29b7abd16dc771070ada48d17fb
2020-11-25Ignore variant dependencies in rust-project.jsonThiébaud Weksteen
Source-generated library modules will have a dependency on the source variant. This creates a cycle in the dependency graph which triggers a warning from rust-analyzer. Ignore this type of dependency. Test: m nothing Change-Id: I13365093ebb88b00f6a72734b01114ec3e9a320e
2020-10-12Add config.AndroidFirstDeviceTarget.Jaewoong Jung
Targets[Android][0] is not always the first, preferred target. Add a new field to config to provide the correct target and begin to use it. Test: m nothing Test: build/soong/scripts/build-ndk-prebuilts.sh Fixes: 156980228 Change-Id: Ib56f52424ebf47f3eee6ac62b9fd9eca2919d63a
2020-09-29rust: Add ref to generated sources (aidl, bindgen)Thiébaud Weksteen
Test: SOONG_GEN_RUST_PROJECT=1 m nothing; Edit system/security/keystore2/selinux/src/lib.rs; Check name resolution in IDE. Bug: 168263887 Change-Id: Icbbf176c4355c3043807ce3fe0c3967c4a1374e2
2020-09-29rust: refactor projectGeneratorSingletonThiébaud Weksteen
Move the project and knownCrates arguments to attributes of projectGeneratorSingleton. Test: SOONG_GEN_RUST_PROJECT=1 m nothing Change-Id: I52beadc8b3ba68c275ec940a6be51c2645983a6c
2020-08-06rust: validate existence of library sourceThiébaud Weksteen
While rust_bindgen modules may be interpreted as libraries, they do not have a reference to the generated source until bindgen has been executed. For now, ignore these modules. Update the unit tests to cover the rust_bindgen case. Test: SOONG_GEN_RUST_PROJECT=1 m nothing Bug: 162881856 Change-Id: I329d0fe3d94b77d395c3684f55ab01544ff7c18f
2020-08-06rust: handle modules with same crate_nameThiébaud Weksteen
crate_name do not need to be unique. A library may depend on two different versions of the same crate. Use the module name instead of the crate name when indexing the modules for rust-project.json. Test: SOONG_GEN_RUST_PROJECT=1 m nothing Bug: 162896400 Change-Id: I8af9115b106fda2bed5b9fe96059cc29a33ac247
2020-08-06Revert "rust: validate existence of library source"Thiébaud Weksteen
Revert submission 1391076 Reason for revert: Broken downstream Darwin build (b/162975597) Reverted Changes: I275f04639:rust: handle modules with same crate_name Ie736d7ebb:rust: validate existence of library source Change-Id: I1732d50a08546864f17cd826c8af574c1064c670
2020-08-06Revert "rust: handle modules with same crate_name"Thiébaud Weksteen
Revert submission 1391076 Reason for revert: Broken downstream Darwin build (b/162975597) Reverted Changes: I275f04639:rust: handle modules with same crate_name Ie736d7ebb:rust: validate existence of library source Change-Id: I995923153c11db26b4af985f2eabe94912fb04d3
2020-08-05rust: handle modules with same crate_nameThiébaud Weksteen
crate_name do not need to be unique. A library may depend on two different versions of the same crate. Use the module name instead of the crate name when indexing the modules for rust-project.json. Test: SOONG_GEN_RUST_PROJECT=1 m nothing Bug: 162896400 Change-Id: I275f04639ef05f2b649c30168046e13b2efcacb9
2020-08-05rust: validate existence of library sourceThiébaud Weksteen
While rust_bindgen modules may be interpreted as libraries, they do not have a reference to the generated source until bindgen has been executed. For now, ignore these modules. Update the unit tests to cover the rust_bindgen case. Test: SOONG_GEN_RUST_PROJECT=1 m nothing Bug: 162881856 Change-Id: Ie736d7ebb115f2c1f9a90be006c972ce24265c6a
2020-08-04Fix dependency merging for rust-project.jsonThiébaud Weksteen
Test: SOONG_GEN_RUST_PROJECT=1 m nothing; inspect rust-project.json Bug: 159591910 Change-Id: I95beb2e75f2306ae2bf2be02ab5f1a348d134b56
2020-08-03Move getEdition to a baseCompiler methodThiébaud Weksteen
Test: cd build/soong; mma Test: cd external/rust/; mma Change-Id: Ide63b2e633e7c4345c6338e107f5d66688e4cf58
2020-06-16[Rust] Remove unused variables and deduplicate.Ivan Lozano
Bug: 158731826 Test: cd external/rust/crates; mma Change-Id: I8c9e5cfeaf941b9676b92451b227c15db9a41bbc
2020-06-11Add rust-project.json generatorThiébaud Weksteen
Because we are not relying on Cargo.toml for our crate dependencies, we need to provide a structured file to rust-analyzer which describes the locations of the crates. Add a generator for that purpose, similarly to cc/compdb and cc/ccdeps. Bug: 156395307 Test: SOONG_GEN_RUST_PROJECT=1 m nothing && \ cat ${ANDROID_BUILD_TOP}/out/soong/rust-project.json Change-Id: I46efe0adeddae281eaf86707504c3aa15b5e80b8