summaryrefslogtreecommitdiff
path: root/hadrian/build.cabal.sh
blob: 55ae958e9a6f3e3ce054714ba1c6a29f9c683103 (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
#!/usr/bin/env bash

CABAL=cabal
CABFLAGS="--disable-documentation --disable-profiling --disable-library-profiling $CABFLAGS"

# It is currently more robust to pass Cabal an absolute path to the project file.
PROJ="$PWD/hadrian/cabal.project"

set -euo pipefail

if ! [ -f "$PROJ" ]; then
    echo "Current working directory must be GHC's top-level folder"
    exit 2
fi

if ! type "$CABAL" > /dev/null; then
    echo "Please make sure 'cabal' is in your PATH"
    exit 2
fi

CABVERSTR=$("$CABAL" --numeric-version)
CABVER=( ${CABVERSTR//./ } )

if [ "${CABVER[0]}" -gt 2 -o "${CABVER[0]}" -eq 2 -a "${CABVER[1]}" -ge 2 ];
then
    "$CABAL" --project-file="$PROJ" new-build $CABFLAGS -j exe:hadrian
    # use new-exec instead of new-run to make sure that the build-tools (alex & happy) are in PATH
    "$CABAL" --project-file="$PROJ" new-exec  $CABFLAGS    hadrian -- \
        --directory "$PWD" \
        "$@"
else
    echo "Cabal version is too old; you need at least cabal-install 2.2"
    exit 2
fi