#!/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