332 lines
7.3 KiB
Plaintext
Executable File
332 lines
7.3 KiB
Plaintext
Executable File
#!/bin/sh
|
|
|
|
#
|
|
# Shell script to do machine-dependent things in
|
|
# preparation for compiling gdb.
|
|
#
|
|
# Usage: config.gdb machine [operating-system]
|
|
#
|
|
# If config.gdb succeeds, it leaves its status in config.status.
|
|
# If config.gdb fails after disturbing the status quo,
|
|
# config.status is removed.
|
|
#
|
|
# Note: if making something gives errors like "unable to make target
|
|
# 1-dep.c", this means that the compiler has put in a builtin define
|
|
# and there is a "-U" missing from makedefine in this file.
|
|
#
|
|
|
|
progname=$0
|
|
|
|
case $# in
|
|
1)
|
|
machine=$1
|
|
os=""
|
|
;;
|
|
2)
|
|
machine=$1
|
|
os=$2
|
|
;;
|
|
*)
|
|
echo "Usage: $progname machine [operating-system]"
|
|
echo "Available machine types:"
|
|
echo m-*.h | sed 's/m-//g' | sed 's/\.h//g'
|
|
if [ -r config.status ]
|
|
then
|
|
cat config.status
|
|
fi
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# cannonicalize the machine name.
|
|
case $machine in
|
|
news)
|
|
case $os in
|
|
os3|newsos3)
|
|
$machine=newsos3
|
|
$os=""
|
|
;;
|
|
esac
|
|
;;
|
|
sun2)
|
|
case $os in
|
|
os4|sunos4)
|
|
$machine=sun2os4
|
|
$os=""
|
|
;;
|
|
os2|sunos2)
|
|
$machine=sun2os2
|
|
$os=""
|
|
;;
|
|
esac
|
|
;;
|
|
sun3)
|
|
case $os in
|
|
os4|sunos4)
|
|
$machine=sun3os4
|
|
$os=""
|
|
;;
|
|
os3|sunos3)
|
|
$machine=sun3os3
|
|
$os=""
|
|
;;
|
|
esac
|
|
;;
|
|
sparc|sun4)
|
|
case $os in
|
|
os4|sunos4)
|
|
$machine=sun4os4
|
|
$os=""
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
paramfile=m-${machine}${os}.h
|
|
pinsnfile=${machine}${os}-pinsn.c
|
|
opcodefile=${machine}${os}-opcode.h
|
|
# Set up a define for purposes of editing the makefile.
|
|
makedefine=
|
|
if [ -r ${machine}${os}-dep.c ]
|
|
then
|
|
depfile=${machine}${os}-dep.c
|
|
else
|
|
depfile=default-dep.c
|
|
fi
|
|
|
|
#
|
|
# Special cases.
|
|
# If a file is not needed, set the file name to something.
|
|
# It must be linked to something, or else make will try to make it.
|
|
# /dev/null will not work because on systems without symbolic links,
|
|
# it will complain that /dev/null is on a different file system.
|
|
#
|
|
case $machine in
|
|
altos)
|
|
makedefine="-DM_REGEX=regex.o -DM_SYSV -DM_BSD_NM"
|
|
pinsnfile=m68k-pinsn.c
|
|
opcodefile=m68k-opcode.h
|
|
;;
|
|
altosgas)
|
|
echo "Use of the coff encapsulation features require the GNU binutils utilities"
|
|
echo "To be ahead of their System V counterparts in your path."
|
|
makedefine="-DM_REGEX=regex.o -DM_SYSV -DM_BSD_NM"
|
|
pinsnfile=m68k-pinsn.c
|
|
depfile=altos-dep.c
|
|
opcodefile=m68k-opcode.h
|
|
;;
|
|
vax)
|
|
echo
|
|
echo "/bin/cc has been known to fail on readline.c on VAXen running BSD4.3"
|
|
echo "If this occurs, use gcc "
|
|
echo " (but see comments in Makefile.dist about compiling with gcc)."
|
|
echo
|
|
pinsnfile=vax-pinsn.c
|
|
opcodefile=vax-opcode.h
|
|
;;
|
|
hp9k320)
|
|
# The headers in the directory hp-include override system headers
|
|
# and tell GDB to use BSD executable file format (hence -Ihp-include)
|
|
makedefine="-DM_SYSV -DM_BSD_NM -DM_REGEX=regex.o
|
|
-DM_ALLOCA=alloca.o -DM_CFLAGS=-Ihp-include"
|
|
# The following is true because gcc uses a different .o file format
|
|
# than the native HPUX compiler
|
|
echo
|
|
echo "If you compile GDB with GCC on HPUX, you must make sure"
|
|
echo "that the \`nm' used in \`munch' is GNU nm"
|
|
echo
|
|
pinsnfile=m68k-pinsn.c
|
|
opcodefile=m68k-opcode.h
|
|
;;
|
|
hp300bsd)
|
|
# Not sure what makefile editing (if any) is necessary for this machine.
|
|
pinsnfile=m68k-pinsn.c
|
|
opcodefile=m68k-opcode.h
|
|
;;
|
|
isi)
|
|
# ISI running bsd4.2
|
|
pinsnfile=m68k-pinsn.c
|
|
opcodefile=m68k-opcode.h
|
|
;;
|
|
i386)
|
|
makedefine="-DM_CLIBS=-lPW -DM_SYSV -DM_REGEX=regex.o"
|
|
# The following is a lie, but a necessary one. See comment at beginning
|
|
# of this file about unneeded files.
|
|
opcodefile=m-i386.h
|
|
;;
|
|
i386gas)
|
|
makedefine="-DM_CLIBS=-lPW -DM_SYSV -DM_REGEX=regex.o"
|
|
echo
|
|
echo "Use of the coff encapsulation features requires the GNU binary utilities"
|
|
echo "to be ahead of their System V counterparts in your path."
|
|
echo
|
|
pinsnfile=i386-pinsn.c
|
|
depfile=i386-dep.c
|
|
# The following is a lie, but a necessary one. See comment at beginning
|
|
# of this file about unneeded files.
|
|
opcodefile=m-i386.h
|
|
;;
|
|
i386-sysv3.2)
|
|
makedefine="-DM_CLIBS=-lPW -DM_SYSV -DM_REGEX=regex.o"
|
|
pinsnfile=i386-pinsn.c
|
|
depfile=i386-dep.c
|
|
opcodefile=/dev/null
|
|
;;
|
|
i386gas-sysv3.2)
|
|
makedefine="-DM_CLIBS=-lPW -DM_SYSV -DM_REGEX=regex.o"
|
|
echo
|
|
echo "Use of the coff encapsulation features requires the GNU binary utilities"
|
|
echo "to be ahead of their System V counterparts in your path."
|
|
echo
|
|
pinsnfile=i386-pinsn.c
|
|
depfile=i386-dep.c
|
|
opcodefile=/dev/null
|
|
;;
|
|
merlin)
|
|
pinsnfile=ns32k-pinsn.c
|
|
opcodefile=ns32k-opcode.h
|
|
;;
|
|
news)
|
|
pinsnfile=m68k-pinsn.c
|
|
opcodefile=m68k-opcode.h
|
|
;;
|
|
newsos3)
|
|
pinsnfile=m68k-pinsn.c
|
|
opcodefile=m68k-opcode.h
|
|
depfile=news-dep.c
|
|
;;
|
|
npl)
|
|
pinsnfile=gld-pinsn.c
|
|
;;
|
|
pn)
|
|
pinsnfile=gld-pinsn.c
|
|
;;
|
|
sun2)
|
|
depfile=sun3-dep.c
|
|
pinsnfile=m68k-pinsn.c
|
|
opcodefile=m68k-opcode.h
|
|
;;
|
|
sun2os2|sun2-os2)
|
|
depfile=default-dep.c
|
|
paramfile=m-sun2.h
|
|
pinsnfile=m68k-pinsn.c
|
|
opcodefile=m68k-opcode.h
|
|
;;
|
|
sun2os4|sun2-os4)
|
|
# Compile GDB without shared libraries so that it can be run on itself.
|
|
makedefine=-DM_CFLAGS=-Bstatic
|
|
echo
|
|
echo "Make sure to compile any program on which you want to run gdb"
|
|
echo " without shared libraries (cc -Bstatic)"
|
|
echo
|
|
paramfile=m-sun2os4.h
|
|
depfile=sun3-dep.c
|
|
pinsnfile=m68k-pinsn.c
|
|
opcodefile=m68k-opcode.h
|
|
;;
|
|
sun3os3)
|
|
paramfile=m-sun3.h
|
|
depfile=sun3-dep.c
|
|
pinsnfile=m68k-pinsn.c
|
|
opcodefile=m68k-opcode.h
|
|
;;
|
|
sun3os4|sun3-os4)
|
|
# Compile GDB without shared libraries so that it can be run on itself.
|
|
makedefine=-DM_CFLAGS=-Bstatic
|
|
echo
|
|
echo "Make sure to compile any program on which you want to run gdb"
|
|
echo " without shared libraries (cc -Bstatic)"
|
|
echo
|
|
paramfile=m-sun3os4.h
|
|
pinsnfile=m68k-pinsn.c
|
|
opcodefile=m68k-opcode.h
|
|
depfile=sun3-dep.c
|
|
;;
|
|
sun4os4|sun4-os4)
|
|
# Compile GDB without shared libraries so that it can be run on itself.
|
|
# Undefine sparc to avoid changing sparc-dep.c to 1-dep.c
|
|
makedefine="-DM_CFLAGS=-Bstatic -Usparc"
|
|
echo
|
|
echo "Make sure to compile any program on which you want to run gdb"
|
|
echo " without shared libraries (cc -Bstatic)"
|
|
echo
|
|
paramfile=m-sun4os4.h
|
|
pinsnfile=sparc-pinsn.c
|
|
opcodefile=sparc-opcode.h
|
|
depfile=sparc-dep.c
|
|
;;
|
|
symmetry)
|
|
pinsnfile=i386-pinsn.c
|
|
# Need *some* opcode file to keep make from trying to make opcode.h
|
|
opcodefile=/dev/null
|
|
;;
|
|
umax)
|
|
pinsnfile=ns32k-pinsn.c
|
|
opcodefile=ns32k-opcode.h
|
|
;;
|
|
sparc|sun4|sun4os3|sun4-os3)
|
|
paramfile=m-sparc.h
|
|
# Undefine sparc to avoid changing sparc-dep.c to 1-dep.c
|
|
makedefine=-Usparc
|
|
pinsnfile=sparc-pinsn.c
|
|
opcodefile=sparc-opcode.h
|
|
depfile=sparc-dep.c
|
|
;;
|
|
convex)
|
|
;;
|
|
test)
|
|
paramfile=one
|
|
pinsnfile=three
|
|
opcodefile=four
|
|
;;
|
|
*)
|
|
echo "Unknown machine type: \`$machine'"
|
|
echo "Available types:"
|
|
echo m-*.h | sed 's/m-//g' | sed 's/\.h//g'
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
files="$paramfile $pinsnfile $opcodefile $depfile"
|
|
links="param.h pinsn.c opcode.h dep.c"
|
|
|
|
rm -f config.status
|
|
while [ -n "$files" ]
|
|
do
|
|
# set file to car of files, files to cdr of files
|
|
set $files; file=$1; shift; files=$*
|
|
set $links; link=$1; shift; links=$*
|
|
|
|
if [ "$file" != skip ]
|
|
then
|
|
if [ ! -r $file ]
|
|
then
|
|
echo "$progname: cannot create a link \`$link',"
|
|
echo "since the file \`$file' does not exist."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Linking \`$link' to \`$file'."
|
|
rm -f $link
|
|
# Make a symlink if possible, otherwise try a hard link
|
|
ln -s $file $link 2>/dev/null || ln $file $link
|
|
|
|
if [ ! -r $link ]
|
|
then
|
|
echo "$progname: unable to link \`$link' to \`$file'."
|
|
exit 1
|
|
fi
|
|
fi
|
|
done
|
|
|
|
# edit the makefile
|
|
echo "Editing Makefile"
|
|
cp Makefile.dist tmp.c
|
|
cc -E >Makefile tmp.c $makedefine -DM_MAKEDEFINE="$makedefine"
|
|
rm -f tmp.c
|
|
|
|
echo "GDB is now set up for use with a $machine." \
|
|
| tee config.status
|
|
exit 0
|
|
|