?X: These units are based on the ones supplied with dist-3.0 ?X: patchlevel 22. They have been changed or enhanced to work with ?X: perl5alpha. I would appreciate hearing about any changes, ?X: corrections, or enhancements. ?X: Andy Dougherty doughera@lafcol.lafayette.edu ?X: Dept. of Physics ?X: Lafayette College ?X: Easton, PA 18042-1782 ?X: Sat Apr 2 15:45:17 EST 1994 ?RCS: $Id: cc.U,v 3.0 1993/08/18 12:05:30 ram Exp $ ?RCS: ?RCS: Copyright (c) 1991-1993, Raphael Manfredi ?RCS: ?RCS: You may redistribute only under the terms of the Artistic Licence, ?RCS: as specified in the README file that comes with the distribution. ?RCS: You may reuse parts of this distribution only within the terms of ?RCS: that same Artistic Licence; a copy of which may be found at the root ?RCS: of the source tree for dist 3.0. ?RCS: ?RCS: $Log: cc.U,v $ ?RCS: Revision 3.0 1993/08/18 12:05:30 ram ?RCS: Baseline for dist 3.0 netwide release. ?RCS: ?MAKE:gccversion cc: cat contains sysman +large cpp \ Mcc Myread Guess Oldconfig Loc ?MAKE: -pick add $@ %< ?S:cc: ?S: This variable holds the name of a command to execute a C compiler which ?S: can resolve multiple global references that happen to have the same ?S: name. Usual values are "cc", "Mcc", "cc -M", and "gcc". ?S:. ?S:gccversion: ?S: If GNU cc (gcc) is used, this variable holds '1' or '2' to ?S: indicate whether the compiler is version 1 or 2. This is used in ?S: setting some of the default cflags. ?D:cc='cc' ?INIT:gccversion='' ?LINT:change cpp : see if we need a special compiler echo " " if usg; then case "$cc" in '') case "$Mcc" in /*) dflt='Mcc';; *) case "$large" in -M*) dflt='cc';; *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then dflt='cc' else dflt='cc -M' fi else dflt='cc' fi;; esac;; esac;; *) dflt="$cc";; esac $cat <<'EOM' On some systems the default C compiler will not resolve multiple global references that happen to have the same name. On some such systems the "Mcc" command may be used to force these to be resolved. On other systems a "cc -M" command is required. (Note that the -M flag on other systems indicates a memory model to use!) If you have the Gnu C compiler, you might wish to use that instead. EOM rp="What command will force resolution on this system?" . ./myread cc="$ans" else case "$cc" in '') dflt=cc;; *) dflt="$cc";; esac rp="Use which C compiler?" . ./myread cc="$ans" fi case "$cc" in gcc*) echo "Checking out which version of gcc" $cat >gccvers.c < int main() { char *v; v = "unknown"; #ifdef __GNUC__ # ifdef __VERSION__ v = __VERSION__; # endif #endif switch((int) v[0]) { case '1': printf("1\n"); break; case '2': printf("2\n"); break; case '3': printf("3\n"); break; default: break; } #ifdef __GNUC__ return 0; #else return 1; #endif } EOM if $cc -o gccvers $ccflags gccvers.c >/dev/null 2>&1; then gccversion=`./gccvers` echo "You appear to have version $gccversion." else echo "Doesn't appear to be GNU cc." fi $rm -f gccvers* if $test "$gccversion" = '1'; then cpp=`./loc gcc-cpp $cpp $pth` fi ;; esac