blob: 1163d933adfe055abc50b1748a5e364e6c8c4d8c [file] [log] [blame]
#!/usr/bin/env bash
# Copyright 2017 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.
set -o errexit -o nounset
readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
readonly GIT_DIR="$(dirname "${SCRIPT_DIR}")"
readonly PKG_PATH="fuchsia.googlesource.com/jiri"
# These are embedded directly into jiri itself and are available through `jiri version`.
readonly GIT_COMMIT=$(git --git-dir="${GIT_DIR}/.git" --work-tree="${GIT_DIR}" rev-parse HEAD)
readonly BUILD_TIME=$(python -c "import datetime; print(datetime.datetime.utcnow().isoformat())")
readonly CMAKE_PROGRAM=${CMAKE_PROGRAM:-cmake}
readonly NINJA_PROGRAM=${NINJA_PROGRAM:-ninja}
if [[ -n "${GO_PROGRAM:-}" ]]; then
readonly CMAKE_EXTRA_ARGS="-DGO_EXECUTABLE=${GO_PROGRAM}"
export GOROOT="$(dirname "$(dirname ${GO_PROGRAM})")"
fi
ZLIB_SRC="${GIT_DIR}/vendor/github.com/libgit2/git2go/vendor/zlib"
ZLIB_BUILD="${ZLIB_SRC}/build"
mkdir -p -- "${ZLIB_BUILD}"
pushd "${ZLIB_BUILD}"
[[ -f "${ZLIB_BUILD}/build.ninja" ]] || ${CMAKE_PROGRAM} -GNinja \
-DCMAKE_MAKE_PROGRAM=${NINJA_PROGRAM} \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_FLAGS=-fPIC \
..
${NINJA_PROGRAM} zlibstatic
popd
BORINGSSL_SRC="${GIT_DIR}/vendor/github.com/libgit2/git2go/vendor/boringssl"
BORINGSSL_BUILD="${BORINGSSL_SRC}/build"
mkdir -p -- "${BORINGSSL_BUILD}"
pushd "${BORINGSSL_BUILD}"
[[ -f "${BORINGSSL_BUILD}/build.ninja" ]] || ${CMAKE_PROGRAM} -GNinja \
-DCMAKE_MAKE_PROGRAM=${NINJA_PROGRAM} \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_FLAGS=-fPIC \
${CMAKE_EXTRA_ARGS:-} \
..
${NINJA_PROGRAM}
popd
LIBSSH2_SRC="${GIT_DIR}/vendor/github.com/libgit2/git2go/vendor/libssh2"
LIBSSH2_BUILD="${LIBSSH2_SRC}/build"
mkdir -p -- "${LIBSSH2_BUILD}"
pushd "${LIBSSH2_BUILD}"
[[ -f "${LIBSSH2_BUILD}/build.ninja" ]] || ${CMAKE_PROGRAM} -GNinja \
-DCMAKE_MAKE_PROGRAM=${NINJA_PROGRAM} \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DENABLE_ZLIB_COMPRESSION=ON \
-DBUILD_EXAMPLES=OFF \
-DBUILD_TESTING=OFF \
-DCRYPTO_BACKEND=OpenSSL \
-DOPENSSL_INCLUDE_DIR="${BORINGSSL_SRC}/include" \
-DOPENSSL_SSL_LIBRARY="${BORINGSSL_BUILD}/ssl/libssl.a" \
-DOPENSSL_CRYPTO_LIBRARY="${BORINGSSL_BUILD}/crypto/libcrypto.a" \
..
${NINJA_PROGRAM}
popd
CURL_SRC="${GIT_DIR}/vendor/github.com/libgit2/git2go/vendor/curl"
CURL_BUILD="${CURL_SRC}/build"
mkdir -p -- "${CURL_BUILD}"
pushd "${CURL_BUILD}"
[[ -f "${CURL_BUILD}/build.ninja" ]] || ${CMAKE_PROGRAM} -GNinja \
-DCMAKE_MAKE_PROGRAM=${NINJA_PROGRAM} \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_CURL_EXE=OFF \
-DBUILD_TESTING=OFF \
-DCURL_STATICLIB=ON \
-DHTTP_ONLY=ON \
-DCMAKE_USE_OPENSSL=ON \
-DCMAKE_USE_LIBSSH2=OFF \
-DENABLE_UNIX_SOCKETS=OFF \
-DOPENSSL_INCLUDE_DIR="${BORINGSSL_SRC}/include" \
-DOPENSSL_SSL_LIBRARY="${BORINGSSL_BUILD}/ssl/libssl.a" \
-DOPENSSL_CRYPTO_LIBRARY="${BORINGSSL_BUILD}/crypto/libcrypto.a" \
-DHAVE_OPENSSL_ENGINE_H=OFF \
..
${NINJA_PROGRAM}
popd
LIBGIT2_SRC="${GIT_DIR}/vendor/github.com/libgit2/git2go/vendor/libgit2"
LIBGIT2_BUILD="${LIBGIT2_SRC}/build"
mkdir -p "${LIBGIT2_BUILD}"
pushd "${LIBGIT2_BUILD}"
[[ -f "${LIBGIT2_BUILD}/build.ninja" ]] || ${CMAKE_PROGRAM} -GNinja \
-DCMAKE_MAKE_PROGRAM=${NINJA_PROGRAM} \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_FLAGS=-fPIC \
-DTHREADSAFE=ON \
-DBUILD_CLAR=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DOPENSSL_INCLUDE_DIR="${BORINGSSL_SRC}/include" \
-DOPENSSL_SSL_LIBRARY="${BORINGSSL_BUILD}/ssl/libssl.a" \
-DOPENSSL_CRYPTO_LIBRARY="${BORINGSSL_BUILD}/crypto/libcrypto.a" \
-DCURL_INCLUDE_DIRS="${CURL_BUILD}/include/curl;${CURL_SRC}/include" \
-DCURL_LIBRARIES="${CURL_BUILD}/libcurl.a" \
-DZLIB_INCLUDE_DIR="${ZLIB_SRC};${ZLIB_BUILD}" \
-DZLIB_LIBRARY_RELEASE="${ZLIB_BUILD}/libz.a" \
..
${NINJA_PROGRAM}
popd
# Build Jiri
export GOPATH="$(cd ${GIT_DIR}/../../.. && pwd)"
${GO_PROGRAM:-go} build -ldflags "-X \"${PKG_PATH}/version.GitCommit=${GIT_COMMIT}\" -X \"${PKG_PATH}/version.BuildTime=${BUILD_TIME}\"" -a -o "jiri" "${PKG_PATH}/cmd/jiri"