# $Header: /cvs/stx/stx/libcomp/Make.proto,v 1.54 1997-09-20 21:03:31 cg Exp $
#
# -------------- no need to change anything below ----------
TOP=..
SUBDIRS=
LIBNAME=libcomp
STCOPT=$(LIBCOMP_STCOPT)
ZFLAG=-varPrefix=$(LIBNAME)
STCLOCALOPT='-package=stx:libcomp' $(COMMONSYMBOLS) $(SEPINITCODE) $(ZFLAG)
LINKOBJRULE=$(SEPINITLINKOBJRULE)
LOCALDEFS=$(DLDEFS)
DELIVERBINARIES=lib*.$(O) lib*.so lib*.a $(LIBCOMP_EXTRA_TARGETS)
all:: classLibRule $(LIBCOMP_EXTRA_TARGETS)
#
# although all files are compiled in here,
# not everything goes into the target library
# ObjFLoader is optional
#
LINKOBJS=`ls *.o \
| grep -v ObjFLoader.$(O) \
| grep -v libcompInit.$(O) \
| grep -v i_ | $(TOP)/rules/tr_NL_2_Space`
#
# these are uncritical - save some bytes by compiling with optspace
#
UNCRITICALOBJS=\
Explainer.$(O)
OBJS= \
Scanner.$(O) \
Parser.$(O) \
BCompiler.$(O) \
Explainer.$(O) \
ProgramNodeEnumerator.$(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) \
ObjFHandle.$(O) \
$(EXTRA_LIBCOMP)
#
# only needed for NeXT2.1 - assembler dumps core with long name ?!?!
#
# VarNode.$(O):
# $(STC) -CC="$(CC)" $(STCFLAGS) $(SOMESHORTNAMES) $(CFLAGS) -c $*.st
#
# ObjFLoader is a separate (shared) Object - compile without sepInitCode
# and without -Zlibcomp (to speedup ld.so on SGI, by avoiding conflicts)
#
ObjFLoader.$(O):
$(MAKE) $(SPEEDOPT_O_RULE) STCOPT="$(STCOPT)" SEPINITCODE=-sepInitCode OPT="$(OPT)" STFILE=ObjFLoader ZFLAG=
ObjFLoader.c:
$(MAKE) $(C_RULE) STCOPT="$(STCOPT)" SEPINITCODE=-sepInitCode OPT="$(OPT)" STFILE=ObjFLoader
#
# on HP, big classes blow the C-preprocessor (stops with 'too much defining' error)
#
#HP:: HPbigFiles
#
#HPbigFiles:
# $(MAKE) $(BIG_STFILE_RULE) BIG_FILE=Parser CC=$(CC) OPT="$(OPT)"
# $(MAKE) $(BIG_STFILE_RULE) BIG_FILE=BCompiler CC=$(CC) OPT="$(OPT)"
AIX_SHARED_OBJFILELOADER:
$(MAKE) ObjFLoader$(O_EXT) \
ENTRY_INIT=ObjectFileLoader \
AIX_LOCAL_LIBS=""
AIX:: $(AIX_OBJFILELOADER_RULE)
#
# install the extra objects
#
qinstall:: $(DESTLIBDIR)
if [ "$(EXTRA_LIBCOMP)"x != "x" ]; then \
$(INSTALL) $(EXTRA_LIBCOMP) $(DESTLIBDIR); \
fi
#
# ObjectFileLoader is not included in
# the classLibrary (but as extra objects)
#
specialClassList:
$(MAKE) genClassList
grep -v ObjectFileLoader < classList.stc > ttt
mv ttt classList.stc
CLASSLISTRULE=specialClassList
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
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)
# BEGINMAKEDEPEND --- do not remove this line; make depend needs it
AssignNd.$(O): AssignNd.st $(STCHDR) ../include/ParseNode.H ../include/Object.H
ProgramNodeEnumerator.$(O): ProgramNodeEnumerator.st $(STCHDR) ../include/Object.H
BCompiler.$(O): BCompiler.st $(STCHDR) ../include/Parser.H ../include/Scanner.H ../include/Object.H
BinaryNd.$(O): BinaryNd.st $(STCHDR) ../include/MessageNd.H ../include/ParseNode.H ../include/Object.H
BlockNode.$(O): BlockNode.st $(STCHDR) ../include/ParseNode.H ../include/Object.H
CascadeNd.$(O): CascadeNd.st $(STCHDR) ../include/MessageNd.H ../include/ParseNode.H ../include/Object.H
CodeStream.$(O): CodeStream.st $(STCHDR) ../include/WriteStr.H ../include/PosStream.H ../include/PeekStr.H ../include/Stream.H ../include/Object.H
ConstNode.$(O): ConstNode.st $(STCHDR) ../include/PrimaryNd.H ../include/ParseNode.H ../include/Object.H
Explainer.$(O): Explainer.st $(STCHDR) ../include/Parser.H ../include/Scanner.H ../include/Object.H
ImmArray.$(O): ImmArray.st $(STCHDR) ../include/Array.H ../include/ArrColl.H ../include/SeqColl.H ../include/Coll.H ../include/Object.H
LazyMethod.$(O): LazyMethod.st $(STCHDR) ../include/Method.H ../include/CompCode.H ../include/ExecFunc.H ../include/Object.H
MessageNd.$(O): MessageNd.st $(STCHDR) ../include/ParseNode.H ../include/Object.H
MethodNode.$(O): MethodNode.st $(STCHDR) ../include/ParseNode.H ../include/Object.H
NullScope.$(O): NullScope.st $(STCHDR) ../include/Object.H
ObjFLoader.$(O): ObjFLoader.st $(STCHDR) ../include/Object.H
ObjFHandle.$(O): ObjFHandle.st $(STCHDR) ../include/Object.H
ParseNode.$(O): ParseNode.st $(STCHDR) ../include/Object.H
Parser.$(O): Parser.st $(STCHDR) ../include/Scanner.H ../include/Object.H
PrimNd.$(O): PrimNd.st $(STCHDR) ../include/StatNode.H ../include/ParseNode.H ../include/Object.H
PrimaryNd.$(O): PrimaryNd.st $(STCHDR) ../include/ParseNode.H ../include/Object.H
ProgNodeBldr.$(O): ProgNodeBldr.st $(STCHDR) ../include/Object.H
RetNode.$(O): RetNode.st $(STCHDR) ../include/StatNode.H ../include/ParseNode.H ../include/Object.H
Scanner.$(O): Scanner.st $(STCHDR) ../include/Object.H
SelfNode.$(O): SelfNode.st $(STCHDR) ../include/PrimaryNd.H ../include/ParseNode.H ../include/Object.H
SrcFLoader.$(O): SrcFLoader.st $(STCHDR) ../include/Object.H
StatNode.$(O): StatNode.st $(STCHDR) ../include/ParseNode.H ../include/Object.H
SuperNode.$(O): SuperNode.st $(STCHDR) ../include/SelfNode.H ../include/PrimaryNd.H ../include/ParseNode.H ../include/Object.H
Switch.$(O): Switch.st $(STCHDR) ../include/Object.H
UnaryNd.$(O): UnaryNd.st $(STCHDR) ../include/MessageNd.H ../include/ParseNode.H ../include/Object.H
UndefVar.$(O): UndefVar.st $(STCHDR) ../include/Object.H
VarNode.$(O): VarNode.st $(STCHDR) ../include/PrimaryNd.H ../include/ParseNode.H ../include/Object.H
Variable.$(O): Variable.st $(STCHDR) ../include/Object.H
# ENDMAKEDEPEND --- do not remove this line; make depend needs it