-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathnorm_common
84 lines (68 loc) · 2.17 KB
/
norm_common
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
#!/bin/bash
OURNAME=`basename -- $0`
CACHEDIR="$HOME/.cache/norm"
LIBSUFFIX=so
[[ $OSTYPE == *darwin* ]] && LIBSUFFIX=dylib
NUMCPU=`getconf _NPROCESSORS_ONLN`
[ -z "$NUMCPU" ] && NUMCPU=1
NUMJOBS=$NUMCPU
(( $NUMJOBS > 10 )) && NUMJOBS=10
[[ $CC == distcc* ]] && NUMJOBS=`distcc -j`
[[ -z $CC ]] && export CC=cc
[[ -z $CXX ]] && export CXX=c++
## find shasum binary
SHASUM_BIN=shasum
hash $SHASUM_BIN 2>/dev/null || SHASUM_BIN=sha1sum
## since we use -march=native, i7 binaries won't run on core2 -- add arch to machine id
GCCARCH=`(gcc -march=native -Q --help=target || true) 2>&1 | grep -- '^ *-march=' | awk '{ print $2 }' || true`
if [[ $GCCARCH == "" ]]; then
GCCARCH=`clang -v -xc /dev/null -O3 -march=native -o- -E 2>&1 | grep -o 'target-cpu \w*'|awk '{print $2}' || true`
fi
## get machine id for later
LIBC_VERSION=
case $OSTYPE in
*linux*)
LIBC_VERSION=`(getconf GNU_LIBC_VERSION || true) 2>/dev/null|awk '{ print $NF }'`
[[ -n $LIBC_VERSION ]] && LIBC_VERSION=".$LIBC_VERSION"
;;
esac
MACHINEID="${BASH_VERSINFO[5]}$LIBC_VERSION"
[ -n "$GCCARCH" ] && MACHINEID+=".$GCCARCH"
[ -z "${debian_chroot:-}" -a -r /etc/debian_chroot ] && debian_chroot=$(cat /etc/debian_chroot)
[ -n "$debian_chroot" ] && MACHINEID+=".$debian_chroot"
unset LIBC_VERSION
if [[ $OSTYPE == *darwin* ]]; then
NORM_OSX_VERSION=$(/usr/bin/sw_vers -productVersion)
[[ $NORM_OSX_VERSION =~ ^([0-9]+)\.([0-9]+)\. ]] && NORM_OSX_VERSION="${BASH_REMATCH[1]}.${BASH_REMATCH[2]}"
fi
## allow user to set compiler
[[ -z "$CC" ]] && CC=gcc
. "$NORMDIR"/norm_common.functions
. "$NORMDIR"/norm_common.prefix
COMPILEDIR="$DEFAULT_PREFIX/tmp/compile"
onerror() {
log "Formula $FORMULA failed to build"
}
onexit() {
EXITCODE=$?
if [[ $EXITCODE == 0 ]]; then
for line in "${CAVEATS[@]}"; do log $line; done
fi
}
setup_traps() {
set -eE
set -o pipefail
trap onerror ERR
trap onexit EXIT
}
log() {
local DATE=`LANG=C LC_ALL=C date '+%d/%b/%Y:%T %z'`
echo "[$DATE] [norm] $@"
}
log_error() {
local DATE=`LANG=C LC_ALL=C date '+%d/%b/%Y:%T %z'`
echo "[$DATE] [norm] $@" >&2
}
log_success() {
log "Formula $FORMULA -- success ($@ seconds)"
}