rsc | dbd7b9a | 2003-11-23 18:29:08 +0000 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | |
rsc | eea5f6a | 2005-01-17 20:57:57 +0000 | [diff] [blame^] | 3 | test -f $PLAN9/config && . $PLAN9/config |
rsc | dbd7b9a | 2003-11-23 18:29:08 +0000 | [diff] [blame] | 4 | usegcc() |
| 5 | { |
| 6 | cc=gcc |
rsc | 8f31499 | 2004-03-02 17:34:15 +0000 | [diff] [blame] | 7 | ngflags=" \ |
rsc | dbd7b9a | 2003-11-23 18:29:08 +0000 | [diff] [blame] | 8 | -O2 \ |
rsc | dbd7b9a | 2003-11-23 18:29:08 +0000 | [diff] [blame] | 9 | -c \ |
rsc | dbd7b9a | 2003-11-23 18:29:08 +0000 | [diff] [blame] | 10 | -Wall \ |
| 11 | -Wno-parentheses \ |
| 12 | -Wno-missing-braces \ |
| 13 | -Wno-switch \ |
rsc | d51419b | 2004-02-09 19:33:05 +0000 | [diff] [blame] | 14 | -Wno-comment \ |
rsc | 3765283 | 2003-11-25 02:36:46 +0000 | [diff] [blame] | 15 | -Wno-sign-compare \ |
wkj | 115d4c0 | 2004-05-03 17:26:17 +0000 | [diff] [blame] | 16 | -Wno-unknown-pragmas \ |
rsc | be36ff6 | 2004-04-29 17:13:24 +0000 | [diff] [blame] | 17 | -fno-omit-frame-pointer \ |
rsc | dbd7b9a | 2003-11-23 18:29:08 +0000 | [diff] [blame] | 18 | " |
rsc | be36ff6 | 2004-04-29 17:13:24 +0000 | [diff] [blame] | 19 | # want to put -fno-optimize-sibling-calls here but |
| 20 | # that option only works with gcc3+ it seems |
rsc | dc9d0ff | 2004-03-02 19:29:39 +0000 | [diff] [blame] | 21 | cflags="$ngflags -ggdb" |
rsc | dbd7b9a | 2003-11-23 18:29:08 +0000 | [diff] [blame] | 22 | } |
| 23 | |
rsc | 8f31499 | 2004-03-02 17:34:15 +0000 | [diff] [blame] | 24 | tag="${SYSNAME:-`uname`}-${OBJTYPE:-`uname -m`}-${CC9:-cc}" |
rsc | dbd7b9a | 2003-11-23 18:29:08 +0000 | [diff] [blame] | 25 | case "$tag" in |
rsc | 7033e49 | 2004-12-28 23:14:43 +0000 | [diff] [blame] | 26 | *BSD*) usegcc ;; |
rsc | 53dbac9 | 2004-03-02 16:58:49 +0000 | [diff] [blame] | 27 | *Darwin*) usegcc |
rsc | 8f31499 | 2004-03-02 17:34:15 +0000 | [diff] [blame] | 28 | cflags="$ngflags -g3 -no-cpp-precomp" ;; |
rsc | dbd7b9a | 2003-11-23 18:29:08 +0000 | [diff] [blame] | 29 | *HP-UX*) cc=cc; cflags="-g -O -c -Ae" ;; |
rsc | 282c88f | 2004-09-17 22:09:31 +0000 | [diff] [blame] | 30 | *Linux*) usegcc |
rsc | ead3e31 | 2005-01-04 21:13:58 +0000 | [diff] [blame] | 31 | case "${SYSVERSION:-`uname -r`}" in |
rsc | fa26762 | 2004-12-24 07:12:30 +0000 | [diff] [blame] | 32 | 2.6.*) |
rsc | 282c88f | 2004-09-17 22:09:31 +0000 | [diff] [blame] | 33 | cflags="$cflags -D__Linux26__" |
| 34 | ;; |
| 35 | esac |
| 36 | ;; |
rsc | dbd7b9a | 2003-11-23 18:29:08 +0000 | [diff] [blame] | 37 | *OSF1*) cc=cc; cflags="-g -O -c" ;; |
rsc | 0f192bb | 2004-03-26 05:01:11 +0000 | [diff] [blame] | 38 | *SunOS*-cc) cc=cc; |
rsc | 9e863cf | 2005-01-07 07:16:53 +0000 | [diff] [blame] | 39 | cflags="-mt -g -O -c -xCC -D__sun__" |
rsc | 0f192bb | 2004-03-26 05:01:11 +0000 | [diff] [blame] | 40 | u=`uname` |
rsc | 1b431b1 | 2004-03-26 05:05:33 +0000 | [diff] [blame] | 41 | v=`uname -r` |
| 42 | s=`echo $u$v | tr '. ' '__'` |
| 43 | cflags="$cflags -D__$s__" |
rsc | 0f192bb | 2004-03-26 05:01:11 +0000 | [diff] [blame] | 44 | ;; |
| 45 | *SunOS*-gcc) usegcc |
| 46 | u=`uname` |
rsc | 1b431b1 | 2004-03-26 05:05:33 +0000 | [diff] [blame] | 47 | v=`uname -r` |
| 48 | s=`echo $u$v | tr '. ' '__'` |
rsc | 78802e6 | 2004-04-24 04:52:49 +0000 | [diff] [blame] | 49 | cflags="$ngflags -g" |
rsc | 1b431b1 | 2004-03-26 05:05:33 +0000 | [diff] [blame] | 50 | cflags="$cflags -D__$s__" |
rsc | 0f192bb | 2004-03-26 05:01:11 +0000 | [diff] [blame] | 51 | ;; |
rsc | dbd7b9a | 2003-11-23 18:29:08 +0000 | [diff] [blame] | 52 | *) |
| 53 | echo 9c does not know how to compile on "$tag" 1>&2 |
| 54 | exit 1 |
| 55 | esac |
| 56 | |
rsc | ead3e31 | 2005-01-04 21:13:58 +0000 | [diff] [blame] | 57 | # N.B. Must use temp file to avoid pipe; pipe loses status. |
| 58 | xtmp=/tmp/9c.$$.$USER.out |
rsc | d756dc5 | 2005-01-07 07:15:31 +0000 | [diff] [blame] | 59 | $cc -DPLAN9PORT -I$PLAN9/include $cflags "$@" >$xtmp 2>&1 |
| 60 | status=$? |
| 61 | grep -v '__p9l_autolib_' $xtmp | |
| 62 | sed 's/\"\([^\"][^\"]*\)\", line \([0-9][0-9]*\)/\1:\2/g' |
| 63 | rm -f $xtmp $xtmp.status |
rsc | ead3e31 | 2005-01-04 21:13:58 +0000 | [diff] [blame] | 64 | exit $status |