|
@@ -258,64 +258,6 @@ dnl List all external rust crates we depend on here. Include the version
|
|
rust_crates="libc-0.2.22"
|
|
rust_crates="libc-0.2.22"
|
|
AC_SUBST(rust_crates)
|
|
AC_SUBST(rust_crates)
|
|
|
|
|
|
-if test "x$enable_rust" = "xyes"; then
|
|
|
|
- AC_ARG_VAR([RUSTC], [path to the rustc binary])
|
|
|
|
- AC_CHECK_PROG([RUSTC], [rustc], [rustc],[no])
|
|
|
|
- if test "x$RUSTC" = "xno"; then
|
|
|
|
- AC_MSG_ERROR([rustc unavailable but rust integration requested.])
|
|
|
|
- fi
|
|
|
|
-
|
|
|
|
- AC_ARG_VAR([CARGO], [path to the cargo binary])
|
|
|
|
- AC_CHECK_PROG([CARGO], [cargo], [cargo],[no])
|
|
|
|
- if test "x$CARGO" = "xno"; then
|
|
|
|
- AC_MSG_ERROR([cargo unavailable but rust integration requested.])
|
|
|
|
- fi
|
|
|
|
-
|
|
|
|
- AC_DEFINE([HAVE_RUST], 1, [have Rust])
|
|
|
|
- if test "x$enable_cargo_online_mode" = "xyes"; then
|
|
|
|
- CARGO_ONLINE=
|
|
|
|
- RUST_DL=#
|
|
|
|
- else
|
|
|
|
- CARGO_ONLINE=--frozen
|
|
|
|
- RUST_DL=
|
|
|
|
-
|
|
|
|
- dnl When we're not allowed to touch the network, we need crate dependencies
|
|
|
|
- dnl locally available.
|
|
|
|
- AC_MSG_CHECKING([rust crate dependencies])
|
|
|
|
- AC_ARG_VAR([RUST_DEPENDENCIES], [path to directory with local crate mirror])
|
|
|
|
- if test "x$RUST_DEPENDENCIES" = "x"; then
|
|
|
|
- RUST_DEPENDENCIES="$srcdir/src/ext/rust/"
|
|
|
|
- NEED_MOD=1
|
|
|
|
- fi
|
|
|
|
- if test ! -d "$RUST_DEPENDENCIES"; then
|
|
|
|
- AC_MSG_ERROR([Rust dependency directory $RUST_DEPENDENCIES does not exist. Specify a dependency directory using the RUST_DEPENDENCIES variable or allow cargo to fetch crates using --enable-cargo-online-mode.])
|
|
|
|
- fi
|
|
|
|
- for dep in $rust_crates; do
|
|
|
|
- if test ! -d "$RUST_DEPENDENCIES"/"$dep"; then
|
|
|
|
- AC_MSG_ERROR([Failure to find rust dependency $RUST_DEPENDENCIES/$dep. Specify a dependency directory using the RUST_DEPENDENCIES variable or allow cargo to fetch crates using --enable-cargo-online-mode.])
|
|
|
|
- fi
|
|
|
|
- done
|
|
|
|
- if test "x$NEED_MOD" = "x1"; then
|
|
|
|
- dnl When looking for dependencies from cargo, pick right directory
|
|
|
|
- RUST_DEPENDENCIES="../../src/ext/rust"
|
|
|
|
- fi
|
|
|
|
- fi
|
|
|
|
-
|
|
|
|
- AC_SUBST(CARGO_ONLINE)
|
|
|
|
- AC_SUBST(RUST_DL)
|
|
|
|
-
|
|
|
|
-dnl Let's check the rustc version, too
|
|
|
|
- AC_MSG_CHECKING([rust version])
|
|
|
|
- RUSTC_VERSION_MAJOR=`$RUSTC --version | cut -d ' ' -f 2 | cut -d '.' -f 1`
|
|
|
|
- RUSTC_VERSION_MINOR=`$RUSTC --version | cut -d ' ' -f 2 | cut -d '.' -f 2`
|
|
|
|
- if test "x$RUSTC_VERSION_MAJOR" = "x" -o "x$RUSTC_VERSION_MINOR" = "x"; then
|
|
|
|
- AC_MSG_ERROR([rustc version couldn't be identified])
|
|
|
|
- fi
|
|
|
|
- if test "$RUSTC_VERSION_MAJOR" -lt 2 -a "$RUSTC_VERSION_MINOR" -lt 14; then
|
|
|
|
- AC_MSG_ERROR([rustc must be at least version 1.14])
|
|
|
|
- fi
|
|
|
|
-fi
|
|
|
|
-
|
|
|
|
ifdef([AC_C_FLEXIBLE_ARRAY_MEMBER], [
|
|
ifdef([AC_C_FLEXIBLE_ARRAY_MEMBER], [
|
|
AC_C_FLEXIBLE_ARRAY_MEMBER
|
|
AC_C_FLEXIBLE_ARRAY_MEMBER
|
|
], [
|
|
], [
|
|
@@ -451,6 +393,73 @@ fi
|
|
|
|
|
|
AC_C_BIGENDIAN
|
|
AC_C_BIGENDIAN
|
|
|
|
|
|
|
|
+if test "x$enable_rust" = "xyes"; then
|
|
|
|
+ AC_ARG_VAR([RUSTC], [path to the rustc binary])
|
|
|
|
+ AC_CHECK_PROG([RUSTC], [rustc], [rustc],[no])
|
|
|
|
+ if test "x$RUSTC" = "xno"; then
|
|
|
|
+ AC_MSG_ERROR([rustc unavailable but rust integration requested.])
|
|
|
|
+ fi
|
|
|
|
+
|
|
|
|
+ AC_ARG_VAR([CARGO], [path to the cargo binary])
|
|
|
|
+ AC_CHECK_PROG([CARGO], [cargo], [cargo],[no])
|
|
|
|
+ if test "x$CARGO" = "xno"; then
|
|
|
|
+ AC_MSG_ERROR([cargo unavailable but rust integration requested.])
|
|
|
|
+ fi
|
|
|
|
+
|
|
|
|
+ AC_DEFINE([HAVE_RUST], 1, [have Rust])
|
|
|
|
+ if test "x$enable_cargo_online_mode" = "xyes"; then
|
|
|
|
+ CARGO_ONLINE=
|
|
|
|
+ RUST_DL=#
|
|
|
|
+ else
|
|
|
|
+ CARGO_ONLINE=--frozen
|
|
|
|
+ RUST_DL=
|
|
|
|
+
|
|
|
|
+ dnl When we're not allowed to touch the network, we need crate dependencies
|
|
|
|
+ dnl locally available.
|
|
|
|
+ AC_MSG_CHECKING([rust crate dependencies])
|
|
|
|
+ AC_ARG_VAR([RUST_DEPENDENCIES], [path to directory with local crate mirror])
|
|
|
|
+ if test "x$RUST_DEPENDENCIES" = "x"; then
|
|
|
|
+ RUST_DEPENDENCIES="$srcdir/src/ext/rust/"
|
|
|
|
+ NEED_MOD=1
|
|
|
|
+ fi
|
|
|
|
+ if test ! -d "$RUST_DEPENDENCIES"; then
|
|
|
|
+ AC_MSG_ERROR([Rust dependency directory $RUST_DEPENDENCIES does not exist. Specify a dependency directory using the RUST_DEPENDENCIES variable or allow cargo to fetch crates using --enable-cargo-online-mode.])
|
|
|
|
+ fi
|
|
|
|
+ for dep in $rust_crates; do
|
|
|
|
+ if test ! -d "$RUST_DEPENDENCIES"/"$dep"; then
|
|
|
|
+ AC_MSG_ERROR([Failure to find rust dependency $RUST_DEPENDENCIES/$dep. Specify a dependency directory using the RUST_DEPENDENCIES variable or allow cargo to fetch crates using --enable-cargo-online-mode.])
|
|
|
|
+ fi
|
|
|
|
+ done
|
|
|
|
+ if test "x$NEED_MOD" = "x1"; then
|
|
|
|
+ dnl When looking for dependencies from cargo, pick right directory
|
|
|
|
+ RUST_DEPENDENCIES="../../src/ext/rust"
|
|
|
|
+ fi
|
|
|
|
+ fi
|
|
|
|
+
|
|
|
|
+ dnl For now both MSVC and MinGW rust libraries will output static libs with
|
|
|
|
+ dnl the MSVC naming convention.
|
|
|
|
+ if test "$bwin32" = "true"; then
|
|
|
|
+ TOR_RUST_UTIL_STATIC_NAME=tor_util.lib
|
|
|
|
+ else
|
|
|
|
+ TOR_RUST_UTIL_STATIC_NAME=libtor_util.a
|
|
|
|
+ fi
|
|
|
|
+
|
|
|
|
+ AC_SUBST(TOR_RUST_UTIL_STATIC_NAME)
|
|
|
|
+ AC_SUBST(CARGO_ONLINE)
|
|
|
|
+ AC_SUBST(RUST_DL)
|
|
|
|
+
|
|
|
|
+ dnl Let's check the rustc version, too
|
|
|
|
+ AC_MSG_CHECKING([rust version])
|
|
|
|
+ RUSTC_VERSION_MAJOR=`$RUSTC --version | cut -d ' ' -f 2 | cut -d '.' -f 1`
|
|
|
|
+ RUSTC_VERSION_MINOR=`$RUSTC --version | cut -d ' ' -f 2 | cut -d '.' -f 2`
|
|
|
|
+ if test "x$RUSTC_VERSION_MAJOR" = "x" -o "x$RUSTC_VERSION_MINOR" = "x"; then
|
|
|
|
+ AC_MSG_ERROR([rustc version couldn't be identified])
|
|
|
|
+ fi
|
|
|
|
+ if test "$RUSTC_VERSION_MAJOR" -lt 2 -a "$RUSTC_VERSION_MINOR" -lt 14; then
|
|
|
|
+ AC_MSG_ERROR([rustc must be at least version 1.14])
|
|
|
|
+ fi
|
|
|
|
+fi
|
|
|
|
+
|
|
AC_SEARCH_LIBS(socket, [socket network])
|
|
AC_SEARCH_LIBS(socket, [socket network])
|
|
AC_SEARCH_LIBS(gethostbyname, [nsl])
|
|
AC_SEARCH_LIBS(gethostbyname, [nsl])
|
|
AC_SEARCH_LIBS(dlopen, [dl])
|
|
AC_SEARCH_LIBS(dlopen, [dl])
|
|
@@ -574,13 +583,16 @@ if test "$bwin32" = "true"; then
|
|
# Some of the cargo-cults recommend -lwsock32 as well, but I don't
|
|
# Some of the cargo-cults recommend -lwsock32 as well, but I don't
|
|
# think it's actually necessary.
|
|
# think it's actually necessary.
|
|
TOR_LIB_GDI=-lgdi32
|
|
TOR_LIB_GDI=-lgdi32
|
|
|
|
+ TOR_LIB_USERENV=-luserenv
|
|
else
|
|
else
|
|
TOR_LIB_WS32=
|
|
TOR_LIB_WS32=
|
|
TOR_LIB_GDI=
|
|
TOR_LIB_GDI=
|
|
|
|
+ TOR_LIB_USERENV=
|
|
fi
|
|
fi
|
|
AC_SUBST(TOR_LIB_WS32)
|
|
AC_SUBST(TOR_LIB_WS32)
|
|
AC_SUBST(TOR_LIB_GDI)
|
|
AC_SUBST(TOR_LIB_GDI)
|
|
AC_SUBST(TOR_LIB_IPHLPAPI)
|
|
AC_SUBST(TOR_LIB_IPHLPAPI)
|
|
|
|
+AC_SUBST(TOR_LIB_USERENV)
|
|
|
|
|
|
tor_libevent_pkg_redhat="libevent"
|
|
tor_libevent_pkg_redhat="libevent"
|
|
tor_libevent_pkg_debian="libevent-dev"
|
|
tor_libevent_pkg_debian="libevent-dev"
|
|
@@ -894,7 +906,7 @@ dnl since sometimes the linker will like an option but not be willing to
|
|
dnl use it with a build of a library.
|
|
dnl use it with a build of a library.
|
|
|
|
|
|
all_ldflags_for_check="$TOR_LDFLAGS_zlib $TOR_LDFLAGS_openssl $TOR_LDFLAGS_libevent"
|
|
all_ldflags_for_check="$TOR_LDFLAGS_zlib $TOR_LDFLAGS_openssl $TOR_LDFLAGS_libevent"
|
|
-all_libs_for_check="$TOR_ZLIB_LIBS $TOR_LIB_MATH $TOR_LIBEVENT_LIBS $TOR_OPENSSL_LIBS $TOR_SYSTEMD_LIBS $TOR_LIB_WS32 $TOR_LIB_GDI $TOR_CAP_LIBS"
|
|
+all_libs_for_check="$TOR_ZLIB_LIBS $TOR_LIB_MATH $TOR_LIBEVENT_LIBS $TOR_OPENSSL_LIBS $TOR_SYSTEMD_LIBS $TOR_LIB_WS32 $TOR_LIB_GDI $TOR_LIB_USERENV $TOR_CAP_LIBS"
|
|
|
|
|
|
CFLAGS_FTRAPV=
|
|
CFLAGS_FTRAPV=
|
|
CFLAGS_FWRAPV=
|
|
CFLAGS_FWRAPV=
|