add support for an explicit EXPORTED_SYMBOL_LIST
authorChris Lattner <sabre@nondot.org>
Thu, 22 May 2003 20:27:30 +0000 (20:27 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 22 May 2003 20:27:30 +0000 (20:27 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6296 91177308-0d34-0410-b5e6-96231b3b80d8

runtime/Makefile.libs

index 60515f10643b97af64369d55dd2b943ddedac384..d2f825cb20cf4d7da803f993661f103df9219352 100644 (file)
@@ -7,6 +7,9 @@
 #
 # 1. LEVEL - Must be set as per normal semantics: The depth from the top of tree
 # 2. LIBNAME - Name of library to link together.  Forms lib<LIBNAME>.bc
+# 3. EXPORTED_SYMBOL_LIST - If this symbol is defined, it contains a comma
+#    separated list of symbols that are exported by the library.  All other
+#    symbols are marked internal, reducing namespace pollution.
 #
 
 DESTLIBDIR  := $(LEVEL)/test/Libraries/Output
@@ -22,10 +25,16 @@ LObjects := $(addprefix Output/,$(LObjs))
 
 .PRECIOUS: $(LObjects)
 
+# If the library specified a list of symbols to export, add an internalize pass
+# to the link options.
+ifdef EXPORTED_SYMBOL_LIST
+LLINK_OPTS += -internalize -internalize-public-api-list=$(EXPORTED_SYMBOL_LIST)
+endif
+
 # Link the library, then perform postlink optimization...
-$(DESTLIBNAME): $(DESTLIBDIR)/.dir $(LObjects)
+$(DESTLIBNAME): $(DESTLIBDIR)/.dir $(LObjects) $(LLINK) $(LOPT)
        $(LLINK) -f $(LObjects) $(LDFLAGS) | \
-          $(LOPT) -f -funcresolve -deadtypeelim -globaldce -o $@
+        $(LOPT) -f -q -funcresolve -deadtypeelim $(LLINK_OPTS) -globaldce -o $@
 
 # Install target for libraries: Copy into the gcc install directory.
 #