@@ -22,32 +22,34 @@ RUST_BUILD = "${@rust_target(d, 'BUILD')}"
22
22
23
23
# Additional flags passed directly to the "cargo build" invocation
24
24
EXTRA_CARGO_FLAGS ??= ""
25
- EXTRA_RUSTFLAGS ??= ""
26
- RUSTFLAGS += "${EXTRA_RUSTFLAGS} "
25
+
26
+ # Optional RUSTFLAGS
27
+ RUSTFLAGS ??= ""
27
28
28
29
# Space-separated list of features to enable
29
30
CARGO_FEATURES ??= ""
30
31
31
32
# Control the Cargo build type (debug or release)
32
- CARGO_BUILD_TYPE ? = "--release"
33
+ BUILD_MODE = "${ @ [ ' --release' , '' ][ d . getVar ( 'DEBUG_BUILD' ) == '1' ]} "
33
34
34
35
CARGO_INSTALL_DIR ?= "${D}${bindir} "
35
36
36
- CARGO_DEBUG_DIR = "${B} /${RUST_TARGET} /debug"
37
- CARGO_RELEASE_DIR = "${B} /${RUST_TARGET} /release"
37
+ # This is based on the content of CARGO_BUILD_FLAGS and generally will need to
38
+ # change if CARGO_BUILD_FLAGS changes.
39
+ BUILD_DIR = "${@ ['release' , 'debug' ][d . getVar ('DEBUG_BUILD' ) == '1' ]}"
40
+ CARGO_TARGET_SUBDIR = "${RUST_TARGET} /${BUILD_DIR} "
41
+
38
42
WRAPPER_DIR = "${WORKDIR} /wrappers"
39
43
40
44
# Set the Cargo manifest path to the typical location
41
45
CARGO_MANIFEST_PATH ?= "${S} /Cargo.toml"
42
46
43
- FILES :${PN} -dev += "${libdir} /*.rlib"
44
-
45
47
CARGO_BUILD_FLAGS = "\
46
48
--offline \
47
49
--verbose \
48
50
--manifest-path ${CARGO_MANIFEST_PATH} \
49
51
--target=${RUST_TARGET} \
50
- ${CARGO_BUILD_TYPE } \
52
+ ${BUILD_MODE } \
51
53
${@ oe . utils . conditional ('CARGO_FEATURES' , '' , '' , '--features "${CARGO_FEATURES} "' , d )} \
52
54
${EXTRA_CARGO_FLAGS} \
53
55
"
@@ -108,7 +110,6 @@ cargo_bin_do_compile() {
108
110
export CARGO_TARGET_APPLIES_TO_HOST = "false"
109
111
export CARGO_TARGET_ ${@ rust_target (d , 'TARGET' ). replace ('-' , '_' ). upper ()}_LINKER = "${WRAPPER_DIR} /linker-wrapper.sh"
110
112
export CARGO_HOST_LINKER = "${WRAPPER_DIR} /linker-native-wrapper.sh"
111
- export CARGO_BUILD_FLAGS = "-C rpath"
112
113
export CARGO_PROFILE_RELEASE_DEBUG = "true"
113
114
114
115
# The CC crate defaults to using CFLAGS when compiling everything. We can
@@ -125,15 +126,9 @@ cargo_bin_do_compile() {
125
126
}
126
127
127
128
cargo_bin_do_install () {
128
- if [ "${CARGO_BUILD_TYPE} " = "--release" ]; then
129
- local cargo_bindir = "${CARGO_RELEASE_DIR} "
130
- else
131
- local cargo_bindir = "${CARGO_DEBUG_DIR} "
132
- fi
133
-
134
- local files_installed = ""
129
+ local files_installed = ""
135
130
136
- for tgt in "${cargo_bindir } " /*; do
131
+ for tgt in "${B} / ${RUST_TARGET} / ${CARGO_TARGET_SUBDIR } " /*; do
137
132
case $tgt in
138
133
*. so |*. rlib )
139
134
install -d "${D}${libdir} "
0 commit comments