Add ability to make a single bytecode module from others
authorReid Spencer <rspencer@reidspencer.com>
Sun, 5 Dec 2004 05:17:22 +0000 (05:17 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Sun, 5 Dec 2004 05:17:22 +0000 (05:17 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18523 91177308-0d34-0410-b5e6-96231b3b80d8

Makefile.rules

index 7ab25956601b91069e5915ac92241e09d5f6b1a7..4a69bff3243afa538723eda861ee4fb8fd889a7b 100644 (file)
@@ -465,6 +465,47 @@ endif
 # Library Build Rules: Four ways to build a library
 ###############################################################################
 
+#---------------------------------------------------------
+# Bytecode Module Targets:
+#   If the user set MODULE_NAME then they want to build a
+#   bytecode module from the sources. We compile all the
+#   sources and link it together into a single bytecode
+#   module.
+#---------------------------------------------------------
+
+ifdef MODULE_NAME
+
+Module     := $(LibDir)/$(MODULE_NAME).bc
+LinkModule := $(LLVMGCC) -shared -nostdlib
+
+ifdef EXPORTED_SYMBOL_FILE
+LinkMOdule += -Xlinker -internalize-public-api-file=$(EXPORTED_SYMBOL_FILE)
+endif
+
+$(Module): $(BUILT_SOURCES) $(ObjectsBC) $(LibDir)/.dir $(GCCLD)
+       $(Echo) Building $(BuildMOde) Bytecode Module $(notdir $@)
+       $(Verb) $(LinkModule) -o $@ $(ObjectsBC)
+
+all-local:: $(Module)
+
+clean-local::
+ifneq ($(strip $(Module)),)
+       -$(Verb) $(RM) -f $(Module)
+endif
+
+DestModule := $(bytecode_libdir)/$(MODULE_NAME).bc
+
+install-local:: $(DestModule)
+
+$(DestModule): $(bytecode_libdir) $(Module) 
+       $(Echo) Installing $(BuildMode) Bytecode Module $(DestModule)
+       $(Verb) $(INSTALL) $(Module) $@
+
+uninstall-local::
+       $(Echo) Uninstalling $(BuildMode) Bytecode Module $(DestModule)
+       -$(Verb) $(RM) -f $(DestModule)
+
+endif
 
 # if we're building a library ...
 ifdef LIBRARYNAME
@@ -1299,6 +1340,7 @@ printvars::
        $(Echo) "LibDir         : " '$(LibDir)'
        $(Echo) "ToolDir        : " '$(ToolDir)'
        $(Echo) "ExmplDir       : " '$(ExmplDir)'
+       $(Echo) "Sources        : " '$(Sources)'
        $(Echo) "TDFiles        : " '$(TDFiles)'
        $(Echo) "INCFiles       : " '$(INCFiles)'
        $(Echo) "Compile.CXX    : " '$(Compile.CXX)'
@@ -1306,3 +1348,4 @@ printvars::
        $(Echo) "Archive        : " '$(Archive)'
        $(Echo) "YaccFiles      : " '$(YaccFiles)'
        $(Echo) "LexFiles       : " '$(LexFiles)'
+       $(Echo) "Module         : " '$(Module)'