aboutsummaryrefslogtreecommitdiff
path: root/rust/project_json.go
Commit message (Collapse)AuthorAgeFilesLines
* rust: rust-project.json: Skip disabled modulesMatthew Maurer2023-11-271-0/+3
| | | | | | | | Disabled modules may not have a valid root path. Bug: 313410568 Test: SOONG_GEN_RUST_PROJECT=1 m nothing Change-Id: I253cca18493193245aa198adfce5fd75cf27cefb
* rust: Resolve crate roots outside rust-projectMatthew Maurer2023-11-221-121/+33
| | | | | | | | | | | | | Previously, we manually re-computed crate roots inside project_json for rendering rust-project.json. In addition to added complexity, this meant that generated sources and glob sources would not render correctly - it would select e.g. `src/**.rs` or `:foo` as a crate root. Use a centralized computation of crate roots instead. Bug: 309943184 Test: SOONG_GEN_RUST_PROJECT=1 m nothing, compare rust-project.json Change-Id: I0caddbf600d025a0041f45e69812cdd6f1761234
* rust: Privatize Cargo* methods on compilerMatthew Maurer2023-11-201-2/+2
| | | | | | | | These methods aren't used outside, and probably shouldn't be. Bug: 309943184 Test: m nothing Change-Id: Ia7dd5220ccd10c0136aa16f5e21149eaf7a03ea1
* Parallelize singleton executionLaMont Jones2023-05-191-1/+1
| | | | | | Bug: 281536768 Test: manual, presubmits Change-Id: I57fdc76ba6b277e88e196b506af87127a530fd37
* Support rust_toolchain_library for rust-projectThiébaud Weksteen2021-12-081-0/+2
| | | | | | Bug: 209678277 Test: SOONG_GEN_RUST_PROJECT=1 m nothing; check that libstd is included Change-Id: Ic197e00bc4695aa6dcd46b8c704a82a2e5e90460
* Include proc macro crates in rust-project.jsonSeth Moore2021-10-061-0/+6
| | | | | | | | | | These crates were skipped before, leaving dependencies missing in rust-project.json. Include them and mark them as `"is_proc_macro": true` so that rust-analyzer can process them. Fixes: 202290038 Test: SOONG_GEN_RUST_PROJECT=1 m nothing Change-Id: Ia80e6f5e2f56a76608ba057075600e6b4424281b
* Removed commented out codeChris Wailes2021-08-101-4/+0
| | | | | | | | A previous CL commented out code instead of removing it. This CL fixes this grave error. Test: TH Change-Id: I1daeaaa1ad90230aec639d603e7cdb9b61af251a
* Clean up generated rust-project.json filesChris Wailes2021-08-091-2/+2
| | | | | | | | | This CL removes the roots section from the rust-projects.json file as it is no longer required by the rust-analyzer tool. Bug: 162055556 Test: prebuilts/rust/tests/rust-analyzer-integration-test.sh Change-Id: I85c3277632c88394bc52e709ecce83f6aa1f2e0e
* rust: Add features list to rust_project.jsonThiébaud Weksteen2021-03-251-2/+6
| | | | | | | Bug: 183679729 Test: SOONG_GEN_RUST_PROJECT=1 m nothing Test: manually check v1 feature resolution for libprofcollectd Change-Id: Ib59b63372865f7f4545fe327e92d1642d76ce9c9
* Export OUT_DIR variable to rust-project.jsonThiébaud Weksteen2021-03-151-7/+13
| | | | | | | | | | | | | | 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
* Add dependencies for source-generated cratesThiébaud Weksteen2020-12-071-60/+146
| | | | | | | | | | | | | | | | | | 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
* Includes rust_binary in rust-project.jsonThiébaud Weksteen2020-12-031-7/+18
| | | | | | | | | | 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
* Ignore variant dependencies in rust-project.jsonThiébaud Weksteen2020-11-251-0/+4
| | | | | | | | | 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
* Add config.AndroidFirstDeviceTarget.Jaewoong Jung2020-10-121-1/+1
| | | | | | | | | | 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
* rust: Add ref to generated sources (aidl, bindgen)Thiébaud Weksteen2020-09-291-3/+29
| | | | | | | | 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
* rust: refactor projectGeneratorSingletonThiébaud Weksteen2020-09-291-34/+34
| | | | | | | | Move the project and knownCrates arguments to attributes of projectGeneratorSingleton. Test: SOONG_GEN_RUST_PROJECT=1 m nothing Change-Id: I52beadc8b3ba68c275ec940a6be51c2645983a6c
* rust: validate existence of library sourceThiébaud Weksteen2020-08-061-3/+5
| | | | | | | | | | | | 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
* rust: handle modules with same crate_nameThiébaud Weksteen2020-08-061-6/+7
| | | | | | | | | | 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
* Revert "rust: validate existence of library source"Thiébaud Weksteen2020-08-061-5/+3
| | | | | | | | | | | 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
* Revert "rust: handle modules with same crate_name"Thiébaud Weksteen2020-08-061-7/+6
| | | | | | | | | | | 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
* rust: handle modules with same crate_nameThiébaud Weksteen2020-08-051-6/+7
| | | | | | | | | | 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
* rust: validate existence of library sourceThiébaud Weksteen2020-08-051-3/+5
| | | | | | | | | | | | 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
* Fix dependency merging for rust-project.jsonThiébaud Weksteen2020-08-041-1/+2
| | | | | | Test: SOONG_GEN_RUST_PROJECT=1 m nothing; inspect rust-project.json Bug: 159591910 Change-Id: I95beb2e75f2306ae2bf2be02ab5f1a348d134b56
* Move getEdition to a baseCompiler methodThiébaud Weksteen2020-08-031-1/+1
| | | | | | Test: cd build/soong; mma Test: cd external/rust/; mma Change-Id: Ide63b2e633e7c4345c6338e107f5d66688e4cf58
* [Rust] Remove unused variables and deduplicate.Ivan Lozano2020-06-161-1/+1
| | | | | | Bug: 158731826 Test: cd external/rust/crates; mma Change-Id: I8c9e5cfeaf941b9676b92451b227c15db9a41bbc
* Add rust-project.json generatorThiébaud Weksteen2020-06-111-0/+161
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