[llvm-commits] CVS: llvm/Makefile.common

Chris Lattner lattner at cs.uiuc.edu
Thu Aug 14 21:19:01 PDT 2003


Changes in directory llvm:

Makefile.common updated: 1.111 -> 1.112

---
Log message:

Implement BYTECODE_LIBRARY support


---
Diffs of the changes:

Index: llvm/Makefile.common
diff -u llvm/Makefile.common:1.111 llvm/Makefile.common:1.112
--- llvm/Makefile.common:1.111	Thu Aug 14 16:10:25 2003
+++ llvm/Makefile.common	Thu Aug 14 21:18:35 2003
@@ -119,14 +119,14 @@
 # It is typically the root directory of what we're compiling now.
 #
 ifndef LLVM_SRC_ROOT
-LLVM_SRC_ROOT = $(BUILD_SRC_ROOT)
+LLVM_SRC_ROOT := $(BUILD_SRC_ROOT)
 endif
 
 #
 # Set the LLVM object directory.
 #
 ifndef LLVM_OBJ_ROOT
-LLVM_OBJ_ROOT = $(BUILD_OBJ_ROOT)
+LLVM_OBJ_ROOT := $(BUILD_OBJ_ROOT)
 endif
 
 ###########################################################################
@@ -143,6 +143,7 @@
 ifdef BYTECODE_LIBRARY
 # if BYTECODE_LIBRARY is specified, the default is to build the bytecode lib
 all:: bytecodelib
+install:: bytecodelib-install
 endif
 
 # Default Rule:  Make sure it's also a :: rule
@@ -172,7 +173,8 @@
 # slightly since GNU Make will not try to find implicit rules for targets
 # which are marked as Phony.
 #
-.PHONY: all dynamic bytecodelib clean distclean install test bytecode prdirs
+.PHONY: all dynamic bytecodelib bytecodelib-install
+.PHONY: clean distclean install test bytecode prdirs
 
 ###########################################################################
 # Miscellaneous paths and commands:
@@ -227,6 +229,7 @@
 DESTLIBDEBUG    := $(BUILD_OBJ_ROOT)/lib/Debug
 DESTLIBRELEASE  := $(BUILD_OBJ_ROOT)/lib/Release
 DESTLIBPROFILE  := $(BUILD_OBJ_ROOT)/lib/Profile
+DESTLIBBYTECODE := $(BUILD_OBJ_ROOT)/lib/Bytecode
 DESTLIBCURRENT  := $(BUILD_OBJ_ROOT)/lib/$(CONFIGURATION)
 
 # LLVM libraries used for linking
@@ -300,14 +303,26 @@
 ###########################################################################
 
 #--------------------------------------------------------------------------
-# Special tools used while building the LLVM tree.  Burg is built as part
-# of the utils directory.
-#--------------------------------------------------------------------------
+# Utilities used while building the LLVM tree, which live in the utils dir
+#
 BURG    := $(LLVMTOOLCURRENT)/burg
 RunBurg := $(BURG) $(BURG_OPTS)
-
 TBLGEN  := $(LLVMTOOLCURRENT)/tblgen
 
+#--------------------------------------------------------------------------
+# The LLVM GCC front-end in C and C++ flavors
+#
+LLVMGCC := $(LLVMGCCDIR)/bin/gcc
+LCC1    := $(LLVMGCCDIR)/lib/gcc-lib/$(LLVMGCCARCH)/cc1
+LLVMGXX := $(LLVMGCCDIR)/bin/g++
+LCC1XX  := $(LLVMGCCDIR)/lib/gcc-lib/$(LLVMGCCARCH)/cc1plus
+
+#--------------------------------------------------------------------------
+# Some of the compiled LLVM tools which are used for compilation of runtime
+# libraries.
+#
+LLVMAS  := $(LLVMTOOLCURRENT)/as
+
 
 ###########################################################################
 # Compile Time Flags
@@ -399,10 +414,12 @@
 #
 # Libtool Objects
 #
-Objs := $(sort $(patsubst Debug/%.lo, %.lo, $(addsuffix .lo,$(notdir $(basename $(Source))))))
+Srcs := $(sort $(notdir $(basename $(Source))))
+Objs := $(addsuffix .lo, $(Srcs))
 ObjectsO := $(addprefix $(BUILD_OBJ_DIR)/Release/,$(Objs))
 ObjectsP := $(addprefix $(BUILD_OBJ_DIR)/Profile/,$(Objs))
 ObjectsG := $(addprefix $(BUILD_OBJ_DIR)/Debug/,$(Objs))
+ObjectsBC := $(addprefix $(BUILD_OBJ_DIR)/Bytecode/,$(addsuffix .bc, $(Srcs)))
 
 #
 # The real objects underlying the libtool objects
