Skip to content
Permalink
Browse files
Still trying and failing to get linking to work while testing.
  • Loading branch information
isislovecruft committed Feb 27, 2018
1 parent 50c417b commit fad354aa8c10c20e1ec2f98effd5edf8e43c3a51
@@ -2196,6 +2196,7 @@ AC_CONFIG_FILES([
src/config/torrc.sample
src/config/torrc.minimal
src/rust/.cargo/config
src/rust/external/.cargo/config
scripts/maint/checkOptionDocs.pl
scripts/maint/updateVersions.pl
])
@@ -1,4 +1,4 @@
all: libor.lib libor-crypto.lib libor-event.lib
all: libor.lib libor-crypto.lib libor-crypto-digest.lib libor-event.lib

CFLAGS = /O2 /MT /I ..\win32 /I ..\..\..\build-alpha\include /I ..\common \
/I ..\ext
@@ -10,6 +10,8 @@ LIBOR_OBJECTS = address.obj backtrace.obj compat.obj container.obj di_ops.obj \
LIBOR_CRYPTO_OBJECTS = aes.obj crypto.obj crypto_format.obj compress.obj compress_zlib.obj \
tortls.obj crypto_curve25519.obj curve25519-donna.obj

LIBOR_CRYPTO_DIGEST_OBJECTS = crypto_digest.obj

LIBOR_EVENT_OBJECTS = compat_libevent.obj

curve25519-donna.obj: ..\ext\curve25519_donna\curve25519-donna.c
@@ -21,6 +23,9 @@ libor.lib: $(LIBOR_OBJECTS)
libor-crypto.lib: $(LIBOR_CRYPTO_OBJECTS)
lib $(LIBOR_CRYPTO_OBJECTS) /out:libor-crypto.lib

libor-crypto-digest.lib: $(LIBOR_CRYPTO_DIGEST_OBJECTS)
lib $(LIBOR_CRYPTO_DIGEST_OBJECTS) /out:libor-crypto-digest.lib

libor-event.lib: $(LIBOR_EVENT_OBJECTS)
lib $(LIBOR_EVENT_OBJECTS) /out:libor-event.lib

@@ -3,13 +3,15 @@ noinst_LIBRARIES += \
src/common/libor.a \
src/common/libor-ctime.a \
src/common/libor-crypto.a \
src/common/libor-crypto-digest.a \
src/common/libor-event.a

if UNITTESTS_ENABLED
noinst_LIBRARIES += \
src/common/libor-testing.a \
src/common/libor-ctime-testing.a \
src/common/libor-crypto-testing.a \
src/common/libor-crypto-digest-testing.a \
src/common/libor-event-testing.a
endif

@@ -113,7 +115,6 @@ LIBOR_CRYPTO_A_SRC = \
src/common/compress_zlib.c \
src/common/compress_zstd.c \
src/common/crypto.c \
src/common/crypto_digest.c \
src/common/crypto_rsa.c \
src/common/crypto_openssl_mgt.c \
src/common/crypto_pwbox.c \
@@ -123,22 +124,28 @@ LIBOR_CRYPTO_A_SRC = \
src/common/crypto_curve25519.c \
src/common/crypto_ed25519.c

LIBOR_CRYPTO_DIGEST_A_SRC = \
src/common/crypto_digest.c

LIBOR_EVENT_A_SRC = \
src/common/compat_libevent.c \
src/common/procmon.c \
src/common/timers.c \
src/ext/timeouts/timeout.c

src_common_libor_a_SOURCES = $(LIBOR_A_SRC)
src_common_libor_crypto_a_SOURCES = $(LIBOR_CRYPTO_A_SRC)
src_common_libor_crypto_a_SOURCES = $(LIBOR_CRYPTO_A_SRC) $(LIBOR_CRYPTO_DIGEST_A_SRC)
src_common_libor_crypto_digest_a_SOURCES = $(LIBOR_CRYPTO_DIGEST_A_SRC)
src_common_libor_event_a_SOURCES = $(LIBOR_EVENT_A_SRC)

src_common_libor_testing_a_SOURCES = $(LIBOR_A_SRC)
src_common_libor_crypto_testing_a_SOURCES = $(LIBOR_CRYPTO_A_SRC)
src_common_libor_crypto_testing_a_SOURCES = $(LIBOR_CRYPTO_A_SRC) $(LIBOR_CRYPTO_DIGEST_A_SRC)
src_common_libor_crypto_digest_testing_a_SOURCES = $(LIBOR_CRYPTO_DIGEST_A_SRC)
src_common_libor_event_testing_a_SOURCES = $(LIBOR_EVENT_A_SRC)

