summaryrefslogtreecommitdiffstats
path: root/pkgs/build-support/cc-wrapper/add-clang-cc-cflags-before.sh
blob: d5515604c0bcde5fe5201ff37cf9764000fee3c8 (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
targetPassed=false
targetValue=""

declare -i n=0
nParams=${#params[@]}
while (("$n" < "$nParams")); do
    p=${params[n]}
    v=${params[n + 1]:-} # handle `p` being last one
    n+=1

    case "$p" in
    -target)
        if [ -z "$v" ]; then
            echo "Error: -target requires an argument" >&2
            exit 1
        fi
        targetPassed=true
        targetValue=$v
        # skip parsing the value of -target
        n+=1
        ;;
    --target=*)
        targetPassed=true
        targetValue="${p#*=}"
        ;;
    esac
done

if $targetPassed && [[ "$targetValue" != "@defaultTarget@" ]] && (( "${NIX_CC_WRAPPER_SUPPRESS_TARGET_WARNING:-0}" < 1 )); then
    echo "Warning: supplying the --target $targetValue != @defaultTarget@ argument to a nix-wrapped compiler may not work correctly - cc-wrapper is currently not designed with multi-target compilers in mind. You may want to use an un-wrapped compiler instead." >&2
elif [[ $0 != *cpp ]]; then
    extraBefore+=(-target @defaultTarget@ @machineFlags@)

    if [[ "@explicitAbiValue@" != "" ]]; then
        extraBefore+=(-mabi=@explicitAbiValue@)
    fi
fi

if [[ "@darwinMinVersion@" ]] && [ "@isFlang@" != 1 ]; then
    extraBefore+=(-Werror=unguarded-availability)
fi