Merge branch 'maint-0.3.4'

This commit is contained in:
Nick Mathewson 2018-06-30 09:15:39 -04:00
commit 028523c801
5 changed files with 32 additions and 9 deletions

View File

@ -31,8 +31,9 @@ TESTING_TOR_BINARY=$(top_builddir)/src/or/tor$(EXEEXT)
endif endif
if USE_RUST if USE_RUST
rust_ldadd=$(top_builddir)/src/rust/target/release/@TOR_RUST_STATIC_NAME@ \ ## this MUST be $(), otherwise am__DEPENDENCIES will not track it
@TOR_RUST_EXTRA_LIBS@ rust_ldadd=$(top_builddir)/$(TOR_RUST_LIB_PATH) \
$(TOR_RUST_EXTRA_LIBS)
else else
rust_ldadd= rust_ldadd=
endif endif

2
changes/rust_cross Normal file
View File

@ -0,0 +1,2 @@
o Minor feature (Rust, portability):
- Rust cross-compilation is now supported. Closes ticket 25895.

View File

@ -443,6 +443,8 @@ fi
AC_C_BIGENDIAN AC_C_BIGENDIAN
AC_ARG_VAR([TOR_RUST_TARGET], [Rust target, must be specified when cross-compiling (HOST != BUILD). example: i686-pc-windows-gnu])
if test "x$enable_rust" = "xyes"; then if test "x$enable_rust" = "xyes"; then
AC_ARG_VAR([RUSTC], [path to the rustc binary]) AC_ARG_VAR([RUSTC], [path to the rustc binary])
AC_CHECK_PROG([RUSTC], [rustc], [rustc],[no]) AC_CHECK_PROG([RUSTC], [rustc], [rustc],[no])
@ -508,12 +510,29 @@ if test "x$enable_rust" = "xyes"; then
dnl For now both MSVC and MinGW rust libraries will output static libs with dnl For now both MSVC and MinGW rust libraries will output static libs with
dnl the MSVC naming convention. dnl the MSVC naming convention.
if test "$bwin32" = "true"; then if test "$bwin32" = "true"; then
TOR_RUST_STATIC_NAME=tor_rust.lib tor_rust_static_name=tor_rust.lib
else else
TOR_RUST_STATIC_NAME=libtor_rust.a tor_rust_static_name=libtor_rust.a
fi fi
AC_SUBST(TOR_RUST_STATIC_NAME) AC_CANONICAL_BUILD
if test -n "$TOR_RUST_TARGET"; then
if test "$host" = "$build"; then
AC_MSG_ERROR([HOST = BUILD is invalid if TOR_RUST_TARGET is specified, see configure --help for more information.])
fi
RUST_TARGET_PROP="target = '$TOR_RUST_TARGET'"
TOR_RUST_LIB_PATH="src/rust/target/$TOR_RUST_TARGET/release/$tor_rust_static_name"
else
if test "$host" != "$build"; then
AC_MSG_ERROR([TOR_RUST_TARGET must be specified when cross-compiling with Rust enabled.])
fi
RUST_TARGET_PROP=
TOR_RUST_LIB_PATH="src/rust/target/release/$tor_rust_static_name"
fi
AC_SUBST(RUST_TARGET_PROP)
AC_SUBST(TOR_RUST_LIB_PATH)
AC_SUBST(CARGO_ONLINE) AC_SUBST(CARGO_ONLINE)
AC_SUBST(RUST_WARN) AC_SUBST(RUST_WARN)
AC_SUBST(RUST_DL) AC_SUBST(RUST_DL)

View File

@ -7,5 +7,6 @@
@RUST_DL@ [source.vendored-sources] @RUST_DL@ [source.vendored-sources]
@RUST_DL@ directory = '@TOR_RUST_DEPENDENCIES@' @RUST_DL@ directory = '@TOR_RUST_DEPENDENCIES@'
@RUST_WARN@ [build] [build]
@RUST_WARN@ rustflags = [ "-D", "warnings" ] @RUST_WARN@ rustflags = [ "-D", "warnings" ]
@RUST_TARGET_PROP@

View File

@ -4,7 +4,7 @@ EXTRA_DIST +=\
EXTRA_CARGO_OPTIONS= EXTRA_CARGO_OPTIONS=
src/rust/target/release/@TOR_RUST_STATIC_NAME@: FORCE @TOR_RUST_LIB_PATH@: FORCE
( cd "$(abs_top_builddir)/src/rust" ; \ ( cd "$(abs_top_builddir)/src/rust" ; \
CARGO_TARGET_DIR="$(abs_top_builddir)/src/rust/target" \ CARGO_TARGET_DIR="$(abs_top_builddir)/src/rust/target" \
CARGO_HOME="$(abs_top_builddir)/src/rust" \ CARGO_HOME="$(abs_top_builddir)/src/rust" \
@ -22,7 +22,7 @@ distclean-rust:
rm -rf "$(abs_top_builddir)/src/rust/registry" rm -rf "$(abs_top_builddir)/src/rust/registry"
if USE_RUST if USE_RUST
build-rust: src/rust/target/release/@TOR_RUST_STATIC_NAME@ build-rust: @TOR_RUST_LIB_PATH@
else else
build-rust: build-rust:
endif endif