mirror of
https://github.com/feather-wallet/feather.git
synced 2024-11-17 09:47:36 +00:00
133700160a
Co-Authored-By: tobtoht <thotbot@protonmail.com>
126 lines
3.2 KiB
Bash
Executable file
126 lines
3.2 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# this file is used by feather's CMake
|
|
# arguments: ./build.tor $TAG $ROOT_FEATHER_DIR
|
|
|
|
set -ex
|
|
|
|
ERR_WIN="This script does not work on Windows"
|
|
if [[ "$OSTYPE" == "msys" ]]; then
|
|
echo "$ERR_WIN"
|
|
exit 1
|
|
elif [[ "$OSTYPE" == "win32" ]]; then
|
|
echo "$ERR_WIN"
|
|
exit 1
|
|
fi
|
|
|
|
TOR_TAG="$1"
|
|
ROOT_DIR="$2"
|
|
STATIC="$3"
|
|
TOR_DIR="$ROOT_DIR/contrib/tor"
|
|
TORSOCKS_DIR="$ROOT_DIR/contrib/torsocks"
|
|
TARGET_DIR="$ROOT_DIR/src/tor"
|
|
|
|
CPU_CORE_COUNT="$(nproc)"
|
|
|
|
#
|
|
### tor
|
|
#
|
|
|
|
pushd "$TOR_DIR"
|
|
|
|
rm -rf "$TOR_DIR/build"
|
|
mkdir -p "$TOR_DIR/build"
|
|
|
|
# configure
|
|
git -C "$TOR_DIR" fetch
|
|
git -C "$TOR_DIR" checkout tor-0.4.3.5
|
|
bash "$TOR_DIR/autogen.sh"
|
|
|
|
if [[ "$STATIC" = "ON" ]]; then
|
|
# static assumes that openssl has been compiled with:
|
|
# CFLAGS='-fPIC' CXXFLAGS='-fPIC' ./config no-asm no-shared no-zlib-dynamic --prefix=/usr/local/openssl --openssldir=/usr/local/openssl
|
|
# and libevent with:
|
|
# cmake -DEVENT_LIBRARY_STATIC=ON -DOPENSSL_ROOT_DIR=/usr/local/openssl -DCMAKE_INSTALL_PREFIX=/usr/local/libevent
|
|
# and zlib with:
|
|
# CFLAGS='-fPIC' CXXFLAGS='-fPIC' ./configure --static --prefix=/usr/local/zlib
|
|
|
|
LDFLAGS="-L/usr/local/openssl/lib/" LIBS="-lssl -lcrypto -lpthread -ldl" CPPFLAGS="-I/usr/local/openssl/include/" ./configure \
|
|
--enable-static-zlib \
|
|
--enable-static-openssl \
|
|
--enable-static-libevent \
|
|
--disable-system-torrc \
|
|
--with-libevent-dir=/usr/local/libevent \
|
|
--with-openssl-dir=/usr/local/openssl/ \
|
|
--with-zlib-dir=/usr/local/zlib \
|
|
--disable-system-torrc \
|
|
--disable-tool-name-check \
|
|
--disable-systemd \
|
|
--disable-lzma \
|
|
--disable-unittests \
|
|
--disable-zstd \
|
|
--disable-seccomp \
|
|
--disable-asciidoc \
|
|
--disable-manpage \
|
|
--disable-html-manual \
|
|
--disable-system-torrc \
|
|
--prefix="$TOR_DIR/build"
|
|
else
|
|
bash "$TOR_DIR/configure" \
|
|
--disable-tool-name-check \
|
|
--disable-systemd \
|
|
--disable-lzma \
|
|
--disable-unittests \
|
|
--disable-zstd \
|
|
--disable-asciidoc \
|
|
--disable-manpage \
|
|
--disable-html-manual \
|
|
--prefix="$TOR_DIR/build"
|
|
fi
|
|
|
|
# build
|
|
make -j "$CPU_CORE_COUNT"
|
|
make install -j "$CPU_CORE_COUNT"
|
|
|
|
# copy to lib/tor
|
|
cp "$TOR_DIR/build/bin/tor" "$TARGET_DIR"
|
|
cp "$TOR_DIR/build/etc/tor/torrc.sample"* "$TARGET_DIR"
|
|
|
|
#
|
|
### torsocks
|
|
#
|
|
|
|
pushd "$TORSOCKS_DIR"
|
|
mkdir -p "$TORSOCKS_DIR/build"
|
|
|
|
# configure
|
|
bash "$TORSOCKS_DIR/autogen.sh"
|
|
bash "$TORSOCKS_DIR/configure" --prefix="$TORSOCKS_DIR/build"
|
|
|
|
# build
|
|
make -j "$CPU_CORE_COUNT"
|
|
make install -j "$CPU_CORE_COUNT"
|
|
|
|
# copy to lib/torsocks
|
|
cp "$TORSOCKS_DIR/build/lib/torsocks/"* "$TARGET_DIR"
|
|
cp "$TORSOCKS_DIR/build/bin/"* "$TARGET_DIR"
|
|
cp "$TORSOCKS_DIR/build/etc/tor/"* "$TARGET_DIR"
|
|
|
|
#
|
|
### verify installation
|
|
#
|
|
|
|
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
|
for fn in "$TARGET_DIR/libtorsocks.so" "$TARGET_DIR/tor"; do
|
|
if [[ ! -f "$fn" ]]; then
|
|
echo "[*] Failed to install tor or torsocks: no such file $fn"
|
|
exit 1
|
|
fi; done
|
|
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
|
for fn in "$TARGET_DIR/libtorsocks.dylib" "$TARGET_DIR/tor"; do
|
|
if [[ ! -f "$fn" ]]; then
|
|
echo "[*] Failed to install tor or torsocks: no such file $fn"
|
|
exit 1
|
|
fi; done
|
|
fi
|
|
|
|
echo "[*] Compiled tor/torsocks into $TARGET_DIR"
|