From 2a9bb46b4a6e343a653d5bd3c0cc463e8fdffcf0 Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Thu, 13 Feb 2020 13:14:03 +0100 Subject: [PATCH] rust: build and dist fixes Bring up to date with 5.0.x. --- configure.ac | 29 +++++++++++++++++++++++++++-- rust/Makefile.am | 31 ++++++++++++++----------------- 2 files changed, 41 insertions(+), 19 deletions(-) diff --git a/configure.ac b/configure.ac index 1ecdc004dd..494c7757b0 100644 --- a/configure.ac +++ b/configure.ac @@ -2345,10 +2345,15 @@ fi 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" @@ -2369,6 +2374,25 @@ fi 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 @@ -2379,6 +2403,7 @@ 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/') diff --git a/rust/Makefile.am b/rust/Makefile.am index 42734b3c19..a3f9521422 100644 --- a/rust/Makefile.am +++ b/rust/Makefile.am @@ -4,16 +4,10 @@ EXTRA_DIST = src \ 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 @@ -28,31 +22,34 @@ if DEBUG 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 -- 2.47.2