Make.proto
author claus
Sun, 23 Jul 1995 04:24:56 +0200
changeset 98 ccc7f9389a8e
parent 96 ae3b3d960476
child 102 77e4d1119ff2
permissions -rw-r--r--
.

# $Header: /cvs/stx/stx/libcomp/Make.proto,v 1.25 1995-07-23 02:24:56 claus Exp $
#
# -------------- no need to change anything below ----------

TOP=..
SUBDIRS=

LIBNAME=libcomp

STCOPT=$(LIBCOMP_STCOPT)
STCLOCALOPT='-Pcompiler-classes-(libcomp)' $(COMMONSYMBOLS)

LOCALDEFS=$(DLDEFS)

all::       abbrev.stc $(UNCRITICALOBJS) objs classList.stc $(OBJTARGET) $(LIBCOMP_MORE)

#
# although all files are compiled in here,
# not everything goes into the target library
# ObjFLoader is optional
#
OBJFILES=`ls *.o                                 \
	  |  grep -v ObjFLoader.$(O)             \
	  |  grep -v libcompInit.$(O)`

#
# these are uncritical - save some bytes by compiling with optspace
#
UNCRITICALOBJS=                                        \
	     Explainer.$(O)                            \
	     UndefVar.$(O)                             \
	     SrcFLoader.$(O)                      

OBJS=                                                  \
	      Scanner.$(O)                             \
		Parser.$(O)                            \
		  BCompiler.$(O)                       \
		  Explainer.$(O)                       \
	      Variable.$(O)                            \
	      ParseNode.$(O)                           \
		PrimaryNd.$(O)                         \
		  VarNode.$(O)                         \
		  SelfNode.$(O)                        \
		    SuperNode.$(O)                     \
		  ConstNode.$(O)                       \
		StatNode.$(O)                          \
		  RetNode.$(O)                         \
		  PrimNd.$(O)                          \
		AssignNd.$(O)                          \
		BlockNode.$(O)                         \
		MessageNd.$(O)                         \
		  UnaryNd.$(O)                         \
		  BinaryNd.$(O)                        \
		  CascadeNd.$(O)                       \
	      UndefVar.$(O)                            \
	      LazyMethod.$(O)                          \
	      SrcFLoader.$(O)                            \
	      ImmArray.$(O)                            \
	      $(EXTRA_LIBCOMP)

# only needed for NeXT - assembler dumps core with long name ?!?!
#
VarNode.$(O):
	    $(STC) -CC="$(CC)" $(STCFLAGS) $(SOMESHORTNAMES) $(CFLAGS) -c $*.st

#
# these are not time critical
#
$(UNCRITICALOBJS):
	@$(MAKE) UNCRITICAL NAME=$*.st

UNCRITICAL:
	$(STC) -CC="$(CC)" $(STCFLAGS) +optspace2 $(CFLAGS) -c $(NAME)

#
# install the extra objects
#
qinstall::  $(DESTLIBDIR)
	    if [ "$(EXTRA_LIBCOMP)"x != "x" ]; then             \
		$(INSTALL) $(EXTRA_LIBCOMP) $(DESTLIBDIR);      \
	    fi

#
# ObjectFile and ObjectFileLoader are not included in
# the classLibrary (but as extra objects)
#
classList.stc: Make.proto
	    $(MAKE) genClassList
	    grep -v ObjectFileLoader < classList.stc > ttt
	    grep -v ObjectFile       < ttt > classList.stc
	    rm -f ttt

cleanjunk::
	    -rm -f *.c *.H

clean::
	    -mv ObjFloader.o __ObjFLoader.o
	    -rm -f [A-Z]*.o
	    -mv __ObjFLoader.o ObjFloader.o
	    -rm -f *.c *.H abbrev.stc classList.stc

clobber::
	    -rm -f *.c *.H abbrev.stc classList.stc

tar:
	(cd $(TOP); tar cvfh DISTRIB/libcomp.tar \
				libcomp/.dir.info \
				libcomp/*.st \
				libcomp/Make.proto)

#
# next thing I'll build into stc is a makedepend feature for this ...
#

I = $(INCLUDE)

STCHDR=$(I)/stc.h $(I)/stcIntern.h $(CPUINTERN_H)
OBJECT=$(I)/Object.H $(STCHDR)

SCANNER=$(I)/Scanner.H $(OBJECT)
PARSER=$(I)/Parser.H $(SCANNER)
PARSENODE=$(I)/ParseNode.H $(OBJECT)
PRIMARYNODE=$(I)/PrimaryNd.H $(PARSENODE)
MESSAGENODE=$(I)/MessageNd.H $(PARSENODE)

ObjFLoader.$(O):   ObjFLoader.st $(OBJECT)
LazyMethod.$(O):   LazyMethod.st $(I)/Method.H $(I)/CompCode.H $(I)/ExecFunc.H $(OBJECT)
UndefVar.$(O):     UndefVar.st $(OBJECT)
Scanner.$(O):      Scanner.st $(OBJECT)
Parser.$(O):       Parser.st $(SCANNER)
BCompiler.$(O):    BCompiler.st $(PARSER)
Variable.$(O):     Variable.st $(OBJECT)
ParseNode.$(O):    ParseNode.st $(OBJECT)
StatNode.$(O):     StatNode.st $(PARSENODE)
AssignNd.$(O):     AssignNd.st $(PARSENODE)
BlockNode.$(O):    BlockNode.st $(PARSENODE)
PrimaryNd.$(O):    PrimaryNd.st $(PARSENODE)
VarNode.$(O):      VarNode.st $(PRIMARYNODE)
SelfNode.$(O):     SelfNode.st $(PRIMARYNODE)
ConstNode.$(O):    ConstNode.st $(PRIMARYNODE)
VariableNode.$(O): VariableNode.st $(PRIMARYNODE)
SuperNode.$(O):    SuperNode.st $(I)/SelfNode.H $(PRIMARYNODE)
MessageNd.$(O):    MessageNd.st $(PARSENODE)
CascadeNd.$(O):    CascadeNd.st $(MESSAGENODE)
BinaryNd.$(O):     BinaryNd.st $(MESSAGENODE)
UnaryNd.$(O):      UnaryNd.st $(MESSAGENODE)
PrimNd.$(O):       PrimNd.st $(PARSENODE) $(I)/StatNode.H
RetNode.$(O):      RetNode.st $(PARSENODE) $(I)/StatNode.H
CompErr.$(O):      CompErr.st $(OBJECT)
ImmArray.$(O):     ImmArray.st $(I)/Array.H $(OBJECT)

CMethod.$(O):      CMethod.st $(I)/Method.H $(OBJECT)
MCompiler.$(O):    MCompiler.st $(PARSER)
Explainer.$(O):    Explainer.st $(PARSER)

SrcFLoader.$(O):   SrcFLoader.st $(OBJECT)