File tree 3 files changed +53
-1
lines changed 3 files changed +53
-1
lines changed Original file line number Diff line number Diff line change @@ -89,6 +89,37 @@ dependencies = [
89
89
" walkdir" ,
90
90
]
91
91
92
+ [[package ]]
93
+ name = " camino"
94
+ version = " 1.0.9"
95
+ source = " registry+https://github.com/rust-lang/crates.io-index"
96
+ checksum = " 869119e97797867fd90f5e22af7d0bd274bd4635ebb9eb68c04f3f513ae6c412"
97
+ dependencies = [
98
+ " serde" ,
99
+ ]
100
+
101
+ [[package ]]
102
+ name = " cargo-platform"
103
+ version = " 0.1.2"
104
+ source = " registry+https://github.com/rust-lang/crates.io-index"
105
+ checksum = " cbdb825da8a5df079a43676dbe042702f1707b1109f713a01420fbb4cc71fa27"
106
+ dependencies = [
107
+ " serde" ,
108
+ ]
109
+
110
+ [[package ]]
111
+ name = " cargo_metadata"
112
+ version = " 0.15.0"
113
+ source = " registry+https://github.com/rust-lang/crates.io-index"
114
+ checksum = " 3abb7553d5b9b8421c6de7cb02606ff15e0c6eea7d8eadd75ef013fd636bec36"
115
+ dependencies = [
116
+ " camino" ,
117
+ " cargo-platform" ,
118
+ " semver" ,
119
+ " serde" ,
120
+ " serde_json" ,
121
+ ]
122
+
92
123
[[package ]]
93
124
name = " cfg-if"
94
125
version = " 1.0.0"
@@ -285,6 +316,7 @@ name = "kani-driver"
285
316
version = " 0.7.0"
286
317
dependencies = [
287
318
" anyhow" ,
319
+ " cargo_metadata" ,
288
320
" clap" ,
289
321
" glob" ,
290
322
" kani_metadata" ,
@@ -647,6 +679,15 @@ version = "1.1.0"
647
679
source = " registry+https://github.com/rust-lang/crates.io-index"
648
680
checksum = " d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
649
681
682
+ [[package ]]
683
+ name = " semver"
684
+ version = " 1.0.12"
685
+ source = " registry+https://github.com/rust-lang/crates.io-index"
686
+ checksum = " a2333e6df6d6598f2b1974829f853c2b4c5f4a6e503c10af918081aa6f8564e1"
687
+ dependencies = [
688
+ " serde" ,
689
+ ]
690
+
650
691
[[package ]]
651
692
name = " serde"
652
693
version = " 1.0.138"
Original file line number Diff line number Diff line change @@ -13,6 +13,7 @@ publish = false
13
13
14
14
[dependencies ]
15
15
kani_metadata = { path = " ../kani_metadata" }
16
+ cargo_metadata = " 0.15.0"
16
17
anyhow = " 1"
17
18
serde = { version = " 1" , features = [" derive" ] }
18
19
serde_json = " 1"
Original file line number Diff line number Diff line change 2
2
// SPDX-License-Identifier: Apache-2.0 OR MIT
3
3
4
4
use anyhow:: { Context , Result } ;
5
+ use cargo_metadata:: MetadataCommand ;
5
6
use std:: ffi:: OsString ;
6
7
use std:: path:: { Path , PathBuf } ;
7
8
use std:: process:: Command ;
@@ -21,11 +22,20 @@ pub struct CargoOutputs {
21
22
pub metadata : Vec < PathBuf > ,
22
23
}
23
24
25
+ /// Finds the "target" directory while considering workspaces,
26
+ fn find_target_dir ( ) -> PathBuf {
27
+ fn maybe_get_target ( ) -> Option < PathBuf > {
28
+ Some ( MetadataCommand :: new ( ) . exec ( ) . ok ( ) ?. target_directory . into ( ) )
29
+ }
30
+
31
+ maybe_get_target ( ) . unwrap_or ( PathBuf :: from ( "target" ) )
32
+ }
33
+
24
34
impl KaniSession {
25
35
/// Calls `cargo_build` to generate `*.symtab.json` files in `target_dir`
26
36
pub fn cargo_build ( & self ) -> Result < CargoOutputs > {
27
37
let build_target = env ! ( "TARGET" ) ; // see build.rs
28
- let target_dir = self . args . target_dir . as_ref ( ) . unwrap_or ( & PathBuf :: from ( "target" ) ) . clone ( ) ;
38
+ let target_dir = self . args . target_dir . as_ref ( ) . unwrap_or ( & find_target_dir ( ) ) . clone ( ) ;
29
39
let outdir = target_dir. join ( build_target) . join ( "debug/deps" ) ;
30
40
31
41
let flag_env = {
You can’t perform that action at this time.
0 commit comments