summaryrefslogtreecommitdiff
path: root/Makefile.rules
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2004-12-02 09:28:21 +0000
committerReid Spencer <rspencer@reidspencer.com>2004-12-02 09:28:21 +0000
commit9a2f137765305930b8cf0bf9fd09064ee328fbbc (patch)
treedda459c24b6fa2492a64d35ab9505ea832c05b35 /Makefile.rules
parent3298f87c0b70f411ff2fbda20c0a3e19b63174d1 (diff)
downloadllvm-9a2f137765305930b8cf0bf9fd09064ee328fbbc.tar.gz
llvm-9a2f137765305930b8cf0bf9fd09064ee328fbbc.tar.bz2
llvm-9a2f137765305930b8cf0bf9fd09064ee328fbbc.tar.xz
For PR466:
Change construction of bytecode libraries from producing a single bytecode file to producing a library containing bytecode files. This gets around the problem of multiple symbol definitions in the linker if something like -lc -lc is attempted on the command line. Previously this happened because the linker would find libc.bc as a "library". It will now find libc.a which it can simply search for missing symbols instead of linking in wholesale. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18425 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'Makefile.rules')
-rw-r--r--Makefile.rules51
1 files changed, 27 insertions, 24 deletions
diff --git a/Makefile.rules b/Makefile.rules
index 9897fc8784..fc6598bb67 100644
--- a/Makefile.rules
+++ b/Makefile.rules
@@ -232,8 +232,8 @@ ifdef TOOL_VERBOSE
C.Flags += -v
CXX.Flags += -v
LD.Flags += -v
- BCLinkLib.Flags += -v
VERBOSE := 1
+else
endif
# Adjust settings for verbose mode
@@ -286,12 +286,11 @@ Link = $(LIBTOOL) $(LibTool.Flags) --mode=link $(CXX) $(CPP.Flags) \
$(CompileCommonOpts) $(LD.Flags) $(Strip)
Relink = $(LIBTOOL) $(LibTool.Flags) --mode=link $(CXX) $(CPP.Flags) \
$(CompileCommonOpts)
-BCLinkLib = $(LLVMGCC) -shared -nostdlib $(BCLinkLib.Flags)
LTInstall = $(LIBTOOL) $(LibTool.Flags) --mode=install $(INSTALL)
Burg = $(BURG) -I $(BUILD_SRC_DIR)
TableGen = $(TBLGEN) -I $(BUILD_SRC_DIR)
Archive = $(AR) $(AR.Flags)
-LArchive = $(ToolDir)/llvm-ar rcsf
+LArchive = $(LLVMToolDir)/llvm-ar rcsf
ifdef RANLIB
Ranlib = $(RANLIB)
else
@@ -466,7 +465,7 @@ LIBRARYNAME := $(strip $(LIBRARYNAME))
LibName.LA := $(LibDir)/lib$(LIBRARYNAME).la
LibName.A := $(LibDir)/lib$(LIBRARYNAME).a
LibName.O := $(LibDir)/$(LIBRARYNAME).o
-LibName.BC := $(LibDir)/lib$(LIBRARYNAME).bc
+LibName.BCA:= $(LibDir)/lib$(LIBRARYNAME).bca
#---------------------------------------------------------
# Shared Library Targets:
@@ -511,37 +510,41 @@ endif
#---------------------------------------------------------
ifdef BYTECODE_LIBRARY
-ifdef EXPORTED_SYMBOL_LIST
- BCLinkLib += -Xlinker -internalize-public-api-list=$(EXPORTED_SYMBOL_LIST)
-else
- ifdef EXPORTED_SYMBOL_FILE
- BCLinkLib += -Xlinker -internalize-public-api-file=$(EXPORTED_SYMBOL_FILE)
- else
- BCLinkLib += -Xlinker -disable-internalize
- endif
-endif
+all-local:: $(LibName.BCA)
-all-local:: $(LibName.BC)
+ifdef EXPORTED_SYMBOL_FILE
+BCLinkLib = $(LLVMGCC) -shared -nostdlib -Xlinker \
+ -internalize-public-api-file=$(EXPORTED_SYMBOL_FILE)
-$(LibName.BC): $(BUILT_SOURCES) $(ObjectsBC) $(LibDir)/.dir $(GCCLD)
- $(Echo) Linking $(BuildMode) Bytecode Library $(notdir $@)
- $(Verb) $(BCLinkLib) -o $@ $(ObjectsBC)
+$(LibName.BCA): $(BUILT_SOURCES) $(ObjectsBC) $(LibDir)/.dir $(GCCLD)
+ $(Echo) Building $(BuildMode) Bytecode Archive $(notdir $@) \
+ "(internalize)"
+ $(BCLinkLib) -o $(ObjDir)/$(LIBRARYNAME).o $(ObjectsBC)
+ $(Verb) $(LArchive) $@ $(ObjDir)/$(LIBRARYNAME).o
+else
+$(LibName.BCA): $(BUILT_SOURCES) $(ObjectsBC) $(LibDir)/.dir $(GCCLD)
+ $(Echo) Building $(BuildMode) Bytecode Archive $(notdir $@)
+ $(Verb) $(LArchive) $@ $(ObjectsBC)
+
+endif
clean-local::
-ifneq ($(strip $(LibName.BC)),)
- -$(Verb) $(RM) -f $(LibName.BC)
+ifneq ($(strip $(LibName.BCA)),)
+ -$(Verb) $(RM) -f $(LibName.BCA)
endif
-DestBytecodeLib = $(bytecode_libdir)/lib$(LIBRARYNAME).bc
+DestBytecodeLib = $(bytecode_libdir)/lib$(LIBRARYNAME).a
+
+install-bytecode: $(DestBytecodeLib)
install-local:: $(DestBytecodeLib)
-$(DestBytecodeLib): $(bytecode_libdir) $(LibName.BC)
- $(Echo) Installing $(BuildMode) Bytecode Library $(DestBytecodeLib)
- $(Verb) $(INSTALL) $(LibName.BC) $@
+$(DestBytecodeLib): $(bytecode_libdir) $(LibName.BCA)
+ $(Echo) Installing $(BuildMode) Bytecode Archive $(DestBytecodeLib)
+ $(Verb) $(INSTALL) $(LibName.BCA) $@
uninstall-local::
- $(Echo) Uninstalling $(BuildMode) Bytecode Library $(DestBytecodeLib)
+ $(Echo) Uninstalling $(BuildMode) Bytecode Archive $(DestBytecodeLib)
-$(Verb) $(RM) -f $(DestBytecodeLib)
endif