mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-12 02:33:33 +00:00
Two changes to support building shared libraries that contain multiple
llvm archive or re-linked libraries: 1. Permit the "JIT" special keyword on LLVMLIBS to be recognized when building a library, not just for building tools 2. If LINK_LIBS_IN_SHARED is set, the LLVMLIBS and USEDLIBS can be specified when linking a shared library and the libraries listed will be incorported into the shared library. THis is only used when the SHARED_LIBRARY variable is set. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22127 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ebc8c7dd8b
commit
8f9e21e3de
149
Makefile.rules
149
Makefile.rules
@ -553,6 +553,82 @@ uninstall-local::
|
|||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Set up variables for building libararies
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
#---------------------------------------------------------
|
||||||
|
# Handle the special "JIT" value for LLVM_LIBS which is a
|
||||||
|
# shorthand for a bunch of libraries that get the correct
|
||||||
|
# JIT support for a library or a tool that runs JIT.
|
||||||
|
#---------------------------------------------------------
|
||||||
|
ifeq ($(LLVMLIBS),JIT)
|
||||||
|
|
||||||
|
# Make sure we can get our own symbols in the tool
|
||||||
|
Link += -dlopen self
|
||||||
|
|
||||||
|
# Generic JIT libraries
|
||||||
|
JIT_LIBS := LLVMInterpreter LLVMJIT LLVMCodeGen LLVMExecutionEngine
|
||||||
|
|
||||||
|
# You can enable the X86 JIT on a non-X86 host by setting the flag
|
||||||
|
# ENABLE_X86_JIT on the make command line. If not, it will still be
|
||||||
|
# enabled automagically on an X86 host.
|
||||||
|
ifeq ($(ARCH), x86)
|
||||||
|
ENABLE_X86_JIT = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
# What the X86 JIT requires
|
||||||
|
ifdef ENABLE_X86_JIT
|
||||||
|
JIT_LIBS += LLVMX86 LLVMSelectionDAG
|
||||||
|
endif
|
||||||
|
|
||||||
|
# You can enable the SparcV9 JIT on a non-SparcV9 host by setting the flag
|
||||||
|
# ENABLE_SPARCV9_JIT on the make command line. If not, it will still be
|
||||||
|
# enabled automagically on an SparcV9 host.
|
||||||
|
ifeq ($(ARCH), Sparc)
|
||||||
|
ENABLE_SPARCV9_JIT = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
# What the Sparc JIT requires
|
||||||
|
ifdef ENABLE_SPARCV9_JIT
|
||||||
|
JIT_LIBS += LLVMSparcV9 LLVMSparcV9ModuloSched LLVMSparcV9InstrSched \
|
||||||
|
LLVMSparcV9LiveVar LLVMInstrumentation.a LLVMProfilePaths \
|
||||||
|
LLVMBCWriter LLVMTransforms.a LLVMipo.a LLVMipa.a \
|
||||||
|
LLVMDataStructure.a LLVMSparcV9RegAlloc
|
||||||
|
endif
|
||||||
|
|
||||||
|
# You can enable the PowerPC JIT on a non-PowerPC host by setting the flag
|
||||||
|
# ENABLE_PPC_JIT on the make command line. If not, it will still be
|
||||||
|
# enabled automagically on an PowerPC host.
|
||||||
|
ifeq ($(ARCH), PowerPC)
|
||||||
|
ENABLE_PPC_JIT = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
# What the PowerPC JIT requires
|
||||||
|
ifdef ENABLE_PPC_JIT
|
||||||
|
JIT_LIBS += LLVMPowerPC LLVMSelectionDAG
|
||||||
|
endif
|
||||||
|
|
||||||
|
LLVMLIBS := $(JIT_LIBS) LLVMScalarOpts LLVMAnalysis.a LLVMTransformUtils.a \
|
||||||
|
LLVMBCReader LLVMCore LLVMSupport.a LLVMTarget.a LLVMbzip2 \
|
||||||
|
LLVMSystem.a $(PLATFORMLIBDL)
|
||||||
|
endif
|
||||||
|
|
||||||
|
#---------------------------------------------------------
|
||||||
|
# Define various command line options pertaining to the
|
||||||
|
# libraries needed when linking. There are "Proj" libs
|
||||||
|
# (defined by the user's project) and "LLVM" libs (defined
|
||||||
|
# by the # LLVM project).
|
||||||
|
#---------------------------------------------------------
|
||||||
|
ProjLibsOptions := $(patsubst %.a.o, -l%, $(addsuffix .o, $(USEDLIBS)))
|
||||||
|
ProjLibsOptions := $(patsubst %.o, $(LibDir)/%.o, $(ProjLibsOptions))
|
||||||
|
LLVMLibsOptions := $(patsubst %.a.o, -l%, $(addsuffix .o, $(LLVMLIBS)))
|
||||||
|
LLVMLibsOptions := $(patsubst %.o, $(LLVMLibDir)/%.o, $(LLVMLibsOptions))
|
||||||
|
ProjUsedLibs := $(patsubst %.a.o, lib%.a, $(addsuffix .o, $(USEDLIBS)))
|
||||||
|
LLVMUsedLibs := $(patsubst %.a.o, lib%.a, $(addsuffix .o, $(LLVMLIBS)))
|
||||||
|
ProjLibsPaths := $(addprefix $(LibDir)/,$(ProjUsedLibs))
|
||||||
|
LLVMLibsPaths := $(addprefix $(LLVMLibDir)/,$(LLVMUsedLibs))
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Library Build Rules: Four ways to build a library
|
# Library Build Rules: Four ways to build a library
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@ -634,10 +710,18 @@ ifdef SHARED_LIBRARY
|
|||||||
|
|
||||||
all-local:: $(LibName.LA)
|
all-local:: $(LibName.LA)
|
||||||
|
|
||||||
|
ifdef LINK_LIBS_IN_SHARED
|
||||||
|
$(LibName.LA): $(ObjectsLO) $(LibDir)/.dir
|
||||||
|
$(Echo) Linking $(BuildMode) Shared Library $(LIBRARYNAME)$(SHLIBEXT)
|
||||||
|
$(Verb) $(Link) -o $@ $(ObjectsLO) \
|
||||||
|
$(ProjLibsOptions) $(LLVMLibsOptions)
|
||||||
|
$(Verb) $(LTInstall) $@ $(LibDir)
|
||||||
|
else
|
||||||
$(LibName.LA): $(ObjectsLO) $(LibDir)/.dir
|
$(LibName.LA): $(ObjectsLO) $(LibDir)/.dir
|
||||||
$(Echo) Linking $(BuildMode) Shared Library $(LIBRARYNAME)$(SHLIBEXT)
|
$(Echo) Linking $(BuildMode) Shared Library $(LIBRARYNAME)$(SHLIBEXT)
|
||||||
$(Verb) $(Link) -o $@ $(ObjectsLO)
|
$(Verb) $(Link) -o $@ $(ObjectsLO)
|
||||||
$(Verb) $(LTInstall) $@ $(LibDir)
|
$(Verb) $(LTInstall) $@ $(LibDir)
|
||||||
|
endif
|
||||||
|
|
||||||
clean-local::
|
clean-local::
|
||||||
ifneq ($(strip $(LibName.LA)),)
|
ifneq ($(strip $(LibName.LA)),)
|
||||||
@ -800,63 +884,6 @@ endif
|
|||||||
|
|
||||||
ifdef TOOLNAME
|
ifdef TOOLNAME
|
||||||
|
|
||||||
#---------------------------------------------------------
|
|
||||||
# Handle the special "JIT" value for LLVM_LIBS which is a
|
|
||||||
# shorthand for a bunch of libraries that get the correct
|
|
||||||
# JIT support for a tool that runs JIT.
|
|
||||||
#---------------------------------------------------------
|
|
||||||
ifeq ($(LLVMLIBS),JIT)
|
|
||||||
|
|
||||||
# Make sure we can get our own symbols in the tool
|
|
||||||
Link += -dlopen self
|
|
||||||
|
|
||||||
# Generic JIT libraries
|
|
||||||
JIT_LIBS := LLVMInterpreter LLVMJIT LLVMCodeGen LLVMExecutionEngine
|
|
||||||
|
|
||||||
# You can enable the X86 JIT on a non-X86 host by setting the flag
|
|
||||||
# ENABLE_X86_JIT on the make command line. If not, it will still be
|
|
||||||
# enabled automagically on an X86 host.
|
|
||||||
ifeq ($(ARCH), x86)
|
|
||||||
ENABLE_X86_JIT = 1
|
|
||||||
endif
|
|
||||||
|
|
||||||
# What the X86 JIT requires
|
|
||||||
ifdef ENABLE_X86_JIT
|
|
||||||
JIT_LIBS += LLVMX86 LLVMSelectionDAG
|
|
||||||
endif
|
|
||||||
|
|
||||||
# You can enable the SparcV9 JIT on a non-SparcV9 host by setting the flag
|
|
||||||
# ENABLE_SPARCV9_JIT on the make command line. If not, it will still be
|
|
||||||
# enabled automagically on an SparcV9 host.
|
|
||||||
ifeq ($(ARCH), Sparc)
|
|
||||||
ENABLE_SPARCV9_JIT = 1
|
|
||||||
endif
|
|
||||||
|
|
||||||
# What the Sparc JIT requires
|
|
||||||
ifdef ENABLE_SPARCV9_JIT
|
|
||||||
JIT_LIBS += LLVMSparcV9 LLVMSparcV9ModuloSched LLVMSparcV9InstrSched \
|
|
||||||
LLVMSparcV9LiveVar LLVMInstrumentation.a LLVMProfilePaths \
|
|
||||||
LLVMBCWriter LLVMTransforms.a LLVMipo.a LLVMipa.a \
|
|
||||||
LLVMDataStructure.a LLVMSparcV9RegAlloc
|
|
||||||
endif
|
|
||||||
|
|
||||||
# You can enable the PowerPC JIT on a non-PowerPC host by setting the flag
|
|
||||||
# ENABLE_PPC_JIT on the make command line. If not, it will still be
|
|
||||||
# enabled automagically on an PowerPC host.
|
|
||||||
ifeq ($(ARCH), PowerPC)
|
|
||||||
ENABLE_PPC_JIT = 1
|
|
||||||
endif
|
|
||||||
|
|
||||||
# What the PowerPC JIT requires
|
|
||||||
ifdef ENABLE_PPC_JIT
|
|
||||||
JIT_LIBS += LLVMPowerPC LLVMSelectionDAG
|
|
||||||
endif
|
|
||||||
|
|
||||||
LLVMLIBS := $(JIT_LIBS) LLVMScalarOpts LLVMAnalysis.a LLVMTransformUtils.a \
|
|
||||||
LLVMBCReader LLVMCore LLVMSupport.a LLVMTarget.a LLVMbzip2 \
|
|
||||||
LLVMSystem.a $(PLATFORMLIBDL)
|
|
||||||
endif
|
|
||||||
|
|
||||||
#---------------------------------------------------------
|
#---------------------------------------------------------
|
||||||
# Set up variables for building a tool.
|
# Set up variables for building a tool.
|
||||||
#---------------------------------------------------------
|
#---------------------------------------------------------
|
||||||
@ -865,14 +892,6 @@ ToolBuildPath := $(ExmplDir)/$(TOOLNAME)$(EXEEXT)
|
|||||||
else
|
else
|
||||||
ToolBuildPath := $(ToolDir)/$(TOOLNAME)$(EXEEXT)
|
ToolBuildPath := $(ToolDir)/$(TOOLNAME)$(EXEEXT)
|
||||||
endif
|
endif
|
||||||
ProjLibsOptions := $(patsubst %.a.o, -l%, $(addsuffix .o, $(USEDLIBS)))
|
|
||||||
ProjLibsOptions := $(patsubst %.o, $(LibDir)/%.o, $(ProjLibsOptions))
|
|
||||||
LLVMLibsOptions := $(patsubst %.a.o, -l%, $(addsuffix .o, $(LLVMLIBS)))
|
|
||||||
LLVMLibsOptions := $(patsubst %.o, $(LLVMLibDir)/%.o, $(LLVMLibsOptions))
|
|
||||||
ProjUsedLibs := $(patsubst %.a.o, lib%.a, $(addsuffix .o, $(USEDLIBS)))
|
|
||||||
LLVMUsedLibs := $(patsubst %.a.o, lib%.a, $(addsuffix .o, $(LLVMLIBS)))
|
|
||||||
ProjLibsPaths := $(addprefix $(LibDir)/,$(ProjUsedLibs))
|
|
||||||
LLVMLibsPaths := $(addprefix $(LLVMLibDir)/,$(LLVMUsedLibs))
|
|
||||||
|
|
||||||
#---------------------------------------------------------
|
#---------------------------------------------------------
|
||||||
# Tell make that we need to rebuild subdirectories before
|
# Tell make that we need to rebuild subdirectories before
|
||||||
|
Loading…
x
Reference in New Issue
Block a user