Thread View: gnu.gcc.help
1 messages
1 total messages
Started by Casper H.S. Dik
Thu, 07 Jan 1993 09:11
REPOST: Using gcc with UCB stuff on Solaris 2.x (solution)
Author: Casper H.S. Dik
Date: Thu, 07 Jan 1993 09:11
Date: Thu, 07 Jan 1993 09:11
179 lines
5917 bytes
5917 bytes
Oops. By mistake I posted a very old version of this script that
will only work for the cygnus distribution.
(That what you get when you post from your 4.x machine while you
work on a 2.,1 machine)
Don't use that version!!
And now for the original post:
Since there are programs that won't compile without the BSD
compatibility stuff, I configure a version of gcc that uses /usr/ucbinclude
and the proper libs for UCB compatibility.
The script at the end of this message will install /usr/ucb/gcc and
$GNUBIN/ucbgcc. Alternatively you can call gcc as ``gcc -bsd''.
The script has been tested with cygnus-2.0.2 and gcc 2.3.[23] on Solaris 2.1
It will not modify the existing gcc installation, it will only
add to it.
You will need a version of fixinc.svr4 handy when running this script
and you must have gcc in your $PATH.
Usage:
cygnus-2.0.2:
./mkucbgcc
gcc-2.3.[23]
./mkucbgcc <gcc-src-directory>
Casper
#! /bin/sh
# This is a shell archive. Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file". To overwrite existing
# files, type "sh file -c". You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g.. If this archive is complete, you
# will see the following message at the end:
# "End of shell archive."
# Contents: mkucbgcc
# Wrapped by casper@fwi.uva.nl on Thu Jan 7 10:07:52 1993
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'mkucbgcc' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'mkucbgcc'\"
else
echo shar: Extracting \"'mkucbgcc'\" \(3253 characters\)
sed "s/^X//" >'mkucbgcc' <<'END_OF_FILE'
X#!/bin/sh
X#
X# Script to make a version of gcc that uses the BSD environment.
X# It will create the following files:
X# /usr/ucb/gcc
X# $GNUBIN/ucbgcc
X# And will create a directory
X# $GNU/lib/gcc-lib/sparc-sun-solaris2-bsd/$version
X# that contains
X# hardlinks to every file from sparc-sun-solaris2
X# ucbinclude: a directory with fixed include files from /usr/ucbinclude
X# a specs file that will use these new include files before the SysV ones
X#
X# Use of this C compiler:
X# /usr/ucb/gcc
X# ucbgcc
X# gcc -bsd
X#
X# If you don't have cygnus-bin installed, you'll need to give a path to
X# your gcc source directory because mkucbgcc needs fixinc.svr4.
X#
X# This script has been tested with:
X# cygnus-2.0.2
X# gcc 2.3.2 and 2.3.3
X# on Solaris 2.1
X#
X# Author: Casper Dik (casper@fwi.uva.nl)
X#
XPATH=/bin:$PATH
Xexport PATH
X
Xecho Installing gcc for ucb environment.
Xspecs=`gcc -v 2>&1 |awk '$2 == "specs" { print $4 }' `
Xif [ `basename $specs` != specs -o ! -f $specs ]
Xthen
X echo 1>&2 "Can't locate gcc or specs file"
X exit 1
Xfi
X
X# The specs file lives in <root>/lib/gcc-lib/<mach>/<version>/specs
Xsvrpath=`dirname $specs`
Xversion=`basename $svrpath`
Xtmp=`dirname $svrpath`
Xmach=`basename $tmp`
Xtmp=`dirname $tmp`
Xif [ gcc-lib != `basename $tmp` ]
Xthen
X echo 1>&2 "Oops, path to specs file is not what I expect"
X exit 1
Xfi
Xtmp=`dirname $tmp`
X
Xroot=`dirname $tmp`
X
X# Not sure about the fixinc.svr4 bit.
Xif [ x"$1" != x ]
Xthen
X fixinc="$1"/fixinc.svr4
X if [ ! -d "$1" ]
X then
X echo 1>&2 "$1: not a directory"
X exit 1
X fi
X if [ ! -x $fixinc -o ! -f $fixinc ]
X then
X echo 1>&2 "$fixinc: Can't execute"
X exit 1
X fi
Xelif [ -f $root/lib/fixincludes -a `expr $version : cygnus` != 0 ]
Xthen
X fixinc=$root/lib/fixincludes
Xelse
X echo 1>&2 "Usage: $0 <gcc-src-directory> (for fixinc.svr4)"
X exit 1
Xfi
X
Xif [ lib != `basename $tmp` ]
Xthen
X echo 1>&2 "Oops, path to specs file is not what I expect"
X exit 1
Xfi
Xif [ cygnus-2.0.2 != $version -a 2.3.2 != $version -a 2.3.3 != $version ]
Xthen
X echo 1>&2 "Caveat: not tested for all versions of gcc."
Xfi
X
Xucbpath=$root/lib/gcc-lib/$mach-bsd/$version
X
Xecho Making directory structure.
Xrm -rf $ucbpath/ucbinclude
Xrm -f $ucbpath/*
Xmkdir -p $ucbpath/ucbinclude
X# Link for gcc -bsd
Xrm -f $root/lib/gcc-lib/sd
Xln -s $mach-bsd $root/lib/gcc-lib/sd
X
Xecho Making links.
Xecho "Expect complaint: \`\`ln: <$svrpath/include> directory''"
Xln $svrpath/* $ucbpath
Xset -e
Xrm $ucbpath/specs
Xecho "Updating specs file."
Xsed -e "/^\*cpp:$/N;s%cpp:\n%&-I$root/lib/gcc-lib/$mach-bsd/$version/ucbinclude -I/usr/ucbinclude %"\
X -e "/^\*lib:$/N;s%lib:\n%&-lucb -lsocket -lnsl -lelf -laio %"\
X -e "/^\*link:$/N;s%link:.*$%& -R /usr/ucblib%"\
X -e "s%Y P,%&/usr/ucblib:%g" < $svrpath/specs > $ucbpath/specs
X
Xcp $svrpath/include/*.h $ucbpath/ucbinclude
X
Xecho Running fixincludes. This may take some time. Output in /tmp/fixincludes.log
Xecho Expect complaint from fixincludes about byteorder.h
X$fixinc $ucbpath/ucbinclude /usr/ucbinclude > /tmp/fixincludes.log < /dev/null
X
X
Xrm -f /usr/ucb/gcc $root/bin/ucbgcc
Xln -s $root/bin/ucbgcc /usr/ucb/gcc
Xcat > $root/bin/ucbgcc << !
X#!/bin/sh
Xexec $root/bin/gcc -b $mach-bsd "\$@"
X!
Xchmod 755 $root/bin/ucbgcc
X
Xecho Installation of /usr/ucb/gcc successfull.
Xexit 0
END_OF_FILE
if test 3253 -ne `wc -c <'mkucbgcc'`; then
echo shar: \"'mkucbgcc'\" unpacked with wrong size!
fi
chmod +x 'mkucbgcc'
# end of 'mkucbgcc'
fi
echo shar: End of shell archive.
exit 0
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads