blob: b36593e4e6c23548fdcbd8c3eea327a7e96d0a48 [file] [log] [blame]
Ilya Shipitsin054a5b82019-05-03 14:31:20 +05001#!/bin/sh
2set -eux
3
4download_openssl () {
5 if [ ! -f "download-cache/openssl-${OPENSSL_VERSION}.tar.gz" ]; then
Ilya Shipitsin6e18f922020-04-07 23:35:49 +05006
7#
8# OpenSSL has different links for latest and previous releases
9# since we want to download several versions, let us try to treat
10# current version as latest, if it fails, follow with previous
11#
12
13 wget -P download-cache/ \
14 "https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz" || \
Ilya Shipitsin054a5b82019-05-03 14:31:20 +050015 wget -P download-cache/ \
Ilya Shipitsin6e18f922020-04-07 23:35:49 +050016 "https://www.openssl.org/source/old/${OPENSSL_VERSION%[a-z]}/openssl-${OPENSSL_VERSION}.tar.gz"
Ilya Shipitsin054a5b82019-05-03 14:31:20 +050017 fi
18}
19
20build_openssl_linux () {
21 (
22 cd "openssl-${OPENSSL_VERSION}/"
23 ./config shared --prefix="${HOME}/opt" --openssldir="${HOME}/opt" -DPURIFY
Willy Tarreau3be61342021-06-10 07:52:23 +020024 make -j$(nproc) all
25 make install_sw
Ilya Shipitsin054a5b82019-05-03 14:31:20 +050026 )
27}
28
29build_openssl_osx () {
30 (
31 cd "openssl-${OPENSSL_VERSION}/"
32 ./Configure darwin64-x86_64-cc shared \
33 --prefix="${HOME}/opt" --openssldir="${HOME}/opt" -DPURIFY
34 make depend all install_sw
35 )
36}
37
38build_openssl () {
39 if [ "$(cat ${HOME}/opt/.openssl-version)" != "${OPENSSL_VERSION}" ]; then
40 tar zxf "download-cache/openssl-${OPENSSL_VERSION}.tar.gz"
Ilya Shipitsin47e09dd2020-02-11 14:36:23 +050041 case `uname` in
42 'Darwin')
43 build_openssl_osx
44 ;;
45 'Linux')
46 build_openssl_linux
47 ;;
48 esac
Ilya Shipitsin054a5b82019-05-03 14:31:20 +050049 echo "${OPENSSL_VERSION}" > "${HOME}/opt/.openssl-version"
50 fi
51}
52
53download_libressl () {
54 if [ ! -f "download-cache/libressl-${LIBRESSL_VERSION}.tar.gz" ]; then
55 wget -P download-cache/ \
56 "https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-${LIBRESSL_VERSION}.tar.gz"
57 fi
58}
59
Ilya Shipitsin054a5b82019-05-03 14:31:20 +050060build_libressl () {
61 if [ "$(cat ${HOME}/opt/.libressl-version)" != "${LIBRESSL_VERSION}" ]; then
62 tar zxf "download-cache/libressl-${LIBRESSL_VERSION}.tar.gz"
63 (
64 cd "libressl-${LIBRESSL_VERSION}/"
65 ./configure --prefix="${HOME}/opt"
66 make all install
67 )
68 echo "${LIBRESSL_VERSION}" > "${HOME}/opt/.libressl-version"
69 fi
70}
71
Ilya Shipitsina088d3d2019-06-05 02:16:51 +050072download_boringssl () {
73 if [ ! -d "download-cache/boringssl" ]; then
74 git clone --depth=1 https://boringssl.googlesource.com/boringssl download-cache/boringssl
75 else
76 (
77 cd download-cache/boringssl
78 git pull
79 )
80 fi
81}
82
Ilya Shipitsin054a5b82019-05-03 14:31:20 +050083if [ ! -z ${LIBRESSL_VERSION+x} ]; then
84 download_libressl
85 build_libressl
86fi
87
88if [ ! -z ${OPENSSL_VERSION+x} ]; then
89 download_openssl
90 build_openssl
91fi
92
Ilya Shipitsin35d20af2019-05-09 01:15:59 +050093if [ ! -z ${BORINGSSL+x} ]; then
94 (
Ilya Shipitsin8abf0262019-09-16 16:13:10 +050095
96 # travis-ci comes with go-1.11, while boringssl requires go-1.13
97 eval "$(curl -sL https://raw.githubusercontent.com/travis-ci/gimme/master/gimme | GIMME_GO_VERSION=1.13 bash)"
98
Ilya Shipitsina088d3d2019-06-05 02:16:51 +050099 download_boringssl
100 cd download-cache/boringssl
101 if [ -d build ]; then rm -rf build; fi
Ilya Shipitsin35d20af2019-05-09 01:15:59 +0500102 mkdir build
103 cd build
Ilya Shipitsinaaa34ea2020-06-21 16:39:30 +0500104 cmake -GNinja -DCMAKE_BUILD_TYPE=release -DBUILD_SHARED_LIBS=1 ..
105 ninja
Ilya Shipitsin35d20af2019-05-09 01:15:59 +0500106
Ilya Shipitsin6b736b42020-10-11 23:42:51 +0500107 rm -rf ${HOME}/opt/lib || exit 0
108 rm -rf ${HOME}/opt/include || exit 0
Ilya Shipitsin35d20af2019-05-09 01:15:59 +0500109
Ilya Shipitsin6b736b42020-10-11 23:42:51 +0500110 mkdir -p ${HOME}/opt/lib
111 cp crypto/libcrypto.so ssl/libssl.so ${HOME}/opt/lib
Ilya Shipitsin35d20af2019-05-09 01:15:59 +0500112
Ilya Shipitsin6b736b42020-10-11 23:42:51 +0500113 mkdir -p ${HOME}/opt/include
114 cp -r ../include/* ${HOME}/opt/include
Ilya Shipitsin35d20af2019-05-09 01:15:59 +0500115 )
116fi
Ilya Shipitsin054a5b82019-05-03 14:31:20 +0500117