ViennaPS 4.1.0__cp312-cp312-musllinux_1_1_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of ViennaPS might be problematic. Click here for more details.

Files changed (353) hide show
  1. viennaps/__init__.py +126 -0
  2. viennaps/__init__.pyi +241 -0
  3. viennaps/_core/__init__.pyi +1154 -0
  4. viennaps/_core/constants.pyi +46 -0
  5. viennaps/_core/gpu.pyi +74 -0
  6. viennaps/_core/util.pyi +13 -0
  7. viennaps/_core.cpython-312-x86_64-linux-musl.so +0 -0
  8. viennaps/d2/__init__.pyi +1505 -0
  9. viennaps/d2/gpu.pyi +90 -0
  10. viennaps/d3/__init__.pyi +1510 -0
  11. viennaps/d3/gpu.pyi +90 -0
  12. viennaps-4.1.0.dist-info/METADATA +314 -0
  13. viennaps-4.1.0.dist-info/RECORD +353 -0
  14. viennaps-4.1.0.dist-info/WHEEL +5 -0
  15. viennaps-4.1.0.dist-info/licenses/LICENSE +19 -0
  16. viennaps.libs/cmake/vtk-9.3/FindCGNS.cmake +48 -0
  17. viennaps.libs/cmake/vtk-9.3/FindDirectX.cmake +18 -0
  18. viennaps.libs/cmake/vtk-9.3/FindEXPAT.cmake +85 -0
  19. viennaps.libs/cmake/vtk-9.3/FindEigen3.cmake +33 -0
  20. viennaps.libs/cmake/vtk-9.3/FindExprTk.cmake +58 -0
  21. viennaps.libs/cmake/vtk-9.3/FindFFMPEG.cmake +195 -0
  22. viennaps.libs/cmake/vtk-9.3/FindFontConfig.cmake +30 -0
  23. viennaps.libs/cmake/vtk-9.3/FindFreetype.cmake +282 -0
  24. viennaps.libs/cmake/vtk-9.3/FindGL2PS.cmake +38 -0
  25. viennaps.libs/cmake/vtk-9.3/FindGLEW.cmake +28 -0
  26. viennaps.libs/cmake/vtk-9.3/FindJOGL.cmake +64 -0
  27. viennaps.libs/cmake/vtk-9.3/FindJsonCpp.cmake +44 -0
  28. viennaps.libs/cmake/vtk-9.3/FindLZ4.cmake +38 -0
  29. viennaps.libs/cmake/vtk-9.3/FindLZMA.cmake +41 -0
  30. viennaps.libs/cmake/vtk-9.3/FindLibHaru.cmake +87 -0
  31. viennaps.libs/cmake/vtk-9.3/FindLibPROJ.cmake +67 -0
  32. viennaps.libs/cmake/vtk-9.3/FindLibXml2.cmake +109 -0
  33. viennaps.libs/cmake/vtk-9.3/FindMEMKIND.cmake +58 -0
  34. viennaps.libs/cmake/vtk-9.3/FindMySQL.cmake +112 -0
  35. viennaps.libs/cmake/vtk-9.3/FindNetCDF.cmake +131 -0
  36. viennaps.libs/cmake/vtk-9.3/FindODBC.cmake +79 -0
  37. viennaps.libs/cmake/vtk-9.3/FindOGG.cmake +26 -0
  38. viennaps.libs/cmake/vtk-9.3/FindOSMesa.cmake +56 -0
  39. viennaps.libs/cmake/vtk-9.3/FindOpenSlide.cmake +40 -0
  40. viennaps.libs/cmake/vtk-9.3/FindOpenVR.cmake +61 -0
  41. viennaps.libs/cmake/vtk-9.3/FindOpenXR.cmake +64 -0
  42. viennaps.libs/cmake/vtk-9.3/FindOpenXRRemoting.cmake +52 -0
  43. viennaps.libs/cmake/vtk-9.3/FindPEGTL.cmake +50 -0
  44. viennaps.libs/cmake/vtk-9.3/FindTBB.cmake +444 -0
  45. viennaps.libs/cmake/vtk-9.3/FindTHEORA.cmake +82 -0
  46. viennaps.libs/cmake/vtk-9.3/Finddouble-conversion.cmake +29 -0
  47. viennaps.libs/cmake/vtk-9.3/Findmpi4py.cmake +36 -0
  48. viennaps.libs/cmake/vtk-9.3/Findutf8cpp.cmake +19 -0
  49. viennaps.libs/cmake/vtk-9.3/FindzSpace.cmake +93 -0
  50. viennaps.libs/cmake/vtk-9.3/patches/3.13/FindZLIB.cmake +146 -0
  51. viennaps.libs/cmake/vtk-9.3/patches/3.16/FindPostgreSQL.cmake +281 -0
  52. viennaps.libs/cmake/vtk-9.3/patches/3.19/FindJPEG.cmake +133 -0
  53. viennaps.libs/cmake/vtk-9.3/patches/3.19/FindLibArchive.cmake +73 -0
  54. viennaps.libs/cmake/vtk-9.3/patches/3.19/FindSQLite3.cmake +65 -0
  55. viennaps.libs/cmake/vtk-9.3/patches/3.19/FindX11.cmake +875 -0
  56. viennaps.libs/cmake/vtk-9.3/patches/3.20/FindGDAL.cmake +196 -0
  57. viennaps.libs/cmake/vtk-9.3/patches/3.22/FindMPI/fortranparam_mpi.f90.in +4 -0
  58. viennaps.libs/cmake/vtk-9.3/patches/3.22/FindMPI/libver_mpi.c +20 -0
  59. viennaps.libs/cmake/vtk-9.3/patches/3.22/FindMPI/libver_mpi.f90.in +7 -0
  60. viennaps.libs/cmake/vtk-9.3/patches/3.22/FindMPI/mpiver.f90.in +10 -0
  61. viennaps.libs/cmake/vtk-9.3/patches/3.22/FindMPI/test_mpi.c +38 -0
  62. viennaps.libs/cmake/vtk-9.3/patches/3.22/FindMPI/test_mpi.f90.in +6 -0
  63. viennaps.libs/cmake/vtk-9.3/patches/3.22/FindMPI.cmake +1907 -0
  64. viennaps.libs/cmake/vtk-9.3/patches/3.23/FindPython/Support.cmake +3424 -0
  65. viennaps.libs/cmake/vtk-9.3/patches/3.23/FindPython3.cmake +495 -0
  66. viennaps.libs/cmake/vtk-9.3/patches/99/FindHDF5.cmake +1191 -0
  67. viennaps.libs/cmake/vtk-9.3/patches/99/FindOpenGL.cmake +750 -0
  68. viennaps.libs/cmake/vtk-9.3/vtk-config-version.cmake +43 -0
  69. viennaps.libs/cmake/vtk-9.3/vtk-config.cmake +380 -0
  70. viennaps.libs/cmake/vtk-9.3/vtk-find-package-helpers.cmake +0 -0
  71. viennaps.libs/cmake/vtk-9.3/vtk-prefix.cmake +4 -0
  72. viennaps.libs/cmake/vtk-9.3/vtk-use-file-compat.cmake +1 -0
  73. viennaps.libs/cmake/vtk-9.3/vtk-use-file-deprecated.cmake +2 -0
  74. viennaps.libs/cmake/vtk-9.3/vtk-use-file-error.cmake +4 -0
  75. viennaps.libs/cmake/vtk-9.3/vtkCMakeBackports.cmake +13 -0
  76. viennaps.libs/cmake/vtk-9.3/vtkDetectLibraryType.cmake +136 -0
  77. viennaps.libs/cmake/vtk-9.3/vtkEncodeString.cmake +276 -0
  78. viennaps.libs/cmake/vtk-9.3/vtkHashSource.cmake +96 -0
  79. viennaps.libs/cmake/vtk-9.3/vtkModule.cmake +5880 -0
  80. viennaps.libs/cmake/vtk-9.3/vtkModuleGraphviz.cmake +381 -0
  81. viennaps.libs/cmake/vtk-9.3/vtkModuleJson.cmake +228 -0
  82. viennaps.libs/cmake/vtk-9.3/vtkModuleTesting.cmake +825 -0
  83. viennaps.libs/cmake/vtk-9.3/vtkModuleWrapJava.cmake +469 -0
  84. viennaps.libs/cmake/vtk-9.3/vtkModuleWrapPython.cmake +1333 -0
  85. viennaps.libs/cmake/vtk-9.3/vtkObjectFactory.cmake +182 -0
  86. viennaps.libs/cmake/vtk-9.3/vtkObjectFactory.cxx.in +54 -0
  87. viennaps.libs/cmake/vtk-9.3/vtkObjectFactory.h.in +34 -0
  88. viennaps.libs/cmake/vtk-9.3/vtkTestingDriver.cmake +12 -0
  89. viennaps.libs/cmake/vtk-9.3/vtkTestingRenderingDriver.cmake +103 -0
  90. viennaps.libs/cmake/vtk-9.3/vtkTopologicalSort.cmake +103 -0
  91. viennaps.libs/cmake_install.cmake +112 -0
  92. viennaps.libs/common/cmake_install.cmake +54 -0
  93. viennaps.libs/common/lexers/CMakeFiles/lexers.dir/stringstream.cpp.o +0 -0
  94. viennaps.libs/common/lexers/CMakeFiles/lexers.dir/tokenstream.cpp.o +0 -0
  95. viennaps.libs/common/lexers/cmake_install.cmake +44 -0
  96. viennaps.libs/common/math/CMakeFiles/math.dir/constants.cpp.o +0 -0
  97. viennaps.libs/common/math/cmake_install.cmake +44 -0
  98. viennaps.libs/common/simd/CMakeFiles/simd.dir/sse.cpp.o +0 -0
  99. viennaps.libs/common/simd/cmake_install.cmake +44 -0
  100. viennaps.libs/common/sys/CMakeFiles/sys.dir/alloc.cpp.o +0 -0
  101. viennaps.libs/common/sys/CMakeFiles/sys.dir/barrier.cpp.o +0 -0
  102. viennaps.libs/common/sys/CMakeFiles/sys.dir/condition.cpp.o +0 -0
  103. viennaps.libs/common/sys/CMakeFiles/sys.dir/estring.cpp.o +0 -0
  104. viennaps.libs/common/sys/CMakeFiles/sys.dir/filename.cpp.o +0 -0
  105. viennaps.libs/common/sys/CMakeFiles/sys.dir/library.cpp.o +0 -0
  106. viennaps.libs/common/sys/CMakeFiles/sys.dir/mutex.cpp.o +0 -0
  107. viennaps.libs/common/sys/CMakeFiles/sys.dir/regression.cpp.o +0 -0
  108. viennaps.libs/common/sys/CMakeFiles/sys.dir/sysinfo.cpp.o +0 -0
  109. viennaps.libs/common/sys/CMakeFiles/sys.dir/thread.cpp.o +0 -0
  110. viennaps.libs/common/sys/cmake_install.cmake +44 -0
  111. viennaps.libs/common/tasking/CMakeFiles/tasking.dir/taskschedulertbb.cpp.o +0 -0
  112. viennaps.libs/common/tasking/cmake_install.cmake +44 -0
  113. viennaps.libs/embree-config-install.cmake +112 -0
  114. viennaps.libs/embree-config-version.cmake +16 -0
  115. viennaps.libs/embree-config.cmake +10 -0
  116. viennaps.libs/embree-vars.csh +32 -0
  117. viennaps.libs/embree-vars.sh +22 -0
  118. viennaps.libs/kernels/CMakeFiles/Export/0919fd033fbc7492b4ed7221a30ac4ed/embree-targets-release.cmake +19 -0
  119. viennaps.libs/kernels/CMakeFiles/Export/0919fd033fbc7492b4ed7221a30ac4ed/embree-targets.cmake +102 -0
  120. viennaps.libs/kernels/CMakeFiles/embree.dir/builders/primrefgen.cpp.o +0 -0
  121. viennaps.libs/kernels/CMakeFiles/embree.dir/bvh/bvh.cpp.o +0 -0
  122. viennaps.libs/kernels/CMakeFiles/embree.dir/bvh/bvh4_factory.cpp.o +0 -0
  123. viennaps.libs/kernels/CMakeFiles/embree.dir/bvh/bvh8_factory.cpp.o +0 -0
  124. viennaps.libs/kernels/CMakeFiles/embree.dir/bvh/bvh_builder.cpp.o +0 -0
  125. viennaps.libs/kernels/CMakeFiles/embree.dir/bvh/bvh_builder_hair.cpp.o +0 -0
  126. viennaps.libs/kernels/CMakeFiles/embree.dir/bvh/bvh_builder_hair_mb.cpp.o +0 -0
  127. viennaps.libs/kernels/CMakeFiles/embree.dir/bvh/bvh_builder_morton.cpp.o +0 -0
  128. viennaps.libs/kernels/CMakeFiles/embree.dir/bvh/bvh_builder_sah.cpp.o +0 -0
  129. viennaps.libs/kernels/CMakeFiles/embree.dir/bvh/bvh_builder_sah_mb.cpp.o +0 -0
  130. viennaps.libs/kernels/CMakeFiles/embree.dir/bvh/bvh_builder_sah_spatial.cpp.o +0 -0
  131. viennaps.libs/kernels/CMakeFiles/embree.dir/bvh/bvh_builder_subdiv.cpp.o +0 -0
  132. viennaps.libs/kernels/CMakeFiles/embree.dir/bvh/bvh_builder_twolevel.cpp.o +0 -0
  133. viennaps.libs/kernels/CMakeFiles/embree.dir/bvh/bvh_collider.cpp.o +0 -0
  134. viennaps.libs/kernels/CMakeFiles/embree.dir/bvh/bvh_intersector1_bvh4.cpp.o +0 -0
  135. viennaps.libs/kernels/CMakeFiles/embree.dir/bvh/bvh_intersector_hybrid4_bvh4.cpp.o +0 -0
  136. viennaps.libs/kernels/CMakeFiles/embree.dir/bvh/bvh_refit.cpp.o +0 -0
  137. viennaps.libs/kernels/CMakeFiles/embree.dir/bvh/bvh_rotate.cpp.o +0 -0
  138. viennaps.libs/kernels/CMakeFiles/embree.dir/bvh/bvh_statistics.cpp.o +0 -0
  139. viennaps.libs/kernels/CMakeFiles/embree.dir/common/acceln.cpp.o +0 -0
  140. viennaps.libs/kernels/CMakeFiles/embree.dir/common/accelset.cpp.o +0 -0
  141. viennaps.libs/kernels/CMakeFiles/embree.dir/common/alloc.cpp.o +0 -0
  142. viennaps.libs/kernels/CMakeFiles/embree.dir/common/device.cpp.o +0 -0
  143. viennaps.libs/kernels/CMakeFiles/embree.dir/common/geometry.cpp.o +0 -0
  144. viennaps.libs/kernels/CMakeFiles/embree.dir/common/motion_derivative.cpp.o +0 -0
  145. viennaps.libs/kernels/CMakeFiles/embree.dir/common/rtcore.cpp.o +0 -0
  146. viennaps.libs/kernels/CMakeFiles/embree.dir/common/rtcore_builder.cpp.o +0 -0
  147. viennaps.libs/kernels/CMakeFiles/embree.dir/common/scene.cpp.o +0 -0
  148. viennaps.libs/kernels/CMakeFiles/embree.dir/common/scene_curves.cpp.o +0 -0
  149. viennaps.libs/kernels/CMakeFiles/embree.dir/common/scene_grid_mesh.cpp.o +0 -0
  150. viennaps.libs/kernels/CMakeFiles/embree.dir/common/scene_instance.cpp.o +0 -0
  151. viennaps.libs/kernels/CMakeFiles/embree.dir/common/scene_instance_array.cpp.o +0 -0
  152. viennaps.libs/kernels/CMakeFiles/embree.dir/common/scene_line_segments.cpp.o +0 -0
  153. viennaps.libs/kernels/CMakeFiles/embree.dir/common/scene_points.cpp.o +0 -0
  154. viennaps.libs/kernels/CMakeFiles/embree.dir/common/scene_quad_mesh.cpp.o +0 -0
  155. viennaps.libs/kernels/CMakeFiles/embree.dir/common/scene_subdiv_mesh.cpp.o +0 -0
  156. viennaps.libs/kernels/CMakeFiles/embree.dir/common/scene_triangle_mesh.cpp.o +0 -0
  157. viennaps.libs/kernels/CMakeFiles/embree.dir/common/scene_user_geometry.cpp.o +0 -0
  158. viennaps.libs/kernels/CMakeFiles/embree.dir/common/scene_verify.cpp.o +0 -0
  159. viennaps.libs/kernels/CMakeFiles/embree.dir/common/stat.cpp.o +0 -0
  160. viennaps.libs/kernels/CMakeFiles/embree.dir/common/state.cpp.o +0 -0
  161. viennaps.libs/kernels/CMakeFiles/embree.dir/geometry/curve_intersector_virtual_4i.cpp.o +0 -0
  162. viennaps.libs/kernels/CMakeFiles/embree.dir/geometry/curve_intersector_virtual_4i_mb.cpp.o +0 -0
  163. viennaps.libs/kernels/CMakeFiles/embree.dir/geometry/curve_intersector_virtual_4v.cpp.o +0 -0
  164. viennaps.libs/kernels/CMakeFiles/embree.dir/geometry/curve_intersector_virtual_8i.cpp.o +0 -0
  165. viennaps.libs/kernels/CMakeFiles/embree.dir/geometry/curve_intersector_virtual_8i_mb.cpp.o +0 -0
  166. viennaps.libs/kernels/CMakeFiles/embree.dir/geometry/curve_intersector_virtual_8v.cpp.o +0 -0
  167. viennaps.libs/kernels/CMakeFiles/embree.dir/geometry/grid_soa.cpp.o +0 -0
  168. viennaps.libs/kernels/CMakeFiles/embree.dir/geometry/instance_array_intersector.cpp.o +0 -0
  169. viennaps.libs/kernels/CMakeFiles/embree.dir/geometry/instance_intersector.cpp.o +0 -0
  170. viennaps.libs/kernels/CMakeFiles/embree.dir/geometry/primitive4.cpp.o +0 -0
  171. viennaps.libs/kernels/CMakeFiles/embree.dir/subdiv/bezier_curve.cpp.o +0 -0
  172. viennaps.libs/kernels/CMakeFiles/embree.dir/subdiv/bspline_curve.cpp.o +0 -0
  173. viennaps.libs/kernels/CMakeFiles/embree.dir/subdiv/catmullclark_coefficients.cpp.o +0 -0
  174. viennaps.libs/kernels/CMakeFiles/embree.dir/subdiv/catmullrom_curve.cpp.o +0 -0
  175. viennaps.libs/kernels/CMakeFiles/embree.dir/subdiv/subdivpatch1base.cpp.o +0 -0
  176. viennaps.libs/kernels/CMakeFiles/embree.dir/subdiv/subdivpatch1base_eval.cpp.o +0 -0
  177. viennaps.libs/kernels/CMakeFiles/embree.dir/subdiv/tessellation_cache.cpp.o +0 -0
  178. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/builders/primrefgen.cpp.avx.cpp.o +0 -0
  179. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/bvh/bvh.cpp.avx.cpp.o +0 -0
  180. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/bvh/bvh_builder.cpp.avx.cpp.o +0 -0
  181. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/bvh/bvh_builder_hair.cpp.avx.cpp.o +0 -0
  182. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/bvh/bvh_builder_hair_mb.cpp.avx.cpp.o +0 -0
  183. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/bvh/bvh_builder_morton.cpp.avx.cpp.o +0 -0
  184. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/bvh/bvh_builder_sah.cpp.avx.cpp.o +0 -0
  185. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/bvh/bvh_builder_sah_mb.cpp.avx.cpp.o +0 -0
  186. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/bvh/bvh_builder_sah_spatial.cpp.avx.cpp.o +0 -0
  187. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/bvh/bvh_builder_subdiv.cpp.avx.cpp.o +0 -0
  188. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/bvh/bvh_builder_twolevel.cpp.avx.cpp.o +0 -0
  189. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/bvh/bvh_collider.cpp.avx.cpp.o +0 -0
  190. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/bvh/bvh_intersector1_bvh4.cpp.avx.cpp.o +0 -0
  191. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/bvh/bvh_intersector1_bvh8.cpp.avx.cpp.o +0 -0
  192. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/bvh/bvh_intersector_hybrid4_bvh4.cpp.avx.cpp.o +0 -0
  193. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/bvh/bvh_intersector_hybrid4_bvh8.cpp.avx.cpp.o +0 -0
  194. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/bvh/bvh_intersector_hybrid8_bvh4.cpp.avx.cpp.o +0 -0
  195. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/bvh/bvh_intersector_hybrid8_bvh8.cpp.avx.cpp.o +0 -0
  196. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/bvh/bvh_refit.cpp.avx.cpp.o +0 -0
  197. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/bvh/bvh_rotate.cpp.avx.cpp.o +0 -0
  198. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/bvh/bvh_statistics.cpp.avx.cpp.o +0 -0
  199. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/common/scene_curves.cpp.avx.cpp.o +0 -0
  200. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/common/scene_grid_mesh.cpp.avx.cpp.o +0 -0
  201. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/common/scene_instance.cpp.avx.cpp.o +0 -0
  202. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/common/scene_instance_array.cpp.avx.cpp.o +0 -0
  203. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/common/scene_line_segments.cpp.avx.cpp.o +0 -0
  204. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/common/scene_points.cpp.avx.cpp.o +0 -0
  205. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/common/scene_quad_mesh.cpp.avx.cpp.o +0 -0
  206. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/common/scene_subdiv_mesh.cpp.avx.cpp.o +0 -0
  207. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/common/scene_triangle_mesh.cpp.avx.cpp.o +0 -0
  208. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/common/scene_user_geometry.cpp.avx.cpp.o +0 -0
  209. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/geometry/curve_intersector_virtual_4i.cpp.avx.cpp.o +0 -0
  210. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/geometry/curve_intersector_virtual_4i_mb.cpp.avx.cpp.o +0 -0
  211. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/geometry/curve_intersector_virtual_4v.cpp.avx.cpp.o +0 -0
  212. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/geometry/curve_intersector_virtual_8i.cpp.avx.cpp.o +0 -0
  213. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/geometry/curve_intersector_virtual_8i_mb.cpp.avx.cpp.o +0 -0
  214. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/geometry/curve_intersector_virtual_8v.cpp.avx.cpp.o +0 -0
  215. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/geometry/grid_soa.cpp.avx.cpp.o +0 -0
  216. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/geometry/instance_array_intersector.cpp.avx.cpp.o +0 -0
  217. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/geometry/instance_intersector.cpp.avx.cpp.o +0 -0
  218. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/geometry/primitive8.cpp.avx.cpp.o +0 -0
  219. viennaps.libs/kernels/CMakeFiles/embree_avx.dir/__/__/__/subdiv/subdivpatch1base_eval.cpp.avx.cpp.o +0 -0
  220. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/builders/primrefgen.cpp.avx2.cpp.o +0 -0
  221. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/bvh/bvh_builder.cpp.avx2.cpp.o +0 -0
  222. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/bvh/bvh_builder_hair.cpp.avx2.cpp.o +0 -0
  223. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/bvh/bvh_builder_hair_mb.cpp.avx2.cpp.o +0 -0
  224. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/bvh/bvh_builder_morton.cpp.avx2.cpp.o +0 -0
  225. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/bvh/bvh_builder_sah.cpp.avx2.cpp.o +0 -0
  226. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/bvh/bvh_builder_sah_mb.cpp.avx2.cpp.o +0 -0
  227. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/bvh/bvh_builder_sah_spatial.cpp.avx2.cpp.o +0 -0
  228. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/bvh/bvh_builder_subdiv.cpp.avx2.cpp.o +0 -0
  229. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/bvh/bvh_builder_twolevel.cpp.avx2.cpp.o +0 -0
  230. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/bvh/bvh_collider.cpp.avx2.cpp.o +0 -0
  231. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/bvh/bvh_intersector1_bvh4.cpp.avx2.cpp.o +0 -0
  232. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/bvh/bvh_intersector1_bvh8.cpp.avx2.cpp.o +0 -0
  233. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/bvh/bvh_intersector_hybrid4_bvh4.cpp.avx2.cpp.o +0 -0
  234. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/bvh/bvh_intersector_hybrid4_bvh8.cpp.avx2.cpp.o +0 -0
  235. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/bvh/bvh_intersector_hybrid8_bvh4.cpp.avx2.cpp.o +0 -0
  236. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/bvh/bvh_intersector_hybrid8_bvh8.cpp.avx2.cpp.o +0 -0
  237. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/bvh/bvh_refit.cpp.avx2.cpp.o +0 -0
  238. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/bvh/bvh_rotate.cpp.avx2.cpp.o +0 -0
  239. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/common/scene_curves.cpp.avx2.cpp.o +0 -0
  240. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/common/scene_grid_mesh.cpp.avx2.cpp.o +0 -0
  241. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/common/scene_instance.cpp.avx2.cpp.o +0 -0
  242. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/common/scene_instance_array.cpp.avx2.cpp.o +0 -0
  243. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/common/scene_line_segments.cpp.avx2.cpp.o +0 -0
  244. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/common/scene_points.cpp.avx2.cpp.o +0 -0
  245. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/common/scene_quad_mesh.cpp.avx2.cpp.o +0 -0
  246. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/common/scene_subdiv_mesh.cpp.avx2.cpp.o +0 -0
  247. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/common/scene_triangle_mesh.cpp.avx2.cpp.o +0 -0
  248. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/common/scene_user_geometry.cpp.avx2.cpp.o +0 -0
  249. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/geometry/curve_intersector_virtual_4i.cpp.avx2.cpp.o +0 -0
  250. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/geometry/curve_intersector_virtual_4i_mb.cpp.avx2.cpp.o +0 -0
  251. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/geometry/curve_intersector_virtual_4v.cpp.avx2.cpp.o +0 -0
  252. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/geometry/curve_intersector_virtual_8i.cpp.avx2.cpp.o +0 -0
  253. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/geometry/curve_intersector_virtual_8i_mb.cpp.avx2.cpp.o +0 -0
  254. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/geometry/curve_intersector_virtual_8v.cpp.avx2.cpp.o +0 -0
  255. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/geometry/grid_soa.cpp.avx2.cpp.o +0 -0
  256. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/geometry/instance_array_intersector.cpp.avx2.cpp.o +0 -0
  257. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/geometry/instance_intersector.cpp.avx2.cpp.o +0 -0
  258. viennaps.libs/kernels/CMakeFiles/embree_avx2.dir/__/__/__/subdiv/subdivpatch1base_eval.cpp.avx2.cpp.o +0 -0
  259. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/bvh/bvh_builder.cpp.avx512.cpp.o +0 -0
  260. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/bvh/bvh_builder_hair.cpp.avx512.cpp.o +0 -0
  261. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/bvh/bvh_builder_hair_mb.cpp.avx512.cpp.o +0 -0
  262. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/bvh/bvh_builder_sah.cpp.avx512.cpp.o +0 -0
  263. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/bvh/bvh_builder_sah_mb.cpp.avx512.cpp.o +0 -0
  264. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/bvh/bvh_builder_sah_spatial.cpp.avx512.cpp.o +0 -0
  265. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/bvh/bvh_builder_subdiv.cpp.avx512.cpp.o +0 -0
  266. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/bvh/bvh_builder_twolevel.cpp.avx512.cpp.o +0 -0
  267. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/bvh/bvh_collider.cpp.avx512.cpp.o +0 -0
  268. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/bvh/bvh_intersector1_bvh4.cpp.avx512.cpp.o +0 -0
  269. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/bvh/bvh_intersector1_bvh8.cpp.avx512.cpp.o +0 -0
  270. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/bvh/bvh_intersector_hybrid16_bvh4.cpp.avx512.cpp.o +0 -0
  271. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/bvh/bvh_intersector_hybrid16_bvh8.cpp.avx512.cpp.o +0 -0
  272. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/bvh/bvh_intersector_hybrid4_bvh4.cpp.avx512.cpp.o +0 -0
  273. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/bvh/bvh_intersector_hybrid4_bvh8.cpp.avx512.cpp.o +0 -0
  274. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/bvh/bvh_intersector_hybrid8_bvh4.cpp.avx512.cpp.o +0 -0
  275. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/bvh/bvh_intersector_hybrid8_bvh8.cpp.avx512.cpp.o +0 -0
  276. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/bvh/bvh_refit.cpp.avx512.cpp.o +0 -0
  277. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/common/scene_curves.cpp.avx512.cpp.o +0 -0
  278. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/common/scene_grid_mesh.cpp.avx512.cpp.o +0 -0
  279. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/common/scene_instance.cpp.avx512.cpp.o +0 -0
  280. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/common/scene_instance_array.cpp.avx512.cpp.o +0 -0
  281. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/common/scene_line_segments.cpp.avx512.cpp.o +0 -0
  282. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/common/scene_points.cpp.avx512.cpp.o +0 -0
  283. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/common/scene_quad_mesh.cpp.avx512.cpp.o +0 -0
  284. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/common/scene_subdiv_mesh.cpp.avx512.cpp.o +0 -0
  285. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/common/scene_triangle_mesh.cpp.avx512.cpp.o +0 -0
  286. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/common/scene_user_geometry.cpp.avx512.cpp.o +0 -0
  287. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/geometry/curve_intersector_virtual_4i.cpp.avx512.cpp.o +0 -0
  288. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/geometry/curve_intersector_virtual_4i_mb.cpp.avx512.cpp.o +0 -0
  289. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/geometry/curve_intersector_virtual_4v.cpp.avx512.cpp.o +0 -0
  290. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/geometry/curve_intersector_virtual_8i.cpp.avx512.cpp.o +0 -0
  291. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/geometry/curve_intersector_virtual_8i_mb.cpp.avx512.cpp.o +0 -0
  292. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/geometry/curve_intersector_virtual_8v.cpp.avx512.cpp.o +0 -0
  293. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/geometry/grid_soa.cpp.avx512.cpp.o +0 -0
  294. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/geometry/instance_array_intersector.cpp.avx512.cpp.o +0 -0
  295. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/geometry/instance_intersector.cpp.avx512.cpp.o +0 -0
  296. viennaps.libs/kernels/CMakeFiles/embree_avx512.dir/__/__/__/subdiv/subdivpatch1base_eval.cpp.avx512.cpp.o +0 -0
  297. viennaps.libs/kernels/CMakeFiles/embree_sse42.dir/__/__/__/bvh/bvh_intersector1_bvh4.cpp.sse42.cpp.o +0 -0
  298. viennaps.libs/kernels/CMakeFiles/embree_sse42.dir/__/__/__/bvh/bvh_intersector_hybrid4_bvh4.cpp.sse42.cpp.o +0 -0
  299. viennaps.libs/kernels/CMakeFiles/embree_sse42.dir/__/__/__/common/scene_subdiv_mesh.cpp.sse42.cpp.o +0 -0
  300. viennaps.libs/kernels/CMakeFiles/embree_sse42.dir/__/__/__/geometry/curve_intersector_virtual_4i.cpp.sse42.cpp.o +0 -0
  301. viennaps.libs/kernels/CMakeFiles/embree_sse42.dir/__/__/__/geometry/curve_intersector_virtual_4i_mb.cpp.sse42.cpp.o +0 -0
  302. viennaps.libs/kernels/CMakeFiles/embree_sse42.dir/__/__/__/geometry/curve_intersector_virtual_4v.cpp.sse42.cpp.o +0 -0
  303. viennaps.libs/kernels/CMakeFiles/embree_sse42.dir/__/__/__/geometry/curve_intersector_virtual_8i.cpp.sse42.cpp.o +0 -0
  304. viennaps.libs/kernels/CMakeFiles/embree_sse42.dir/__/__/__/geometry/curve_intersector_virtual_8i_mb.cpp.sse42.cpp.o +0 -0
  305. viennaps.libs/kernels/CMakeFiles/embree_sse42.dir/__/__/__/geometry/curve_intersector_virtual_8v.cpp.sse42.cpp.o +0 -0
  306. viennaps.libs/kernels/CMakeFiles/embree_sse42.dir/__/__/__/geometry/grid_soa.cpp.sse42.cpp.o +0 -0
  307. viennaps.libs/kernels/CMakeFiles/embree_sse42.dir/__/__/__/geometry/instance_array_intersector.cpp.sse42.cpp.o +0 -0
  308. viennaps.libs/kernels/CMakeFiles/embree_sse42.dir/__/__/__/geometry/instance_intersector.cpp.sse42.cpp.o +0 -0
  309. viennaps.libs/kernels/CMakeFiles/embree_sse42.dir/__/__/__/subdiv/subdivpatch1base_eval.cpp.sse42.cpp.o +0 -0
  310. viennaps.libs/kernels/cmake_install.cmake +90 -0
  311. viennaps.libs/libembree4.so +0 -0
  312. viennaps.libs/libembree_avx.a +0 -0
  313. viennaps.libs/libembree_avx2.a +0 -0
  314. viennaps.libs/libembree_avx512.a +0 -0
  315. viennaps.libs/libembree_sse42.a +0 -0
  316. viennaps.libs/libgcc_s-a04fdf82.so.1 +0 -0
  317. viennaps.libs/libgomp-cd951527.so.1.0.0 +0 -0
  318. viennaps.libs/liblexers.a +0 -0
  319. viennaps.libs/libmath.a +0 -0
  320. viennaps.libs/libsimd.a +0 -0
  321. viennaps.libs/libstdc++-a9383cce.so.6.0.28 +0 -0
  322. viennaps.libs/libsys.a +0 -0
  323. viennaps.libs/libtasking.a +0 -0
  324. viennaps.libs/libtbb-c9aeff81.so +0 -0
  325. viennaps.libs/libtbb.so +0 -0
  326. viennaps.libs/libvtkCommonComputationalGeometry-9.3.so +0 -0
  327. viennaps.libs/libvtkCommonCore-9.3.so +0 -0
  328. viennaps.libs/libvtkCommonDataModel-9.3.so +0 -0
  329. viennaps.libs/libvtkCommonExecutionModel-9.3.so +0 -0
  330. viennaps.libs/libvtkCommonMath-9.3.so +0 -0
  331. viennaps.libs/libvtkCommonMisc-9.3.so +0 -0
  332. viennaps.libs/libvtkCommonSystem-9.3.so +0 -0
  333. viennaps.libs/libvtkCommonTransforms-9.3.so +0 -0
  334. viennaps.libs/libvtkFiltersCore-9.3.so +0 -0
  335. viennaps.libs/libvtkFiltersGeneral-9.3.so +0 -0
  336. viennaps.libs/libvtkFiltersGeometry-9.3.so +0 -0
  337. viennaps.libs/libvtkFiltersVerdict-9.3.so +0 -0
  338. viennaps.libs/libvtkIOCore-9.3.so +0 -0
  339. viennaps.libs/libvtkIOXML-9.3.so +0 -0
  340. viennaps.libs/libvtkIOXMLParser-9.3.so +0 -0
  341. viennaps.libs/libvtkdoubleconversion-9.3.so +0 -0
  342. viennaps.libs/libvtkexpat-9.3.so +0 -0
  343. viennaps.libs/libvtkfmt-9.3.so +0 -0
  344. viennaps.libs/libvtkkissfft-9.3.so +0 -0
  345. viennaps.libs/libvtkloguru-9.3.so +0 -0
  346. viennaps.libs/libvtklz4-9.3.so +0 -0
  347. viennaps.libs/libvtklzma-9.3.so +0 -0
  348. viennaps.libs/libvtkpugixml-9.3.so +0 -0
  349. viennaps.libs/libvtksys-9.3.so +0 -0
  350. viennaps.libs/libvtkverdict-9.3.so +0 -0
  351. viennaps.libs/libvtkzlib-9.3.so +0 -0
  352. viennaps.libs/tests/cmake_install.cmake +44 -0
  353. viennaps.libs/uninstall.cmake +24 -0
