[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