Make.proto
author claus
Sat, 11 Dec 1993 02:53:38 +0100
changeset 0 0cb137a77319
child 2 353a88ada7c6
permissions -rw-r--r--
Initial revision

#
# %W% %E%
#
# -------------- no need to change anything below ----------

OTHERS=-DSTATISTIC -DDEBUG
OTHERS=-DDEBUG
SUBDIRS=

CLIENTOBJS=

LIBIBASICOBJ=	$(LIBBASICDIR)/i_libbasic$(OBJNAME)
LIBICOMPOBJ=	$(LIBCOMPDIR)/i_libcomp$(OBJNAME)
LIBIVIEWOBJ=	$(LIBVIEWDIR)/i_libview$(OBJNAME)
LIBIWIDGETOBJ=	$(LIBWIDGETDIR)/i_libwidg$(OBJNAME)

LIBOBJ=	$(LIBBASICOBJ) $(LIBCOMPOBJ) $(LIBVIEWOBJ) $(LIBWIDGETOBJ) $(LIBRUN)
LIBIOBJ=$(LIBIBASICOBJ) $(LIBICOMPOBJ) $(LIBIVIEWOBJ) $(LIBIWIDGETOBJ)
LIBAR=	$(LIBBASIC) $(LIBCOMP) $(LIBVIEW) $(LIBWIDG)

FULLLIB=libwidg.a libview.a libcomp.a libbasic.a

TOP=..

STARTUP_CLASS=Smalltalk
STARTUP_SELECTOR="start"

all::       $(TARGET) abbrev.stc resources newSource bitmaps binary

allNew:     $(TARGET) abbrev.stc newResources newSource newBitmaps binary

smalltalk:  main.$(O) classList.$(O) $(LIBOBJS) $(LIBRUN) $(EXTRALIBS)
	    $(LD) $(ST_LDFLAG) $(LDFLAGS) -o smalltalk$(EXE) \
		  $(CRT0) main.$(O) classList.$(O) \
		  $(LIBOBJS) $(EXTRA_OBJ) $(CLIENTOBJS) \
		  ../goodies/Persistency/libdbase$(OBJNAME) \
		  $(LIBRUNDIR)/hidata.$(O) $(LIBRUN) \
		  $(DBLIB) \
		  $(MATHLIB) $(EXTRALIBS) $(SYSLIBS) $(CRTN)

fulltalk:  main.$(O) fclassList.$(O) $(LIBOBJS) $(LIBRUN) $(EXTRALIBS)
	    $(LD) $(ST_LDFLAG) $(LDFLAGS) -o smalltalk$(EXE) \
		  $(CRT0) main.$(O) fclassList.$(O) \
		  $(LIBOBJS) $(EXTRA_OBJ) $(CLIENTOBJS) \
		  ../goodies/Persistency/libdbase$(OBJNAME) \
		  ../goodies/Benchmarks/DeltaBlue/libDeltaBlue$(OBJNAME) \
		  ../goodies/Benchmarks/Richards/libRichards$(OBJNAME) \
		  ../goodies/Benchmarks/Self/libSelfBench$(OBJNAME) \
		  ../goodies/Benchmarks/Dhrystones/dhrystones$(OBJNAME) \
		  ../goodies/Benchmarks/misc/libPDBench$(OBJNAME) \
		  $(LIBRUNDIR)/hidata.$(O) $(LIBRUN) \
		  $(DBLIB) \
		  $(MATHLIB) $(EXTRALIBS) $(SYSLIBS) $(CRTN)

minitalk:   main.$(O) miniclassList.$(O) $(LIBBASICOBJ) $(LIBCOMPOBJ) $(LIBRUN)
	    $(LD) $(ST_LDFLAG) $(LDFLAGS) -o minitalk$(EXE) \
		  $(CRT0) main.$(O) miniclassList.$(O) \
		  $(LIBBASICDIR)/libbasic$(OBJNAME) \
		  $(LIBCOMPDIR)/libcomp$(OBJNAME) \
		  $(LIBRUNDIR)/hidata.$(O) \
		  $(LIBRUN) $(MATHLIB) $(EXTRALIBS) $(SYSLIBS) $(CRTN)

tinytalk:   main.$(O) tinyclassList.$(O) $(LIBRUN) $(FULLLIB)
	    $(LD) $(ST_LDFLAG) $(LDFLAGS) -o tinytalk$(EXE) \
		  $(CRT0) main.$(O) tinyclassList.$(O) \
		  $(FULLLIB) \
		  $(LIBRUNDIR)/hidata.$(O) $(LIBRUN) \
		  $(MATHLIB) $(EXTRALIBS) $(SYSLIBS) $(CRTN)

