summaryrefslogtreecommitdiffstats
path: root/ci/build.sh
blob: 80e7a61aecbbb18a3314c3ca595e027b9c84728e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#!/usr/bin/env bash
#
# Environment variables:
#
# SOURCE_DIR: Set to the directory of the libgit2 source (optional)
#     If not set, it will be derived relative to this script.

set -e

SOURCE_DIR=${SOURCE_DIR:-$( cd "$( dirname "${BASH_SOURCE[0]}" )" && dirname $( pwd ) )}
BUILD_DIR=$(pwd)
BUILD_PATH=${BUILD_PATH:=$PATH}
CMAKE=$(which cmake)
CMAKE_GENERATOR=${CMAKE_GENERATOR:-Unix Makefiles}

indent() { sed "s/^/    /"; }

cygfullpath() {
	result=$(echo "${1}" | tr \; \\n | while read -r element; do
		if [ "${last}" != "" ]; then echo -n ":"; fi
		echo -n $(cygpath "${element}")
		last="${element}"
	done)
	if [ "${result}" = "" ]; then exit 1; fi
        echo "${result}"
}

if [[ "$(uname -s)" == MINGW* ]]; then
	BUILD_PATH=$(cygfullpath "${BUILD_PATH}")
fi


echo "Source directory: ${SOURCE_DIR}"
echo "Build directory:  ${BUILD_DIR}"
echo ""

echo "Platform:"
uname -s | indent

if [ "$(uname -s)" = "Darwin" ]; then
	echo "macOS version:"
	sw_vers | indent
fi

if [ -f "/etc/debian_version" ]; then
	echo "Debian version:"
	(source /etc/lsb-release && echo "${DISTRIB_DESCRIPTION}") | indent
fi

CORES=$(getconf _NPROCESSORS_ONLN || true)
echo "Number of cores: ${CORES:-(Unknown)}"

echo "Kernel version:"
uname -a 2>&1 | indent

echo "CMake version:"
env PATH="${BUILD_PATH}" "${CMAKE}" --version | head -1 2>&1 | indent

if test -n "${CC}"; then
	echo "Compiler version:"
	"${CC}" --version 2>&1 | indent
fi
echo "Environment:"
if test -n "${CC}"; then
	echo "CC=${CC}" | indent
fi
if test -n "${CFLAGS}"; then
	echo "CFLAGS=${CFLAGS}" | indent
fi
echo ""

echo "##############################################################################"
echo "## Configuring build environment"
echo "##############################################################################"

echo "${CMAKE}" -DENABLE_WERROR=ON -DBUILD_EXAMPLES=ON -DBUILD_FUZZERS=ON -DUSE_STANDALONE_FUZZERS=ON -G \"${CMAKE_GENERATOR}\" ${CMAKE_OPTIONS} -S \"${SOURCE_DIR}\"
env PATH="${BUILD_PATH}" "${CMAKE}" -DENABLE_WERROR=ON -DBUILD_EXAMPLES=ON -DBUILD_FUZZERS=ON -DUSE_STANDALONE_FUZZERS=ON -G "${CMAKE_GENERATOR}" ${CMAKE_OPTIONS} -S "${SOURCE_DIR}"

echo ""
echo "##############################################################################"
echo "## Building libgit2"
echo "##############################################################################"

# Determine parallelism; newer cmake supports `--build --parallel` but
# we cannot yet rely on that.
if [ "${CMAKE_GENERATOR}" = "Unix Makefiles" -a "${CORES}" != "" -a "${CMAKE_BUILD_OPTIONS}" = "" ]; then
	BUILDER=(make -j ${CORES})
else
	BUILDER=("${CMAKE}" --build . ${CMAKE_BUILD_OPTIONS})
fi

echo "${BUILDER[@]}"
env PATH="${BUILD_PATH}" "${BUILDER[@]}"