Repositories / ocaml-git.git
scripts/build-vendored-libgit2.sh
Clone (read-only): git clone http://git.guha-anderson.com/git/ocaml-git.git
#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
LIBGIT2_SRC="${ROOT}/vendor/libgit2"
BUILD_DIR="${ROOT}/vendor/libgit2-build"
INSTALL_DIR="${ROOT}/vendor/libgit2-install"
if [[ ! -f "${LIBGIT2_SRC}/CMakeLists.txt" ]]; then
echo "Missing ${LIBGIT2_SRC}. Initialize submodules: git submodule update --init --recursive" >&2
exit 1
fi
JOBS="${LIBGIT2_BUILD_JOBS:-}"
if [[ -z "${JOBS}" && -n "${OPAMJOBS:-}" ]]; then
JOBS="${OPAMJOBS}"
fi
if [[ -z "${JOBS}" ]]; then
JOBS="$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo 4)"
fi
MARKER="${BUILD_DIR}/.ocaml_git_root"
if [[ -f "${BUILD_DIR}/CMakeCache.txt" ]]; then
if [[ ! -f "${MARKER}" ]] || [[ "$(<"${MARKER}")" != "${ROOT}" ]]; then
rm -rf "${BUILD_DIR}"
fi
fi
cmake -S "${LIBGIT2_SRC}" -B "${BUILD_DIR}" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_TESTS=OFF \
-DBUILD_CLI=OFF \
-DBUILD_EXAMPLES=OFF \
-DUSE_HTTPS=OFF \
-DUSE_SSH=OFF \
-DUSE_GSSAPI=OFF \
-DUSE_NTLMCLIENT=OFF \
-DUSE_BUNDLED_ZLIB=ON \
-DUSE_HTTP_PARSER=builtin \
-DREGEX_BACKEND=builtin \
-DUSE_ICONV=OFF \
-DUSE_SHA1=CollisionDetection \
-DUSE_SHA256=Builtin
cmake --build "${BUILD_DIR}" --parallel "${JOBS}"
rm -rf "${INSTALL_DIR}"
cmake --install "${BUILD_DIR}"
printf '%s\n' "${ROOT}" > "${MARKER}"