nxtalk:     main.$(O) nxclassList $(LIBBASICOBJ) $(LIBCOMPOBJ) $(LIBRUN)
	    $(LD) $(ST_LDFLAG) $(LDFLAGS) -o nxtalk$(EXE) \
		  $(CRT0) main.$(O) nxclassList.$(O) \
		  $(LIBBASICDIR)/libbasic$(OBJNAME) \
		  $(LIBCOMPDIR)/libcomp$(OBJNAME) \
		  $(LIBVIEWDIR)/libview$(OBJNAME) \
		  $(LIBRUNDIR)/hidata.$(O) \
		  $(LIBRUN) $(MATHLIB) $(EXTRALIBS) $(SYSLIBS) $(CRTN)

smalltalk_8mb:  main.$(O) classList.$(O) $(LIBOBJS) $(LIBIOBJ) $(LIBRUN) $(EXTRALIBS)
	    $(LD) $(ST_LDFLAG) $(LDFLAGS) -o smalltalk$(EXE) \
		  $(CRT0) main.$(O) \
		  $(LIBIOBJS) \
		  $(LIBRUNDIR)/hidata.$(O) \
		  $(LIBOBJS) $(LIBRUN)  \
		  $(MATHLIB) $(EXTRALIBS) $(SYSLIBS) $(CRTN)

bigtalk:  main.$(O) classList.$(O) $(LIBOBJS) $(CLIENTSOBJS) $(LIBRUN) $(EXTRALIBS)
	    $(LD) $(ST_LDFLAG) $(LDFLAGS) -o smalltalk$(EXE) \
		  $(CRT0) main.$(O) \
		  $(LIBOBJS) \
		  $(CLIENTOBJS) \
		  $(LIBRUNDIR)/hidata.$(O) $(LIBRUN) \
		  $(MATHLIB) $(EXTRALIBS) $(SYSLIBS) $(CRTN)

#
# the following stuff is for transputer (inmos ctools)
#
# I had a minitalk running once, but did not update -
# so it may not work anymore
#
centry.lku: globals.$(O) main.$(O) classlist.lnk
	    ilink -KB 500 -I -f /usr/local/inmos/lib/startup.lnk \
		main.$(O) globals.$(O) \
		-f classlist.lnk \
		$(LIBRUNDIR)/hidata.$(O) \
		$(LIBRUN) $(MATHLIB) $(SYSLIBS) $(CRTN)
		
puter:	    centry.lku
	    -cp /usr/local/inmos/lib/linkboot.lib .
	    -cp /usr/local/inmos/lib/sysproc.lib .
	    icollect -T centry.lku 
	    mv centry.btl smalltalk.btl
	    -rm linkboot.lib sysproc.lib

