mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-28 04:33:05 +00:00
Implement BYTECODE_LIBRARY support
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7855 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
fad4929ee2
commit
481cc7c79e
@ -119,14 +119,14 @@ endif
|
|||||||
# It is typically the root directory of what we're compiling now.
|
# It is typically the root directory of what we're compiling now.
|
||||||
#
|
#
|
||||||
ifndef LLVM_SRC_ROOT
|
ifndef LLVM_SRC_ROOT
|
||||||
LLVM_SRC_ROOT = $(BUILD_SRC_ROOT)
|
LLVM_SRC_ROOT := $(BUILD_SRC_ROOT)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
#
|
#
|
||||||
# Set the LLVM object directory.
|
# Set the LLVM object directory.
|
||||||
#
|
#
|
||||||
ifndef LLVM_OBJ_ROOT
|
ifndef LLVM_OBJ_ROOT
|
||||||
LLVM_OBJ_ROOT = $(BUILD_OBJ_ROOT)
|
LLVM_OBJ_ROOT := $(BUILD_OBJ_ROOT)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
###########################################################################
|
###########################################################################
|
||||||
@ -143,6 +143,7 @@ endif
|
|||||||
ifdef BYTECODE_LIBRARY
|
ifdef BYTECODE_LIBRARY
|
||||||
# if BYTECODE_LIBRARY is specified, the default is to build the bytecode lib
|
# if BYTECODE_LIBRARY is specified, the default is to build the bytecode lib
|
||||||
all:: bytecodelib
|
all:: bytecodelib
|
||||||
|
install:: bytecodelib-install
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Default Rule: Make sure it's also a :: rule
|
# Default Rule: Make sure it's also a :: rule
|
||||||
@ -172,7 +173,8 @@ prdirs::
|
|||||||
# slightly since GNU Make will not try to find implicit rules for targets
|
# slightly since GNU Make will not try to find implicit rules for targets
|
||||||
# which are marked as Phony.
|
# 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:
|
# Miscellaneous paths and commands:
|
||||||
@ -227,6 +229,7 @@ endif
|
|||||||
DESTLIBDEBUG := $(BUILD_OBJ_ROOT)/lib/Debug
|
DESTLIBDEBUG := $(BUILD_OBJ_ROOT)/lib/Debug
|
||||||
DESTLIBRELEASE := $(BUILD_OBJ_ROOT)/lib/Release
|
DESTLIBRELEASE := $(BUILD_OBJ_ROOT)/lib/Release
|
||||||
DESTLIBPROFILE := $(BUILD_OBJ_ROOT)/lib/Profile
|
DESTLIBPROFILE := $(BUILD_OBJ_ROOT)/lib/Profile
|
||||||
|
DESTLIBBYTECODE := $(BUILD_OBJ_ROOT)/lib/Bytecode
|
||||||
DESTLIBCURRENT := $(BUILD_OBJ_ROOT)/lib/$(CONFIGURATION)
|
DESTLIBCURRENT := $(BUILD_OBJ_ROOT)/lib/$(CONFIGURATION)
|
||||||
|
|
||||||
# LLVM libraries used for linking
|
# LLVM libraries used for linking
|
||||||
@ -300,14 +303,26 @@ endif
|
|||||||
###########################################################################
|
###########################################################################
|
||||||
|
|
||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
# Special tools used while building the LLVM tree. Burg is built as part
|
# Utilities used while building the LLVM tree, which live in the utils dir
|
||||||
# of the utils directory.
|
#
|
||||||
#--------------------------------------------------------------------------
|
|
||||||
BURG := $(LLVMTOOLCURRENT)/burg
|
BURG := $(LLVMTOOLCURRENT)/burg
|
||||||
RunBurg := $(BURG) $(BURG_OPTS)
|
RunBurg := $(BURG) $(BURG_OPTS)
|
||||||
|
|
||||||
TBLGEN := $(LLVMTOOLCURRENT)/tblgen
|
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
|
# Compile Time Flags
|
||||||
@ -399,10 +414,12 @@ endif
|
|||||||
#
|
#
|
||||||
# Libtool Objects
|
# 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))
|
ObjectsO := $(addprefix $(BUILD_OBJ_DIR)/Release/,$(Objs))
|
||||||
ObjectsP := $(addprefix $(BUILD_OBJ_DIR)/Profile/,$(Objs))
|
ObjectsP := $(addprefix $(BUILD_OBJ_DIR)/Profile/,$(Objs))
|
||||||
ObjectsG := $(addprefix $(BUILD_OBJ_DIR)/Debug/,$(Objs))
|
ObjectsG := $(addprefix $(BUILD_OBJ_DIR)/Debug/,$(Objs))
|
||||||
|
ObjectsBC := $(addprefix $(BUILD_OBJ_DIR)/Bytecode/,$(addsuffix .bc, $(Srcs)))
|
||||||
|
|
||||||
#
|
#
|
||||||
# The real objects underlying the libtool objects
|
# The real objects underlying the libtool objects
|
||||||
@ -481,6 +498,7 @@ LIBNAME_AG := $(DESTLIBDEBUG)/lib$(LIBRARYNAME).a
|
|||||||
LIBNAME_OBJO := $(DESTLIBRELEASE)/$(LIBRARYNAME).o
|
LIBNAME_OBJO := $(DESTLIBRELEASE)/$(LIBRARYNAME).o
|
||||||
LIBNAME_OBJP := $(DESTLIBPROFILE)/$(LIBRARYNAME).o
|
LIBNAME_OBJP := $(DESTLIBPROFILE)/$(LIBRARYNAME).o
|
||||||
LIBNAME_OBJG := $(DESTLIBDEBUG)/$(LIBRARYNAME).o
|
LIBNAME_OBJG := $(DESTLIBDEBUG)/$(LIBRARYNAME).o
|
||||||
|
LIBNAME_BC := $(DESTLIBBYTECODE)/lib$(LIBRARYNAME).bc
|
||||||
|
|
||||||
#--------------------------------------------------------------------
|
#--------------------------------------------------------------------
|
||||||
# Library Targets
|
# Library Targets
|
||||||
@ -489,6 +507,12 @@ LIBNAME_OBJG := $(DESTLIBDEBUG)/$(LIBRARYNAME).o
|
|||||||
|
|
||||||
# dynamic target builds a shared object version of the library...
|
# dynamic target builds a shared object version of the library...
|
||||||
dynamic:: $(DESTLIBCURRENT)/lib$(LIBRARYNAME).so
|
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?
|
# Does the library want a .o version built?
|
||||||
ifndef DONT_BUILD_RELINKED
|
ifndef DONT_BUILD_RELINKED
|
||||||
@ -504,6 +528,18 @@ endif
|
|||||||
# Rules for building libraries
|
# 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.
|
# Rules for building dynamically linked libraries.
|
||||||
#
|
#
|
||||||
@ -540,6 +576,7 @@ $(LIBNAME_AG): $(ObjectsG) $(LibSubDirs) $(DESTLIBDEBUG)/.dir
|
|||||||
@$(RM) -f $@
|
@$(RM) -f $@
|
||||||
$(VERB) $(Link) -g $(STRIP) -o $@ $(ObjectsG) $(LibSubDirs) -static
|
$(VERB) $(Link) -g $(STRIP) -o $@ $(ObjectsG) $(LibSubDirs) -static
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Rules for building .o libraries.
|
# Rules for building .o libraries.
|
||||||
#
|
#
|
||||||
@ -663,7 +700,7 @@ endif
|
|||||||
|
|
||||||
|
|
||||||
#---------------------------------------------------------
|
#---------------------------------------------------------
|
||||||
.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
|
.PRECIOUS: $(BUILD_OBJ_DIR)/Debug/.dir $(BUILD_OBJ_DIR)/Release/.dir
|
||||||
|
|
||||||
# Create .lo files in the ObjectFiles directory from the .cpp and .c files...
|
# Create .lo files in the ObjectFiles directory from the .cpp and .c files...
|
||||||
@ -691,6 +728,19 @@ $(BUILD_OBJ_DIR)/Debug/%.lo: $(SourceDir)%.c $(BUILD_OBJ_DIR)/Debug/.dir
|
|||||||
@echo "Compiling $<"
|
@echo "Compiling $<"
|
||||||
$(VERB) $(CompileCG) $< -o $@
|
$(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
|
# Rules for building lex/yacc files
|
||||||
#
|
#
|
||||||
@ -747,7 +797,9 @@ endif
|
|||||||
|
|
||||||
# 'make clean' nukes the tree
|
# 'make clean' nukes the tree
|
||||||
clean::
|
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 core core.[0-9][0-9]* *.o *.d *.so *~ *.flc
|
||||||
$(VERB) $(RM) -f $(LEX_OUTPUT) $(YACC_OUTPUT)
|
$(VERB) $(RM) -f $(LEX_OUTPUT) $(YACC_OUTPUT)
|
||||||
|
|
||||||
|
@ -119,14 +119,14 @@ endif
|
|||||||
# It is typically the root directory of what we're compiling now.
|
# It is typically the root directory of what we're compiling now.
|
||||||
#
|
#
|
||||||
ifndef LLVM_SRC_ROOT
|
ifndef LLVM_SRC_ROOT
|
||||||
LLVM_SRC_ROOT = $(BUILD_SRC_ROOT)
|
LLVM_SRC_ROOT := $(BUILD_SRC_ROOT)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
#
|
#
|
||||||
# Set the LLVM object directory.
|
# Set the LLVM object directory.
|
||||||
#
|
#
|
||||||
ifndef LLVM_OBJ_ROOT
|
ifndef LLVM_OBJ_ROOT
|
||||||
LLVM_OBJ_ROOT = $(BUILD_OBJ_ROOT)
|
LLVM_OBJ_ROOT := $(BUILD_OBJ_ROOT)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
###########################################################################
|
###########################################################################
|
||||||
@ -143,6 +143,7 @@ endif
|
|||||||
ifdef BYTECODE_LIBRARY
|
ifdef BYTECODE_LIBRARY
|
||||||
# if BYTECODE_LIBRARY is specified, the default is to build the bytecode lib
|
# if BYTECODE_LIBRARY is specified, the default is to build the bytecode lib
|
||||||
all:: bytecodelib
|
all:: bytecodelib
|
||||||
|
install:: bytecodelib-install
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Default Rule: Make sure it's also a :: rule
|
# Default Rule: Make sure it's also a :: rule
|
||||||
@ -172,7 +173,8 @@ prdirs::
|
|||||||
# slightly since GNU Make will not try to find implicit rules for targets
|
# slightly since GNU Make will not try to find implicit rules for targets
|
||||||
# which are marked as Phony.
|
# 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:
|
# Miscellaneous paths and commands:
|
||||||
@ -227,6 +229,7 @@ endif
|
|||||||
DESTLIBDEBUG := $(BUILD_OBJ_ROOT)/lib/Debug
|
DESTLIBDEBUG := $(BUILD_OBJ_ROOT)/lib/Debug
|
||||||
DESTLIBRELEASE := $(BUILD_OBJ_ROOT)/lib/Release
|
DESTLIBRELEASE := $(BUILD_OBJ_ROOT)/lib/Release
|
||||||
DESTLIBPROFILE := $(BUILD_OBJ_ROOT)/lib/Profile
|
DESTLIBPROFILE := $(BUILD_OBJ_ROOT)/lib/Profile
|
||||||
|
DESTLIBBYTECODE := $(BUILD_OBJ_ROOT)/lib/Bytecode
|
||||||
DESTLIBCURRENT := $(BUILD_OBJ_ROOT)/lib/$(CONFIGURATION)
|
DESTLIBCURRENT := $(BUILD_OBJ_ROOT)/lib/$(CONFIGURATION)
|
||||||
|
|
||||||
# LLVM libraries used for linking
|
# LLVM libraries used for linking
|
||||||
@ -300,14 +303,26 @@ endif
|
|||||||
###########################################################################
|
###########################################################################
|
||||||
|
|
||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
# Special tools used while building the LLVM tree. Burg is built as part
|
# Utilities used while building the LLVM tree, which live in the utils dir
|
||||||
# of the utils directory.
|
#
|
||||||
#--------------------------------------------------------------------------
|
|
||||||
BURG := $(LLVMTOOLCURRENT)/burg
|
BURG := $(LLVMTOOLCURRENT)/burg
|
||||||
RunBurg := $(BURG) $(BURG_OPTS)
|
RunBurg := $(BURG) $(BURG_OPTS)
|
||||||
|
|
||||||
TBLGEN := $(LLVMTOOLCURRENT)/tblgen
|
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
|
# Compile Time Flags
|
||||||
@ -399,10 +414,12 @@ endif
|
|||||||
#
|
#
|
||||||
# Libtool Objects
|
# 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))
|
ObjectsO := $(addprefix $(BUILD_OBJ_DIR)/Release/,$(Objs))
|
||||||
ObjectsP := $(addprefix $(BUILD_OBJ_DIR)/Profile/,$(Objs))
|
ObjectsP := $(addprefix $(BUILD_OBJ_DIR)/Profile/,$(Objs))
|
||||||
ObjectsG := $(addprefix $(BUILD_OBJ_DIR)/Debug/,$(Objs))
|
ObjectsG := $(addprefix $(BUILD_OBJ_DIR)/Debug/,$(Objs))
|
||||||
|
ObjectsBC := $(addprefix $(BUILD_OBJ_DIR)/Bytecode/,$(addsuffix .bc, $(Srcs)))
|
||||||
|
|
||||||
#
|
#
|
||||||
# The real objects underlying the libtool objects
|
# The real objects underlying the libtool objects
|
||||||
@ -481,6 +498,7 @@ LIBNAME_AG := $(DESTLIBDEBUG)/lib$(LIBRARYNAME).a
|
|||||||
LIBNAME_OBJO := $(DESTLIBRELEASE)/$(LIBRARYNAME).o
|
LIBNAME_OBJO := $(DESTLIBRELEASE)/$(LIBRARYNAME).o
|
||||||
LIBNAME_OBJP := $(DESTLIBPROFILE)/$(LIBRARYNAME).o
|
LIBNAME_OBJP := $(DESTLIBPROFILE)/$(LIBRARYNAME).o
|
||||||
LIBNAME_OBJG := $(DESTLIBDEBUG)/$(LIBRARYNAME).o
|
LIBNAME_OBJG := $(DESTLIBDEBUG)/$(LIBRARYNAME).o
|
||||||
|
LIBNAME_BC := $(DESTLIBBYTECODE)/lib$(LIBRARYNAME).bc
|
||||||
|
|
||||||
#--------------------------------------------------------------------
|
#--------------------------------------------------------------------
|
||||||
# Library Targets
|
# Library Targets
|
||||||
@ -489,6 +507,12 @@ LIBNAME_OBJG := $(DESTLIBDEBUG)/$(LIBRARYNAME).o
|
|||||||
|
|
||||||
# dynamic target builds a shared object version of the library...
|
# dynamic target builds a shared object version of the library...
|
||||||
dynamic:: $(DESTLIBCURRENT)/lib$(LIBRARYNAME).so
|
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?
|
# Does the library want a .o version built?
|
||||||
ifndef DONT_BUILD_RELINKED
|
ifndef DONT_BUILD_RELINKED
|
||||||
@ -504,6 +528,18 @@ endif
|
|||||||
# Rules for building libraries
|
# 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.
|
# Rules for building dynamically linked libraries.
|
||||||
#
|
#
|
||||||
@ -540,6 +576,7 @@ $(LIBNAME_AG): $(ObjectsG) $(LibSubDirs) $(DESTLIBDEBUG)/.dir
|
|||||||
@$(RM) -f $@
|
@$(RM) -f $@
|
||||||
$(VERB) $(Link) -g $(STRIP) -o $@ $(ObjectsG) $(LibSubDirs) -static
|
$(VERB) $(Link) -g $(STRIP) -o $@ $(ObjectsG) $(LibSubDirs) -static
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Rules for building .o libraries.
|
# Rules for building .o libraries.
|
||||||
#
|
#
|
||||||
@ -663,7 +700,7 @@ endif
|
|||||||
|
|
||||||
|
|
||||||
#---------------------------------------------------------
|
#---------------------------------------------------------
|
||||||
.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
|
.PRECIOUS: $(BUILD_OBJ_DIR)/Debug/.dir $(BUILD_OBJ_DIR)/Release/.dir
|
||||||
|
|
||||||
# Create .lo files in the ObjectFiles directory from the .cpp and .c files...
|
# Create .lo files in the ObjectFiles directory from the .cpp and .c files...
|
||||||
@ -691,6 +728,19 @@ $(BUILD_OBJ_DIR)/Debug/%.lo: $(SourceDir)%.c $(BUILD_OBJ_DIR)/Debug/.dir
|
|||||||
@echo "Compiling $<"
|
@echo "Compiling $<"
|
||||||
$(VERB) $(CompileCG) $< -o $@
|
$(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
|
# Rules for building lex/yacc files
|
||||||
#
|
#
|
||||||
@ -747,7 +797,9 @@ endif
|
|||||||
|
|
||||||
# 'make clean' nukes the tree
|
# 'make clean' nukes the tree
|
||||||
clean::
|
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 core core.[0-9][0-9]* *.o *.d *.so *~ *.flc
|
||||||
$(VERB) $(RM) -f $(LEX_OUTPUT) $(YACC_OUTPUT)
|
$(VERB) $(RM) -f $(LEX_OUTPUT) $(YACC_OUTPUT)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user