@@ -0,0 +1,1333 @@
1
+ #[==[.rst:
2
+ *******************
3
+ vtkModuleWrapPython
4
+ *******************
5
+
6
+ APIs for wrapping modules for Python
7
+
8
+ Limitations
9
+ ^^^^^^^^^^^
10
+
11
+ Known limitations include:
12
+
13
+ - Shared Python modules only really support shared builds of modules. VTK
14
+ does not provide mangling facilities for itself, so statically linking VTK
15
+ into its Python modules precludes using VTK's C++ interface anywhere else
16
+ within the Python environment.
17
+ - Only supports CPython. Other implementations are not supported by the
18
+ `VTK::WrapPython` executable.
19
+ - Links directly to a Python library. See the `VTK::Python` module for more
20
+ details.
21
+ #]==]
22
+
23
+ #[==[.rst:
24
+ .. cmake:command:: vtk_module_python_default_destination
25
+
26
+
27
+ Determine Python module destination. |module-wrapping-python|
28
+
29
+ Some projects may need to know where Python expects its modules to be placed in
30
+ the install tree (assuming a shared prefix). This function computes the default
31
+ and sets the passed variable to the value in the calling scope.
32
+
33
+ .. code-block:: cmake
34
+
35
+ vtk_module_python_default_destination(<var>
36
+ [MAJOR_VERSION <major>])
37
+
38
+ By default, the destination is ``${CMAKE_INSTALL_BINDIR}/Lib/site-packages`` on
39
+ Windows and ``${CMAKE_INSTALL_LIBDIR}/python<VERSION>/site-packages`` otherwise.
40
+
41
+ ``<MAJOR_VERSION>``, if specified, must be ``3``.
42
+ #]==]
43
+
44
+ cmake_policy(PUSH)
45
+ cmake_policy(SET CMP0053 NEW)
46
+
47
+ function (vtk_module_python_default_destination var)
48
+ cmake_parse_arguments(PARSE_ARGV 1 _vtk_module_python
49
+ ""
50
+ "MAJOR_VERSION"
51
+ "")
52
+
53
+ if (_vtk_module_python_UNPARSED_ARGUMENTS)
54
+ message(FATAL_ERROR
55
+ "Unparsed arguments for vtk_module_python_default_destination: "
56
+ "${_vtk_module_python_UNPARSED_ARGUMENTS}")
57
+ endif ()
58
+
59
+ if (DEFINED _vtk_module_python_MAJOR_VERSION AND
60
+ NOT _vtk_module_python_MAJOR_VERSION STREQUAL "3")
61
+ message(FATAL_ERROR
62
+ "Only Python3 is supported right now.")
63
+ endif ()
64
+
65
+ if (MSVC)
66
+ set(destination "${CMAKE_INSTALL_BINDIR}/Lib/site-packages")
67
+ else ()
68
+ if (NOT DEFINED "Python3_VERSION_MAJOR" OR
69
+ NOT DEFINED "Python3_VERSION_MINOR")
70
+ find_package("Python3" QUIET COMPONENTS Development.Module)
71
+ endif ()
72
+
73
+ if (Python3_VERSION_MAJOR AND Python3_VERSION_MINOR)
74
+ set(_vtk_python_version_suffix "${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}")
75
+ else ()
76
+ message(WARNING
77
+ "The version of Python is unknown; not using a versioned directory "
78
+ "for Python modules.")
79
+ set(_vtk_python_version_suffix)
80
+ endif ()
81
+ set(destination "${CMAKE_INSTALL_LIBDIR}/python${_vtk_python_version_suffix}/site-packages")
82
+ endif ()
83
+
84
+ set("${var}" "${destination}" PARENT_SCOPE)
85
+ endfunction ()
86
+
87
+ #[==[.rst:
88
+ .. cmake:command:: _vtk_module_wrap_python_sources
89
+
90
+
91
+ Generate sources for using a module's classes from Python. |module-impl|
92
+
93
+ This function generates the wrapped sources for a module. It places the list of
94
+ generated source files and classes in variables named in the second and third
95
+ arguments, respectively.
96
+
97
+ .. code-block:: cmake
98
+
99
+ _vtk_module_wrap_python_sources(<module> <sources> <classes>)
100
+
101
+ #]==]
102
+ function (_vtk_module_wrap_python_sources module sources classes)
103
+ _vtk_module_get_module_property("${module}"
104
+ PROPERTY "exclude_wrap"
105
+ VARIABLE _vtk_python_exclude_wrap)
106
+ if (_vtk_python_exclude_wrap)
107
+ return ()
108
+ endif ()
109
+
110
+ file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${_vtk_python_library_name}Python")
111
+
112
+ set(_vtk_python_args_file "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${_vtk_python_library_name}Python/${_vtk_python_library_name}-python.$<CONFIGURATION>.args")
113
+
114
+ set(_vtk_python_hierarchy_depends "${module}")
115
+ _vtk_module_get_module_property("${module}"
116
+ PROPERTY "private_depends"
117
+ VARIABLE _vtk_python_private_depends)
118
+ list(APPEND _vtk_python_hierarchy_depends
119
+ ${_vtk_python_private_depends})
120
+ _vtk_module_get_module_property("${module}"
121
+ PROPERTY "optional_depends"
122
+ VARIABLE _vtk_python_optional_depends)
123
+ foreach (_vtk_python_optional_depend IN LISTS _vtk_python_optional_depends)
124
+ if (TARGET "${_vtk_python_optional_depend}")
125
+ list(APPEND _vtk_python_hierarchy_depends
126
+ "${_vtk_python_optional_depend}")
127
+ endif ()
128
+ endforeach ()
129
+
130
+ set(_vtk_python_command_depends)
131
+ foreach (_vtk_python_hierarchy_depend IN LISTS _vtk_python_hierarchy_depends)
132
+ _vtk_module_get_module_property("${_vtk_python_hierarchy_depend}"
133
+ PROPERTY "hierarchy"
134
+ VARIABLE _vtk_python_hierarchy_file)
135
+ if (_vtk_python_hierarchy_file)
136
+ list(APPEND _vtk_python_hierarchy_files "${_vtk_python_hierarchy_file}")
137
+ get_property(_vtk_python_is_imported
138
+ TARGET "${_vtk_python_hierarchy_depend}"
139
+ PROPERTY "IMPORTED")
140
+ if (_vtk_python_is_imported OR CMAKE_GENERATOR MATCHES "Ninja")
141
+ list(APPEND _vtk_python_command_depends "${_vtk_python_hierarchy_file}")
142
+ else ()
143
+ _vtk_module_get_module_property("${_vtk_python_hierarchy_depend}"
144
+ PROPERTY "library_name"
145
+ VARIABLE _vtk_python_hierarchy_library_name)
146
+ if (TARGET "${_vtk_python_hierarchy_library_name}-hierarchy")
147
+ list(APPEND _vtk_python_command_depends "${_vtk_python_hierarchy_library_name}-hierarchy")
148
+ else ()
149
+ message(FATAL_ERROR
150
+ "The ${_vtk_python_hierarchy_depend} hierarchy file is attached to a non-imported target "
151
+ "and a hierarchy target (${_vtk_python_hierarchy_library_name}-hierarchy) is "
152
+ "missing.")
153
+ endif ()
154
+ endif ()
155
+ endif ()
156
+ endforeach ()
157
+
158
+ set(_vtk_python_genex_allowed 1)
159
+ if (CMAKE_VERSION VERSION_LESS "3.19")
160
+ get_property(_vtk_python_target_type
161
+ TARGET "${_vtk_python_target_name}"
162
+ PROPERTY TYPE)
163
+ if (_vtk_python_target_type STREQUAL "INTERFACE_LIBRARY")
164
+ set(_vtk_python_genex_allowed 0)
165
+ endif ()
166
+ endif ()
167
+
168
+ set(_vtk_python_genex_compile_definitions "")
169
+ set(_vtk_python_genex_include_directories "")
170
+ if (_vtk_python_genex_allowed)
171
+ set(_vtk_python_genex_compile_definitions
172
+ "$<TARGET_PROPERTY:${_vtk_python_target_name},COMPILE_DEFINITIONS>")
173
+ set(_vtk_python_genex_include_directories
174
+ "$<TARGET_PROPERTY:${_vtk_python_target_name},INCLUDE_DIRECTORIES>")
175
+ else ()
176
+ if (NOT DEFINED ENV{CI})
177
+ message(AUTHOR_WARNING
178
+ "Python wrapping is not using target-local compile definitions or "
179
+ "include directories. This may affect generation of the Python "
180
+ "wrapper sources for the ${module} module. Use CMake 3.19+ to "
181
+ "guarantee intended behavior.")
182
+ endif ()
183
+ endif ()
184
+ file(GENERATE
185
+ OUTPUT "${_vtk_python_args_file}"
186
+ CONTENT "$<$<BOOL:${_vtk_python_genex_compile_definitions}>:\n-D\'$<JOIN:${_vtk_python_genex_compile_definitions},\'\n-D\'>\'>\n
187
+ $<$<BOOL:${_vtk_python_genex_include_directories}>:\n-I\'$<JOIN:${_vtk_python_genex_include_directories},\'\n-I\'>\'>\n
188
+ $<$<BOOL:${_vtk_python_hierarchy_files}>:\n--types \'$<JOIN:${_vtk_python_hierarchy_files},\'\n--types \'>\'>\n")
189
+
190
+ set(_vtk_python_sources)
191
+
192
+ # Get the list of public headers from the module.
193
+ _vtk_module_get_module_property("${module}"
194
+ PROPERTY "headers"
195
+ VARIABLE _vtk_python_headers)
196
+ set(_vtk_python_classes)
197
+ foreach (_vtk_python_header IN LISTS _vtk_python_headers)
198
+ # Assume the class name matches the basename of the header. This is VTK
199
+ # convention.
200
+ get_filename_component(_vtk_python_basename "${_vtk_python_header}" NAME_WE)
201
+ list(APPEND _vtk_python_classes
202
+ "${_vtk_python_basename}")
203
+
204
+ set(_vtk_python_source_output
205
+ "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${_vtk_python_library_name}Python/${_vtk_python_basename}Python.cxx")
206
+ list(APPEND _vtk_python_sources
207
+ "${_vtk_python_source_output}")
208
+
209
+ set(_vtk_python_wrap_target "VTK::WrapPython")
210
+ set(_vtk_python_macros_args)
211
+ if (TARGET VTKCompileTools::WrapPython)
212
+ set(_vtk_python_wrap_target "VTKCompileTools::WrapPython")
213
+ if (TARGET VTKCompileTools_macros)
214
+ list(APPEND _vtk_python_command_depends
215
+ "VTKCompileTools_macros")
216
+ list(APPEND _vtk_python_macros_args
217
+ -undef
218
+ -imacros "${_VTKCompileTools_macros_file}")
219
+ endif ()
220
+ endif ()
221
+
222
+ add_custom_command(
223
+ OUTPUT "${_vtk_python_source_output}"
224
+ COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR}
225
+ "$<TARGET_FILE:${_vtk_python_wrap_target}>"
226
+ "@${_vtk_python_args_file}"
227
+ -o "${_vtk_python_source_output}"
228
+ "${_vtk_python_header}"
229
+ ${_vtk_python_macros_args}
230
+ IMPLICIT_DEPENDS
231
+ CXX "${_vtk_python_header}"
232
+ COMMENT "Generating Python wrapper sources for ${_vtk_python_basename}"
233
+ DEPENDS
234
+ "${_vtk_python_header}"
235
+ "${_vtk_python_args_file}"
236
+ "$<TARGET_FILE:${_vtk_python_wrap_target}>"
237
+ ${_vtk_python_command_depends})
238
+ endforeach ()
239
+
240
+ set("${sources}"
241
+ "${_vtk_python_sources}"
242
+ PARENT_SCOPE)
243
+ set("${classes}"
244
+ "${_vtk_python_classes}"
245
+ PARENT_SCOPE)
246
+ endfunction ()
247
+
248
+ #[==[.rst:
249
+
250
+ .. cmake:command:: _vtk_module_wrap_python_library
251
+
252
+
253
+ Generate a CPython library for a set of modules. |module-impl|
254
+
255
+ A Python module library may consist of the Python wrappings of multiple
256
+ modules. This is useful for kit-based builds where the modules part of the same
257
+ kit belong to the same Python module as well.
258
+
259
+ .. code-block:: cmake
260
+
261
+ _vtk_module_wrap_python_library(<name> <module>...)
262
+
263
+ The first argument is the name of the Python module. The remaining arguments
264
+ are modules to include in the Python module.
265
+
266
+ The remaining information it uses is assumed to be provided by the
267
+ :cmake:command:`vtk_module_wrap_python function`.
268
+ #]==]
269
+ function (_vtk_module_wrap_python_library name)
270
+ set(_vtk_python_library_sources)
271
+ set(_vtk_python_library_classes)
272
+ foreach (_vtk_python_module IN LISTS ARGN)
273
+ _vtk_module_get_module_property("${_vtk_python_module}"
274
+ PROPERTY "exclude_wrap"
275
+ VARIABLE _vtk_python_exclude_wrap)
276
+ if (_vtk_python_exclude_wrap)
277
+ continue ()
278
+ endif ()
279
+ _vtk_module_real_target(_vtk_python_target_name "${_vtk_python_module}")
280
+ _vtk_module_get_module_property("${_vtk_python_module}"
281
+ PROPERTY "library_name"
282
+ VARIABLE _vtk_python_library_name)
283
+
284
+ # Wrap the module independently of the other VTK modules in the Python
285
+ # module.
286
+ _vtk_module_wrap_python_sources("${_vtk_python_module}" _vtk_python_sources _vtk_python_classes)
287
+ list(APPEND _vtk_python_library_sources
288
+ ${_vtk_python_sources})
289
+ list(APPEND _vtk_python_library_classes
290
+ ${_vtk_python_classes})
291
+
292
+ # Make sure the module doesn't already have an associated Python package.
293
+ vtk_module_get_property("${_vtk_python_module}"
294
+ PROPERTY "INTERFACE_vtk_module_python_package"
295
+ VARIABLE _vtk_python_current_python_package)
296
+ if (DEFINED _vtk_python_current_python_package)
297
+ message(FATAL_ERROR
298
+ "It appears as though the ${_vtk_python_module} has already been "
299
+ "wrapped in Python in the ${_vtk_python_current_python_package} "
300
+ "package.")
301
+ endif ()
302
+ vtk_module_set_property("${_vtk_python_module}"
303
+ PROPERTY "INTERFACE_vtk_module_python_package"
304
+ VALUE "${_vtk_python_PYTHON_PACKAGE}")
305
+
306
+ if (_vtk_python_INSTALL_HEADERS)
307
+ _vtk_module_export_properties(
308
+ BUILD_FILE "${_vtk_python_properties_build_file}"
309
+ INSTALL_FILE "${_vtk_python_properties_install_file}"
310
+ MODULE "${_vtk_python_module}"
311
+ PROPERTIES
312
+ # Export the wrapping hints file.
313
+ INTERFACE_vtk_module_python_package)
314
+ endif ()
315
+ endforeach ()
316
+
317
+ # The foreach needs to be split so that dependencies are guaranteed to have
318
+ # the INTERFACE_vtk_module_python_package property set.
319
+ foreach (_vtk_python_module IN LISTS ARGN)
320
+ _vtk_module_get_module_property("${_vtk_python_module}"
321
+ PROPERTY "exclude_wrap"
322
+ VARIABLE _vtk_python_exclude_wrap)
323
+ if (_vtk_python_exclude_wrap)
324
+ continue ()
325
+ endif ()
326
+
327
+ _vtk_module_get_module_property("${_vtk_python_module}"
328
+ PROPERTY "library_name"
329
+ VARIABLE _vtk_python_library_name)
330
+
331
+ _vtk_module_get_module_property("${_vtk_python_module}"
332
+ PROPERTY "depends"
333
+ VARIABLE _vtk_python_module_depends)
334
+ set(_vtk_python_module_load_depends)
335
+ foreach (_vtk_python_module_depend IN LISTS _vtk_python_module_depends)
336
+ _vtk_module_get_module_property("${_vtk_python_module_depend}"
337
+ PROPERTY "exclude_wrap"
338
+ VARIABLE _vtk_python_module_depend_exclude_wrap)
339
+ if (_vtk_python_module_depend_exclude_wrap)
340
+ continue ()
341
+ endif ()
342
+
343
+ _vtk_module_get_module_property("${_vtk_python_module_depend}"
344
+ PROPERTY "python_package"
345
+ VARIABLE _vtk_python_depend_module_package)
346
+ _vtk_module_get_module_property("${_vtk_python_module_depend}"
347
+ PROPERTY "library_name"
348
+ VARIABLE _vtk_python_depend_library_name)
349
+
350
+ # XXX(kits): This doesn't work for kits.
351
+ list(APPEND _vtk_python_module_load_depends
352
+ "${_vtk_python_depend_module_package}.${_vtk_python_depend_library_name}")
353
+ endforeach ()
354
+
355
+ if (_vtk_python_BUILD_STATIC)
356
+ # If static, we use .py modules that grab the contents from the baked-in modules.
357
+ set(_vtk_python_module_file
358
+ "${CMAKE_BINARY_DIR}/${_vtk_python_MODULE_DESTINATION}/${_vtk_python_package_path}/${_vtk_python_library_name}.py")
359
+ set(_vtk_python_module_contents
360
+ "from ${_vtk_python_import_prefix}${_vtk_python_library_name} import *\n")
361
+
362
+ file(GENERATE
363
+ OUTPUT "${_vtk_python_module_file}"
364
+ CONTENT "${_vtk_python_module_contents}")
365
+
366
+ # Set `python_modules` to provide the list of python files that go along with
367
+ # this module
368
+ _vtk_module_set_module_property("${_vtk_python_module}" APPEND
369
+ PROPERTY "python_modules"
370
+ VALUE "${_vtk_python_module_file}")
371
+ endif ()
372
+ endforeach ()
373
+
374
+ if (NOT _vtk_python_library_sources)
375
+ return ()
376
+ endif ()
377
+
378
+ set(_vtk_python_init_data_file "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${name}Python/${name}-init.data")
379
+
380
+ file(GENERATE
381
+ OUTPUT "${_vtk_python_init_data_file}"
382
+ CONTENT "${_vtk_python_library_name}\n$<JOIN:${_vtk_python_classes},\n>\nDEPENDS\n$<JOIN:${_vtk_python_module_load_depends},\n>\n")
383
+
384
+ set(_vtk_python_init_output
385
+ "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${name}Python/${name}Init.cxx")
386
+ set(_vtk_python_init_impl_output
387
+ "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${name}Python/${name}InitImpl.cxx")
388
+ list(APPEND _vtk_python_library_sources
389
+ "${_vtk_python_init_output}"
390
+ "${_vtk_python_init_impl_output}")
391
+
392
+ set(_vtk_python_wrap_target "VTK::WrapPythonInit")
393
+ if (TARGET VTKCompileTools::WrapPythonInit)
394
+ set(_vtk_python_wrap_target "VTKCompileTools::WrapPythonInit")
395
+ endif ()
396
+
397
+ if(_vtk_python_BUILD_STATIC)
398
+ set(additonal_options "${_vtk_python_import_prefix}")
399
+ endif()
400
+ add_custom_command(
401
+ OUTPUT "${_vtk_python_init_output}"
402
+ "${_vtk_python_init_impl_output}"
403
+ COMMAND "${_vtk_python_wrap_target}"
404
+ "${_vtk_python_init_data_file}"
405
+ "${_vtk_python_init_output}"
406
+ "${_vtk_python_init_impl_output}"
407
+ "${additonal_options}"
408
+ COMMENT "Generating the Python module initialization sources for ${name}"
409
+ DEPENDS
410
+ "${_vtk_python_init_data_file}"
411
+ "$<TARGET_FILE:${_vtk_python_wrap_target}>")
412
+
413
+ if (_vtk_python_BUILD_STATIC)
414
+ set(_vtk_python_module_header_file
415
+ "${CMAKE_CURRENT_BINARY_DIR}/${_vtk_python_HEADERS_DESTINATION}/${name}.h")
416
+ set(_vtk_python_module_header_content
417
+ "#ifndef ${name}_h
418
+ #define ${name}_h
419
+
420
+ #include <vtkPython.h>
421
+
422
+ #ifdef __cplusplus
423
+ extern \"C\" {
424
+ #endif
425
+ extern PyObject* PyInit_${_vtk_python_library_name}();
426
+ #ifdef __cplusplus
427
+ }
428
+ #endif
429
+
430
+ #endif
431
+ ")
432
+
433
+ file(GENERATE
434
+ OUTPUT "${_vtk_python_module_header_file}"
435
+ CONTENT "${_vtk_python_module_header_content}")
436
+ # XXX(cmake): Why is this necessary? One would expect that `file(GENERATE)`
437
+ # would do this automatically.
438
+ set_property(SOURCE "${_vtk_python_module_header_file}"
439
+ PROPERTY
440
+ GENERATED 1)
441
+
442
+ if (_vtk_python_INSTALL_HEADERS)
443
+ install(
444
+ FILES "${_vtk_python_module_header_file}"
445
+ DESTINATION "${_vtk_python_HEADERS_DESTINATION}"
446
+ COMPONENT "${_vtk_python_headers_component}")
447
+ endif ()
448
+
449
+ add_library("${name}" STATIC
450
+ ${_vtk_python_library_sources}
451
+ "${_vtk_python_module_header_file}")
452
+ target_include_directories("${name}"
453
+ INTERFACE
454
+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/${_vtk_python_HEADERS_DESTINATION}>")
455
+ target_link_libraries("${name}"
456
+ PUBLIC
457
+ VTK::Python)
458
+
459
+ if (_vtk_python_UTILITY_TARGET)
460
+ target_link_libraries("${name}"
461
+ PRIVATE
462
+ "${_vtk_python_UTILITY_TARGET}")
463
+ endif ()
464
+
465
+ set_property(TARGET "${name}"
466
+ PROPERTY
467
+ LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${_vtk_python_STATIC_MODULE_DESTINATION}")
468
+ else ()
469
+ add_library("${name}" MODULE
470
+ ${_vtk_python_library_sources})
471
+ if (WIN32 AND NOT CYGWIN)
472
+ # This is enabled explicitly by the USE_DEBUG_SUFFIX argument because
473
+ # there's no reliable way to detect whether we're using a debug build of
474
+ # Python or not.
475
+ #
476
+ # The proper fix is to dig around and ask the backing `PythonN::Python`
477
+ # target used by `VTK::Python` for its properties to find out, per
478
+ # configuration, whether it is a debug build. If it is, add the postfix
479
+ # (regardless of VTK's build type). Otherwise, no postfix.
480
+ if (_vtk_python_USE_DEBUG_SUFFIX)
481
+ if (_vtk_python_REPLACE_DEBUG_SUFFIX)
482
+ set(_vtk_python_append_flag)
483
+ else ()
484
+ set(_vtk_python_append_flag APPEND_STRING)
485
+ endif ()
486
+ set_property(TARGET "${name}"
487
+ ${_vtk_python_append_flag}
488
+ PROPERTY
489
+ DEBUG_POSTFIX "_d")
490
+ endif ()
491
+ set_property(TARGET "${name}"
492
+ PROPERTY
493
+ SUFFIX ".pyd")
494
+ endif ()
495
+ set_property(TARGET "${name}"
496
+ PROPERTY
497
+ LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${_vtk_python_MODULE_DESTINATION}/${_vtk_python_package_path}")
498
+ get_property(_vtk_python_is_multi_config GLOBAL
499
+ PROPERTY GENERATOR_IS_MULTI_CONFIG)
500
+ if (_vtk_python_is_multi_config)
501
+ # XXX(MultiNinja): This isn't going to work in general since MultiNinja
502
+ # will error about overlapping output paths.
503
+ foreach (_vtk_python_config IN LISTS CMAKE_CONFIGURATION_TYPES)
504
+ string(TOUPPER "${_vtk_python_config}" _vtk_python_config_upper)
505
+ set_property(TARGET "${name}"
506
+ PROPERTY
507
+ "LIBRARY_OUTPUT_DIRECTORY_${_vtk_python_config_upper}" "${CMAKE_BINARY_DIR}/${_vtk_python_MODULE_DESTINATION}/${_vtk_python_package_path}")
508
+ endforeach ()
509
+ endif ()
510
+
511
+ if (_vtk_python_UTILITY_TARGET)
512
+ target_link_libraries("${name}"
513
+ PRIVATE
514
+ "${_vtk_python_UTILITY_TARGET}")
515
+ endif ()
516
+
517
+ set_target_properties("${name}"
518
+ PROPERTIES
519
+ PREFIX ""
520
+ OUTPUT_NAME "${_vtk_python_library_name}"
521
+ ARCHIVE_OUTPUT_NAME "${name}")
522
+ endif ()
523
+
524
+ vtk_module_autoinit(
525
+ MODULES ${ARGN}
526
+ TARGETS "${name}")
527
+
528
+ # The wrapper code will expand PYTHON_PACKAGE as needed
529
+ target_compile_definitions("${name}"
530
+ PRIVATE
531
+ "-DPYTHON_PACKAGE=\"${_vtk_python_PYTHON_PACKAGE}\"")
532
+
533
+ target_link_libraries("${name}"
534
+ PRIVATE
535
+ ${ARGN}
536
+ VTK::WrappingPythonCore
537
+ VTK::Python)
538
+
539
+ set(_vtk_python_export)
540
+ if (_vtk_python_INSTALL_EXPORT)
541
+ list(APPEND _vtk_python_export
542
+ EXPORT "${_vtk_python_INSTALL_EXPORT}")
543
+ endif ()
544
+
545
+ set(_vtk_python_wrap_component "${_vtk_python_COMPONENT}")
546
+ if (_vtk_python_TARGET_SPECIFIC_COMPONENTS)
547
+ string(PREPEND _vtk_python_wrap_component "${name}-")
548
+ endif ()
549
+
550
+ install(
551
+ TARGETS "${name}"
552
+ ${_vtk_python_export}
553
+ COMPONENT "${_vtk_python_wrap_component}"
554
+ RUNTIME DESTINATION "${_vtk_python_MODULE_DESTINATION}/${_vtk_python_package_path}"
555
+ LIBRARY DESTINATION "${_vtk_python_MODULE_DESTINATION}/${_vtk_python_package_path}"
556
+ ARCHIVE DESTINATION "${_vtk_python_STATIC_MODULE_DESTINATION}")
557
+ endfunction ()
558
+
559
+ #[==[.rst:
560
+ .. cmake:command:: vtk_module_wrap_python
561
+
562
+
563
+ Wrap a set of modules for use in Python.|module-wrapping-python|
564
+
565
+ .. code-block:: cmake
566
+
567
+ vtk_module_wrap_python(
568
+ MODULES <module>...
569
+ [TARGET <target>]
570
+ [WRAPPED_MODULES <varname>]
571
+
572
+ [BUILD_STATIC <ON|OFF>]
573
+ [INSTALL_HEADERS <ON|OFF>]
574
+ [BUILD_PYI_FILES <ON|OFF>]
575
+
576
+ [DEPENDS <target>...]
577
+ [UTILITY_TARGET <target>]
578
+
579
+ [MODULE_DESTINATION <destination>]
580
+ [STATIC_MODULE_DESTINATION <destination>]
581
+ [CMAKE_DESTINATION <destination>]
582
+ [LIBRARY_DESTINATION <destination>]
583
+ [HEADERS_DESTINATION <destination>]
584
+
585
+ [PYTHON_PACKAGE <package>]
586
+ [SOABI <soabi>]
587
+ [USE_DEBUG_SUFFIX <ON|OFF>]
588
+ [REPLACE_DEBUG_SUFFIX <ON|OFF>]
589
+
590
+ [INTERPRETER <interpreter>]
591
+
592
+ [INSTALL_EXPORT <export>]
593
+ [COMPONENT <component>])
594
+ [TARGET_SPECIFIC_COMPONENTS <ON|OFF>]
595
+ )
596
+
597
+
598
+ * ``MODULES``: (Required) The list of modules to wrap.
599
+ * ``TARGET``: (Recommended) The target to create which represents all wrapped
600
+ Python modules. This is mostly useful when supporting static Python modules
601
+ in order to add the generated modules to the built-in table.
602
+ * ``WRAPPED_MODULES``: (Recommended) Not all modules are wrappable. This
603
+ variable will be set to contain the list of modules which were wrapped.
604
+ These modules will have a ``INTERFACE_vtk_module_python_package`` property
605
+ set on them which is the name that should be given to ``import`` statements
606
+ in Python code.
607
+ * ``BUILD_STATIC``: Defaults to ``${BUILD_SHARED_LIBS}``. Note that shared
608
+ modules with a static build is not completely supported. For static Python
609
+ module builds, a header named ``<TARGET>.h`` will be available with a
610
+ function ``void <TARGET>_load()`` which will add all Python modules created
611
+ by this call to the imported module table. For shared Python module builds,
612
+ the same function is provided, but it is a no-op.
613
+ * ``INSTALL_HEADERS`` (Defaults to ``ON``): If unset, CMake properties will not
614
+ be installed.
615
+ * ``BUILD_PYI_FILES`` (Defaults to ``OFF``): If set, ``.pyi`` files will be built
616
+ and installed for the generated modules.
617
+ * ``TARGET_SPECIFIC_COMPONENTS`` (Defaults to ``OFF``): If set, prepend the
618
+ output target name to the install component (``<TARGET>-<COMPONENT>``).
619
+ * ``DEPENDS``: This is list of other Python modules targets i.e. targets
620
+ generated from previous calls to ``vtk_module_wrap_python`` that this new
621
+ target depends on. This is used when ``BUILD_STATIC`` is true to ensure that
622
+ the ``void <TARGET>_load()`` is correctly called for each of the dependencies.
623
+ * ``UTILITY_TARGET``: If specified, all libraries made by the Python wrapping
624
+ will link privately to this target. This may be used to add compile flags
625
+ to the Python libraries.
626
+ * ``MODULE_DESTINATION``: Modules will be placed in this location in the
627
+ build tree. The install tree should remove ``$<CONFIGURATION>`` bits, but it
628
+ currently does not. See ``vtk_module_python_default_destination`` for the
629
+ default value.
630
+ * ``STATIC_MODULE_DESTINATION``: Defaults to ``${CMAKE_INSTALL_LIBDIR}``. This
631
+ default may change in the future since the best location for these files is
632
+ not yet known. Static libraries containing Python code will be installed to
633
+ the install tree under this path.
634
+ * ``CMAKE_DESTINATION``: (Required if ``INSTALL_HEADERS`` is ``ON``) Where to
635
+ install Python-related module property CMake files.
636
+ * ``LIBRARY_DESTINATION`` (Recommended): If provided, dynamic loader
637
+ information will be added to modules for loading dependent libraries.
638
+ * ``HEADERS_DESTINATION``: Defaults to (``${CMAKE_INSTALL_INCLUDEDIR}``.
639
+ Module loader headers will be installed to this directory.
640
+ * ``PYTHON_PACKAGE``: (Recommended) All generated modules will be added to this
641
+ Python package. The format is in Python syntax (e.g.,
642
+ ``package.subpackage``).
643
+ * ``SOABI``: (Required for wheel support): If given, generate libraries with
644
+ the SOABI tag in the module filename.
645
+ * ``USE_DEBUG_SUFFIX`` (Defaults to ``OFF``): If ``ON``, Windows modules will have
646
+ a ``_d`` suffix appended to the module name. This is intended for use with
647
+ debug Python builds.
648
+ * ``REPLACE_DEBUG_SUFFIX`` (Defaults to ``OFF``): If ``ON``, any project-wide debug
649
+ suffix will be replaced with the local debug suffix (if enabled).
650
+ * ``INTERPRETER`` (Defaults to ``VTK::Python`` or ``Python3::Interpreter``): If
651
+ provided, this interpreter will be used to run supplemental processes which
652
+ involve Python scripts including ``.pyi`` file generation. If a target name
653
+ is provided, its path will be used, otherwise a string which expands to the
654
+ path to an interpreter executable may be provided. If the string ``DISABLE``
655
+ is given, any support using interpreters will be disabled.
656
+ * ``INSTALL_EXPORT``: If provided, static installs will add the installed
657
+ libraries to the provided export set.
658
+ * ``COMPONENT``: Defaults to ``python``. All install rules created by this
659
+ function will use this installation component.
660
+ #]==]
661
+ function (vtk_module_wrap_python)
662
+ cmake_parse_arguments(PARSE_ARGV 0 _vtk_python
663
+ ""
664
+ "MODULE_DESTINATION;STATIC_MODULE_DESTINATION;LIBRARY_DESTINATION;PYTHON_PACKAGE;BUILD_STATIC;INSTALL_HEADERS;INSTALL_EXPORT;TARGET_SPECIFIC_COMPONENTS;TARGET;COMPONENT;WRAPPED_MODULES;CMAKE_DESTINATION;SOABI;USE_DEBUG_SUFFIX;REPLACE_DEBUG_SUFFIX;UTILITY_TARGET;BUILD_PYI_FILES;HEADERS_DESTINATION;INTERPRETER"
665
+ "DEPENDS;MODULES")
666
+
667
+ if (_vtk_python_UNPARSED_ARGUMENTS)
668
+ message(FATAL_ERROR
669
+ "Unparsed arguments for vtk_module_wrap_python: "
670
+ "${_vtk_python_UNPARSED_ARGUMENTS}")
671
+ endif ()
672
+
673
+ if (NOT _vtk_python_MODULES)
674
+ message(WARNING
675
+ "No modules were requested for Python wrapping.")
676
+ return ()
677
+ endif ()
678
+
679
+ _vtk_module_split_module_name("${_vtk_python_TARGET}" _vtk_python)
680
+
681
+ set(_vtk_python_depends)
682
+ foreach (_vtk_python_depend IN LISTS _vtk_python_DEPENDS)
683
+ _vtk_module_split_module_name("${_vtk_python_depend}" _vtk_python_depends)
684
+ list(APPEND _vtk_python_depends
685
+ "${_vtk_python_depends_TARGET_NAME}")
686
+ endforeach ()
687
+
688
+ if (NOT DEFINED _vtk_python_MODULE_DESTINATION)
689
+ vtk_module_python_default_destination(_vtk_python_MODULE_DESTINATION)
690
+ endif ()
691
+
692
+ if (NOT DEFINED _vtk_python_INSTALL_HEADERS)
693
+ set(_vtk_python_INSTALL_HEADERS ON)
694
+ endif ()
695
+
696
+ if (NOT DEFINED _vtk_python_HEADERS_DESTINATION)
697
+ set(_vtk_python_HEADERS_DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
698
+ endif ()
699
+
700
+ if (NOT DEFINED _vtk_python_BUILD_PYI_FILES)
701
+ set(_vtk_python_BUILD_PYI_FILES OFF)
702
+ endif ()
703
+
704
+ if (NOT DEFINED _vtk_python_TARGET_SPECIFIC_COMPONENTS)
705
+ set(_vtk_python_TARGET_SPECIFIC_COMPONENTS OFF)
706
+ endif ()
707
+
708
+ if (NOT DEFINED _vtk_python_USE_DEBUG_SUFFIX)
709
+ set(_vtk_python_USE_DEBUG_SUFFIX OFF)
710
+ endif ()
711
+
712
+ if (NOT DEFINED _vtk_python_REPLACE_DEBUG_SUFFIX)
713
+ set(_vtk_python_REPLACE_DEBUG_SUFFIX OFF)
714
+ endif ()
715
+
716
+ set(_vtk_python_exe)
717
+ if (NOT DEFINED _vtk_python_INTERPRETER)
718
+ if (TARGET VTK::vtkpython)
719
+ set(_vtk_python_exe "$<TARGET_FILE:VTK::vtkpython>")
720
+ elseif (TARGET Python3::Interpreter)
721
+ set(_vtk_python_exe "$<TARGET_FILE:Python3::Interpreter>")
722
+ elseif (Python3_EXECUTABLE)
723
+ set(_vtk_python_exe "${Python3_EXECUTABLE}")
724
+ else ()
725
+ message(WARNING
726
+ "No Python interpreter found; `.pyi` support will be disabled.")
727
+ endif ()
728
+ elseif (TARGET "${_vtk_python_INTERPRETER}")
729
+ set(_vtk_python_exe "$<TARGET_FILE:${_vtk_python_INTERPRETER}>")
730
+ elseif (_vtk_python_INTERPRETER STREQUAL "DISABLE")
731
+ set(_vtk_python_exe "")
732
+ elseif (_vtk_python_INTERPRETER)
733
+ set(_vtk_python_exe "${_vtk_python_INTERPRETER}")
734
+ else ()
735
+ message(WARNING
736
+ "No Python interpreter found; `.pyi` support will be disabled.")
737
+ endif ()
738
+
739
+ if (_vtk_python_SOABI)
740
+ get_property(_vtk_python_is_multi_config GLOBAL
741
+ PROPERTY GENERATOR_IS_MULTI_CONFIG)
742
+ if (_vtk_python_is_multi_config)
743
+ foreach (_vtk_python_config IN LISTS CMAKE_CONFIGURATION_TYPES)
744
+ string(TOUPPER "${_vtk_python_config}" _vtk_python_upper_config)
745
+ set("CMAKE_${_vtk_python_upper_config}_POSTFIX"
746
+ ".${_vtk_python_SOABI}")
747
+ endforeach ()
748
+ else ()
749
+ string(TOUPPER "${CMAKE_BUILD_TYPE}" _vtk_python_upper_config)
750
+ set("CMAKE_${_vtk_python_upper_config}_POSTFIX"
751
+ ".${_vtk_python_SOABI}")
752
+ endif ()
753
+ endif ()
754
+
755
+ if (_vtk_python_INSTALL_HEADERS AND NOT DEFINED _vtk_python_CMAKE_DESTINATION)
756
+ message(FATAL_ERROR
757
+ "No CMAKE_DESTINATION set, but headers from the Python wrapping were "
758
+ "requested for install and the CMake files are required to work with "
759
+ "them.")
760
+ endif ()
761
+
762
+ if (NOT DEFINED _vtk_python_BUILD_STATIC)
763
+ if (BUILD_SHARED_LIBS)
764
+ set(_vtk_python_BUILD_STATIC OFF)
765
+ else ()
766
+ set(_vtk_python_BUILD_STATIC ON)
767
+ endif ()
768
+ else ()
769
+ if (NOT _vtk_python_BUILD_STATIC AND NOT BUILD_SHARED_LIBS)
770
+ message(WARNING
771
+ "Building shared Python modules against static VTK modules only "
772
+ "supports consuming the VTK modules via their Python interfaces due "
773
+ "to the lack of support for an SDK to use the same static libraries.")
774
+ endif ()
775
+ endif ()
776
+
777
+ if (NOT DEFINED _vtk_python_STATIC_MODULE_DESTINATION)
778
+ # TODO: Is this correct?
779
+ set(_vtk_python_STATIC_MODULE_DESTINATION "${CMAKE_INSTALL_LIBDIR}")
780
+ endif ()
781
+
782
+ if (NOT DEFINED _vtk_python_COMPONENT)
783
+ set(_vtk_python_COMPONENT "python")
784
+ endif ()
785
+
786
+ if (NOT _vtk_python_PYTHON_PACKAGE)
787
+ message(FATAL_ERROR
788
+ "No `PYTHON_PACKAGE` was given; Python modules must be placed into a "
789
+ "package.")
790
+ endif ()
791
+ string(REPLACE "." "/" _vtk_python_package_path "${_vtk_python_PYTHON_PACKAGE}")
792
+
793
+ if(_vtk_python_BUILD_STATIC)
794
+ # When doing static builds we want the statically initialized built-ins to be
795
+ # used. It is unclear in the Python-C API how to construct `namespace.module`
796
+ # so instead at the C++ level we import "namespace_module" during startup
797
+ # and than the python modules moving those imports into the correct python
798
+ # module.
799
+ string(REPLACE "." "_" _vtk_python_import_prefix "${_vtk_python_PYTHON_PACKAGE}_")
800
+ else()
801
+ # We are building dynamic libraries therefore the prefix is simply '.'
802
+ set(_vtk_python_import_prefix ".")
803
+ endif()
804
+
805
+ _vtk_module_check_destinations(_vtk_python_
806
+ MODULE_DESTINATION
807
+ STATIC_MODULE_DESTINATION
808
+ CMAKE_DESTINATION
809
+ LIBRARY_DESTINATION
810
+ HEADERS_DESTINATION)
811
+
812
+ if (_vtk_python_INSTALL_HEADERS)
813
+ set(_vtk_python_properties_filename "${_vtk_python_PYTHON_PACKAGE}-vtk-python-module-properties.cmake")
814
+ set(_vtk_python_properties_install_file "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${_vtk_python_TARGET_NAME}/${_vtk_python_properties_filename}.install")
815
+ set(_vtk_python_properties_build_file "${CMAKE_BINARY_DIR}/${_vtk_python_CMAKE_DESTINATION}/${_vtk_python_properties_filename}")
816
+
817
+ file(WRITE "${_vtk_python_properties_build_file}")
818
+ file(WRITE "${_vtk_python_properties_install_file}")
819
+ endif ()
820
+
821
+ if (DEFINED _vtk_python_LIBRARY_DESTINATION)
822
+ # Set up rpaths
823
+ set(CMAKE_BUILD_RPATH_USE_ORIGIN 1)
824
+ if (UNIX)
825
+ file(RELATIVE_PATH _vtk_python_relpath
826
+ "/prefix/${_vtk_python_MODULE_DESTINATION}/${_vtk_python_package_path}"
827
+ "/prefix/${_vtk_python_LIBRARY_DESTINATION}")
828
+
829
+ if (APPLE)
830
+ set(_vtk_python_origin_stem "@loader_path")
831
+ else ()
832
+ set(_vtk_python_origin_stem "$ORIGIN")
833
+ endif()
834
+
835
+ list(APPEND CMAKE_INSTALL_RPATH
836
+ "${_vtk_python_origin_stem}/${_vtk_python_relpath}")
837
+ endif ()
838
+ endif ()
839
+
840
+ set(_vtk_python_sorted_modules ${_vtk_python_MODULES})
841
+ foreach (_vtk_python_module IN LISTS _vtk_python_MODULES)
842
+ _vtk_module_get_module_property("${_vtk_python_module}"
843
+ PROPERTY "depends"
844
+ VARIABLE "_vtk_python_${_vtk_python_module}_depends")
845
+ endforeach ()
846
+ vtk_topological_sort(_vtk_python_sorted_modules "_vtk_python_" "_depends")
847
+
848
+ set(_vtk_python_sorted_modules_filtered)
849
+ foreach (_vtk_python_module IN LISTS _vtk_python_sorted_modules)
850
+ if (_vtk_python_module IN_LIST _vtk_python_MODULES)
851
+ list(APPEND _vtk_python_sorted_modules_filtered
852
+ "${_vtk_python_module}")
853
+ endif ()
854
+ endforeach ()
855
+
856
+ set(_vtk_python_headers_component "development")
857
+ set(_vtk_python_component "${_vtk_python_COMPONENT}")
858
+ if (_vtk_python_TARGET_SPECIFIC_COMPONENTS)
859
+ string(PREPEND _vtk_python_headers_component "${_vtk_python_TARGET_NAME}-")
860
+ string(PREPEND _vtk_python_component "${_vtk_python_TARGET_NAME}-")
861
+ endif ()
862
+
863
+ # Disable CMake's automoc support for these targets.
864
+ set(CMAKE_AUTOMOC 0)
865
+ set(CMAKE_AUTORCC 0)
866
+ set(CMAKE_AUTOUIC 0)
867
+
868
+ set(_vtk_python_all_modules)
869
+ set(_vtk_python_all_wrapped_modules)
870
+ foreach (_vtk_python_module IN LISTS _vtk_python_sorted_modules_filtered)
871
+ _vtk_module_get_module_property("${_vtk_python_module}"
872
+ PROPERTY "library_name"
873
+ VARIABLE _vtk_python_library_name)
874
+ _vtk_module_wrap_python_library("${_vtk_python_library_name}Python" "${_vtk_python_module}")
875
+
876
+ if (TARGET "${_vtk_python_library_name}Python")
877
+ list(APPEND _vtk_python_all_modules
878
+ "${_vtk_python_library_name}Python")
879
+ list(APPEND _vtk_python_all_wrapped_modules
880
+ "${_vtk_python_module}")
881
+ endif ()
882
+ endforeach ()
883
+
884
+ if (NOT _vtk_python_all_modules)
885
+ message(FATAL_ERROR
886
+ "No modules given could be wrapped.")
887
+ endif ()
888
+
889
+ if (_vtk_python_INSTALL_HEADERS)
890
+ install(
891
+ FILES "${_vtk_python_properties_install_file}"
892
+ DESTINATION "${_vtk_python_CMAKE_DESTINATION}"
893
+ RENAME "${_vtk_python_properties_filename}"
894
+ COMPONENT "${_vtk_python_headers_component}")
895
+ endif ()
896
+
897
+ if (DEFINED _vtk_python_WRAPPED_MODULES)
898
+ set("${_vtk_python_WRAPPED_MODULES}"
899
+ "${_vtk_python_all_wrapped_modules}"
900
+ PARENT_SCOPE)
901
+ endif ()
902
+
903
+ if (_vtk_python_TARGET)
904
+ add_library("${_vtk_python_TARGET_NAME}" INTERFACE)
905
+ target_include_directories("${_vtk_python_TARGET_NAME}"
906
+ INTERFACE
907
+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/${_vtk_python_HEADERS_DESTINATION}>")
908
+ target_link_libraries("${_vtk_python_TARGET_NAME}"
909
+ INTERFACE
910
+ ${_vtk_python_DEPENDS})
911
+ if (NOT _vtk_python_TARGET STREQUAL _vtk_python_TARGET_NAME)
912
+ add_library("${_vtk_python_TARGET}" ALIAS
913
+ "${_vtk_python_TARGET_NAME}")
914
+ endif ()
915
+
916
+ if (_vtk_python_INSTALL_EXPORT)
917
+ install(
918
+ TARGETS "${_vtk_python_TARGET_NAME}"
919
+ EXPORT "${_vtk_python_INSTALL_EXPORT}"
920
+ COMPONENT "${_vtk_python_headers_component}")
921
+ endif ()
922
+
923
+ set(_vtk_python_all_modules_include_file
924
+ "${CMAKE_CURRENT_BINARY_DIR}/${_vtk_python_HEADERS_DESTINATION}/${_vtk_python_TARGET_NAME}.h")
925
+ set(_vtk_python_all_modules_include_content
926
+ "#ifndef ${_vtk_python_TARGET_NAME}_h\n#define ${_vtk_python_TARGET_NAME}_h\n")
927
+
928
+ if (_vtk_python_BUILD_STATIC)
929
+ foreach (_vtk_python_module IN LISTS _vtk_python_all_modules)
930
+ string(APPEND _vtk_python_all_modules_include_content
931
+ "#include \"${_vtk_python_module}.h\"\n")
932
+ endforeach ()
933
+ endif ()
934
+
935
+ foreach (_vtk_python_depend IN LISTS _vtk_python_depends)
936
+ string(APPEND _vtk_python_all_modules_include_content
937
+ "#include \"${_vtk_python_depend}.h\"\n")
938
+ endforeach ()
939
+
940
+ string(APPEND _vtk_python_all_modules_include_content
941
+ "#define PY_APPEND_INIT(module) PyImport_AppendInittab(\"${_vtk_python_import_prefix}\" #module, PyInit_ ## module)
942
+ #define PY_IMPORT(module) { \\
943
+ PyObject* var_ ## module = PyInit_ ## module(); \\
944
+ PyDict_SetItemString(PyImport_GetModuleDict(), \"${_vtk_python_import_prefix}\" #module,var_ ## module); \\
945
+ Py_DECREF(var_ ## module); }
946
+
947
+ #define PY_APPEND_INIT_OR_IMPORT(module, do_import) \\
948
+ if (do_import) { PY_IMPORT(module); } else { PY_APPEND_INIT(module); }
949
+
950
+ static void ${_vtk_python_TARGET_NAME}_load() {\n")
951
+
952
+ foreach (_vtk_python_depend IN LISTS _vtk_python_depends)
953
+ string(APPEND _vtk_python_all_modules_include_content
954
+ " ${_vtk_python_depend}_load();\n")
955
+ endforeach ()
956
+
957
+ if (_vtk_python_BUILD_STATIC)
958
+ string(APPEND _vtk_python_all_modules_include_content
959
+ " int do_import = Py_IsInitialized();\n")
960
+ foreach (_vtk_python_module IN LISTS _vtk_python_sorted_modules_filtered)
961
+ _vtk_module_get_module_property("${_vtk_python_module}"
962
+ PROPERTY "library_name"
963
+ VARIABLE _vtk_python_library_name)
964
+ if (TARGET "${_vtk_python_library_name}Python")
965
+ string(APPEND _vtk_python_all_modules_include_content
966
+ " PY_APPEND_INIT_OR_IMPORT(${_vtk_python_library_name}, do_import);\n")
967
+ endif ()
968
+ endforeach ()
969
+ endif ()
970
+
971
+ string(APPEND _vtk_python_all_modules_include_content
972
+ "}\n#undef PY_APPEND_INIT\n#undef PY_IMPORT\n#undef PY_APPEND_INIT_OR_IMPORT\n#endif\n")
973
+
974
+ file(GENERATE
975
+ OUTPUT "${_vtk_python_all_modules_include_file}"
976
+ CONTENT "${_vtk_python_all_modules_include_content}")
977
+
978
+ if (_vtk_python_INSTALL_HEADERS)
979
+ target_include_directories("${_vtk_python_TARGET_NAME}"
980
+ INTERFACE
981
+ "$<INSTALL_INTERFACE:${_vtk_python_HEADERS_DESTINATION}>")
982
+ install(
983
+ FILES "${_vtk_python_all_modules_include_file}"
984
+ DESTINATION "${_vtk_python_HEADERS_DESTINATION}"
985
+ COMPONENT "${_vtk_python_headers_component}")
986
+ endif ()
987
+
988
+ if (_vtk_python_BUILD_STATIC)
989
+ # TODO: Install these targets.
990
+ target_link_libraries("${_vtk_python_TARGET_NAME}"
991
+ INTERFACE
992
+ ${_vtk_python_all_modules})
993
+ endif ()
994
+
995
+ if (_vtk_python_BUILD_STATIC)
996
+ # Next, we generate a Python module that can be imported to import any
997
+ # static artifacts e.g. all wrapping Python modules in static builds,
998
+ # (eventually, frozen modules etc.)
999
+ string(REPLACE "." "_" _vtk_python_static_importer_name "_${_vtk_python_PYTHON_PACKAGE}_static")
1000
+ set(_vtk_python_static_importer_file
1001
+ "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${_vtk_python_TARGET_NAME}/static_python/${_vtk_python_static_importer_name}.c")
1002
+ set(_vtk_python_static_importer_content "// generated file, do not edit!
1003
+ #include <vtkPython.h>
1004
+ #include \"${_vtk_python_TARGET_NAME}.h\"
1005
+
1006
+ static PyMethodDef Py${_vtk_python_static_importer_name}_Methods[] = {
1007
+ {NULL, NULL, 0, NULL}};
1008
+ static PyModuleDef ${_vtk_python_static_importer_name}Module = {
1009
+ PyModuleDef_HEAD_INIT,
1010
+ \"${_vtk_python_static_importer_name}\", // m_name
1011
+ \"module to import static components for ${_vtk_python_TARGET_NAME}\", // m_doc
1012
+ 0, // m_size
1013
+ Py${_vtk_python_static_importer_name}_Methods, // m_methods
1014
+ NULL, // m_reload
1015
+ NULL, // m_traverse
1016
+ NULL, // m_clear
1017
+ NULL // m_free
1018
+ };
1019
+
1020
+ PyMODINIT_FUNC PyInit_${_vtk_python_static_importer_name}()
1021
+ {
1022
+ // since this gets called after `Py_Initialize`, this will import the static
1023
+ // modules and not just update the init table.
1024
+ ${_vtk_python_TARGET_NAME}_load();
1025
+ return PyModule_Create(&${_vtk_python_static_importer_name}Module);
1026
+ }\n")
1027
+
1028
+ file(GENERATE
1029
+ OUTPUT "${_vtk_python_static_importer_file}"
1030
+ CONTENT "${_vtk_python_static_importer_content}")
1031
+
1032
+ add_library("${_vtk_python_static_importer_name}" MODULE
1033
+ ${_vtk_python_static_importer_file})
1034
+ if (WIN32 AND NOT CYGWIN)
1035
+ set_property(TARGET "${_vtk_python_static_importer_name}"
1036
+ PROPERTY
1037
+ SUFFIX ".pyd")
1038
+ endif()
1039
+ set_property(TARGET "${_vtk_python_static_importer_name}"
1040
+ PROPERTY
1041
+ LIBRARY_OUTPUT_DIRECTORY "${_vtk_python_MODULE_DESTINATION}")
1042
+ get_property(_vtk_python_is_multi_config GLOBAL
1043
+ PROPERTY GENERATOR_IS_MULTI_CONFIG)
1044
+ if (_vtk_python_is_multi_config)
1045
+ # XXX(MultiNinja): This isn't going to work in general since MultiNinja
1046
+ # will error about overlapping output paths.
1047
+ foreach (_vtk_python_config IN LISTS CMAKE_CONFIGURATION_TYPES)
1048
+ string(TOUPPER "${_vtk_python_config}" _vtk_python_config_upper)
1049
+ set_property(TARGET "${_vtk_python_static_importer_name}"
1050
+ PROPERTY
1051
+ "LIBRARY_OUTPUT_DIRECTORY_${_vtk_python_config_upper}" "${CMAKE_BINARY_DIR}/${_vtk_python_MODULE_DESTINATION}")
1052
+ endforeach ()
1053
+ endif ()
1054
+ set_property(TARGET "${_vtk_python_static_importer_name}"
1055
+ PROPERTY
1056
+ PREFIX "")
1057
+ target_link_libraries("${_vtk_python_static_importer_name}"
1058
+ PRIVATE
1059
+ ${_vtk_python_TARGET_NAME}
1060
+ VTK::WrappingPythonCore
1061
+ VTK::Python)
1062
+
1063
+ install(
1064
+ TARGETS "${_vtk_python_static_importer_name}"
1065
+ COMPONENT "${_vtk_python_component}"
1066
+ RUNTIME DESTINATION "${_vtk_python_MODULE_DESTINATION}"
1067
+ LIBRARY DESTINATION "${_vtk_python_MODULE_DESTINATION}"
1068
+ ARCHIVE DESTINATION "${_vtk_python_STATIC_MODULE_DESTINATION}")
1069
+ endif () # if (_vtk_python_BUILD_STATIC)
1070
+
1071
+ # convert package "x.y" into "x/y" to access its contents on the filesystem
1072
+ string(REPLACE "." "/" _vtk_python_package_dir "${_vtk_python_PYTHON_PACKAGE}")
1073
+
1074
+ if (_vtk_python_BUILD_PYI_FILES)
1075
+ set(_vtk_python_pyi_files)
1076
+ set(_vtk_python_modules)
1077
+ set(_vtk_python_module_targets)
1078
+ foreach (_vtk_python_module IN LISTS _vtk_python_all_wrapped_modules)
1079
+ get_property(_vtk_python_library_name
1080
+ TARGET "${_vtk_python_module}"
1081
+ PROPERTY "INTERFACE_vtk_module_library_name")
1082
+ list(APPEND _vtk_python_pyi_files
1083
+ "${CMAKE_BINARY_DIR}/${_vtk_python_MODULE_DESTINATION}/${_vtk_python_package_dir}/${_vtk_python_library_name}.pyi")
1084
+ list(APPEND _vtk_python_modules "${_vtk_python_library_name}")
1085
+ if (TARGET "${_vtk_python_library_name}Python")
1086
+ list(APPEND _vtk_python_module_targets "${_vtk_python_library_name}Python")
1087
+ endif ()
1088
+ endforeach ()
1089
+ list(APPEND _vtk_python_pyi_files
1090
+ "${CMAKE_BINARY_DIR}/${_vtk_python_MODULE_DESTINATION}/${_vtk_python_package_dir}/py.typed")
1091
+
1092
+ if (TARGET VTK::vtkpython)
1093
+ set(_vtk_python_exe $<TARGET_FILE:VTK::vtkpython>)
1094
+ else ()
1095
+ set(_vtk_python_exe "${Python3_EXECUTABLE}")
1096
+ endif ()
1097
+
1098
+ if (_vtk_python_BUILD_STATIC)
1099
+ set(_generate_pyi_static_importer_arg
1100
+ -i "${_vtk_python_static_importer_name}")
1101
+ else ()
1102
+ set(_generate_pyi_static_importer_arg)
1103
+ endif ()
1104
+
1105
+ add_custom_command(
1106
+ OUTPUT ${_vtk_python_pyi_files}
1107
+ COMMAND ${_vtk_python_exe} # Do not quote; may contain arguments.
1108
+ -m vtkmodules.generate_pyi
1109
+ -p "${_vtk_python_PYTHON_PACKAGE}"
1110
+ ${_generate_pyi_static_importer_arg}
1111
+ -o "${CMAKE_BINARY_DIR}/${_vtk_python_MODULE_DESTINATION}/${_vtk_python_package_dir}"
1112
+ ${_vtk_python_modules}
1113
+ WORKING_DIRECTORY
1114
+ "${CMAKE_BINARY_DIR}/${_vtk_python_MODULE_DESTINATION}"
1115
+ DEPENDS ${_vtk_python_module_targets}
1116
+ ${_vtk_python_static_importer_name}
1117
+ "${_vtk_pyi_script}"
1118
+ COMMENT "Creating .pyi files for ${_vtk_python_TARGET_NAME}")
1119
+
1120
+ install(
1121
+ FILES ${_vtk_python_pyi_files}
1122
+ DESTINATION "${_vtk_python_MODULE_DESTINATION}/${_vtk_python_package_dir}"
1123
+ COMPONENT "${_vtk_python_component}")
1124
+
1125
+ add_custom_target("${_vtk_python_TARGET_NAME}_pyi" ALL
1126
+ DEPENDS ${_vtk_python_pyi_files})
1127
+ endif ()
1128
+ endif ()
1129
+ endfunction ()
1130
+
1131
+ #[==[.rst:
1132
+ .. cmake:command:: vtk_module_add_python_package
1133
+
1134
+ Install Python packages with a module |module-wrapping-python|.
1135
+
1136
+ Some modules may have associated Python code. This function should be used to
1137
+ install them.
1138
+
1139
+ .. code-block:: cmake
1140
+
1141
+ vtk_module_add_python_package(<module>
1142
+ PACKAGE <package>
1143
+ FILES <files>...
1144
+ [MODULE_DESTINATION <destination>]
1145
+ [COMPONENT <component>])
1146
+
1147
+
1148
+ The ``<module>`` argument must match the associated VTK module that the package
1149
+ is with. Each package is independent and should be installed separately. That
1150
+ is, ``package`` and ``package.subpackage`` should each get their own call to this
1151
+ function.
1152
+
1153
+ * ``PACKAGE``: (Required) The package installed by this call. Currently,
1154
+ subpackages must have their own call to this function.
1155
+ * ``FILES``: (Required) File paths should be relative to the source directory
1156
+ of the calling ``CMakeLists.txt``. Upward paths are not supported (nor are
1157
+ checked for). Absolute paths are assumed to be in the build tree and their
1158
+ relative path is computed relative to the current binary directory.
1159
+ * ``MODULE_DESTINATION``: Modules will be placed in this location in the
1160
+ build tree. The install tree should remove ``$<CONFIGURATION>`` bits, but it
1161
+ currently does not. See ``vtk_module_python_default_destination`` for the
1162
+ default value.
1163
+ * ``COMPONENT``: Defaults to ``python``. All install rules created by this
1164
+ function will use this installation component.
1165
+
1166
+ A ``<module>-<package>`` target is created which ensures that all Python modules
1167
+ have been copied to the correct location in the build tree.
1168
+
1169
+ .. todo::
1170
+ Support freezing the Python package. This should create a header and the
1171
+ associated target should provide an interface for including this header. The
1172
+ target should then be exported and the header installed properly.
1173
+ #]==]
1174
+ function (vtk_module_add_python_package name)
1175
+ if (NOT name STREQUAL _vtk_build_module)
1176
+ message(FATAL_ERROR
1177
+ "Python modules must match their module names.")
1178
+ endif ()
1179
+
1180
+ cmake_parse_arguments(PARSE_ARGV 1 _vtk_add_python_package
1181
+ ""
1182
+ "PACKAGE;MODULE_DESTINATION;COMPONENT"
1183
+ "FILES")
1184
+
1185
+ if (_vtk_add_python_package_UNPARSED_ARGUMENTS)
1186
+ message(FATAL_ERROR
1187
+ "Unparsed arguments for vtk_module_add_python_package: "
1188
+ "${_vtk_add_python_package_UNPARSED_ARGUMENTS}")
1189
+ endif ()
1190
+
1191
+ if (NOT _vtk_add_python_package_PACKAGE)
1192
+ message(FATAL_ERROR
1193
+ "The `PACKAGE` argument is required.")
1194
+ endif ()
1195
+ string(REPLACE "." "/" _vtk_add_python_package_path "${_vtk_add_python_package_PACKAGE}")
1196
+
1197
+ if (NOT _vtk_add_python_package_FILES)
1198
+ message(FATAL_ERROR
1199
+ "The `FILES` argument is required.")
1200
+ endif ()
1201
+
1202
+ if (NOT DEFINED _vtk_add_python_package_MODULE_DESTINATION)
1203
+ vtk_module_python_default_destination(_vtk_add_python_package_MODULE_DESTINATION)
1204
+ endif ()
1205
+
1206
+ if (NOT DEFINED _vtk_add_python_package_COMPONENT)
1207
+ set(_vtk_add_python_package_COMPONENT "python")
1208
+ endif ()
1209
+
1210
+ set(_vtk_add_python_package_file_outputs)
1211
+ foreach (_vtk_add_python_package_file IN LISTS _vtk_add_python_package_FILES)
1212
+ if (IS_ABSOLUTE "${_vtk_add_python_package_file}")
1213
+ file(RELATIVE_PATH _vtk_add_python_package_name
1214
+ "${CMAKE_CURRENT_BINARY_DIR}"
1215
+ "${_vtk_add_python_package_file}")
1216
+ else ()
1217
+ set(_vtk_add_python_package_name
1218
+ "${_vtk_add_python_package_file}")
1219
+ string(PREPEND _vtk_add_python_package_file
1220
+ "${CMAKE_CURRENT_SOURCE_DIR}/")
1221
+ endif ()
1222
+
1223
+ set(_vtk_add_python_package_file_output
1224
+ "${CMAKE_BINARY_DIR}/${_vtk_add_python_package_MODULE_DESTINATION}/${_vtk_add_python_package_name}")
1225
+ add_custom_command(
1226
+ OUTPUT "${_vtk_add_python_package_file_output}"
1227
+ DEPENDS "${_vtk_add_python_package_file}"
1228
+ COMMAND "${CMAKE_COMMAND}" -E copy_if_different
1229
+ "${_vtk_add_python_package_file}"
1230
+ "${_vtk_add_python_package_file_output}"
1231
+ COMMENT "Copying ${_vtk_add_python_package_name} to the binary directory")
1232
+ list(APPEND _vtk_add_python_package_file_outputs
1233
+ "${_vtk_add_python_package_file_output}")
1234
+ if (BUILD_SHARED_LIBS)
1235
+ get_filename_component(_vtk_add_python_package_install_path "${_vtk_add_python_package_name}" DIRECTORY)
1236
+ install(
1237
+ FILES "${_vtk_add_python_package_name}"
1238
+ DESTINATION "${_vtk_add_python_package_MODULE_DESTINATION}/${_vtk_add_python_package_install_path}"
1239
+ COMPONENT "${_vtk_add_python_package_COMPONENT}")
1240
+ endif()
1241
+ endforeach ()
1242
+
1243
+ get_property(_vtk_add_python_package_module GLOBAL
1244
+ PROPERTY "_vtk_module_${_vtk_build_module}_target_name")
1245
+ add_custom_target("${_vtk_add_python_package_module}-${_vtk_add_python_package_PACKAGE}" ALL
1246
+ DEPENDS
1247
+ ${_vtk_add_python_package_file_outputs})
1248
+
1249
+ # Set `python_modules` to provide the list of python files that go along with
1250
+ # this module
1251
+ set_property(TARGET "${_vtk_add_python_package_module}-${_vtk_add_python_package_PACKAGE}"
1252
+ PROPERTY
1253
+ "python_modules" "${_vtk_add_python_package_file_outputs}")
1254
+ endfunction ()
1255
+
1256
+ #[==[.rst:
1257
+ .. cmake:command:: vtk_module_add_python_module
1258
+
1259
+ Use a Python package as a module. |module-wrapping-python|
1260
+
1261
+
1262
+ If a module is a Python package, this function should be used instead of
1263
+ :cmake:command:`vtk_module_add_module`.
1264
+
1265
+ .. code-block:: cmake
1266
+
1267
+ vtk_module_add_python_module(<name>
1268
+ PACKAGES <packages>...)
1269
+
1270
+
1271
+ * ``PACKAGES``: (Required) The list of packages installed by this module.
1272
+ These must have been created by the :cmake:command:`vtk_module_add_python_package`
1273
+ function.
1274
+ #]==]
1275
+ function (vtk_module_add_python_module name)
1276
+ if (NOT name STREQUAL _vtk_build_module)
1277
+ message(FATAL_ERROR
1278
+ "Python modules must match their module names.")
1279
+ endif ()
1280
+
1281
+ cmake_parse_arguments(PARSE_ARGV 1 _vtk_add_python_module
1282
+ ""
1283
+ ""
1284
+ "PACKAGES")
1285
+
1286
+ if (_vtk_add_python_module_UNPARSED_ARGUMENTS)
1287
+ message(FATAL_ERROR
1288
+ "Unparsed arguments for vtk_module_add_python_module: "
1289
+ "${_vtk_add_python_module_UNPARSED_ARGUMENTS}")
1290
+ endif ()
1291
+
1292
+ get_property(_vtk_add_python_module_depends GLOBAL
1293
+ PROPERTY "_vtk_module_${_vtk_build_module}_depends")
1294
+ get_property(_vtk_add_python_module_target_name GLOBAL
1295
+ PROPERTY "_vtk_module_${_vtk_build_module}_target_name")
1296
+ add_library("${_vtk_add_python_module_target_name}" INTERFACE)
1297
+ target_link_libraries("${_vtk_add_python_module_target_name}"
1298
+ INTERFACE
1299
+ ${_vtk_add_python_module_depends})
1300
+ if (NOT _vtk_build_module STREQUAL _vtk_add_python_module_target_name)
1301
+ add_library("${_vtk_build_module}" ALIAS
1302
+ "${_vtk_add_python_module_target_name}")
1303
+ endif ()
1304
+ foreach (_vtk_add_python_module_package IN LISTS _vtk_add_python_module_PACKAGES)
1305
+ add_dependencies("${_vtk_add_python_module_target_name}"
1306
+ "${_vtk_build_module}-${_vtk_add_python_module_package}")
1307
+
1308
+ # get the list of python files and add them on the module.
1309
+ get_property(_vtk_module_python_modules
1310
+ TARGET "${_vtk_add_python_module_target_name}-${_vtk_add_python_module_package}"
1311
+ PROPERTY "python_modules")
1312
+ _vtk_module_set_module_property("${_vtk_build_module}" APPEND
1313
+ PROPERTY "python_modules"
1314
+ VALUE "${_vtk_module_python_modules}")
1315
+ endforeach ()
1316
+
1317
+ get_property(_vtk_add_python_module_LICENSE_FILES GLOBAL
1318
+ PROPERTY "_vtk_module_${_vtk_build_module}_license_files")
1319
+ if (_vtk_add_python_module_LICENSE_FILES)
1320
+ if (_vtk_build_TARGET_SPECIFIC_COMPONENTS)
1321
+ string(PREPEND _vtk_build_LICENSE_COMPONENT "${_vtk_build_module}-")
1322
+ endif ()
1323
+ install(
1324
+ FILES ${_vtk_add_python_module_LICENSE_FILES}
1325
+ DESTINATION "${_vtk_build_LICENSE_DESTINATION}/${_vtk_add_python_module_target_name}/"
1326
+ COMPONENT "${_vtk_build_LICENSE_COMPONENT}")
1327
+ endif ()
1328
+
1329
+ _vtk_module_apply_properties("${_vtk_add_python_module_target_name}")
1330
+ _vtk_module_install("${_vtk_add_python_module_target_name}")
1331
+ endfunction ()
1332
+
1333
+ cmake_policy(POP)