classlist.lnk:
	    ls ../libbasic/*.tco > classlist.lnk
	    ls ../libcomp/*.tco >> classlist.lnk

globals.c:
	    echo "#include \"stc.h\" " > globals.c
	    cat $(LIBRUNDIR)/globalData.c \
	        $(LIBBASICDIR)/globalData.c \
		$(LIBCOMPDIR)/globalData.c | sort | uniq >> globals.c

#
# end of transputer special
#

classList: classList.c
	    $(CC) $(_C) $(CFLAGS) classList.c
	    rm -f classList.c

fclassList: fclassList.c
	    $(CC) $(_C) $(CFLAGS) fclassList.c
	    rm -f fclassList.c

nxclassList: nxclassList.c
	    $(CC) $(_C) $(CFLAGS) nxclassList.c
	    rm -f nxclassList.c

miniclassList: miniclassList.c
	    $(CC) $(_C) $(CFLAGS) miniclassList.c
	    rm -f miniclassList.c

tinyclassList: tinyclassList.c
	    $(CC) $(_C) $(CFLAGS) tinyclassList.c
	    rm -f tinyclassList.c

fclassList.c: fclassList.stc
	    $(MAKE) fclassList.stc
	    $(MAKE) classListEdit CLASSLIST=fclassList

miniclassList.c: miniclassList.stc
	    $(MAKE) miniclassList.stc
	    $(MAKE) classListEdit CLASSLIST=miniclassList

nxclassList.c: nxclassList.stc
	    $(MAKE) nxclassList.stc
	    $(MAKE) classListEdit CLASSLIST=nxclassList

tinyclassList.c: tinyclassList.stc
	    $(MAKE) tinyclassList.stc
	    $(MAKE) classListEdit CLASSLIST=tinyclassList

#
# this creates the class archives
#
libbasic.a:
	    $(AR) rv libbasic.a  $(LIBBASICDIR)/[A-Z]*.o
	    $(RANLIB) libbasic.a

libcomp.a:
	    $(AR) rv libcomp.a $(LIBCOMPDIR)/[A-Z]*.o
	    $(RANLIB) libcomp.a

libview.a:
	    $(AR) rv libview.a $(LIBVIEWDIR)/[A-Z]*.o
	    $(RANLIB) libview.a

libwidg.a:
	    $(AR) rv libwidg.a $(LIBWIDGETDIR)/[A-Z]*.o
	    $(RANLIB) libwidg.a

#
# make list of classes for a standard smalltalk
#
classList.stc: $(LIBBASICDIR)/classList.stc $(LIBCOMPDIR)/classList.stc  \
	       $(LIBVIEWDIR)/classList.stc $(LIBWIDGETDIR)/classList.stc \
	       $(TOP)/goodies/Persistency/classList.stc \
	       $(EXTRACLASSLISTS) $(CLIENTCLASSLISTS)
	    -cat $(LIBBASICDIR)/classList.stc \
		 $(LIBCOMPDIR)/classList.stc \
		 $(LIBVIEWDIR)/classList.stc \
		 $(LIBWIDGETDIR)/classList.stc \
	         $(TOP)/goodies/Persistency/classList.stc \
		 $(EXTRACLASSLISTS)            \
		 $(CLIENTCLASSLISTS)          > classList.stc
	    -if [ "$(EXTRA_CLASSES)"X != X ]; then 			\
	        for i in $(EXTRA_CLASSES); do 		\
	            echo $$i 		      >> classList.stc; \
	        done;						\
	     fi

#
# make list of classes for a standard smalltalk using NeXTStep
#
nxclassList.stc:
	    rm -f classList.stc
	    $(MAKE) miniclassList.stc EXTRA_CLASSES='NeXTWorkstation'
	    -cat ../libview/classList.stc >> classList.stc

#
# make list of classes for a full smalltalk (includes Benchmarks & some goodies)
#
fclassList.stc: $(TOP)/libbasic/classList.stc \
	        $(TOP)/libcomp/classList.stc \
	        $(TOP)/libview/classList.stc \
	        $(TOP)/libwidg/classList.stc \
	        $(EXTRACLASSLISTS) $(CLIENTCLASSLISTS) \
	        $(TOP)/goodies/Persistency/classList.stc \
		$(TOP)/goodies/Benchmarks/DeltaBlue/classList.stc \
		$(TOP)/goodies/Benchmarks/Richards/classList.stc \
		$(TOP)/goodies/Benchmarks/Dhrystones/classList.stc
	    -cat $(TOP)/libbasic/classList.stc \
		 $(TOP)/libcomp/classList.stc \
		 $(TOP)/libview/classList.stc \
		 $(TOP)/libwidg/classList.stc \
		 $(EXTRACLASSLISTS)            \
		 $(CLIENTCLASSLISTS)          > fclassList.stc
	    -if [ "$(EXTRA_CLASSES)"X != X ]; then 			\
	        for i in $(EXTRA_CLASSES); do 		\
	            echo $$i 		      >> fclassList.stc; \
	        done;						\
	     fi
	    -cat $(TOP)/goodies/Persistency/classList.stc >> fclassList.stc
	    -cat $(TOP)/goodies/Benchmarks/DeltaBlue/classList.stc >> fclassList.stc
	    -cat $(TOP)/goodies/Benchmarks/Richards/classList.stc >> fclassList.stc
	    -cat $(TOP)/goodies/Benchmarks/Dhrystones/classList.stc >> fclassList.stc
	    -cat $(TOP)/goodies/Benchmarks/Self/classList.stc >> fclassList.stc
	    -cat $(TOP)/goodies/Benchmarks/misc/classList.stc >> fclassList.stc

#
# make list of classes for a mini smalltalk 
# (no GUI, line-by-line interface only)
#
miniclassList.stc:
	    -cat $(TOP)/libbasic/classList.stc > miniclassList.stc
	    -cat $(TOP)/libcomp/classList.stc >> miniclassList.stc
	    -if [ "$(EXTRA_CLASSES)"X != X ]; then 			\
	        for i in $(EXTRA_CLASSES); do 		\
	            echo $$i 		      >> classList.stc; \
	        done;						\
	     fi

#
# make list of classes for a tiny smalltalk 
# (minimum classes compiled, loads in rest as interpreted byte code)
# this is done by creating a classList and removing all we dont want
#
EXCLUDE=
tinyclassList.stc:
	    $(MAKE) miniclassList.stc
	    mv miniclassList.stc tinyclassList.stc
	    -cat $(TOP)/libview/classList.stc >> tinyclassList.stc

#tinyclassList.stc:
#	    -rm classList.stc
#	    $(MAKE) classList.stc
#	    sh ../rules/removeFrom.sh classList.stc excludeList.stc > tinyclassList.stc
#	    -rm classList.stc

#
# make a new source subdirectory
#
newSource:
	    -rm -rf source
	    $(MAKE) sourceLink

Source:     source

source:	    
	    $(MAKE) sourceLink

sourceLink:
	    -mkdir source
	    -(cd source; $(LNS) ../$(LIBBASICDIR)/*.st .)
	    -(cd source; $(LNS) ../$(LIBCOMPDIR)/*.st .)
	    -(cd source; $(LNS) ../$(LIBVIEWDIR)/*.st .)
	    -(cd source; $(LNS) ../$(LIBWIDGETDIR)/*.st .)
	    -(cd source; $(LNS) ../$(LIBDBDIR)/*.st .)
	    -(cd source; $(LNS) ../$(CLIENTDIR)/[A-Z]*/*.st .)
	    -(cd source; $(LNS) ../../fileIn/*.st .)
	    -(cd source; $(LNS) ../../goodies/*.st .)
	    -(cd source; $(LNS) ../../goodies/*/*.st .)
	    -(cd source; $(LNS) ../../goodies/*/*/*.st .)

