[llvm-commits] [dragonegg] r160360 - in /dragonegg/trunk: Makefile README src/Backend.cpp

Duncan Sands baldrick at free.fr
Tue Jul 17 02:59:06 PDT 2012


Author: baldrick
Date: Tue Jul 17 04:59:06 2012
New Revision: 160360

URL: http://llvm.org/viewvc/llvm-project?rev=160360&view=rev
Log:
Add a build time option enabling the loading of LLVM plugins.  This requires
exposing all LLVM symbols dragonegg was linked with, and, to be useful, linking
with the same libraries as "opt".  Slightly tweaked version of a patch by
Sameer Sahasrabuddhe.  Fixes PR13379.

Modified:
    dragonegg/trunk/Makefile
    dragonegg/trunk/README
    dragonegg/trunk/src/Backend.cpp

Modified: dragonegg/trunk/Makefile
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/Makefile?rev=160360&r1=160359&r2=160360&view=diff
==============================================================================
--- dragonegg/trunk/Makefile (original)
+++ dragonegg/trunk/Makefile Tue Jul 17 04:59:06 2012
@@ -36,14 +36,22 @@
 QUIET:=@
 endif
 
-COMMON_FLAGS=-Wall -Wextra -fvisibility=hidden
+COMMON_FLAGS=-Wall -Wextra
+ifdef ENABLE_LLVM_PLUGINS
+COMMON_FLAGS+=-DENABLE_LLVM_PLUGINS
+else
+COMMON_FLAGS+=-fvisibility=hidden
+endif
 CFLAGS+=$(COMMON_FLAGS) $(shell $(LLVM_CONFIG) --cflags)
 CXXFLAGS+=$(COMMON_FLAGS) $(shell $(LLVM_CONFIG) --cxxflags)
 
 ifeq ($(shell uname),Darwin)
 LOADABLE_MODULE_OPTIONS=-bundle -undefined dynamic_lookup
 else
-LOADABLE_MODULE_OPTIONS=-shared -Wl,-O1 -Wl,--version-script=$(TOP_DIR)/exports.map
+LOADABLE_MODULE_OPTIONS=-shared -Wl,-O1
+ifndef ENABLE_LLVM_PLUGINS
+LOADABLE_MODULE_OPTIONS+=-Wl,--version-script=$(TOP_DIR)/exports.map
+endif
 endif
 
 GCC_PLUGIN_DIR:=$(shell $(GCC) -print-file-name=plugin)
@@ -80,6 +88,12 @@
 
 LD_OPTIONS+=$(shell $(LLVM_CONFIG) --ldflags) $(LDFLAGS)
 
+LLVM_COMPONENTS=ipo scalaropts target
+ifdef ENABLE_LLVM_PLUGINS
+# The same components as the "opt" tool.
+LLVM_COMPONENTS+=bitreader bitwriter asmparser instrumentation vectorize
+endif
+
 # NOTE: The following flags can only be used after TARGET_UTIL has been built.
 TARGET_HEADERS+=-DTARGET_NAME=\"$(shell $(TARGET_UTIL) -t)\" \
 		-I$(INCLUDE_DIR)/$(shell $(TARGET_UTIL) -p) \
@@ -119,8 +133,9 @@
 $(PLUGIN): $(PLUGIN_OBJECTS) $(TARGET_OBJECT) $(TARGET_UTIL)
 	@echo Linking $@
 	$(QUIET)$(CXX) -o $@ $(LOADABLE_MODULE_OPTIONS) $(CXXFLAGS) \
-	$(PLUGIN_OBJECTS) $(TARGET_OBJECT) $(shell $(LLVM_CONFIG) --libs \
-	analysis core ipo scalaropts target $(shell $(TARGET_UTIL) -p)) \
+	$(PLUGIN_OBJECTS) $(TARGET_OBJECT) \
+	$(shell $(LLVM_CONFIG) --libs $(LLVM_COMPONENTS) \
+	$(shell $(TARGET_UTIL) -p)) \
 	$(LD_OPTIONS)
 
 $(LIT_SITE_CONFIG): $(TEST_SRC_DIR)/dragonegg-lit.site.cfg.in

Modified: dragonegg/trunk/README
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/README?rev=160360&r1=160359&r2=160360&view=diff
==============================================================================
--- dragonegg/trunk/README (original)
+++ dragonegg/trunk/README Tue Jul 17 04:59:06 2012
@@ -54,6 +54,9 @@
 
 The end result of the build is a shared library, dragonegg.so.
 
+If you want the dragonegg plugin to be able to load LLVM plugins then pass
+ENABLE_LLVM_PLUGINS=1 to make.
+
 
 ----------------------
 - USAGE INSTRUCTIONS -

Modified: dragonegg/trunk/src/Backend.cpp
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/src/Backend.cpp?rev=160360&r1=160359&r2=160360&view=diff
==============================================================================
--- dragonegg/trunk/src/Backend.cpp (original)
+++ dragonegg/trunk/src/Backend.cpp Tue Jul 17 04:59:06 2012
@@ -40,7 +40,6 @@
 #include "llvm/CodeGen/RegAllocRegistry.h"
 #include "llvm/MC/SubtargetFeature.h"
 #include "llvm/Support/ManagedStatic.h"
-#include "llvm/Support/PluginLoader.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/TargetRegistry.h"
 #include "llvm/Target/TargetData.h"
@@ -48,6 +47,11 @@
 #include "llvm/Transforms/IPO.h"
 #include "llvm/Transforms/IPO/PassManagerBuilder.h"
 
+#ifdef ENABLE_LLVM_PLUGINS
+#include "llvm/LinkAllPasses.h"
+#include "llvm/Support/PluginLoader.h"
+#endif
+
 // System headers
 #include <gmp.h>
 





More information about the llvm-commits mailing list