Move the rules for building plugins to Makefile.rules.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65827 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Mikhail Glushenkov 2009-03-02 09:04:13 +00:00
parent b14f5b5e9d
commit 540d73f0cb
6 changed files with 62 additions and 51 deletions

View File

@ -191,6 +191,28 @@ uninstall:: uninstall-local
install-local:: all-local install-local:: all-local
install-bytecode:: install-bytecode-local install-bytecode:: install-bytecode-local
###############################################################################
# LLVMC: Provide rules for compiling llvmc plugins
###############################################################################
ifdef LLVMC_PLUGIN
LIBRARYNAME := $(patsubst %,plugin_llvmc_%,$(LLVMC_PLUGIN))
REQUIRES_EH := 1
# Build a dynamic library if the user runs `make` directly from the plugin
# directory.
ifndef LLVMC_BUILTIN_PLUGIN
LOADABLE_MODULE = 1
endif
# TableGen stuff...
ifneq ($(BUILT_SOURCES),)
BUILD_AUTOGENERATED_INC=1
endif
endif # LLVMC_PLUGIN
############################################################################### ###############################################################################
# VARIABLES: Set up various variables based on configuration data # VARIABLES: Set up various variables based on configuration data
############################################################################### ###############################################################################
@ -1281,6 +1303,37 @@ $(ObjDir)/%.bc: %.ll $(ObjDir)/.dir $(LLVMAS)
$(Echo) "Compiling $*.ll for $(BuildMode) build" $(Echo) "Compiling $*.ll for $(BuildMode) build"
$(Verb) $(LLVMAS) $< -f -o $@ $(Verb) $(LLVMAS) $< -f -o $@
###############################################################################
# LLVMC: Provide rules for compiling llvmc plugins, pt. 2
###############################################################################
ifdef BUILD_AUTOGENERATED_INC
# This needs to be in a separate section, otherwise we get an infinite loop:)
# This stuff is mostly copied from the TABLEGEN section below
# TODO: merge
LLVMCPluginSrc := $(strip $(wildcard $(PROJ_SRC_DIR)/*.td))
TDFiles := $(LLVMCPluginSrc) \
$(strip $(wildcard $(LLVM_SRC_ROOT)/include/llvm/CompilerDriver/*.td))
INCFiles := $(filter %.inc,$(BUILT_SOURCES))
INCTMPFiles := $(INCFiles:%=$(ObjDir)/%.tmp)
.PRECIOUS: $(INCTMPFiles) $(INCFiles)
# All of these files depend on tblgen and the .td files.
$(INCTMPFiles) : $(TBLGEN) $(TDFiles)
$(INCFiles) : %.inc : $(ObjDir)/%.inc.tmp
$(Verb) $(CMP) -s $@ $< || $(CP) $< $@
$(ObjDir)/AutoGenerated.inc.tmp: $(LLVMCPluginSrc) $(ObjDir)/.dir \
$(TBLGEN) $(TD_COMMON)
$(Echo) "Building LLVMC configuration library with tblgen"
$(Verb) $(TableGen) -gen-llvmc -o $(call SYSPATH, $@) $<
endif # BUILD_AUTOGENERATED_INC
############################################################################### ###############################################################################
# TABLEGEN: Provide rules for running tblgen to produce *.inc files # TABLEGEN: Provide rules for running tblgen to produce *.inc files
############################################################################### ###############################################################################
@ -1784,5 +1837,5 @@ printvars::
# General debugging rule, use 'make print-XXX' to print the # General debugging rule, use 'make print-XXX' to print the
# definition, value and origin of XXX. # definition, value and origin of XXX.
print-%: print-%:
$(error PRINT: $(value $*) = "$($*)" (from $(origin $*))) $(error PRINT: $(value $*) = "$($*)" (from $(origin $*)))

View File

@ -9,8 +9,6 @@
LEVEL = ../.. LEVEL = ../..
#ifndef LLVMC_PLUGIN
# The current plan is to make the user copy the skeleton project and change only # The current plan is to make the user copy the skeleton project and change only
# this file (and plugins/UserPlugin, of course). # this file (and plugins/UserPlugin, of course).
@ -20,43 +18,3 @@ export LLVMC_BUILTIN_PLUGINS = Base Clang
DIRS = plugins driver DIRS = plugins driver
include $(LEVEL)/Makefile.common include $(LEVEL)/Makefile.common
else # LLVMC_PLUGIN
# We are included from plugins/PluginName/Makefile...
# TODO: This part must be merged into Makefile.rules.
LEVEL = ../../../..
LIBRARYNAME := $(patsubst %,plugin_llvmc_%,$(LLVMC_PLUGIN))
REQUIRES_EH := 1
# Build a dynamic library if the user runs `make` from plugins/PluginName
ifndef LLVMC_BUILTIN_PLUGIN
LOADABLE_MODULE = 1
endif
# TableGen stuff...
ifneq ($(BUILT_SOURCES),)
BUILD_AUTOGENERATED_INC=1
endif
include $(LEVEL)/Makefile.common
ifdef BUILD_AUTOGENERATED_INC
TOOLS_SOURCE := $(strip $(wildcard $(PROJ_SRC_DIR)/*.td))
TD_COMMON :=$(strip $(wildcard \
$(LLVM_SRC_ROOT)/include/llvm/CompilerDriver/*.td))
$(ObjDir)/AutoGenerated.inc.tmp: $(TOOLS_SOURCE) $(ObjDir)/.dir \
$(TBLGEN) $(TD_COMMON)
$(Echo) "Building LLVMC configuration library with tblgen"
$(Verb) $(TableGen) -gen-llvmc -o $(call SYSPATH, $@) $<
AutoGenerated.inc : $(ObjDir)/AutoGenerated.inc.tmp
$(Verb) $(CMP) -s $@ $< || $(CP) $< $@
endif # BUILD_AUTOGENERATED_INC
endif # LLVMC_PLUGIN

View File

@ -7,9 +7,9 @@
# #
##===----------------------------------------------------------------------===## ##===----------------------------------------------------------------------===##
LEVEL = ../.. LEVEL = ../../../..
LLVMC_PLUGIN = Base LLVMC_PLUGIN = Base
BUILT_SOURCES = AutoGenerated.inc BUILT_SOURCES = AutoGenerated.inc
include $(LEVEL)/Makefile include $(LEVEL)/Makefile.common

View File

@ -7,9 +7,9 @@
# #
##===----------------------------------------------------------------------===## ##===----------------------------------------------------------------------===##
LEVEL = ../.. LEVEL = ../../../..
LLVMC_PLUGIN = Clang LLVMC_PLUGIN = Clang
BUILT_SOURCES = AutoGenerated.inc BUILT_SOURCES = AutoGenerated.inc
include $(LEVEL)/Makefile include $(LEVEL)/Makefile.common

View File

@ -7,8 +7,8 @@
# #
##===----------------------------------------------------------------------===## ##===----------------------------------------------------------------------===##
LEVEL = ../.. LEVEL = ../../../..
LLVMC_PLUGIN = Hello LLVMC_PLUGIN = Hello
include $(LEVEL)/Makefile include $(LEVEL)/Makefile.common

View File

@ -7,9 +7,9 @@
# #
##===----------------------------------------------------------------------===## ##===----------------------------------------------------------------------===##
LEVEL = ../.. LEVEL = ../../../..
LLVMC_PLUGIN = Simple LLVMC_PLUGIN = Simple
BUILT_SOURCES = AutoGenerated.inc BUILT_SOURCES = AutoGenerated.inc
include $(LEVEL)/Makefile include $(LEVEL)/Makefile.common