src_common_libor_testing_a_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_CPPFLAGS)
src_common_libor_crypto_testing_a_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_CPPFLAGS)
src_common_libor_crypto_digest_testing_a_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_CPPFLAGS)
src_common_libor_event_testing_a_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_CPPFLAGS)
src_common_libor_testing_a_CFLAGS = $(AM_CFLAGS) $(TEST_CFLAGS)
src_common_libor_crypto_testing_a_CFLAGS = $(AM_CFLAGS) $(TEST_CFLAGS)
@@ -0,0 +1,7 @@
# Additional linker instructions for finding local, non-installed libraries

[target.x86_64-unknown-linux-gnu.or-crypto-digest]
root = "@BUILDDIR@"
rustc-link-search = ["native=@BUILDDIR@/src/common/", "native=@BUILDDIR@/src/or/"]
rustc-link-lib = ["static=or-crypto-digest", "static=tor"]
rustc-flags = ["-L@BUILDDIR@/src/common/libor-crypto-digest.a"]
@@ -2,6 +2,8 @@
authors = ["The Tor Project"]
version = "0.0.1"
name = "external"
links = "or-crypto-digest"
build = "build.rs"

[dependencies]
libc = "0.2.22"
@@ -0,0 +1,9 @@
// Copyright (c) 2018, The Tor Project, Inc.
// Copyright (c) 2018, isis agora lovecruft
// See LICENSE for licensing information

fn main() {
// We don't do anything here, because the directives in src/rust/external/.cargo/config
// override what cargo directives would have gone here. See
// https://doc.rust-lang.org/cargo/reference/build-scripts.html for more information.
}
@@ -123,7 +123,7 @@ type smartlist_t = Stringlist;
///
/// These are kept private because they should be wrapped with Rust to make their usage safer.
#[allow(dead_code)]
#[link(name = "or-crypto")]
#[link(name = "or-crypto-digest", kind = "static")]
extern "C" {
fn crypto_digest(digest: *mut c_char, m: *const c_char, len: size_t) -> c_int;
fn crypto_digest256(digest: *mut c_char, m: *const c_char, len: size_t,
@@ -4,7 +4,6 @@
use libc::{c_char, c_int};
use std::ffi::CString;

#[link(name = "tor")]
extern "C" {
fn tor_version_as_new_as(
platform: *const c_char,
@@ -12,6 +12,7 @@ EXTRA_DIST +=\
src/rust/external/crypto_digest.rs \
src/rust/external/external.rs \
src/rust/external/lib.rs \
src/rust/external/.cargo/config.in \
src/rust/protover/Cargo.toml \
src/rust/protover/ffi.rs \
src/rust/protover/lib.rs \
@@ -2,12 +2,14 @@ EXTRA_DIST +=\
src/rust/tor_rust/Cargo.toml \
src/rust/tor_rust/lib.rs

EXTRA_CARGO_OPTIONS=
EXTRA_RUSTC_OPTIONS="-L $(abs_top_builddir)/src/common/libor-crypto-digest.a"
EXTRA_CARGO_OPTIONS=--verbose

src/rust/target/release/@TOR_RUST_STATIC_NAME@: FORCE
( cd "$(abs_top_builddir)/src/rust" ; \
CARGO_TARGET_DIR="$(abs_top_builddir)/src/rust/target" \
CARGO_HOME="$(abs_top_builddir)/src/rust" \
RUSTFLAGS=$(EXTRA_RUSTC_OPTIONS) \
$(CARGO) build --release $(EXTRA_CARGO_OPTIONS) \
$(CARGO_ONLINE) \
--manifest-path "$(abs_top_srcdir)/src/rust/tor_rust/Cargo.toml" )
@@ -16,6 +18,7 @@ distclean-rust:
( cd "$(abs_top_builddir)/src/rust" ; \
CARGO_TARGET_DIR="$(abs_top_builddir)/src/rust/target" \
CARGO_HOME="$(abs_top_builddir)/src/rust" \
RUSTFLAGS=$(EXTRA_RUSTC_OPTIONS) \
$(CARGO) clean $(EXTRA_CARGO_OPTIONS) \
$(CARGO_ONLINE) \
--manifest-path "$(abs_top_srcdir)/src/rust/tor_rust/Cargo.toml" )

0 comments on commit fad354a

Please sign in to comment.