mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-26 05:00:26 +00:00
Build system tweaks to make it more convenient for the plugin authors.
Plugins can be now compiled in with a slight Makefile change. For example, to compile the new Clang driver, use: cd $LLVMC2_DIR make TOOLNAME=ccc2 BUILTIN_PLUGINS=Clang git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56967 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
88ab90b475
commit
e4a5ea3130
@ -1,15 +0,0 @@
|
||||
//===--- AutoGenerated.cpp - The LLVM Compiler Driver -----------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open
|
||||
// Source License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// Auto-generated tool descriptions - implementation.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// The auto-generated file
|
||||
#include "AutoGenerated.inc"
|
@ -6,24 +6,39 @@
|
||||
# Source License. See LICENSE.TXT for details.
|
||||
#
|
||||
##===----------------------------------------------------------------------===##
|
||||
|
||||
# Compiled-in plugins
|
||||
BUILTIN_PLUGINS = Base
|
||||
|
||||
LEVEL = ../..
|
||||
TOOLNAME = llvmc2
|
||||
BUILT_SOURCES = AutoGenerated.inc
|
||||
LINK_COMPONENTS = support system
|
||||
REQUIRES_EH := 1
|
||||
|
||||
ifneq ($(BUILTIN_PLUGINS),)
|
||||
|
||||
export BUILTIN_LLVMC_PLUGIN=1
|
||||
USEDLIBS = $(patsubst %,LLVMC%,$(BUILTIN_PLUGINS))
|
||||
|
||||
endif
|
||||
|
||||
include $(LEVEL)/Makefile.common
|
||||
|
||||
GRAPH=Graph.td
|
||||
$(GRAPH) : Common.td
|
||||
Graph.td : Tools.td
|
||||
TOOLS_SOURCE=$(GRAPH)
|
||||
TD_COMMON = $(wildcard $(LLVM_SRC_ROOT)/include/llvm/CompilerDriver/*.td)
|
||||
|
||||
# TOFIX: integrate this part into Makefile.rules?
|
||||
# The degree of horrorshowness in that file is too much for me atm.
|
||||
$(ObjDir)/AutoGenerated.inc.tmp: $(TOOLS_SOURCE) $(ObjDir)/.dir $(TBLGEN)
|
||||
$(Echo) "Building LLVMC configuration library with tblgen"
|
||||
$(Verb) $(TableGen) -gen-llvmc -o $(call SYSPATH, $@) $<
|
||||
# There is probably a better way to do this: currently we enter the
|
||||
# subdirectory 2 times - the second time is not needed.
|
||||
# This probably also needs to be integrated into Makefile.rules.
|
||||
define PLUGIN_template
|
||||
PLUGIN_$(1)_SOURCES=$$(wildcard plugins/$(1)/*.cpp)
|
||||
PLUGIN_$(1)_TD_SOURCES=$$(wildcard plugins/$(1)/*.cpp)
|
||||
|
||||
AutoGenerated.inc : $(ObjDir)/AutoGenerated.inc.tmp
|
||||
$(Verb) $(CMP) -s $@ $< || $(CP) $< $@
|
||||
$$(LibDir)/LLVMC$(1).o: $$(PLUGIN_$(1)_SOURCES) $$(PLUGIN_$(1)_TD_SOURCES) \
|
||||
$$(TD_COMMON)
|
||||
@$$(MAKE) -C plugins/$(1)
|
||||
|
||||
$$(RecursiveTargets) ::
|
||||
@$$(MAKE) -C plugins/$(1) $$@
|
||||
endef
|
||||
|
||||
$(foreach plugin,$(BUILTIN_PLUGINS),$(eval $(call PLUGIN_template,$(plugin))))
|
||||
|
1
tools/llvmc2/plugins/Base/AutoGenerated.cpp
Normal file
1
tools/llvmc2/plugins/Base/AutoGenerated.cpp
Normal file
@ -0,0 +1 @@
|
||||
#include "AutoGenerated.inc"
|
@ -11,8 +11,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
include "Common.td"
|
||||
include "Tools.td"
|
||||
include "llvm/CompilerDriver/Common.td"
|
||||
include "llvm/CompilerDriver/Tools.td"
|
||||
|
||||
// Toolchains
|
||||
|
12
tools/llvmc2/plugins/Base/Makefile
Normal file
12
tools/llvmc2/plugins/Base/Makefile
Normal file
@ -0,0 +1,12 @@
|
||||
##===- tools/llvmc2/plugins/Base/Makefile ------------------*- Makefile -*-===##
|
||||
#
|
||||
# The LLVM Compiler Infrastructure
|
||||
#
|
||||
# This file is distributed under the University of Illinois Open Source
|
||||
# License. See LICENSE.TXT for details.
|
||||
#
|
||||
##===----------------------------------------------------------------------===##
|
||||
|
||||
LLVMC_PLUGIN = Base
|
||||
|
||||
include ../Makefile.common
|
1
tools/llvmc2/plugins/Clang/AutoGenerated.cpp
Normal file
1
tools/llvmc2/plugins/Clang/AutoGenerated.cpp
Normal file
@ -0,0 +1 @@
|
||||
#include "AutoGenerated.inc"
|
@ -1,11 +1,11 @@
|
||||
// A (first stab at a) replacement for the Clang's ccc script.
|
||||
// To compile, use this command:
|
||||
// make TOOLNAME=ccc2 GRAPH=examples/Clang.td
|
||||
// cd $LLVMC2_DIR
|
||||
// make TOOLNAME=ccc2 BUILTIN_PLUGINS=Clang
|
||||
|
||||
include "Common.td"
|
||||
include "llvm/CompilerDriver/Common.td"
|
||||
|
||||
|
||||
// TOFIX: Add an explicit option list for aliases and things like this.
|
||||
def Options : OptionList<[
|
||||
(switch_option "E",
|
||||
(help "Stop after the preprocessing stage, do not run the compiler"))
|
13
tools/llvmc2/plugins/Clang/Makefile
Normal file
13
tools/llvmc2/plugins/Clang/Makefile
Normal file
@ -0,0 +1,13 @@
|
||||
##===- tools/llvmc2/plugins/Clang/Makefile -----------------*- Makefile -*-===##
|
||||
#
|
||||
# The LLVM Compiler Infrastructure
|
||||
#
|
||||
# This file is distributed under the University of Illinois Open Source
|
||||
# License. See LICENSE.TXT for details.
|
||||
#
|
||||
##===----------------------------------------------------------------------===##
|
||||
|
||||
LLVMC_PLUGIN = Clang
|
||||
|
||||
include ../Makefile.common
|
||||
|
@ -1,4 +1,4 @@
|
||||
##===- lib/Transforms/Hello/Makefile -----------------------*- Makefile -*-===##
|
||||
##===- tools/llvmc2/plugins/Hello/Makefile -----------------*- Makefile -*-===##
|
||||
#
|
||||
# The LLVM Compiler Infrastructure
|
||||
#
|
||||
@ -7,11 +7,6 @@
|
||||
#
|
||||
##===----------------------------------------------------------------------===##
|
||||
|
||||
LEVEL = ../../../..
|
||||
LIBRARYNAME = LLVMCHello
|
||||
LOADABLE_MODULE = 1
|
||||
REQUIRES_EH = 1
|
||||
USEDLIBS =
|
||||
|
||||
include $(LEVEL)/Makefile.common
|
||||
LLVMC_PLUGIN = Hello
|
||||
|
||||
include ../Makefile.common
|
||||
|
Loading…
Reference in New Issue
Block a user