|
2 | 2 | set -eu |
3 | 3 |
|
4 | 4 | usage() { |
| 5 | + code=${1:-1} |
5 | 6 | cat <<EOF |
6 | | -Usage: $(basename "$0") [BUILD_DIR] [BUILD_TYPE] [CCACHE] |
| 7 | +Usage: $(basename "$0") [BUILD_TYPE] |
7 | 8 |
|
8 | | -Positional args override env vars. |
| 9 | +Defaults: |
| 10 | + BUILD_TYPE: release |
9 | 11 |
|
10 | | - BUILD_DIR: Build directory (env: BUILD_DIR, default: ../<srcdir>-gcc) |
11 | | - BUILD_TYPE: Build type (env: BUILD_TYPE, default: release) |
12 | | - CCACHE: Compiler cache command (env: CCACHE, default: ccache; set to "" or "false" to disable) |
13 | | - PREFIX: Install prefix (env: PREFIX, default: /usr/local) |
| 12 | +Environment: |
| 13 | + PREFIX Install prefix (default: /usr/local) |
| 14 | + PROJECT Project name (default: basename of repo root) |
| 15 | + BDEP bdep command (default: bdep) |
| 16 | + CONFIGS_ROOT Base configs dir (default: ../build2/configs) |
14 | 17 | EOF |
| 18 | + exit "$code" |
15 | 19 | } |
16 | 20 |
|
17 | 21 | case "${1:-}" in |
18 | | - -h|--help) |
19 | | - usage |
20 | | - exit 0 |
21 | | - ;; |
| 22 | + -h|--help) usage 0 ;; |
22 | 23 | esac |
23 | 24 |
|
24 | | -cd "$(dirname "$0")/../.." || exit 1 |
25 | | -SRCDIR="$(basename "$(pwd)")" |
26 | | -BUILD_DIR="${1:-${BUILD_DIR:-../build2/$SRCDIR-default}}" |
27 | | -BUILD_TYPE="${2:-${BUILD_TYPE:-release}}" |
28 | | -CCACHE="${3:-${CCACHE:-ccache}}" |
29 | | -PREFIX="${PREFIX:-/usr/local}" |
30 | | -B="${B:-b}" |
| 25 | +SCRIPT_DIR=$(CDPATH='' cd -- "$(dirname "$0")" && pwd) |
| 26 | +REPO_ROOT=$(CDPATH='' cd -- "$SCRIPT_DIR/../.." && pwd) |
| 27 | +cd "$REPO_ROOT" |
31 | 28 |
|
32 | | -# Allow disabling ccache via CCACHE="" or CCACHE=false |
33 | | -if [ -n "$CCACHE" ] && [ "$CCACHE" != "false" ] && command -v "$CCACHE" >/dev/null 2>&1; then |
34 | | - CC="${CC:-cc}" |
35 | | - export CC="$CCACHE $CC" |
36 | | -fi |
| 29 | +PROJECT=${PROJECT:-$(basename "$REPO_ROOT")} |
| 30 | +BDEP=${BDEP:-bdep} |
| 31 | +CONFIGS_ROOT=${CONFIGS_ROOT:-../build2/configs} |
| 32 | +BUILD_TYPE=${1:-${BUILD_TYPE:-release}} |
| 33 | +PREFIX=${PREFIX:-/usr/local} |
37 | 34 |
|
38 | | -echo "Configuring: BUILD_DIR=$BUILD_DIR BUILD_TYPE=$BUILD_TYPE PREFIX=$PREFIX" |
| 35 | +clang_dir="${CONFIGS_ROOT}/${PROJECT}-clang" |
| 36 | +gcc_dir="${CONFIGS_ROOT}/${PROJECT}-gcc" |
39 | 37 |
|
40 | | -build2_config_check() { |
41 | | - bdep config list @default > /dev/null 2>&1 |
42 | | -} |
| 38 | +mkdir -p "$clang_dir" "$gcc_dir" |
| 39 | + |
| 40 | +"$BDEP" config list @clang >/dev/null 2>&1 || \ |
| 41 | + "$BDEP" init -C "$clang_dir" @clang cc config.c=clang |
| 42 | + |
| 43 | +"$BDEP" config list @gcc >/dev/null 2>&1 || \ |
| 44 | + "$BDEP" init -C "$gcc_dir" @gcc cc config.c=gcc |
| 45 | + |
| 46 | +"$BDEP" init @clang @gcc |
| 47 | + |
| 48 | +"$BDEP" config set @clang \ |
| 49 | + "config.config.mode=$BUILD_TYPE" \ |
| 50 | + "config.install.root=$PREFIX" >/dev/null 2>&1 || true |
43 | 51 |
|
44 | | -if ! build2_config_check; then |
45 | | - bdep init --wipe -C "$BUILD_DIR" \ |
46 | | - @default \ |
47 | | - cc \ |
48 | | - "config.config.mode=$BUILD_TYPE" \ |
49 | | - "config.install.root=$PREFIX" |
50 | | -fi |
| 52 | +"$BDEP" config set @gcc \ |
| 53 | + "config.config.mode=$BUILD_TYPE" \ |
| 54 | + "config.install.root=$PREFIX" >/dev/null 2>&1 || true |
0 commit comments