newBinary:
	    -rm -rf binary
	    $(MAKE) binaryLink

binary:
	    $(MAKE) binaryLink

binaryLink:
	    -mkdir binary
	    -if [ "`echo $(CLIENTDIR)/[A-Z]*/*.o`" != '$(CLIENTDIR)/[A-Z]*/*.o' ]; then 	\
	        (cd binary; $(LNS) ../$(CLIENTDIR)/[A-Z]*/*.o .); 				\
	     fi
	    -if [ "`echo ../goodies/*.o`" != '../goodies/*.o' ]; then 				\
	        (cd binary; $(LNS) ../../goodies/*.o .) ; 					\
	     fi
	    -if [ "`echo ../goodies/*/*.o`" != '../goodies/*/*.o' ]; then 			\
	        (cd binary; $(LNS) ../../goodies/*/*.o .) ;					\
	     fi
	    -if [ "`echo ../goodies/*/*/*.o`" != '../goodies/*/*/*.o' ]; then 			\
	        (cd binary; $(LNS) ../../goodies/*/*/*.o .) ;					\
	    fi

#
# make a new bitmaps subdirectory
#
newBitmaps:
	    -rm -rf bitmaps
	    $(MAKE) bitmaps

Bitmaps:    bitmaps

bitmaps:
	    -mkdir bitmaps
	    -(cd bitmaps; $(LNS) ../$(LIBVIEWDIR)/bitmaps/* .)
	    -(cd bitmaps; $(LNS) ../$(LIBWIDGETDIR)/bitmaps/* .)
	    -(cd bitmaps; $(LNS) ../$(CLIENTDIR)/A*/bitmaps/* .)
	    -(cd bitmaps; $(LNS) ../$(CLIENTDIR)/[B-C]*/bitmaps/* .)
	    -(cd bitmaps; $(LNS) ../$(CLIENTDIR)/D[a-q]*/bitmaps/* .)
	    -(cd bitmaps; $(LNS) ../$(CLIENTDIR)/D[r-z]*/bitmaps/* .)
	    -(cd bitmaps; $(LNS) ../$(CLIENTDIR)/[E-Z]*/bitmaps/* .)
	    -(cd bitmaps; $(LNS) ../../fileIn/bitmaps/* .)
	    -(cd bitmaps; $(LNS) ../../fileIn/*/bitmaps/* .)
	    -(cd bitmaps; $(LNS) ../../goodies/bitmaps/* .)

cleanjunk::
	    -rm -f a.out changes SymbolTable ttt main.c

clean::
	    -rm -f a.out changes SymbolTable ttt main.c
	    -rm -f classList.stc classList.c
	    -rm -f fclassList.stc fclassList.c
	    -rm -f nxclassList.stc nxclassList.c
	    -rm -f miniclassList.stc miniclassList.c
	    -rm -f tinyclassList.stc tinyclassList.c

clobber::
	    -rm -rf resources source bitmaps changes
	    -rm -f smalltalk minitalk tinytalk abbrev.stc st.img
	    -rm -f main.o

#
# make a new resources subdirectory
#
newResources:
	    rm -rf resources
	    $(MAKE) resources

resources: 
	    -mkdir resources
	    cp $(LIBWIDGETDIR)/resources/*.rs resources
	    cp $(LIBVIEWDIR)/resources/*.rs resources
	    cp ../fileIn/resources/*.rs resources
	    cp $(CLIENTDIR)/*/resources/*.rs resources

#
# make an abbreviation file by collecting all existing ones
#
abbrev.stc: $(LIBBASICDIR)/abbrev.stc $(LIBCOMPDIR)/abbrev.stc \
	    $(LIBVIEWDIR)/abbrev.stc $(LIBWIDGETDIR)/abbrev.stc \
	    ../fileIn/abbrev.stc ../clients/MailTool/abbrev.stc \
	    ../clients/DrawTool/abbrev.stc ../clients/DocTool/abbrev.stc \
	    ../clients/DirView/abbrev.stc
	    cat $(LIBBASICDIR)/abbrev.stc > abbrev.stc
	    cat $(LIBCOMPDIR)/abbrev.stc >> abbrev.stc
	    cat $(LIBVIEWDIR)/abbrev.stc >> abbrev.stc
	    cat $(LIBWIDGETDIR)/abbrev.stc >> abbrev.stc
	    cat $(CLIENTDIR)/*/abbrev.stc >> abbrev.stc
	    cat ../fileIn/abbrev.stc >> abbrev.stc
	    cat ../goodies/*/abbrev.stc >> abbrev.stc

$(TARGET):  $(INCLUDE)/stc.h $(INCLUDE)/stcIntern.h 

$(LIBCOMPDIR)/slopstones.o:
	(cd ../libcomp; make slopstones.o)

$(LIBCOMPDIR)/smopstones.o:
	(cd ../libcomp; make smopstones.o)

$(CLIENTDIR)/Tetris/tetris$(OBJNAME):
	(cd ../clients/Tetris; make obj)

$(CLIENTDIR)/DirView/dirView$(OBJNAME):
	(cd ../clients/DirView; make obj)

$(CLIENTDIR)/DocTool/docTool$(OBJNAME):
	(cd ../clients/DocTool; make obj)

installDemo: install
	-rm $(DESTLIBDIR)/source/BCompiler.st
	-rm $(DESTLIBDIR)/source/ObjectView.st
	-strip $(DESTBINDIR)/smalltalk

binInstall::
	-mkdir $(DESTLIBDIR)
	-mkdir $(DESTBINDIR)
	 $(INSTALL) smalltalk $(DESTBINDIR)
	-strip $(DESTBINDIR)/smalltalk

install:: installThis

#
# notice the [x-y]* patterns; some unixes (at&t) dont like too many arguments ...
#
installThis::
	-mkdir $(DESTLIBDIR)
	-mkdir $(DESTBINDIR)
	 $(INSTALL) smalltalk $(DESTBINDIR)
	-strip $(DESTBINDIR)/smalltalk
	-mkdir $(DESTLIBDIR)/source
	-chmod a+rx $(DESTLIBDIR)/source
	-cp source/[A-G]* $(DESTLIBDIR)/source
	-cp source/[H-P]* $(DESTLIBDIR)/source
	-cp source/[Q-Z]* $(DESTLIBDIR)/source
	-chmod a+r $(DESTLIBDIR)/source/[A-G]*
	-chmod a+r $(DESTLIBDIR)/source/[H-P]*
	-chmod a+r $(DESTLIBDIR)/source/[Q-Z]*
	-mkdir $(DESTLIBDIR)/bitmaps
	-chmod a+rx $(DESTLIBDIR)/bitmaps
	-cp bitmaps/[A-I]* $(DESTLIBDIR)/bitmaps
	-cp bitmaps/[J-Z]* $(DESTLIBDIR)/bitmaps
	-cp bitmaps/[a-i]* $(DESTLIBDIR)/bitmaps
	-cp bitmaps/[j-z]* $(DESTLIBDIR)/bitmaps
	-chmod a+r $(DESTLIBDIR)/bitmaps/[A-I]*
	-chmod a+r $(DESTLIBDIR)/bitmaps/[J-Z]*
	-chmod a+r $(DESTLIBDIR)/bitmaps/[a-i]*
	-chmod a+r $(DESTLIBDIR)/bitmaps/[j-z]*
	-chmod a+rx $(DESTLIBDIR)/resources
	-mkdir $(DESTLIBDIR)/resources
	-cp resources/* $(DESTLIBDIR)/resources
	-chmod a+r $(DESTLIBDIR)/resources/*.rs
	-cp *.rc *.stc patches $(DESTLIBDIR)
	-chmod a+r $(DESTLIBDIR)/*.rc $(DESTLIBDIR)/*.stc $(DESTLIBDIR)/patches

qinstall:: installThis