2019-12-28 01:56:05 -05:00
|
|
|
#!/bin/bash
|
2020-03-23 09:44:29 -04:00
|
|
|
#***************************************************************************
|
|
|
|
# _ _ ____ _
|
|
|
|
# Project ___| | | | _ \| |
|
|
|
|
# / __| | | | |_) | |
|
|
|
|
# | (__| |_| | _ <| |___
|
|
|
|
# \___|\___/|_| \_\_____|
|
|
|
|
#
|
2021-01-05 18:50:49 -05:00
|
|
|
# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
|
2020-03-23 09:44:29 -04:00
|
|
|
#
|
|
|
|
# This software is licensed as described in the file COPYING, which
|
|
|
|
# you should have received as part of this distribution. The terms
|
2020-11-04 08:02:01 -05:00
|
|
|
# are also available at https://curl.se/docs/copyright.html.
|
2020-03-23 09:44:29 -04:00
|
|
|
#
|
|
|
|
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
|
|
|
# copies of the Software, and permit persons to whom the Software is
|
|
|
|
# furnished to do so, under the terms of the COPYING file.
|
|
|
|
#
|
|
|
|
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
|
|
|
# KIND, either express or implied.
|
|
|
|
#
|
|
|
|
###########################################################################
|
2019-12-28 01:56:05 -05:00
|
|
|
set -eo pipefail
|
|
|
|
|
|
|
|
./buildconf
|
|
|
|
|
|
|
|
if [ "$NGTCP2" = yes ]; then
|
2020-03-29 09:13:04 -04:00
|
|
|
if [ "$TRAVIS_OS_NAME" = linux -a "$GNUTLS" ]; then
|
|
|
|
cd $HOME
|
|
|
|
git clone --depth 1 https://gitlab.com/gnutls/nettle.git
|
|
|
|
cd nettle
|
|
|
|
./.bootstrap
|
|
|
|
./configure LDFLAGS="-Wl,-rpath,$HOME/ngbuild/lib" --disable-documentation --prefix=$HOME/ngbuild
|
|
|
|
make
|
|
|
|
make install
|
|
|
|
|
|
|
|
cd $HOME
|
2020-11-20 00:10:49 -05:00
|
|
|
git clone --depth 1 https://gitlab.com/gnutls/gnutls.git pgtls
|
2020-03-29 09:13:04 -04:00
|
|
|
cd pgtls
|
|
|
|
./bootstrap
|
|
|
|
./configure PKG_CONFIG_PATH=$HOME/ngbuild/lib/pkgconfig LDFLAGS="-Wl,-rpath,$HOME/ngbuild/lib" --with-included-libtasn1 --with-included-unistring --disable-guile --disable-doc --prefix=$HOME/ngbuild
|
|
|
|
make
|
|
|
|
make install
|
|
|
|
else
|
|
|
|
cd $HOME
|
2021-03-11 10:49:49 -05:00
|
|
|
git clone --depth 1 -b OpenSSL_1_1_1j+quic https://github.com/quictls/openssl possl
|
2020-03-29 09:13:04 -04:00
|
|
|
cd possl
|
|
|
|
./config enable-tls1_3 --prefix=$HOME/ngbuild
|
|
|
|
make
|
|
|
|
make install_sw
|
|
|
|
fi
|
2019-12-28 01:56:05 -05:00
|
|
|
|
|
|
|
cd $HOME
|
|
|
|
git clone --depth 1 https://github.com/ngtcp2/nghttp3
|
|
|
|
cd nghttp3
|
|
|
|
autoreconf -i
|
|
|
|
./configure --prefix=$HOME/ngbuild --enable-lib-only
|
|
|
|
make
|
|
|
|
make install
|
|
|
|
|
|
|
|
cd $HOME
|
|
|
|
git clone --depth 1 https://github.com/ngtcp2/ngtcp2
|
|
|
|
cd ngtcp2
|
|
|
|
autoreconf -i
|
2021-01-21 07:32:33 -05:00
|
|
|
if test -n "$GNUTLS"; then
|
|
|
|
WITHGNUTLS="--with-gnutls"
|
|
|
|
fi
|
|
|
|
./configure PKG_CONFIG_PATH=$HOME/ngbuild/lib/pkgconfig LDFLAGS="-Wl,-rpath,$HOME/ngbuild/lib" --prefix=$HOME/ngbuild --enable-lib-only $WITHGNUTLS
|
2019-12-28 01:56:05 -05:00
|
|
|
make
|
|
|
|
make install
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$TRAVIS_OS_NAME" = linux -a "$BORINGSSL" ]; then
|
|
|
|
cd $HOME
|
|
|
|
git clone --depth=1 https://boringssl.googlesource.com/boringssl
|
|
|
|
cd boringssl
|
2020-10-14 06:19:35 -04:00
|
|
|
CXX="g++" CC="gcc" cmake -H. -Bbuild -GNinja -DCMAKE_BUILD_TYPE=release -DBUILD_SHARED_LIBS=1
|
|
|
|
cmake --build build
|
2019-12-28 01:56:05 -05:00
|
|
|
mkdir lib
|
2020-10-14 06:19:35 -04:00
|
|
|
cp ./build/crypto/libcrypto.so ./lib/
|
|
|
|
cp ./build/ssl/libssl.so ./lib/
|
|
|
|
echo "BoringSSL lib dir: "`pwd`"/lib"
|
|
|
|
cmake --build build --target clean
|
|
|
|
rm -f build/CMakeCache.txt
|
|
|
|
CXX="g++" CC="gcc" cmake -H. -Bbuild -GNinja -DCMAKE_POSITION_INDEPENDENT_CODE=on
|
|
|
|
cmake --build build
|
2019-12-28 01:56:05 -05:00
|
|
|
export LIBS=-lpthread
|
|
|
|
fi
|
|
|
|
|
2020-09-02 09:48:18 -04:00
|
|
|
if [ "$TRAVIS_OS_NAME" = linux -a "$OPENSSL3" ]; then
|
|
|
|
cd $HOME
|
|
|
|
git clone --depth=1 https://github.com/openssl/openssl
|
|
|
|
cd openssl
|
|
|
|
./config enable-tls1_3 --prefix=$HOME/openssl3
|
|
|
|
make
|
|
|
|
make install_sw
|
|
|
|
fi
|
|
|
|
|
2020-09-07 05:28:13 -04:00
|
|
|
if [ "$TRAVIS_OS_NAME" = linux -a "$LIBRESSL" ]; then
|
|
|
|
cd $HOME
|
2020-09-15 12:56:14 -04:00
|
|
|
git clone --depth=1 -b v3.1.4 https://github.com/libressl-portable/portable.git libressl-git
|
2020-09-07 05:28:13 -04:00
|
|
|
cd libressl-git
|
|
|
|
./autogen.sh
|
|
|
|
./configure --prefix=$HOME/libressl
|
|
|
|
make
|
|
|
|
make install
|
|
|
|
fi
|
|
|
|
|
2020-12-14 08:10:33 -05:00
|
|
|
if [ "$TRAVIS_OS_NAME" = linux -a "$HYPER" ]; then
|
|
|
|
cd $HOME
|
2021-01-10 16:59:19 -05:00
|
|
|
git clone --depth=1 https://github.com/hyperium/hyper.git
|
2020-12-14 08:10:33 -05:00
|
|
|
curl https://sh.rustup.rs -sSf | sh -s -- -y
|
|
|
|
source $HOME/.cargo/env
|
|
|
|
cd $HOME/hyper
|
2021-01-05 18:50:49 -05:00
|
|
|
RUSTFLAGS="--cfg hyper_unstable_ffi" cargo build --features client,http1,http2,ffi
|
2020-12-14 08:10:33 -05:00
|
|
|
fi
|
|
|
|
|
2019-12-28 01:56:05 -05:00
|
|
|
if [ "$TRAVIS_OS_NAME" = linux -a "$QUICHE" ]; then
|
|
|
|
cd $HOME
|
2020-05-10 10:53:00 -04:00
|
|
|
git clone --depth=1 --recursive https://github.com/cloudflare/quiche.git
|
2019-12-28 01:56:05 -05:00
|
|
|
curl https://sh.rustup.rs -sSf | sh -s -- -y
|
|
|
|
source $HOME/.cargo/env
|
|
|
|
cd $HOME/quiche
|
2021-02-01 08:13:12 -05:00
|
|
|
cargo build -v --release --features ffi,pkg-config-meta,qlog
|
2020-07-16 17:31:21 -04:00
|
|
|
mkdir -v deps/boringssl/src/lib
|
|
|
|
ln -vnf $(find target/release -name libcrypto.a -o -name libssl.a) deps/boringssl/src/lib/
|
2019-12-28 01:56:05 -05:00
|
|
|
fi
|
|
|
|
|
|
|
|
# Install common libraries.
|
|
|
|
# The library build directories are set to be cached by .travis.yml. If you are
|
|
|
|
# changing a build directory name below (eg a version change) then you must
|
|
|
|
# change it in .travis.yml `cache: directories:` as well.
|
|
|
|
if [ $TRAVIS_OS_NAME = linux ]; then
|
2020-04-27 02:38:52 -04:00
|
|
|
if [ ! -e $HOME/wolfssl-4.4.0-stable/Makefile ]; then
|
2019-12-28 01:56:05 -05:00
|
|
|
cd $HOME
|
2020-04-27 02:38:52 -04:00
|
|
|
curl -LO https://github.com/wolfSSL/wolfssl/archive/v4.4.0-stable.tar.gz
|
|
|
|
tar -xzf v4.4.0-stable.tar.gz
|
|
|
|
cd wolfssl-4.4.0-stable
|
2019-12-28 01:56:05 -05:00
|
|
|
./autogen.sh
|
|
|
|
./configure --enable-tls13 --enable-all
|
|
|
|
touch wolfssl/wolfcrypt/fips.h
|
|
|
|
make
|
|
|
|
fi
|
|
|
|
|
2020-04-27 02:38:52 -04:00
|
|
|
cd $HOME/wolfssl-4.4.0-stable
|
2019-12-28 01:56:05 -05:00
|
|
|
sudo make install
|
|
|
|
|
2020-07-31 13:50:23 -04:00
|
|
|
if [ "$MESALINK" = "yes" ]; then
|
|
|
|
if [ ! -e $HOME/mesalink-1.0.0/Makefile ]; then
|
|
|
|
cd $HOME
|
|
|
|
curl https://sh.rustup.rs -sSf | sh -s -- -y
|
|
|
|
source $HOME/.cargo/env
|
|
|
|
curl -LO https://github.com/mesalock-linux/mesalink/archive/v1.0.0.tar.gz
|
|
|
|
tar -xzf v1.0.0.tar.gz
|
|
|
|
cd mesalink-1.0.0
|
|
|
|
./autogen.sh
|
|
|
|
./configure --enable-tls13
|
|
|
|
make
|
|
|
|
fi
|
|
|
|
cd $HOME/mesalink-1.0.0
|
|
|
|
sudo make install
|
2019-12-28 01:56:05 -05:00
|
|
|
|
2020-07-31 13:50:23 -04:00
|
|
|
fi
|
2019-12-28 01:56:05 -05:00
|
|
|
|
|
|
|
if [ ! -e $HOME/nghttp2-1.39.2/Makefile ]; then
|
|
|
|
cd $HOME
|
|
|
|
curl -LO https://github.com/nghttp2/nghttp2/releases/download/v1.39.2/nghttp2-1.39.2.tar.gz
|
|
|
|
tar -xzf nghttp2-1.39.2.tar.gz
|
|
|
|
cd nghttp2-1.39.2
|
|
|
|
CXX="g++-8" CC="gcc-8" CFLAGS="" LDFLAGS="" LIBS="" ./configure --disable-threads --enable-app
|
|
|
|
make
|
|
|
|
fi
|
|
|
|
|
|
|
|
cd $HOME/nghttp2-1.39.2
|
|
|
|
sudo make install
|
|
|
|
fi
|