added stx_static & stx_fullstatic support on shared lib systems (Linux-ELF)
authorClaus Gittinger <cg@exept.de>
Tue, 19 Nov 1996 22:35:13 +0100
changeset 178 7ab96c8246bd
parent 177 eec6bac738ba
child 179 e3be85982d13
added stx_static & stx_fullstatic support on shared lib systems (Linux-ELF)
Make.proto
--- a/Make.proto	Sun Nov 17 13:33:39 1996 +0100
+++ b/Make.proto	Tue Nov 19 22:35:13 1996 +0100
@@ -13,6 +13,14 @@
 #    make smalltalk
 #       generates a standard smalltalk executable only
 #
+#    make stx_static (ELF based systems only):
+#	generates a smalltalk with statically linked
+#	class libs. (still uses dynamic unix libraries)
+#
+#    make stx_fullstatic (ELF based systems only):
+#	generates a fully statically linked smalltalk
+#	(even system libs are linked in)
+#
 #    make smalltalk ADDITIONAL_OBJS=<list of object files> \
 #                   ADDITIONAL_CLASSES=<list of class names>
 #       generates a customized executable, containing additional
@@ -156,22 +164,54 @@
 DemoApp2.st:
 	    -cp $(CLIENTDIR)/Demos/DemoApp2.st .
             
-$(TARGET)_static:
-	    @echo "making statically linked smalltalk ..."
-	    @$(MAKE) linkIt LIBOBJS="$(LIBOBJS)" \
-			    ADDITIONAL_OBJECTS=$(ADDITIONAL_OBJECTS) \
-			    ADDITIONAL_CLASSES=$(ADDITIONAL_CLASSES) \
-			    EXTRA_OBJ="$(EXTRA_OBJ)" EXTRA_LINK_OBJ="$(EXTRA_LINK_OBJ)" \
-			    LIBLIST="$(LIBLIST)"
-	    $(MAKE) removeLinkLibs
+#
+# by default, the TARGET rule calls for one of the
+# rules below. Which one is controlled by the
+# architecture-specific definition file.
+#
+$(TARGET)_static: $(STATIC_LIBRUN)
+	@echo "making statically linked smalltalk ..."
+	@$(MAKE) linkIt \
+		LIBOBJS="" \
+		LINK_OBJS="$(STATIC_OBJS)" \
+		LINK_LIBOBJS="$(STATIC_LIBOBJS)" \
+		LINK_LIBRUN="$(STATIC_LIBRUN)" \
+		LIBRUN="$(STATIC_LIBRUN)" \
+		ADDITIONAL_OBJECTS=$(STATIC_ADDITIONAL_OBJECTS) \
+		ADDITIONAL_CLASSES=$(STATIC_ADDITIONAL_CLASSES) \
+		EXTRA_OBJ="$(STATIC_EXTRA_OBJ)" \
+		EXTRA_LINK_OBJ="$(STATIC_EXTRA_OBJ)" \
+		LIBLIST="$(LIBLIST)"
+	$(MAKE) removeLinkLibs
 
 $(TARGET)_shared:
-	    @echo "making shared library linked smalltalk ..."
-	    @$(MAKE) linkIt LIBOBJS="$(LIBOBJS)" \
-			    ADDITIONAL_OBJECTS=$(ADDITIONAL_OBJECTS) \
-			    ADDITIONAL_CLASSES=$(ADDITIONAL_CLASSES) \
-			    EXTRA_OBJ="$(EXTRA_OBJ)" EXTRA_LINK_OBJ="$(EXTRA_LINK_OBJ)" \
-			    LIBLIST="$(LIBLIST)"
+	@echo "making shared library linked smalltalk ..."
+	@$(MAKE) linkIt \
+		LIBOBJS="$(LIBOBJS)" \
+		ADDITIONAL_OBJECTS=$(ADDITIONAL_OBJECTS) \
+		ADDITIONAL_CLASSES=$(ADDITIONAL_CLASSES) \
+		EXTRA_OBJ="$(EXTRA_OBJ)" \
+		EXTRA_LINK_OBJ="$(EXTRA_LINK_OBJ)" \
+		LIBLIST="$(LIBLIST)"
+
+$(TARGET)_fullstatic: $(STATIC_LIBRUN)
+	@echo "making full statically linked smalltalk ..."
+	@$(MAKE) linkIt \
+		LIBOBJS="" \
+		LINK_OBJS="$(STATIC_OBJS)" \
+		LINK_LIBOBJS="$(STATIC_LIBOBJS)" \
+		LINK_LIBRUN="$(STATIC_LIBRUN)" \
+		LIBRUN="$(STATIC_LIBRUN)" \
+		ADDITIONAL_OBJECTS=$(STATIC_ADDITIONAL_OBJECTS) \
+		ADDITIONAL_CLASSES=$(STATIC_ADDITIONAL_CLASSES) \
+		EXTRA_OBJ="$(STATIC_EXTRA_OBJ)" \
+		EXTRA_LINK_OBJ="$(STATIC_EXTRA_OBJ)" \
+		LIBLIST="$(LIBLIST)" \
+		MATHLIB="$(STATIC_MATHLIB)" \
+		EXTRA_LIBS="$(STATIC_EXTRA_LIBS)" \
+		SYSLIBS="$(STATIC_SYSLIBS)"
+
+	$(MAKE) removeLinkLibs
 
 AIX_SHARED_LIBOBJS= \
 	$(LIBBASICDIR)/libbasic.so \
@@ -248,6 +288,9 @@
 $(LIBCOMPDIR)/ObjFLoader.so:
 	    (cd $(LIBCOMPDIR) ; $(MAKE) ObjFLoader.so)
 
+$(LIBRUNDIR)/librun.a:
+	    (cd $(LIBRUNDIR) ; $(MAKE) librun.a)
+
 #
 # make list of classes for a standard smalltalk
 # (includes basic, view & widgets and Persistency)