Blame


1 dbd7b9a9 2003-11-23 devnull #!/bin/sh
2 dbd7b9a9 2003-11-23 devnull
3 eea5f6ad 2005-01-17 devnull test -f $PLAN9/config && . $PLAN9/config
4 dbd7b9a9 2003-11-23 devnull usegcc()
5 dbd7b9a9 2003-11-23 devnull {
6 dbd7b9a9 2003-11-23 devnull cc=gcc
7 8f314994 2004-03-02 devnull ngflags=" \
8 dbd7b9a9 2003-11-23 devnull -O2 \
9 dbd7b9a9 2003-11-23 devnull -c \
10 dbd7b9a9 2003-11-23 devnull -Wall \
11 dbd7b9a9 2003-11-23 devnull -Wno-parentheses \
12 dbd7b9a9 2003-11-23 devnull -Wno-missing-braces \
13 dbd7b9a9 2003-11-23 devnull -Wno-switch \
14 d51419bf 2004-02-09 devnull -Wno-comment \
15 3765283c 2003-11-25 devnull -Wno-sign-compare \
16 115d4c0a 2004-05-03 devnull -Wno-unknown-pragmas \
17 be36ff68 2004-04-29 devnull -fno-omit-frame-pointer \
18 dbd7b9a9 2003-11-23 devnull "
19 be36ff68 2004-04-29 devnull # want to put -fno-optimize-sibling-calls here but
20 be36ff68 2004-04-29 devnull # that option only works with gcc3+ it seems
21 dc9d0ffc 2004-03-02 devnull cflags="$ngflags -ggdb"
22 dbd7b9a9 2003-11-23 devnull }
23 dbd7b9a9 2003-11-23 devnull
24 8f314994 2004-03-02 devnull tag="${SYSNAME:-`uname`}-${OBJTYPE:-`uname -m`}-${CC9:-cc}"
25 dbd7b9a9 2003-11-23 devnull case "$tag" in
26 7033e49d 2004-12-28 devnull *BSD*) usegcc ;;
27 53dbac94 2004-03-02 devnull *Darwin*) usegcc
28 8f314994 2004-03-02 devnull cflags="$ngflags -g3 -no-cpp-precomp" ;;
29 dbd7b9a9 2003-11-23 devnull *HP-UX*) cc=cc; cflags="-g -O -c -Ae" ;;
30 282c88f9 2004-09-17 devnull *Linux*) usegcc
31 ead3e311 2005-01-04 devnull case "${SYSVERSION:-`uname -r`}" in
32 fa267621 2004-12-24 devnull 2.6.*)
33 282c88f9 2004-09-17 devnull cflags="$cflags -D__Linux26__"
34 282c88f9 2004-09-17 devnull ;;
35 282c88f9 2004-09-17 devnull esac
36 282c88f9 2004-09-17 devnull ;;
37 dbd7b9a9 2003-11-23 devnull *OSF1*) cc=cc; cflags="-g -O -c" ;;
38 0f192bb8 2004-03-26 devnull *SunOS*-cc) cc=cc;
39 9e863cf5 2005-01-07 devnull cflags="-mt -g -O -c -xCC -D__sun__"
40 0f192bb8 2004-03-26 devnull u=`uname`
41 1b431b18 2004-03-26 devnull v=`uname -r`
42 1b431b18 2004-03-26 devnull s=`echo $u$v | tr '. ' '__'`
43 4fc1f5f9 2005-01-19 devnull cflags="$cflags -D__${s}__"
44 0f192bb8 2004-03-26 devnull ;;
45 0f192bb8 2004-03-26 devnull *SunOS*-gcc) usegcc
46 0f192bb8 2004-03-26 devnull u=`uname`
47 1b431b18 2004-03-26 devnull v=`uname -r`
48 1b431b18 2004-03-26 devnull s=`echo $u$v | tr '. ' '__'`
49 78802e69 2004-04-24 devnull cflags="$ngflags -g"
50 4fc1f5f9 2005-01-19 devnull cflags="$cflags -D__${s}__"
51 0f192bb8 2004-03-26 devnull ;;
52 dbd7b9a9 2003-11-23 devnull *)
53 dbd7b9a9 2003-11-23 devnull echo 9c does not know how to compile on "$tag" 1>&2
54 dbd7b9a9 2003-11-23 devnull exit 1
55 dbd7b9a9 2003-11-23 devnull esac
56 dbd7b9a9 2003-11-23 devnull
57 ead3e311 2005-01-04 devnull # N.B. Must use temp file to avoid pipe; pipe loses status.
58 eacba19d 2005-03-18 devnull # The uniq at the end is for gcc's strcmp/etc. built-in nonsense,
59 eacba19d 2005-03-18 devnull # which multiplies single errors as a result of its expansion.
60 ead3e311 2005-01-04 devnull xtmp=/tmp/9c.$$.$USER.out
61 d756dc5e 2005-01-07 devnull $cc -DPLAN9PORT -I$PLAN9/include $cflags "$@" >$xtmp 2>&1
62 d756dc5e 2005-01-07 devnull status=$?
63 d756dc5e 2005-01-07 devnull grep -v '__p9l_autolib_' $xtmp |
64 4b089276 2005-03-18 devnull egrep -v ': error: .Each undeclared identifier|: error: for each function it appears|: In function `|: At top level:' |
65 eacba19d 2005-03-18 devnull sed 's/ .first use in this function.$//; s/\"\([^\"][^\"]*\)\", line \([0-9][0-9]*\)/\1:\2/g' |
66 eacba19d 2005-03-18 devnull uniq
67 d756dc5e 2005-01-07 devnull rm -f $xtmp $xtmp.status
68 ead3e311 2005-01-04 devnull exit $status