From de8f33c199f3bf2049b0b732169f2bd8717469c6 Mon Sep 17 00:00:00 2001 From: Peter Collingbourne Date: Thu, 6 Oct 2011 01:51:51 +0000 Subject: Build system infrastructure for multiple tblgens. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141266 91177308-0d34-0410-b5e6-96231b3b80d8 --- CMakeLists.txt | 14 ++----- Makefile.rules | 77 ++++++++++++++++++------------------ cmake/modules/CrossCompileLLVM.cmake | 26 ------------ cmake/modules/TableGen.cmake | 76 +++++++++++++++++++++++++++++++++-- include/llvm/CMakeLists.txt | 2 +- lib/Target/ARM/CMakeLists.txt | 26 ++++++------ lib/Target/Alpha/CMakeLists.txt | 12 +++--- lib/Target/Blackfin/CMakeLists.txt | 14 +++---- lib/Target/CellSPU/CMakeLists.txt | 14 +++---- lib/Target/MBlaze/CMakeLists.txt | 20 +++++----- lib/Target/MSP430/CMakeLists.txt | 12 +++--- lib/Target/Mips/CMakeLists.txt | 12 +++--- lib/Target/PTX/CMakeLists.txt | 10 ++--- lib/Target/PowerPC/CMakeLists.txt | 16 ++++---- lib/Target/Sparc/CMakeLists.txt | 12 +++--- lib/Target/SystemZ/CMakeLists.txt | 12 +++--- lib/Target/X86/CMakeLists.txt | 22 +++++------ lib/Target/XCore/CMakeLists.txt | 12 +++--- lib/VMCore/Makefile | 4 +- utils/TableGen/CMakeLists.txt | 16 +------- utils/TableGen/Makefile | 2 +- 21 files changed, 218 insertions(+), 193 deletions(-) delete mode 100644 cmake/modules/CrossCompileLLVM.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 874f381a21..039f619ff9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -187,6 +187,10 @@ endif( ${CMAKE_SYSTEM_NAME} MATCHES SunOS ) include(AddLLVM) include(TableGen) +macro(llvm_tablegen) + tablegen(LLVM ${ARGN}) +endmacro() + if( MINGW ) # People report that -O3 is unreliable on MinGW. The traditional # build also uses -O2 for that reason: @@ -197,18 +201,8 @@ endif() add_subdirectory(lib/Support) add_subdirectory(lib/TableGen) -set(LLVM_TABLEGEN "tblgen" CACHE - STRING "Native TableGen executable. Saves building one when cross-compiling.") -# Effective tblgen executable to be used: -set(LLVM_TABLEGEN_EXE ${LLVM_TABLEGEN}) - add_subdirectory(utils/TableGen) -if( CMAKE_CROSSCOMPILING ) - # This adds a dependency on target `tblgen', so must go after utils/TableGen - include( CrossCompileLLVM ) -endif( CMAKE_CROSSCOMPILING ) - add_subdirectory(include/llvm) add_subdirectory(lib) diff --git a/Makefile.rules b/Makefile.rules index c12ba1d8f7..4d30d45b67 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -450,11 +450,11 @@ Echo = @$(EchoCmd) ifndef LLVMAS LLVMAS := $(LLVMToolDir)/llvm-as$(EXEEXT) endif -ifndef TBLGEN +ifndef LLVM_TBLGEN ifeq ($(LLVM_CROSS_COMPILING),1) - TBLGEN := $(BuildLLVMToolDir)/tblgen$(BUILD_EXEEXT) + LLVM_TBLGEN := $(BuildLLVMToolDir)/llvm-tblgen$(BUILD_EXEEXT) else - TBLGEN := $(LLVMToolDir)/tblgen$(EXEEXT) + LLVM_TBLGEN := $(LLVMToolDir)/llvm-tblgen$(EXEEXT) endif endif LLVM_CONFIG := $(LLVMToolDir)/llvm-config @@ -684,10 +684,11 @@ DataInstall = $(INSTALL) -m 0644 # When compiling under Mingw/Cygwin, the tblgen tool expects Windows # paths. In this case, the SYSPATH function (defined in # Makefile.config) transforms Unix paths into Windows paths. -TableGen = $(TBLGEN) -I $(call SYSPATH, $(PROJ_SRC_DIR)) \ +TableGen.Flags= -I $(call SYSPATH, $(PROJ_SRC_DIR)) \ -I $(call SYSPATH, $(LLVM_SRC_ROOT)/include) \ -I $(call SYSPATH, $(PROJ_SRC_ROOT)/include) \ -I $(call SYSPATH, $(PROJ_SRC_ROOT)/lib/Target) +LLVMTableGen = $(LLVM_TBLGEN) $(TableGen.Flags) Archive = $(AR) $(AR.Flags) LArchive = $(LLVMToolDir)/llvm-ar rcsf @@ -1700,87 +1701,87 @@ TDFiles := $(strip $(wildcard $(PROJ_SRC_DIR)/*.td) \ $(LLVM_SRC_ROOT)/include/llvm/CodeGen/ValueTypes.td) \ $(wildcard $(LLVM_SRC_ROOT)/include/llvm/Intrinsics*.td) -# All of these files depend on tblgen and the .td files. -$(INCTMPFiles) : $(TBLGEN) $(TDFiles) +# All .inc.tmp files depend on the .td files. +$(INCTMPFiles) : $(TDFiles) $(TARGET:%=$(ObjDir)/%GenRegisterInfo.inc.tmp): \ -$(ObjDir)/%GenRegisterInfo.inc.tmp : %.td $(ObjDir)/.dir +$(ObjDir)/%GenRegisterInfo.inc.tmp : %.td $(ObjDir)/.dir $(LLVM_TBLGEN) $(Echo) "Building $(