[polly][cmake] patch to build monolithic shared library
David Fang
fang at csl.cornell.edu
Wed Feb 26 15:07:07 PST 2014
Hi,
I've recently refreshed my patch to link polly as a single shared
lib. This was in response to the original report at:
http://llvm.org/bugs/show_bug.cgi?id=14833
Live patch:
https://github.com/fangism/polly/compare/master...shared-lib-patch.diff
I don't really know whether a single shared-lib is preferred over
sub-libraries. This was intended as a workaround, but if parties are
interested, this patch could be cleaned up.
David
--
David Fang
http://www.csl.cornell.edu/~fang/
-------------- next part --------------
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index dba1b85..b1e2b11 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -1,29 +1,70 @@
-add_subdirectory(Analysis)
-add_subdirectory(CodeGen)
-add_subdirectory(Exchange)
-add_subdirectory(Support)
+# patch: flattened sub-components of Polly into monolithic link
+# to avoid intra-module circular dependencies
+# because cmake shared-lib build of convenience libraries is broken.
add_subdirectory(JSON)
set(MODULE TRUE)
set(LLVM_NO_RTTI 1)
-if (SCOPLIB_FOUND)
- set(POLLY_SCOPLIB_FILES Pocc.cpp)
-endif (SCOPLIB_FOUND)
-
if (PLUTO_FOUND)
set(POLLY_PLUTO_FILES Pluto.cpp)
endif (PLUTO_FOUND)
set(LLVM_USED_LIBS
- LLVMPollyAnalysis
- LLVMPollyCodeGen
- LLVMPollyExchange
- LLVMPollySupport
+# LLVMPollyAnalysis
+# LLVMPollyCodeGen
+# LLVMPollyExchange
+# LLVMPollySupport
LLVMPollyJSON
)
+if (CLOOG_FOUND)
+ set(CLOOG_FILES
+ CodeGen/Cloog.cpp
+ CodeGen/CodeGeneration.cpp)
+endif (CLOOG_FOUND)
+
+set(ISL_CODEGEN_FILES
+ CodeGen/IslAst.cpp
+ CodeGen/IslCodeGeneration.cpp)
+
+if (GPU_CODEGEN)
+ set (GPGPU_CODEGEN_FILES
+ CodeGen/PTXGenerator.cpp)
+endif (GPU_CODEGEN)
+
+if (OPENSCOP_FOUND)
+ set(POLLY_OPENSCOP_FILES
+ Exchange/OpenScopImporter.cpp
+ Exchange/OpenScopExporter.cpp)
+endif (OPENSCOP_FOUND)
+
+if (SCOPLIB_FOUND)
+ set(POLLY_SCOPLIB_FILES
+ Pocc.cpp
+ Exchange/ScopLib.cpp
+ Exchange/ScopLibExporter.cpp
+ Exchange/ScopLibImporter.cpp)
+endif (SCOPLIB_FOUND)
+
add_polly_loadable_module(LLVMPolly
+ Analysis/Dependences.cpp
+ Analysis/ScopDetection.cpp
+ Analysis/ScopInfo.cpp
+ Analysis/ScopGraphPrinter.cpp
+ Analysis/ScopPass.cpp
+ Analysis/TempScopInfo.cpp
+ CodeGen/BlockGenerators.cpp
+ ${CLOOG_FILES}
+ ${ISL_CODEGEN_FILES}
+ CodeGen/LoopGenerators.cpp
+ CodeGen/Utils.cpp
+ ${GPGPU_CODEGEN_FILES}
+ Support/GICHelper.cpp
+ Support/SCEVValidator.cpp
+ Support/ScopHelper.cpp
+ Exchange/JSONExporter.cpp
+ ${POLLY_OPENSCOP_FILES}
Canonicalization.cpp
CodePreparation.cpp
DeadCodeElimination.cpp
@@ -42,10 +83,10 @@ if (TARGET intrinsics_gen)
endif()
add_dependencies(LLVMPolly
- LLVMPollyAnalysis
- LLVMPollyCodeGen
- LLVMPollyExchange
- LLVMPollySupport
+# LLVMPollyAnalysis
+# LLVMPollyCodeGen
+# LLVMPollyExchange
+# LLVMPollySupport
LLVMPollyJSON
)
@@ -57,3 +98,8 @@ set_target_properties(LLVMPolly
if (PLUTO_FOUND)
target_link_libraries(LLVMPolly ${PLUTO_LIBRARY})
endif(PLUTO_FOUND)
+
+target_link_libraries(LLVMPolly
+ LLVMSupport
+ LLVMTransformUtils
+)
More information about the llvm-commits
mailing list