From 540d73f0cb32a3c520a6951c68393135008e8a17 Mon Sep 17 00:00:00 2001 From: Mikhail Glushenkov Date: Mon, 2 Mar 2009 09:04:13 +0000 Subject: [PATCH] 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 --- Makefile.rules | 55 ++++++++++++++++++++++++++++- tools/llvmc/Makefile | 42 ---------------------- tools/llvmc/plugins/Base/Makefile | 4 +-- tools/llvmc/plugins/Clang/Makefile | 4 +-- tools/llvmc/plugins/Hello/Makefile | 4 +-- tools/llvmc/plugins/Simple/Makefile | 4 +-- 6 files changed, 62 insertions(+), 51 deletions(-) diff --git a/Makefile.rules b/Makefile.rules index 56d3a8739ed..fdad178ea25 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -191,6 +191,28 @@ uninstall:: uninstall-local install-local:: all-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 ############################################################################### @@ -1281,6 +1303,37 @@ $(ObjDir)/%.bc: %.ll $(ObjDir)/.dir $(LLVMAS) $(Echo) "Compiling $*.ll for $(BuildMode) build" $(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 ############################################################################### @@ -1784,5 +1837,5 @@ printvars:: # General debugging rule, use 'make print-XXX' to print the # definition, value and origin of XXX. -print-%: +print-%: $(error PRINT: $(value $*) = "$($*)" (from $(origin $*))) diff --git a/tools/llvmc/Makefile b/tools/llvmc/Makefile index f70c4b5e11c..60961769d19 100644 --- a/tools/llvmc/Makefile +++ b/tools/llvmc/Makefile @@ -9,8 +9,6 @@ LEVEL = ../.. -#ifndef LLVMC_PLUGIN - # The current plan is to make the user copy the skeleton project and change only # this file (and plugins/UserPlugin, of course). @@ -20,43 +18,3 @@ export LLVMC_BUILTIN_PLUGINS = Base Clang DIRS = plugins driver 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 diff --git a/tools/llvmc/plugins/Base/Makefile b/tools/llvmc/plugins/Base/Makefile index 017dcebc022..ebc43350542 100644 --- a/tools/llvmc/plugins/Base/Makefile +++ b/tools/llvmc/plugins/Base/Makefile @@ -7,9 +7,9 @@ # ##===----------------------------------------------------------------------===## -LEVEL = ../.. +LEVEL = ../../../.. LLVMC_PLUGIN = Base BUILT_SOURCES = AutoGenerated.inc -include $(LEVEL)/Makefile +include $(LEVEL)/Makefile.common diff --git a/tools/llvmc/plugins/Clang/Makefile b/tools/llvmc/plugins/Clang/Makefile index bf5429c16a3..5e5b88a44b2 100644 --- a/tools/llvmc/plugins/Clang/Makefile +++ b/tools/llvmc/plugins/Clang/Makefile @@ -7,9 +7,9 @@ # ##===----------------------------------------------------------------------===## -LEVEL = ../.. +LEVEL = ../../../.. LLVMC_PLUGIN = Clang BUILT_SOURCES = AutoGenerated.inc -include $(LEVEL)/Makefile +include $(LEVEL)/Makefile.common diff --git a/tools/llvmc/plugins/Hello/Makefile b/tools/llvmc/plugins/Hello/Makefile index b309bff6626..10325e6a6d5 100644 --- a/tools/llvmc/plugins/Hello/Makefile +++ b/tools/llvmc/plugins/Hello/Makefile @@ -7,8 +7,8 @@ # ##===----------------------------------------------------------------------===## -LEVEL = ../.. +LEVEL = ../../../.. LLVMC_PLUGIN = Hello -include $(LEVEL)/Makefile +include $(LEVEL)/Makefile.common diff --git a/tools/llvmc/plugins/Simple/Makefile b/tools/llvmc/plugins/Simple/Makefile index b108e7018d5..d7adb5d851e 100644 --- a/tools/llvmc/plugins/Simple/Makefile +++ b/tools/llvmc/plugins/Simple/Makefile @@ -7,9 +7,9 @@ # ##===----------------------------------------------------------------------===## -LEVEL = ../.. +LEVEL = ../../../.. LLVMC_PLUGIN = Simple BUILT_SOURCES = AutoGenerated.inc -include $(LEVEL)/Makefile +include $(LEVEL)/Makefile.common