@@ -481,6 +498,7 @@
 LIBNAME_OBJO := $(DESTLIBRELEASE)/$(LIBRARYNAME).o
 LIBNAME_OBJP := $(DESTLIBPROFILE)/$(LIBRARYNAME).o
 LIBNAME_OBJG := $(DESTLIBDEBUG)/$(LIBRARYNAME).o
+LIBNAME_BC   := $(DESTLIBBYTECODE)/lib$(LIBRARYNAME).bc
 
 #--------------------------------------------------------------------
 # Library Targets
@@ -489,6 +507,12 @@
 
 # dynamic target builds a shared object version of the library...
 dynamic:: $(DESTLIBCURRENT)/lib$(LIBRARYNAME).so
+bytecodelib:: $(LIBNAME_BC)
+bytecodelib-install:: $(LLVMGCCDIR)/bytecode-libs/lib$(LIBRARYNAME).bc
+
+$(LLVMGCCDIR)/bytecode-libs/lib$(LIBRARYNAME).bc: $(LIBNAME_BC)
+	@echo ======= Installing $(LIBRARYNAME) bytecode library =======
+	cp $< $@
 
 # Does the library want a .o version built?
 ifndef DONT_BUILD_RELINKED
@@ -504,6 +528,18 @@
 # Rules for building libraries
 #--------------------------------------------------------------------
 
+LinkBCLib := $(LLVMGCC) -shared
+ifdef EXPORTED_SYMBOL_LIST
+LinkBCLib += -Xlinker -internalize-public-api-list=$(EXPORTED_SYMBOL_LIST)
+else
+LinkBCLib += -Xlinker -disable-internalize
+endif
+
+
+# Rule for building bytecode libraries.
+$(LIBNAME_BC): $(ObjectsBC) $(LibSubDirs)
+	@echo ======= Linking $(LIBRARYNAME) bytecode library =======
+	$(VERB) $(LinkBCLib) -o $@ $(ObjectsBC) $(LibSubDirs) $(LibLinkOpts)
 #
 # Rules for building dynamically linked libraries.
 #
@@ -540,6 +576,7 @@
 	@$(RM) -f $@
 	$(VERB) $(Link) -g $(STRIP) -o $@ $(ObjectsG) $(LibSubDirs) -static
 
+
 #
 # Rules for building .o libraries.
 #
@@ -663,7 +700,7 @@
 
 
 #---------------------------------------------------------
-.PRECIOUS: $(BUILD_OBJ_DIR)/Depend/.dir
+.PRECIOUS: $(BUILD_OBJ_DIR)/Depend/.dir $(BUILD_OBJ_DIR)/Bytecode/.dir
 .PRECIOUS: $(BUILD_OBJ_DIR)/Debug/.dir $(BUILD_OBJ_DIR)/Release/.dir
 
 # Create .lo files in the ObjectFiles directory from the .cpp and .c files...
@@ -691,6 +728,19 @@
 	@echo "Compiling $<"
 	$(VERB) $(CompileCG) $< -o $@
 
+$(BUILD_OBJ_DIR)/Bytecode/%.bc: $(SourceDir)%.cpp $(BUILD_OBJ_DIR)/Bytecode/.dir $(LCC1XX)
+	@echo "Compiling $< to bytecode"
+	$(VERB) $(LLVMGXX) $(CPPFLAGS) -c $< -o $@
+
+$(BUILD_OBJ_DIR)/Bytecode/%.bc: $(SourceDir)%.c $(BUILD_OBJ_DIR)/Bytecode/.dir $(LCC1)
+	@echo "Compiling $< to bytecode"
+	$(VERB) $(LLVMGCC) $(CPPFLAGS) -c $< -o $@
+
+$(BUILD_OBJ_DIR)/Bytecode/%.bc: $(SourceDir)%.ll $(BUILD_OBJ_DIR)/Bytecode/.dir $(LCC1)
+	@echo "Compiling $< to bytecode"
+	$(VERB) $(LLVMAS) $< -f -o $@
+
+
 #
 # Rules for building lex/yacc files
 #
@@ -747,7 +797,9 @@
 
 # 'make clean' nukes the tree
 clean::
-	$(VERB) $(RM) -rf $(BUILD_OBJ_DIR)/Debug $(BUILD_OBJ_DIR)/Release $(BUILD_OBJ_DIR)/Profile $(BUILD_OBJ_DIR)/Depend
+	$(VERB) $(RM) -rf $(BUILD_OBJ_DIR)/Debug $(BUILD_OBJ_DIR)/Release
+	$(VERB) $(RM) -rf $(BUILD_OBJ_DIR)/Profile $(BUILD_OBJ_DIR)/Depend
+	$(VERB) $(RM) -rf $(BUILD_OBJ_DIR)/Bytecode
 	$(VERB) $(RM) -f core core.[0-9][0-9]* *.o *.d *.so *~ *.flc
 	$(VERB) $(RM) -f $(LEX_OUTPUT) $(YACC_OUTPUT)
 





More information about the llvm-commits mailing list