Make.proto
changeset 0 0cb137a77319
child 2 353a88ada7c6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Make.proto	Sat Dec 11 02:53:38 1993 +0100
@@ -0,0 +1,450 @@
+#
+# %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