if test "x$HAVE_CARGO" != "xno"; then
if test "x$HAVE_RUSTC" != "xno"; then
AC_DEFINE([HAVE_RUST],[1],[Enable Rust language])
+ if test "x$cross_compiling" = "xyes"; then
+ RUST_SURICATA_LIB_XC_DIR="${host_alias}/"
+ else
+ RUST_SURICATA_LIB_XC_DIR=
+ fi
if test "x$enable_debug" = "xyes"; then
- RUST_SURICATA_LIB="../rust/target/debug/${RUST_SURICATA_LIBNAME}"
+ RUST_SURICATA_LIB="../rust/target/${RUST_SURICATA_LIB_XC_DIR}debug/${RUST_SURICATA_LIBNAME}"
else
- RUST_SURICATA_LIB="../rust/target/release/${RUST_SURICATA_LIBNAME}"
+ RUST_SURICATA_LIB="../rust/target/${RUST_SURICATA_LIB_XC_DIR}release/${RUST_SURICATA_LIBNAME}"
fi
RUST_LDADD="${RUST_SURICATA_LIB} ${RUST_LDADD}"
CFLAGS="${CFLAGS} -I\${srcdir}/../rust/gen/c-headers"
rust_config_comment=""
rust_compiler_version=$(rustc --version)
rust_cargo_version=$(cargo --version)
+
+ # Check for rustup. RUSTUP_HOME needs to be set if rustup is in
+ # use, and a user uses sudo (depending on configuration), or su to
+ # perform the install
+ rustup_home_path="no"
+ if test "x$RUSTUP_HOME" != "x"; then
+ rustup_home_path="$RUSTUP_HOME"
+ else
+ AC_PATH_PROG(have_rustup, rustup, "no")
+ if test "x$have_rustup" != "xno"; then
+ rustup_home_path=$($have_rustup show home 2>/dev/null || echo "no")
+ fi
+ fi
+ rustup_home=""
+ if test "x$rustup_home_path" != "xno"; then
+ rustup_home="RUSTUP_HOME=\$(RUSTUP_HOME_PATH)"
+ fi
+ AC_SUBST([RUSTUP_HOME_PATH], [$rustup_home_path])
+ AC_SUBST([rustup_home])
fi
fi
fi
AC_SUBST(rust_config_enabled)
AC_SUBST(rust_config_comment)
AM_CONDITIONAL([HAVE_RUST_VENDOR], [test "x$have_rust_vendor" = "xyes"])
+ AM_CONDITIONAL([RUST_CROSS_COMPILE], [test "x$cross_compiling" = "xyes"])
if test "x$enable_rust" = "xyes" || test "x$enable_rust" = "xyes (default)"; then
cargo_version=$(echo "$rust_cargo_version" | sed 's/^.*[[^0-9]]\([[0-9]]*\.[[0-9]]*\.[[0-9]]*\).*$/\1/')
if HAVE_RUST
-EXTRA_DIST += Cargo.lock
-
if HAVE_CARGO_VENDOR
EXTRA_DIST += vendor
endif
-if HAVE_RUST_VENDOR
-FROZEN = --frozen
-endif
-
if !RUST_DEBUG
if !DEBUG
RELEASE = --release
RUST_FEATURES += debug
endif
+if RUST_CROSS_COMPILE
+RUST_TARGET = --target $(host_triplet)
+endif
+
all-local:
if HAVE_PYTHON
cd $(top_srcdir)/rust && $(HAVE_PYTHON) ./gen-c-headers.py
endif
- cd $(top_srcdir)/rust && \
- CARGO_HOME=$(CARGO_HOME) \
- CARGO_TARGET_DIR=$(abs_top_builddir)/rust/target \
- $(CARGO) build $(RELEASE) $(FROZEN) \
- --features "$(RUST_FEATURES)"
+ @rustup_home@ \
+ CARGO_HOME="$(CARGO_HOME)" \
+ CARGO_TARGET_DIR="$(abs_top_builddir)/rust/target" \
+ $(CARGO) build $(RELEASE) \
+ --features "$(RUST_FEATURES)" $(RUST_TARGET)
clean-local:
- -rm -rf target
+ -rm -rf target gen
distclean-local: clean-local
rm -rf vendor gen Cargo.lock
check:
- CARGO_HOME=$(CARGO_HOME) $(CARGO) test
-
-Cargo.lock: Cargo.toml
- CARGO_HOME=$(CARGO_HOME) $(CARGO) generate-lockfile
+ CARGO_HOME="$(CARGO_HOME)" @rustup_home@ \
+ CARGO_TARGET_DIR="$(abs_top_builddir)/rust/target" \
+ $(CARGO) test $(RELEASE) --features "$(RUST_FEATURES)"
if HAVE_CARGO_VENDOR
vendor:
- CARGO_HOME=$(CARGO_HOME) $(CARGO) vendor > /dev/null
+ CARGO_HOME="$(CARGO_HOME)" @rustup_home@ $(CARGO) vendor > /dev/null
else
vendor:
endif