Commit 63fb6fc7 by Joseph Myers Committed by Joseph Myers

dostage2, [...]: Remove obsolete files.

	* dostage2, dostage3, listing, make-l2.com, makefile.vms,
	patch-apollo-includes, vmsconfig.com: Remove obsolete files.

From-SVN: r45661
parent c1d49704
2001-09-17 Joseph S. Myers <jsm28@cam.ac.uk>
* dostage2, dostage3, listing, make-l2.com, makefile.vms,
patch-apollo-includes, vmsconfig.com: Remove obsolete files.
2001-09-17 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 2001-09-17 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* c-aux-info.c (affix_data_type): Use ASTRDUP in lieu of * c-aux-info.c (affix_data_type): Use ASTRDUP in lieu of
......
#!/bin/sh
make -k LANGUAGES=c $1 CC=stage1/xgcc XCFLAGS=-Bstage1/ CFLAGS="-g $2" >log2 2>&1
#!/bin/sh
make -k LANGUAGES=c $1 CC=stage2/xgcc XCFLAGS=-Bstage2/ CFLAGS="-g $2" >log3 2>&1
#!/bin/sh -f
# Generate a source code listing for C or C++ code with assembler code. The
# listing is always written to stdout.
# Author: Igor Metz <metz@iam.unibe.ch>
# Revision 1.4 94/08/26 13:58:27 coxs <coxs@dg-rtp.dg.com>
# lister now guesses how to should be configured. Added elf and coff support.
#
# Revision 1.3 89/12/18 13:58:27 metz
# lister must now be configured before it can be used. This is done in the
# /bin/sh part of the code.
#
#
# Revision 1.2 89/08/16 17:35:02 metz
# Support for SPARC added.
#
# Revision 1.1 89/08/16 16:49:22 metz
# Initial revision
#
# Requires: gawk (may be it works also with nawk)
# usage: lister filename [compiler-options]
# Method:
# compile the source with -g option to assembler code, then merge the
# generated assembler code with the source code. Compiler options
# can be supplied on the command line (for example -O)
# To install lister, assign one of the supported values to the variable MYSYS:
# mc68020 for Motorola 68020 (Sun-3, ..)
# mc68030 for Motorola 68030 (Sun-3, ..)
# sparc for SPARC (SUN-4, ..)
# i386 for i386 (Sun i386, ...)
# i386-gnu-linux for i386 (GNU/Linux, ...)
# Guess what kind of objects we are creating and thus what type of assembler
# symbols to look for
ex /tmp/$$.c <<END >/dev/null
a
main (){}
.
w
q
END
WD=`pwd`
cd /tmp
gcc -c $$.c
case "`file $$.o`" in
*ELF*) MYSYS=elf ;;
*COFF*|*BCS*) MYSYS=coff ;;
*mc68k*|*M68000*) MYSYS=mc68030 ;;
*SPARC*) MYSYS=sparc ;;
*386*) MYSYS=i386 ;;
esac
rm $$.c $$.o
cd $WD
# uncomment the line you need if the above guesses incorrectly:
# MYSYS=mc68020
# MYSYS=mc68030
# MYSYS=sparc
# MYSYS=i386
# MYSYS=i386-gnu-linux
# MYSYS=`mach` # this will work on Suns with SunOS > 4.0.0
# MYSYS=elf
# MYSYS=coff
WHOAMI=$0
if [ $# -gt 0 ] ; then
FILENAME=$1
shift
fi
exec gawk -v whoami=$WHOAMI -vsys=$MYSYS -voptions="$*" '
# commandline arguments:
# ARGV[0] = "gawk"
# ARGV[1] = processid
# ARGV[2] = filename
BEGIN {
if (ARGC != 3) {
usage()
exit 1
}
# Declaration of global variables
c_filename = ""
asm_filename = ""
cmdline = ""
asm_code = ""
c_code = ""
c_lineno = 0
oldlineno = 0
newlineno = 0
ignore_stabd = 0
num_of_fields = 0
# check processor architecture and set sourcecode line_hint accordingly
if (sys == "sparc" || sys == "i386") {
line_hint = "^[ \t]*\.stabn.*"
line_field = 3;
line_delimiter = ",";
line_offset = 0;
}
else if (sys == "mc68020" || sys == "mc68030" || sys == "i386-gnu-linux") {
line_hint = "^[ \t]*\.stabd.*"
line_field = 3;
line_delimiter = ",";
line_offset = 0;
}
else if (sys == "elf") {
line_hint = "section.*\.line"
line_field = 3;
line_delimiter = "\t";
line_offset = 0;
}
else if (sys == "coff") {
line_hint = "^[ \t]*ln"
line_field = 3;
line_delimiter = "\t";
}
else {
error("Processor type " sys " is not supported yet, sorry")
}
parse_cmdline()
printf("compiling %s to asm code\n", c_filename ) > "/dev/stderr"
if (system(cmdline) != 0 ) {
error("Compilation of " c_filename " failed")
}
printf("generating listing\n") > "/dev/stderr"
while ( getline asm_code < asm_filename > 0 ) {
if ( (ignore_stabd==0) && (asm_code ~ line_hint)) {
while ( sys == "elf" && (asm_code !~ "word" && asm_code !~ "byte") &&
getline asm_code < asm_filename > 0);
# source line hint found. Split the line into fields separated by commas.
# num_of_fields is 4 for sparc, 3 for m68k
num_of_fields = split(asm_code, fields, line_delimiter)
newlineno = fields[line_field] + line_offset;
if (newlineno > oldlineno) {
while ( newlineno > c_lineno && getline c_code < c_filename > 0) {
c_lineno++
printf("%4d %s\n", c_lineno, c_code)
}
oldlineno = newlineno
}
}
else if ( asm_code ~ ".*Ltext[ \t]*$" ) {
# filename hint found
if ( match(asm_code, c_filename)) {
ignore_stabd = 0
}
else {
ignore_stabd = 1
}
}
else if ( sys == "elf" && asm_code ~ "section.*\.debug" ) {
while ( asm_code !~ "^[ \t]*[.]*previous" &&
asm_code !~ "\.popsection" &&
getline asm_code < asm_filename > 0 );
if ( ! (getline asm_code < asm_filename > 0)) break;
}
else if ( sys == "coff" && asm_code ~ "^[ \t]*sdef" ) {
if ( asm_code ~ "\.bf" ) {
while ( asm_code !~ "^[ \t]*line" &&
getline asm_code < asm_filename > 0 ) {
num_of_fields = split(asm_code, fields, "\t")
line_offset = fields[line_field] - 1;
}
}
while ( asm_code !~ "^[ \t]*endef" &&
getline asm_code < asm_filename > 0 ) {
}
if ( ! (getline asm_code < asm_filename > 0)) break;
}
printf("\t\t\t%s\n", asm_code)
}
# general cleanup
system("/bin/rm " asm_filename)
}
function usage() {
printf("usage: %s filename compiler-options\n", whoami) > "/dev/stderr"
}
function error(s) {
printf("error: %s\n", s) > "/dev/stderr"
exit 1
}
function parse_cmdline( i) {
# construct filenames to use
asm_filename = "/tmp/lister" ARGV[1] ".s"
ARGV[1] = ""
c_filename = ARGV[2]
ARGV[2] = ""
# construct commandline to use
if ( match(c_filename, ".C") || match(c_filename, ".cc") ) {
cmdline = "g++"
}
else if (match(c_filename, ".c") || match(c_filename, ".i")) {
cmdline = "gcc"
}
else {
error("unknown extension for file " c_filename)
}
cmdline = cmdline " -g -S -o " asm_filename
# now we append the compiler options specified by the user
cmdline = cmdline " " options
# last but not least: the name of the file to compile
cmdline = cmdline " " c_filename
}
' $$ $FILENAME
$! make-l2.com -- VMS build procedure for libgcc2.
$
$! Change working directory to the location of this command procedure.
$ flnm = f$enviroment("PROCEDURE") !get current procedure name
$ set default 'f$parse(flnm,,,"DEVICE")''f$parse(flnm,,,"DIRECTORY")'
$!
$! Command file to build libgcc2.olb. You should only run this once you
$! have the current compiler installed, otherwise some of the builtins will
$! not be recognized. Once you have built libgcc2.olb, you can merge this
$! with gnu_cc:[000000]gcclib.olb
$!
$! All of the C source code is assumed to be in libgcc2.c, and a list of the
$! modules that we need from there is in libgcc2.list (which is generated
$! when vmsconfig.com is run). The C++ source is found in the [.cp.inc]
$! directory and managed via libgcc2-cxx.list.
$!
$ if f$search("gcc-cc1.exe").eqs.""
$ then
$ gcc_cc1:=$gnu_cc:[000000]gcc-cc1
$ if f$extract(0,1,f$trnlnm("GNU_CC_VERSION")).eqs."1" then goto nocompile
$ else
$ gcc_cc1:=$sys$disk:[]gcc-cc1
$ endif
$!
$ if f$search("gcc-cpp.exe").eqs.""
$ then
$ gcc_cpp:=$gnu_cc:[000000]gcc-cpp
$ if f$extract(0,1,f$trnlnm("GNU_CC_VERSION")).eqs."1" then goto nocompile
$ Version:='f$trnlnm("GNU_CC_VERSION")'
$ else
$ gcc_cpp:=$sys$disk:[]gcc-cpp
$ open ifile$ version.opt
$ read ifile$ line
$ close ifile$
$ Version=line - "ident=""" - """
$ endif
$!
$ if f$search("gcc-cc1plus.exe").eqs.""
$ then gcc_cxx = "$gnu_cc:[000000]gcc-cc1plus"
$ else gcc_cxx = "$sys$disk:[]gcc-cc1plus"
$ endif
$!
$gcc_as:=$gnu_cc:[000000]gcc-as
$cpp_file:=sys$scratch:gcc_'f$getjpi(0,"pid")'.cpp
$ s_file:=sys$scratch:gcc_'f$getjpi(0,"pid")'.s
$!
$set symbol/scope=(nolocal,noglobal)
$!
$lib/create libgcc2.olb
$on error then goto c_err
$on control_y then goto c_err
$
$if f$trnlnm("IFILE$").nes."" then close/noLog ifile$
$open ifile$ libgcc2.list
$loop:
$!
$read ifile$ line/end=c_done
$i=0
$loop1:
$flnm=f$element(i," ",line)
$i=i+1
$if flnm.eqs."" then goto loop
$if flnm.eqs." " then goto loop
$!
$flnm = "L"+flnm
$if flnm.eqs."L_exit" then goto loop1
$write sys$output "$ gcc/debug/define=""''flnm'"" LIBGCC2.C"
$!
$objname = flnm
$if flnm.eqs."L_builtin_New" then objname = "L_builtin_nnew"
$!
$! We do this by hand, since the VMS compiler driver does not have a way
$! of specifying an alternate location for the compiler executables.
$!
$ if arch .eqs. "alpha"
$ then
$ gcc_cpp "-D__IEEE_FLOAT" "-I[]" "-I[.config]" "-I[.ginclude]" "-D''flnm'" libgcc2.c 'cpp_file'
$ gcc_cc1 'cpp_file' -dumpbase 'objname' -
-quiet -mgas "-O1" -mfloat-ieee -o 's_file'
$ else
$ gcc_cpp "-I[]" "-I[.config]" "-I[.ginclude]" "-D''flnm'" libgcc2.c 'cpp_file'
$ gcc_cc1 'cpp_file' -dumpbase 'objname' -
-quiet -mgnu -g "-O1" -mvaxc-alignment -o 's_file'
$ endif
$ delete/nolog 'cpp_file';
$ gcc_as 's_file' -o 'objname'.OBJ
$ if arch .eqs. "vax"
$ then
$! Assemble again, preserving lowercase symbol names this time.
$ gcc_as -h3 's_file' -o 'objname'-c.OBJ
$ library libgcc2.olb 'objname'.obj,'objname'-c.obj
$ delete/nolog 'objname'.obj;,'objname'-c.obj;
$ else
$ library libgcc2.olb 'objname'.obj
$ delete/nolog 'objname'.obj;
$ endif
$ delete/nolog 's_file';
$!
$!
$goto loop1
$!
$! In case of error or abort, go here (In order to close file).
$!
$c_err: !'f$verify(0)
$close ifile$
$ exit %x2c
$!
$c_done:
$close ifile$
$
$
$ EXIT
$ !gcc-2.8.0: C++ libgcc2 code disabled since it's not adequately tested
$
$!
$ p1 = p1+" "+p2+" "+p3+" "+p4+" "+p5+" "+p6+" "+p7+" "+p8
$ p1 = " " + f$edit(p1,"COMPRESS,TRIM,UPCASE") + " "
$! (note: substring locations can only be equal when neither string is present)
$ if f$locate(" CC1PLUS ",p1).eq.f$locate(" CXX ",p1) then goto cxx_done
$ if f$search("libgcc2-cxx.list").eqs."" then goto cxx_done
$!
$ open/read ifile$ libgcc2-cxx.list
$cxx_line_loop:
$ read ifile$ line/end=cxx_done
$ i = 0
$cxx_file_loop:
$ flnm = f$element(i,",",line)
$ i = i + 1
$ if flnm.eqs."" .or. flnm.eqs."," then goto cxx_line_loop
$ write sys$output "$ gcc/plus/debug ''flnm'.cc"
$ objname = flnm
$!
$ gcc_cpp -+ "-I[]" "-I[.ginclude]" "-I[.cp.inc]" [.cp]'flnm'.cc 'cpp_file'
$ gcc_cxx 'cpp_file' -dumpbase 'objname' -fexceptions -
-quiet -mgnu -g "-O1" -mvaxc-alignment -o 's_file'
$ delete/nolog 'cpp_file';
$ gcc_as "-vGNU CC V''Version'" 's_file' -o 'objname'.OBJ
$! Assemble again, preserving lowercase symbol names this time.
$ gcc_as "-vGNU CC V''Version'" -h3 's_file' -o 'objname'-c.OBJ
$ delete/nolog 's_file';
$
$ library libgcc2.olb 'objname'.obj,'objname'-c.obj
$ delete/nolog 'objname'.obj;,'objname'-c.obj;
$!
$ goto cxx_file_loop
$!
$cxx_done:
$ close ifile$
$ exit
#
# makefile for GCC
#
# Created by Klaus K"ampf, kkaempf@progis.de
#
# choose gcc or dec c
#CC = gcc
CC = cc
# With or withou haifa scheduler ?
#HAIFA=,"HAIFA"
HAIFA=
PWD=sys$$disk:[]
RM=delete/nolog
ifeq ($(CC),gcc)
ifeq ($(ARCH),ALPHA)
CFLAGS=/define=("HAVE_CONFIG_H=1","USE_COLLECT2" $(HAIFA))
LIBS=,gnu_cc_library:libgcc.olb/lib,sys$$library:vaxcrtl.olb/lib,gnu_cc_library:crt0.obj
else
CFLAGS=/define=("HAVE_CONFIG_H=1","USE_COLLECT2" $(HAIFA))
LIBS=,gnu_cc_library:libgcc.olb/lib,sys$$library:vaxcrtl.olb/lib
endif
LFLAGS=/map/full
#LFLAGS=
else
ifeq ($(ARCH),ALPHA)
CFLAGS=/names=as_is/float=ieee/noopt/debug/define=("HAVE_CONFIG_H=1","USE_COLLECT2" $(HAIFA))\
/warning=disable=(missingreturn,implicitfunc,ptrmismatch,undefescap,longextern,duptypespec)
else
CFLAGS=/noopt/debug/define=("HAVE_CONFIG_H=1","USE_COLLECT2" $(HAIFA))
endif
LFLAGS=/nomap
LIBS=,sys$$library:vaxcrtl.olb/lib
endif
BISON = bison
BISON_FLAGS= /Yacc/Define/Verbose
RENAME= rename/New_Version
LINK = link #/noshare/nosysshr
EDIT = edit
SEARCH= search
ABORT = exit %x002C
echo = write sys$$output
CINCL1 = /Incl=([],[.config])
CINCL2 = /Incl=([],[.ginclude],[.config])
CINCL_SUB = /Incl=([],[-],[-.ginclude],[-.config])
CINCL_CP= /Incl=([],[.config],[.cp],[.cp.inc])
MDFILE = [.config.$(ARCH)]$(ARCH).md
ifeq ($(HAIFA),)
SCHED=sched
else
SCHED=haifa-sched
endif
GENOBJS=[]rtl.obj,obstack.obj
INDEPOBJS= []toplev.obj,version.obj,tree.obj,print-tree.obj,stor-layout.obj,\
fold-const.obj,function.obj,stmt.obj,except.obj,expr.obj,calls.obj,expmed.obj,\
explow.obj,optabs.obj,varasm.obj,rtl.obj,print-rtl.obj,rtlanal.obj,\
emit-rtl.obj,genrtl.obj,real.obj,regmove.obj,dbxout.obj,sdbout.obj,dwarfout.obj,\
dwarf2out.obj,xcoffout.obj,bitmap.obj,alias.obj,\
integrate.obj,jump.obj,cse.obj,loop.obj,unroll.obj,flow.obj,stupid.obj,\
combine.obj,regclass.obj,local-alloc.obj,global.obj,reload.obj,\
reload1.obj,caller-save.obj,insn-peep.obj,reorg.obj,$(SCHED).obj,\
final.obj,recog.obj,reg-stack.obj,insn-opinit.obj,insn-recog.obj,\
insn-extract.obj,insn-output.obj,insn-emit.obj,\
profile.obj,insn-attrtab.obj,\
aux-output.obj,getpwd.obj,convert.obj
CC1OBJS=[]c-parse.obj,c-lang.obj,c-lex.obj,c-pragma.obj,c-decl.obj,\
c-typeck.obj,c-convert.obj,c-aux-info.obj,c-common.obj,c-iterate.obj,\
obstack.obj
OBJCOBJS=
# list copied from cc1plus-objs.opt
CC1PLUSOBJS=[.cp]call.obj,[.cp]decl2.obj,\
[.cp]except.obj,[.cp]pt.obj,\
[.cp]spew.obj,[.cp]xref.obj,[.cp]class.obj,\
[.cp]expr.obj,[.cp]lex.obj,\
[.cp]ptree.obj,[.cp]tree.obj,[.cp]cvt.obj,\
[.cp]errfn.obj,[.cp]rtti.obj,[.cp]method.obj,\
[.cp]search.obj,[.cp]typeck.obj,[.cp]decl.obj,\
[.cp]error.obj,[.cp]friend.obj,[.cp]init.obj,[.cp]parse.obj,\
[.cp]sig.obj,[.cp]typeck2.obj,[.cp]repo.obj,\
[.cp]input.obj,\
[]obstack.obj,\
[]c-common.obj,[]c-pragma.obj
CCCPOBJS=[]cccp.obj,cexp.obj,version.obj,prefix.obj
ALLOCA=,[]alloca.obj
LIBIBERTY = [-.libiberty]libiberty.olb
CXX_LIB2FUNCS = [.cp]tinfo.obj,[.cp]tinfo2.obj,\
[.cp]new.obj,[.cp]new1.obj,[.cp]new2.obj,[.cp]exception.obj
.c.obj:
$(CC) $(CFLAGS) $(CINCL1) $</obj=$@
.cc.obj:
$(CC)/plus/CPP="-nostdinc++" $(CFLAGS) $(CINCL_CP) $</obj=$@
INSN_INCLUDES=insn-attr.h insn-codes.h insn-config.h insn-flags.h
#
#
#
all: cpp.exe cc1.exe float.h limits.h libgcc2.olb
allplus: cc1plus.exe libgccplus.olb
libplus: libgccplus.olb
cc1.exe: $(CC1OBJS) $(ALLOCA) $(INDEPOBJS)
$(LINK)$(LFLAGS)/exe=$@ version.opt/opt,cc1-objs.opt/Opt,independent.opt/Opt$(ALLOCA)$(LIBS)
cpp.exe: $(CCCPOBJS) $(ALLOCA)
$(LINK)$(LFLAGS)/exe=$@ $(CCCPOBJS),version.opt/opt$(ALLOCA)$(LIBS)
cc1plus.exe: $(CC1PLUSOBJS) $(ALLOCA) $(INDEPOBJS)
$(LINK)$(LFLAGS)/exe=$@ version.opt/opt,cc1plus-objs.opt/Opt,independent.opt/Opt$(ALLOCA)$(LIBS)
gcc.exe: gcc.obj version.obj choose-temp.obj pexecute.obj prefix.obj obstack.obj
$(LINK)$(LFLAGS)/exe=$@ $^$(ALLOCA)$(LIBS)
install: cpp.exe cc1.exe gcc.exe libgcc2.olb
$(CP) $^ GNU_CC_LIBRARY
installplus: cc1plus.exe libgccplus.olb
$(CP) $^ GNU_CC_LIBRARY
float.h: enquire.exe
mcr $(PWD)enquire.exe -f > $@
limits.h: enquire.exe
mcr $(PWD)enquire.exe -l > $@
enquire.exe: enquire.obj
$(LINK)$(LFLAGS)/exe=$@ enquire.obj$(ALLOCA)$(LIBS)
libgcc2.olb:
$$ @make-l2
libgccplus.olb: $(CXX_LIB2FUNCS)
lib/create libgccplus $(CXX_LIB2FUNCS)
genattr.exe: genattr.obj,$(GENOBJS)$(ALLOCA)
$(LINK) $(LFLAGS)/exe=$@ $^$(LIBS)
insn-attr.h: genattr.exe $(MDFILE)
mcr $(PWD)genattr.exe $(MDFILE) > $@
genflags.exe: genflags.obj,$(GENOBJS)$(ALLOCA)
$(LINK) $(LFLAGS)/exe=$@ $^$(LIBS)
insn-flags.h: genflags.exe $(MDFILE)
mcr $(PWD)genflags.exe $(MDFILE) > $@
gencodes.exe: gencodes.obj,$(GENOBJS)$(ALLOCA)
$(LINK) $(LFLAGS)/exe=$@ $^$(LIBS)
insn-codes.h: gencodes.exe $(MDFILE)
mcr $(PWD)gencodes.exe $(MDFILE) > $@
genconfig.exe: genconfig.obj,$(GENOBJS)$(ALLOCA)
$(LINK) $(LFLAGS)/exe=$@ $^$(LIBS)
insn-config.h: genconfig.exe $(MDFILE)
mcr $(PWD)genconfig.exe $(MDFILE) > $@
genpeep.exe: genpeep.obj,$(GENOBJS)$(ALLOCA)
$(LINK) $(LFLAGS)/exe=$@ $^$(LIBS)
insn-peep.c: genpeep.exe $(MDFILE)
mcr $(PWD)genpeep.exe $(MDFILE) > $@
genopinit.exe: genopinit.obj,$(GENOBJS)$(ALLOCA)
$(LINK) $(LFLAGS)/exe=$@ $^$(LIBS)
insn-opinit.c: genopinit.exe $(MDFILE)
mcr $(PWD)genopinit.exe $(MDFILE) > $@
genrecog.exe: genrecog.obj,$(GENOBJS)$(ALLOCA)
$(LINK) $(LFLAGS)/exe=$@ $^$(LIBS)
insn-recog.c: genrecog.exe $(MDFILE)
mcr $(PWD)genrecog.exe $(MDFILE) > $@
genextract.exe: genextract.obj,$(GENOBJS)$(ALLOCA)
$(LINK) $(LFLAGS)/exe=$@ $^$(LIBS)
insn-extract.c: genextract.exe $(MDFILE)
mcr $(PWD)genextract.exe $(MDFILE) > $@
genoutput.exe: genoutput.obj,$(GENOBJS)$(ALLOCA)
$(LINK) $(LFLAGS)/exe=$@ $^$(LIBS)
insn-output.c: genoutput.exe $(MDFILE)
mcr $(PWD)genoutput.exe $(MDFILE) > $@
genemit.exe: genemit.obj,$(GENOBJS)$(ALLOCA)
$(LINK) $(LFLAGS)/exe=$@ $^$(LIBS)
insn-emit.c: genemit.exe $(MDFILE)
mcr $(PWD)genemit.exe $(MDFILE) > $@
genattrtab.exe: genattrtab.obj,rtlanal.obj,$(GENOBJS)$(ALLOCA)
$(LINK) $(LFLAGS)/exe=$@ $^$(LIBS)
insn-attrtab.c: genattrtab.exe $(MDFILE)
mcr $(PWD)genattrtab.exe $(MDFILE) > $@
gengenrtl.exe: gengenrtl.obj,obstack.obj,$(ALLOCA)
$(LINK) $(LFLAGS)/exe=$@ $^$(LIBS)
genrtl.h genrtl.c: gengenrtl.exe
mcr $(PWD)gengenrtl.exe genrtl.h genrtl.c
cccp.obj: cccp.c config.h
aux-output.obj: aux-output.c insn-attr.h insn-flags.h insn-config.h
caller-save.obj: caller-save.c insn-config.h
calls.obj: calls.c insn-flags.h
combine.obj: combine.c insn-attr.h insn-flags.h insn-codes.h insn-config.h
cse.obj: cse.c insn-config.h
c-decl.obj: c-decl.c expr.h integrate.h insn-codes.h insn-config.h
c-lex.obj: c-lex.c genrtl.h
c-typeck.obj: c-typeck.c
dbxout.obj: dbxout.c insn-config.h
dwarfout.obj: dwarfout.c insn-config.h
dwarf2out.obj: dwarf2out.c insn-config.h
emit-rtl.obj: emit-rtl.c insn-config.h
except.obj: except.c insn-flags.h insn-codes.h insn-config.h
explow.obj: explow.c insn-flags.h insn-codes.h insn-config.h
expmed.obj: expmed.c insn-flags.h insn-codes.h insn-config.h
expr.obj: expr.c insn-flags.h insn-config.h
final.obj: final.c tm.h insn-attr.h insn-flags.h insn-codes.h insn-config.h
flow.obj: flow.c insn-config.h
function.obj: function.c insn-flags.h insn-codes.h insn-config.h insn-codes.h insn-config.h
genattrtab.obj: genattrtab.c insn-config.h
genextract.obj: genextract.c insn-config.h
global.obj: global.c insn-config.h
integrate.obj: integrate.c integrate.h insn-flags.h insn-config.h
jump.obj: jump.c insn-flags.h insn-config.h
local-alloc.obj: local-alloc.c insn-config.h
loop.obj: loop.c insn-flags.h insn-config.h
optabs.obj: optabs.c insn-flags.h insn-codes.h insn-config.h
print-rtl.obj: print-rtl.c
profile.obj: profile.c insn-flags.h insn-config.h
recog.obj: recog.c insn-attr.h insn-flags.h insn-codes.h insn-config.h
regclass.obj: regclass.c insn-config.h
reg-stack.obj: reg-stack.c insn-config.h
reload.obj: reload.c insn-codes.h insn-config.h
reload1.obj: reload1.c insn-flags.h insn-codes.h insn-config.h
reorg.obj: reorg.c insn-attr.h insn-flags.h insn-config.h
sched.obj: sched.c insn-attr.h insn-config.h
haifa-sched.obj: haifa-sched.c insn-attr.h insn-config.h
stmt.obj: stmt.c insn-flags.h insn-codes.h insn-config.h
stor-layout.obj: stor-layout.c
stupid.obj: stupid.c
toplev.obj: toplev.c insn-attr.h insn-config.h
unroll.obj: unroll.c insn-config.h
insn-attrtab.obj: insn-attrtab.c insn-attr.h insn-config.h
insn-output.obj: insn-output.c insn-attr.h insn-flags.h insn-codes.h
insn-emit.obj: insn-emit.c insn-flags.h insn-codes.h insn-config.h
insn-opinit.obj: insn-opinit.c insn-flags.h insn-codes.h insn-config.h
insn-output.obj: insn-config.h
insn-recog.obj: insn-config.h
varasm.obj: varasm.c tm.h
toplev.obj: toplev.c tm.h
cexp.c: cexp.y
$(BISON) $(BISON_FLAGS)/output=$@ $<
c-parse.c: c-parse.y
$(BISON) $(BISON_FLAGS)/output=$@ $<
[.cp]parse.c: [.cp]parse.y
$(BISON) $(BISON_FLAGS)/output=$@ $<
[.cp]parse.h: [.cp]parse.c
@$(ECHO) "Must copy YYEMPTY from [.cp]parse.c to [.cp]parse.h"
$$ stop
aux-output.c: [.config.$(ARCH)]$(ARCH).c
copy $< $@
expr.h: insn-codes.h
reload.h: insn-config.h
integrate.h: insn-config.h
config.h:
$$ @vmsconfig
cleancccp:
$$ purge
$(RM) cccp.obj;,cexp.obj;
$(RM) cpp.exe;
cleanlib:
$$ purge
$(RM) libgcc2.olb;
cleanlibplus:
$$ purge
$(RM) [.cp]tinfo.obj;
$(RM) [.cp]tinfo2.obj;
$(RM) [.cp]new.obj;
$(RM) [.cp]new1.obj;
$(RM) [.cp]new2.obj;
$(RM) [.cp]exception.obj;
$(RM) libgccplus.olb;
clean:
$$ purge
$$ purge [.cp]
$(RM) *.obj;*
$(RM) [.cp]*.obj;*
$(RM) [.cp]parse.output;*
$(RM) *.cpp;*
$(RM) *.s;*
$(RM) *.rtl;*
$(RM) a.out;
$(RM) *.combine;
$(RM) *.cpp;
$(RM) *.cse;
$(RM) *.cse2;
$(RM) *.dbr;
$(RM) *.flow;
$(RM) *.greg;
$(RM) *.jump;
$(RM) *.jump2;
$(RM) *.loop;
$(RM) *.lreg;
$(RM) *.rtl;
$(RM) *.sched;
$(RM) *.sched2;
$(RM) *.map;
$(RM) genattr.exe;,insn-attr.h;
$(RM) genflags.exe;,insn-flags.h;
$(RM) gencodes.exe;,insn-codes.h;
$(RM) genconfig.exe;,insn-config.h;
$(RM) genpeep.exe;,insn-peep.c;
$(RM) genopinit.exe;,insn-opinit.c;
$(RM) genrecog.exe;,insn-recog.c;
$(RM) genextract.exe;,insn-extract.c;
$(RM) genoutput.exe;,insn-output.c;
$(RM) genemit.exe;,insn-emit.c;
$(RM) genattrtab.exe;,insn-attrtab.c;
$(RM) gengenrtl.exe;,genrtl.c;,genrtl.h;
$(RM) cc1.exe;
$(RM) cpp.exe;
$(RM) cc1plus.exe;
$(RM) libgcc2.olb;
$(RM) libgccplus.olb;
$(RM) enquire.exe;,float.h;,limits.h;
#
# clean everything axpconfig.com creates
#
distclean: clean cleancccp
purge [...]
$(RM) config.h;
$(RM) tconfig.h;
$(RM) hconfig.h;
$(RM) tm.h;
$(RM) options.h;
$(RM) specs.h;
$(RM) aux-output.c;
[.cp]call.obj: [.cp]call.c
[.cp]decl2.obj: [.cp]decl2.c
[.cp]except.obj: [.cp]except.c insn-codes.h insn-flags.h
[.cp]pt.obj: [.cp]pt.c
[.cp]spew.obj: [.cp]spew.c
[.cp]xref.obj: [.cp]xref.c
[.cp]class.obj: [.cp]class.c
[.cp]expr.obj: [.cp]expr.c insn-codes.h
[.cp]lex.obj: [.cp]lex.c [.cp]parse.h
[.cp]ptree.obj: [.cp]ptree.c
[.cp]tree.obj: [.cp]tree.c
[.cp]cvt.obj: [.cp]cvt.c
[.cp]errfn.obj: [.cp]errfn.c
[.cp]rtti.obj: [.cp]rtti.c
[.cp]method.obj: [.cp]method.c insn-codes.h
[.cp]search.obj: [.cp]search.c
[.cp]typeck.obj: [.cp]typeck.c
[.cp]decl.obj: [.cp]decl.c
[.cp]error.obj: [.cp]error.c
[.cp]friend.obj: [.cp]friend.c
[.cp]init.obj: [.cp]init.c
[.cp]parse.obj: [.cp]parse.c
$(CC) $(CFLAGS) $(CINCL_CP) $^/obj=$@
[.cp]sig.obj: [.cp]sig.c
[.cp]typeck2.obj: [.cp]typeck2.c
[.cp]repo.obj: [.cp]repo.c
[.cp]input.obj: [.cp]input.c
$(TOUCH) $@
# g++ library
[.cp]tinfo.obj: [.cp]tinfo.cc
[.cp]tinfo2.obj: [.cp]tinfo2.cc
[.cp]new.obj: [.cp]new.cc
[.cp]new1.obj: [.cp]new1.cc
[.cp]new2.obj: [.cp]new2.cc
[.cp]exception.obj: [.cp]exception.cc
#EOF
#!/bin/sh
# patch-apollo-includes -- fix some (but not all!) Apollo brain damage.
FILES_TO_PATCH='sys/types.h setjmp.h'
mkdir sys
for i in $FILES_TO_PATCH;
do
cp /bsd4.3/usr/include/$i ./$i
done
patch -b -apollo <<'EOP'
*** /bsd4.3/usr/include/sys/types.h Fri Apr 8 20:29:06 1988
--- sys/types.h Wed Feb 26 21:17:57 1992
***************
*** 38,44 ****
--- 38,47 ----
typedef char * caddr_t;
typedef u_long ino_t;
typedef long swblk_t;
+ #ifndef _SIZE_T
+ #define _SIZE_T
typedef long size_t;
+ #endif
typedef long time_t;
typedef long dev_t;
typedef long off_t;
*** /bsd4.3/usr/include/setjmp.h Fri Feb 3 21:40:21 1989
--- setjmp.h Sun Feb 23 19:06:55 1992
***************
*** 24,30 ****
--- 24,39 ----
#endif
+ #ifdef __GNUC__
#ifdef _PROTOTYPES
+ extern int sigsetjmp (sigjmp_buf env, int savemask);
+ extern void siglongjmp (sigjmp_buf env, int val);
+ #else
+ extern int sigsetjmp();
+ extern void siglongjmp();
+ #endif /* _PROTOTYPES */
+ #else /* not __GNUC__ */
+ #ifdef _PROTOTYPES
extern int sigsetjmp(
sigjmp_buf env,
int savemask
***************
*** 37,43 ****
extern int sigsetjmp() #options(abnormal);
extern void siglongjmp() #options(noreturn);
#endif /* _PROTOTYPES */
!
#undef _PROTOTYPES
#ifdef __cplusplus
--- 46,52 ----
extern int sigsetjmp() #options(abnormal);
extern void siglongjmp() #options(noreturn);
#endif /* _PROTOTYPES */
! #endif /* not __GNUC__ */
#undef _PROTOTYPES
#ifdef __cplusplus
EOP
exit 0
$ !
$ ! Set up to compile GCC on VMS.
$ !
$ ! Set the def dir to proper place for use in batch. Works for interactive too.
$flnm = f$enviroment("PROCEDURE") ! get current procedure name
$set default 'f$parse(flnm,,,"DEVICE")''f$parse(flnm,,,"DIRECTORY")'
$ !
$set symbol/scope=(nolocal,noglobal)
$if f$trnlnm("IFILE$").nes."" then close/noLog ifile$
$ !
$ echo = "write sys$output"
$ !
$ arch_indx = 1 + ((f$getsyi("CPU").ge.128).and.1) ! vax==1, alpha==2
$ arch = f$element(arch_indx,"|","|vax|alpha|")
$ !
$ if f$search("config.h") .nes. "" then delete config.h.*
$ if arch .eqs. "vax"
$ then
$ copy [.config.'arch']xm-vms.h []config.h
$ echo "Linked `config.h' to `[.config.''arch']xm-vms.h'."
$else
$ open/write cfile []config.h
$ write cfile "#include "+"""config/"+arch+"/xm-"+arch+".h"+"""
$ write cfile "#include "+"""config/"+arch+"/xm-vms.h"+"""
$ close cfile
$ echo "Created `config.h'."
$ endif
$ !
$ if f$search("tconfig.h") .nes. "" then delete tconfig.h.*
$ create []tconfig.h
$DECK
/* tconfig.h == config.h :: target and host configurations are the same */
#include "config.h"
$EOD
$ echo "Created `tconfig.h'.
$ !
$ if f$search("hconfig.h") .nes. "" then delete hconfig.h.*
$ create []hconfig.h
$DECK
/* hconfig.h == config.h :: host and target configurations are the same */
#include "config.h"
$EOD
$ echo "Created `hconfig.h'.
$ !
$ if f$search("tm.h") .nes. "" then delete tm.h.*
$ !
$ edit/tpu/nojournal/nosection/nodisplay/command=sys$input -
[.config.'arch']vms.h /output=[]tm.h
$DECK
!
! Copy file, changing lines of the form
! #include "vax/*"
! or
! #include "alpha/*"
! into
! #include "config-*"
!
file := CREATE_BUFFER("file", GET_INFO(COMMAND_LINE, "file_name"));
targ := LINE_BEGIN & '#include' & SPAN(ASCII(32)+ASCII(9))
& '"' & ('vax' | 'alpha') & '/';
rang := CREATE_RANGE(BEGINNING_OF(file), END_OF(file));
LOOP
incl := SEARCH_QUIETLY(targ, FORWARD, EXACT, rang);
EXITIF incl = 0;
POSITION(BEGINNING_OF(incl));
ERASE(incl);
COPY_TEXT('#include "config-');
rang := CREATE_RANGE(END_OF(incl), END_OF(file));
ENDLOOP;
WRITE_FILE(file, GET_INFO(COMMAND_LINE, "output_file"));
QUIT
$ EOD
$ echo "Generated `tm.h' from `[.config.''arch']vms.h'."
$ !
$ !crude hack to allow compiling from [.cp] subdirectory
$ if f$search("config-''arch'.h") .nes. "" then delete config-'arch'.h;*
$ copy [.config.'arch']'arch'.h []config-'arch'.h
$ echo "Linked `config-''arch'.h' to `[.config.''arch']''arch'.h' for `tm.h'."
$ !
$ call make_lang_incl "options.h"
$ !
$ call make_lang_incl "specs.h"
$ !
$ if arch .eqs. "vax"
$ then
$ if f$search("''arch'.md") .nes. "" then delete 'arch'.md;*
$ copy [.config.'arch']'arch'.md []'arch'.md
$ echo "Copied `''arch'.md' from `[.config.''arch']''arch'.md'."
$ endif
$ !
$ if f$search("aux-output.c") .nes. "" then delete aux-output.c.*
$ copy [.config.'arch']'arch'.c []aux-output.c
$ echo "Linked `aux-output.c' to `[.config.''arch']''arch'.c'.
$ !
$ !
$ !
$ ! Create the file version.opt, which helps identify the executable.
$ !
$search version.c version_string,"="/match=and/output=t.tmp
$open ifile$ t.tmp
$read ifile$ line
$close ifile$
$delete t.tmp;
$line=f$element(1,"""",line) !extract the portion between 1st & 2nd quotes
$! Format of 'line' is "name-nn.nn.nn[.nn] [date text]" (without the quotes).
$! We want "name-nn.nn.nn[.nn][-date]"; "-date" suffix is optional.
$id = f$element(1,"-",line) !strip "name-" prefix
$if id.eqs."-" then id = line !no prefix found?
$id = f$element(0," ",id) + "-" + f$element(1," ",id) !first two tokens
$id = id - "- " !in case 2nd token was empty
$if f$length(id).gt.15 then id = f$extract(0,15,id) !length limitation
$!
$open/write ifile$ version.opt
$write ifile$ "ident="+""""+id+""""
$close ifile$
$purge version.opt
$!
$!
$! create linker options files that lists all of the components for all
$! possible compilers. We do this by editing the file Makefile.in, and
$! generating the relevant files from it.
$!
$!
$! Make a copy of the makefile if the sources are on a disk that is NFS
$! mounted on a unix machine.
$if f$search("Makefile.in").eqs."" .and. f$search("$M$akefile.in").nes."" -
then copy $M$akefile.in Makefile.in
$! This should be automated across all front-end subdirectories.
$! For now, it's hardcoded.
$if f$search("[.cp]Makefile.in").eqs."" .and. f$search("[.cp]$M$akefile.in").nes."" -
then copy [.cp]$M$akefile.in [.cp]Makefile.in
$!
$!
$echo "Now processing Makefile.in to generate linker option files."
$edit/TPU/noJournal/noSection/noDisplay/Command=sys$input: Makefile.in -
/Start_Position=('arch_indx') ! 1 for vax, 2 for alpha
!!
VARIABLE makefile_buf, opt_file_buf, complist_buf, extra_compilers; ! Globals.
VARIABLE arch; ! String 'vax' or 'alpha', set in configure_makefile().
!!
PROCEDURE process_makefile( )
!
! Interpret Makefile.in and subsidiary Make-lang.in templates.
!
LOCAL range1, cmark, makefilename;
makefilename := GET_INFO (COMMAND_LINE, 'FILE_NAME'); ! "Makefile.in"
makefile_buf := CREATE_BUFFER ("makefile", makefilename);
opt_file_buf := CREATE_BUFFER ("opt_file");
complist_buf := CREATE_BUFFER ("complist");
extra_compilers := CREATE_ARRAY;
!
SET (NO_WRITE, makefile_buf, ON); ! Used as workspace; don't save it.
SET (OUTPUT_FILE, complist_buf, "compilers.list");
!
! Make some textual substitutions.
!
configure_makefile ();
!
! Collect a list of supported compilers (``COMPILERS=xxx'' macro).
!
identify_compilers ();
!
! Plus other known compilers described by Make-lang.in makefile fragments.
! Add new entries as needed; args are (target name, subdirectory name).
!
additional_compiler ("cc1plus", "cp");
!
WRITE_FILE (complist_buf); ! Now save "compilers.list".
!
! Add to this list, as required. The file "Makefile.in" is searched for
! a tag that looks like "LINE_BEGIN + 'tag + (optional space) + "="".
! The contents are assumed to be a list of object files, and from this
! list a VMS linker options file is generated.
!
generate_option_file ("OBJS", "=", "independent.opt");
generate_option_file ("LIB2FUNCS", "=", "libgcc2.list");
generate_option_file ("CXX_LIB2FUNCS", "=", "libgcc2-cxx.list");
!
! Now change OBJS in the Makefile, so each language specific options file
! does not pick up all of the language independent files.
!
POSITION (BEGINNING_OF (makefile_buf));
COPY_TEXT ("OBJS="); ! New copy with empty value, seen before real OBJS.
SPLIT_LINE;
!
! Lastly, process each compiler-specific object dependency list.
!
POSITION (BEGINNING_OF (complist_buf));
LOOP
cmark := MARK (NONE);
EXITIF (cmark = END_OF (complist_buf));
! The current line contains the name of a compiler target, such as "cc1".
MESSAGE (CURRENT_LINE); ! Give some interactive feedback.
generate_option_file (CURRENT_LINE, ":", CURRENT_LINE + "-objs.opt");
POSITION (cmark);
MOVE_VERTICAL (1); ! Go to the next line.
ENDLOOP;
ENDPROCEDURE; !process_makefile
!!
PROCEDURE process_objc_lib( )
!
! Interpret objc/Makefile, after finishing the top makefile.
!
ON_ERROR
[TPU$_OPENIN]:
MESSAGE ("Cannot load objc/Makefile for ""ObjClib""; skipping it.");
RETURN;
ENDON_ERROR;
ERASE (makefile_buf); !discard top Makefile
POSITION (END_OF (makefile_buf));
READ_FILE ("[.objc]Make-lang.in"); !load objc one
MESSAGE ("objclib");
pat_replace (ASCII(9), " "); !change any <tab> to <space>
generate_option_file ("OBJC_O", "=", "objc-objs.opt");
POSITION (BEGINNING_OF (makefile_buf));
! Join any continuation lines; we want the header list to be one line.
pat_replace ("\" & LINE_END, );
generate_option_file ("OBJC_H", "=", "objc-hdrs.list");
ENDPROCEDURE; !process_objc_lib
!!
PROCEDURE configure_makefile( )
!
! Plug in some values normally handled by `configure'. Rather than
! replacing the dummy entries, insert the real entries before them.
!
IF (GET_INFO (COMMAND_LINE, 'START_RECORD') <> 2) THEN
arch := 'vax';
ELSE
arch := 'alpha';
ENDIF;
POSITION (BEGINNING_OF (makefile_buf));
COPY_TEXT ("target=" + arch + "-vms"); SPLIT_LINE;
COPY_TEXT ("out_file=aux-output.c"); SPLIT_LINE; ! 'arch'/'arch'.c
COPY_TEXT ("out_object_file=aux-output.o"); SPLIT_LINE; ! aux-output.obj
COPY_TEXT ("md_file=" + arch + ".md"); SPLIT_LINE; ! 'arch'/'arch'.md
COPY_TEXT ("tm_file=tm.h"); SPLIT_LINE; ! 'arch'/tm-vms.h
pat_replace ("@" &
SPAN("abcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ#~0123456789")
& "@", ); ! strip `configure' dummy values
ENDPROCEDURE; !configure_makefile
!!
PROCEDURE identify_compilers( )
!
! Retrieve the list of supported compilers from Makefile.in, and put them
! into file "compilers.list", one per line, for subsequent access from DCL.
!
LOCAL range1;
! Strip most comments from the makefile, to speed up subsequent processing.
POSITION (BEGINNING_OF (makefile_buf));
pat_replace (LINE_BEGIN & "#" & REMAIN & LINE_END, );
pat_replace ("$(exeext)", );
pat_replace ("@all_compilers@", );
!# ! Convert directory references to VMS syntax (actually, just strip it).
!# pat_replace (" $(srcdir)/", " ");
! Look up the ``COMPILERS=cc1 xyzzy'' Makefile macro and put
! its ``cc1 xyzzy'' value into the compilers buffer.
POSITION (BEGINNING_OF (complist_buf));
!#--at some point we may want to add this--
!# recursive_fetch_tag ("CCCP", "="); ! Include the preprocessor.
!# POSITION (END_OF (complist_buf));
recursive_fetch_tag ("COMPILERS", "=");
! Convert all spaces into newlines, then remove any blank lines.
pat_replace (SPAN(" "), LINE_END);
pat_replace (LINE_BEGIN & LINE_END, );
ENDPROCEDURE; !identify_compilers
!!
PROCEDURE additional_compiler( cname, subdir )
!
! Load Make-lang.in for compiler CNAME from SUBDIR and append it to the
! end of Makefile.in's buffer. Add CNAME to the "compilers.list" buffer.
!
ON_ERROR
! Don't abort if user removes the supporting subdirectory for a
! language she's not interested in.
[TPU$_OPENIN]:
MESSAGE ("Cannot load " + subdir + "/Make-lang.in for "
+ '"' + cname + '"' + "; skipping it.");
RETURN;
ENDON_ERROR;
POSITION (END_OF (makefile_buf));
SPLIT_LINE; ! Separate with a blank line.
READ_FILE ("[." + subdir + "]Make-lang.in"); ! Load Makefile fragment.
! Make sure that $(xxx_OTH_SRCS) expands to empty string by renaming $(it)
pat_replace ("_OTH_SRCS)", "_OTH_SRCS_dummy_)");
! Convert subdirectory references into VMS syntax.
pat_replace ("$(srcdir)/" + subdir + "/", "[." + subdir + "]");
! Temporary? hack for cp/Make-lang.in's mishandling of "input.c".
IF (subdir = 'cp') THEN
pat_replace ("[.cp]input.c", ); ! Discard this text.
ENDIF;
! Add this name to compilers.list.
POSITION (END_OF (complist_buf));
COPY_TEXT (cname);
! Make array entry indexed by compiler's file name; its value is arbitrary.
extra_compilers{cname} := subdir;
ENDPROCEDURE; !additional_compiler
!!
PROCEDURE generate_option_file( tag_name, punct, outfile_name )
!
! Produce a file listing the names of particular object files, for use
! as input to the linker and also for use in finding source names by
! make-cc1.com. Generally, any name suffix will be suppressed.
!
LOCAL range1, range2;
POSITION (BEGINNING_OF (opt_file_buf));
recursive_fetch_tag (tag_name, punct);
! First fix up for subdirectory/Make-lang.in.
IF (pat_replace ("stamp-objlist" & (SPAN(" ")|LINE_END), " ") > 0) THEN
recursive_fetch_tag ("stamp-objlist", ":");
ENDIF;
! Now fix up a few things in the output buffer.
pat_replace ("Makefile" & (SPAN(" ")|LINE_END), " ");
!# FILL (CURRENT_BUFFER, " ", 1, 80, 0); ! Condense things a bit.
pat_replace ("." & ("o"|"c"|"y") & ((SPAN(" ")&LINE_END)|LINE_END), LINE_END);
pat_replace ("." & ("o"|"c"|"y") & SPAN(" "), ",");
pat_replace (".h" & (SPAN(" ")|LINE_END), ".h,");
! Remove trailing commas, if present.
pat_replace ("," & ((SPAN(" ")&LINE_END)|LINE_END), LINE_END);
! Get rid of spaces and blank lines.
pat_replace (SPAN(" "), LINE_END);
pat_replace (LINE_BEGIN & LINE_END, );
! Second fix up for subdirectory/Make-lang.in;
! avoid "sticky defaults" when linker processes the resulting options file.
IF (extra_compilers{outfile_name - "-objs.opt"} <> TPU$K_UNSPECIFIED) THEN
POSITION (BEGINNING_OF (opt_file_buf));
range1 := CREATE_RANGE (MARK (NONE), END_OF (CURRENT_BUFFER), NONE);
LOOP
range2 := SEARCH_QUIETLY (LINE_BEGIN | ",", FORWARD, EXACT, range1);
EXITIF (range2 = 0);
POSITION (BEGINNING_OF (range2));
IF (CURRENT_CHARACTER = ",") THEN MOVE_HORIZONTAL (1); ENDIF;
! If it's not already "[.subdir]name", explicitly make it "[]name".
IF (CURRENT_CHARACTER <> "[") THEN COPY_TEXT ("[]"); ENDIF;
MOVE_HORIZONTAL (1);
MODIFY_RANGE (range1, MARK (NONE), END_OF (range1));
ENDLOOP;
ENDIF;
! Now write the output file.
SET (OUTPUT_FILE, opt_file_buf, outfile_name);
WRITE_FILE (opt_file_buf);
ERASE (opt_file_buf); ! Clear buffer out for next opt_file pass.
ENDPROCEDURE; !generate_option_file
!!
PROCEDURE recursive_fetch_tag( tag_n, punct )
!
! Look up TAG_N, copy it to OPT_FILE_BUF, and then translate any $(...)
! definitions that appear. The translation is put at the current point.
!
LOCAL mark1, mark2, range1, tag_range, tag_string;
fetch_tag (tag_n, punct);
! Substitute any makefile symbols $(...).
POSITION (BEGINNING_OF (CURRENT_BUFFER));
LOOP
range1 := SEARCH_QUIETLY ("$(" &
SPAN("abcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ#~0123456789")
& ")", FORWARD, EXACT);
EXITIF (range1 = 0);
POSITION (BEGINNING_OF (range1));
MOVE_HORIZONTAL (2); ! Past opening "$(".
mark1 := MARK (NONE);
POSITION (END_OF (range1));
MOVE_HORIZONTAL (-1); ! In front of closing ")".
mark2 := MARK (NONE);
tag_range := CREATE_RANGE (mark1, mark2, NONE);
POSITION (END_OF (range1));
tag_string := STR (tag_range);
ERASE (range1);
fetch_tag (tag_string, "=");
POSITION (BEGINNING_OF (CURRENT_BUFFER));
ENDLOOP;
ENDPROCEDURE; !recursive_fetch_tag
!!
PROCEDURE fetch_tag( tag_n, punct )
!
! Looks up the translation of a tag, and inserts it at the current location
! in the buffer.
!
LOCAL mark0, mark1, mark2, range2;
mark0 := MARK (NONE); ! Remember where we started; restore before return.
POSITION (BEGINNING_OF (makefile_buf));
! The tag definition always starts in the first column, and might have
! optional space(es) before "=" or ":" punctuation.
range2 := SEARCH_QUIETLY (LINE_BEGIN & tag_n & ((SPAN(" ") & punct) | punct),
FORWARD, EXACT);
IF (range2 = 0) THEN
POSITION (mark0);
RETURN;
ENDIF;
POSITION (END_OF (range2));
MOVE_HORIZONTAL (1); ! Move beyond "TAG=".
mark1 := MARK (NONE);
POSITION (BEGINNING_OF (range2));
LOOP
MOVE_VERTICAL (1);
MOVE_HORIZONTAL (-2);
EXITIF (CURRENT_CHARACTER <> "\");
ERASE_CHARACTER (1);
MOVE_HORIZONTAL (1);
ENDLOOP;
MOVE_HORIZONTAL (1);
mark2 := MARK (NONE);
range2 := CREATE_RANGE (mark1, mark2, NONE);
POSITION (mark0);
IF (LENGTH (range2) <> 0) THEN
COPY_TEXT (range2);
ENDIF;
ENDPROCEDURE; !fetch_tag
!!
PROCEDURE pat_replace( oldstring, newstring )
!
! Replace all occurrences of a pattern.
!
LOCAL range1, range2, kill_it, count;
count := 0;
kill_it := (GET_INFO (newstring, 'TYPE') = UNSPECIFIED); ! Omitted arg.
range1 := CREATE_RANGE (BEGINNING_OF (CURRENT_BUFFER),
END_OF (CURRENT_BUFFER), NONE);
LOOP
range2 := SEARCH_QUIETLY (oldstring, FORWARD, EXACT, range1);
EXITIF (range2 = 0);
count := count + 1;
POSITION (BEGINNING_OF (range2));
ERASE (range2);
IF (newstring = LINE_END) THEN
SPLIT_LINE;
ELSE IF (NOT kill_it) THEN
COPY_TEXT (newstring);
ENDIF; ENDIF;
MODIFY_RANGE (range1, MARK (NONE), END_OF (range1));
ENDLOOP;
RETURN count;
ENDPROCEDURE; !pat_replace
!!
!
! This is the main routine.
!
process_makefile ();
process_objc_lib (); !this uses a different makefile
QUIT; ! All done; don't write any modified buffers.
!!
$ echo ""
$!
$! Remove excessive versions of the option files...
$!
$ purge *.opt,*.list
$!
$!
$!
$ if f$search("config.status") .nes. "" then delete config.status.*
$ create config.status
$ open/append ifile$ config.status
$ write ifile$ "Links are now set up for use with a ''arch' running VMS."
$ close ifile$
$ type config.status
$ echo ""
$!
$ exit
$
$!
$! Construct a header file based on subdirectory contents
$!
$make_lang_incl: subroutine
$ if f$search(p1).nes."" then delete 'p1';*
$ create 'p1' !empty file with ordinary text-file attributes
$ open/Append ifile$ 'p1'
$ write ifile$ "/* ''p1' */"
$ hfile = f$search("[]''p1'")
$ topdir = f$parse(hfile,,,"DIRECTORY") - "]"
$lang_incl_loop:
$ hfile = f$search("[.*]lang-''p1'")
$ if hfile.eqs."" then goto lang_incl_done
$ dir = f$parse(hfile,,,"DIRECTORY") - "]"
$! convert absolute path to relative one, yielding "[.subdir]"
$ dir = "[" + f$edit(dir - topdir,"LOWERCASE") + "]"
$ write ifile$ "#include ""''dir'lang-''p1'"""
$ goto lang_incl_loop
$lang_incl_done:
$ close ifile$
$ echo "Created `''p1''."
$ endsubroutine !make_lang_incl
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment