xmake.lua 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package("vtk")
  2. set_homepage("https://vtk.org/")
  3. set_description("The Visualization Toolkit (VTK) is open source software for manipulating and displaying scientific data.")
  4. set_license("BSD-3-Clause")
  5. add_urls("https://www.vtk.org/files/release/$(version).tar.gz", {version = function (version)
  6. return table.concat(table.slice((version):split('%.'), 1, 2), '.') .. "/VTK-" .. version
  7. end})
  8. add_versions("9.0.1", "1b39a5e191c282861e7af4101eaa8585969a2de05f5646c9199a161213a622c7")
  9. add_versions("9.0.3", "bc3eb9625b2b8dbfecb6052a2ab091fc91405de4333b0ec68f3323815154ed8a")
  10. add_versions("9.1.0", "8fed42f4f8f1eb8083107b68eaa9ad71da07110161a3116ad807f43e5ca5ce96")
  11. add_versions("9.2.2", "1c5b0a2be71fac96ff4831af69e350f7a0ea3168981f790c000709dcf9121075")
  12. add_versions("9.2.6", "06fc8d49c4e56f498c40fcb38a563ed8d4ec31358d0101e8988f0bb4d539dd12")
  13. add_versions("9.3.1", "8354ec084ea0d2dc3d23dbe4243823c4bfc270382d0ce8d658939fd50061cab8")
  14. add_versions("9.4.2", "36c98e0da96bb12a30fe53708097aa9492e7b66d5c3b366e1c8dc251e2856a02")
  15. add_versions("9.5.1", "14443661c7b095d05b4e376fb3f40613f173e34fc9d4658234e9ec1d624a618f")
  16. add_patches("9.0.3", "patches/9.0.3/limits.patch", "3bebcd1cac52462b0cf84c8232c3426202c75c944784252b215b4416cbe111db")
  17. add_patches("9.2.6", "patches/9.2.6/gcc13.patch", "71bcb65197442e053ae2a69079bd2b3b8708a0bedf9f4f9a955e72b15720857c")
  18. add_patches("9.3.1", "patches/9.3.1/msvc.patch", "619ed4145f3b7c727aee168aac04271e6414d314bf49db470de688acc9f49cb8")
  19. add_patches("9.5.1", "patches/9.5.1/deps.patch", "6ecbd4a46250bf56e5ef92d362339fd7981176855c0864a2383ff35204c698a5")
  20. add_configs("cuda", {description = "Enable CUDA support.", default = false, type = "boolean"})
  21. add_configs("imaging", {description = "Enable Imaging modules.", default = "YES", type = "string", values = {"YES", "NO", "WANT", "DONT_WANT", "DEFAULT"}})
  22. add_configs("rendering", {description = "Enable Rendering modules.", default = "YES", type = "string", values = {"YES", "NO", "WANT", "DONT_WANT", "DEFAULT"}})
  23. add_configs("standalone", {description = "Enable StandAlone modules.", default = "YES", type = "string", values = {"YES", "NO", "WANT", "DONT_WANT", "DEFAULT"}})
  24. add_configs("views", {description = "Enable Views modules.", default = "YES", type = "string", values = {"YES", "NO", "WANT", "DONT_WANT", "DEFAULT"}})
  25. add_configs("mfc", {description = "Enable MFC modules.", default = "DONT_WANT", type = "string", values = {"YES", "NO", "WANT", "DONT_WANT", "DEFAULT"}})
  26. add_configs("mpi", {description = "Enable MPI modules.", default = "DONT_WANT", type = "string", values = {"YES", "NO", "WANT", "DONT_WANT", "DEFAULT"}})
  27. add_configs("python", {description = "Enable Python modules.", default = "DONT_WANT", type = "string", values = {"YES", "NO", "WANT", "DONT_WANT", "DEFAULT"}})
  28. add_configs("qt", {description = "Enable Qt modules.", default = "DONT_WANT", type = "string", values = {"YES", "NO", "WANT", "DONT_WANT", "DEFAULT"}})
  29. add_configs("remote", {description = "Enable Remote modules.", default = "DONT_WANT", type = "string", values = {"YES", "NO", "WANT", "DONT_WANT", "DEFAULT"}})
  30. add_configs("web", {description = "Enable Web modules.", default = "DONT_WANT", type = "string", values = {"YES", "NO", "WANT", "DONT_WANT", "DEFAULT"}})
  31. add_deps("cmake")
  32. if is_plat("linux") then
  33. add_extsources("apt::libvtk9-dev","pacman::vtk")
  34. elseif is_plat("mingw") and is_subhost("msys") then
  35. add_extsources("pacman::vtk")
  36. elseif is_plat("macosx") then
  37. add_extsources("brew::vtk")
  38. end
  39. if is_plat("windows") then
  40. add_syslinks("gdi32", "user32", "shell32", "opengl32", "vfw32", "comctl32", "wsock32", "advapi32", "ws2_32", "psapi", "dbghelp")
  41. add_patches("9.5.1", "patches/9.5.1/windows.patch", "7d776c2c5b94c69ae59f38673e0a8eb7cfb4be7176d9f84d0afb58b0eb82f42b")
  42. elseif is_plat("linux") then
  43. add_syslinks("dl", "pthread")
  44. end
  45. add_defines("kiss_fft_scalar=double", "DIY_NO_THREADS", "VTK_HAS_OGGTHEORA_SUPPORT")
  46. on_load(function (package)
  47. local ver = package:version():major() .. "." .. package:version():minor()
  48. package:add("includedirs", "include/vtk-" .. ver)
  49. local libs = {"vtkViewsInfovis", "vtkChartsCore", "vtkDomainsChemistryOpenGL2", "vtkViewsContext2D", "vtkTestingRendering", "vtkTestingCore", "vtkRenderingLICOpenGL2", "vtkRenderingContextOpenGL2", "vtkRenderingVolumeOpenGL2", "vtkRenderingOpenGL2", "vtkRenderingLabel", "vtkRenderingLOD", "vtkRenderingImage", "vtkIOVeraOut", "vtkIOTecplotTable", "vtkIOSegY", "vtkIOParallelXML", "vtkIOParallel", "vtkIOPLY", "vtkIOOggTheora", "vtkIONetCDF", "vtkIOMotionFX", "vtkIOMINC", "vtkIOLANLX3D", "vtkIOLSDyna", "vtkIOInfovis", "vtkIOImport", "vtkIOCesium3DTiles", "vtkIOGeometry", "vtkIOVideo", "vtkIOMovie", "vtkIOExportPDF", "vtkIOExportGL2PS", "vtkRenderingGL2PSOpenGL2", "vtkIOExport", "vtkRenderingVtkJS", "vtkRenderingSceneGraph", "vtkIOExodus", "vtkIOEnSight", "vtkIOCityGML", "vtkIOAsynchronous", "vtkIOAMR", "vtkIOCGNSReader", "vtkIOHDF", "vtkIOIOSS", "vtkInteractionImage", "vtkImagingStencil", "vtkImagingStatistics", "vtkImagingMorphological", "vtkImagingMath", "vtkIOSQL", "vtkGeovisCore", "vtkInfovisLayout", "vtkViewsCore", "vtkInteractionWidgets", "vtkRenderingHyperTreeGrid", "vtkRenderingVolume", "vtkRenderingAnnotation", "vtkImagingHybrid", "vtkImagingColor", "vtkInteractionStyle", "vtkFiltersTopology", "vtkFiltersSelection", "vtkFiltersSMP", "vtkFiltersProgrammable", "vtkFiltersPoints", "vtkFiltersVerdict", "vtkFiltersParallelImaging", "vtkFiltersImaging", "vtkImagingGeneral", "vtkFiltersHyperTree", "vtkFiltersGeneric", "vtkFiltersFlowPaths", "vtkFiltersAMR", "vtkFiltersParallel", "vtkFiltersTexture", "vtkFiltersModeling", "vtkFiltersHybrid", "vtkRenderingUI", "vtkDomainsChemistry", "vtkChartsCore", "vtkFiltersExtraction", "vtkParallelDIY", "vtkIOXML", "vtkIOXMLParser", "vtkFiltersStatistics", "vtkImagingFourier", "vtkImagingSources", "vtkIOImage", "vtkDICOMParser", "vtkRenderingContext2D", "vtkRenderingFreeType", "vtkRenderingCore", "vtkFiltersSources", "vtkImagingCore", "vtkFiltersGeometry", "vtkFiltersGeneral", "vtkInfovisCore", "vtkIOLegacy", "vtkIOCore", "vtkCommonColor", "vtkParallelCore", "vtkCommonComputationalGeometry", "vtkFiltersCore", "vtkCommonExecutionModel", "vtkCommonDataModel", "vtkCommonSystem", "vtkCommonMisc", "vtkCommonTransforms", "vtkCommonMath", "vtkCommonCore", "vtkioss", "vtkexodusII", "vtklibharu", "vtkgl2ps", "vtkverdict", "vtklibproj", "vtkoctree", "vtkdiy2", "vtknetcdf", "vtklibxml2", "vtkutf8", "vtkmetaio", "vtkkwiml", "vtktheora", "vtkloguru", "vtksys", "vtkogg", "vtksqlite", "vtkglew", "vtkopengl", "vtkjsoncpp", "vtkpugixml", "vtkcgns", "vtkhdf5_hl", "vtkhdf5", "vtkexpat", "vtktiff", "vtklz4", "vtklzma", "vtkkissfft", "vtkfreetype", "vtkjpeg", "vtkpng", "vtkeigen", "vtkfmt", "vtkpegtl", "vtkdoubleconversion", "vtkzlib", "vtkFiltersCellGrid", "vtkFiltersGeometryPreview", "vtkFiltersReduction", "vtkFiltersTemporal", "vtkFiltersTensor", "vtkglad", "vtkIOCellGrid", "vtkIOChemistry", "vtkIOCONVERGECFD", "vtkIOEngys", "vtkIOERF", "vtkIOFDS", "vtkIOFLUENTCFF", "vtkRenderingCellGrid", "vtktoken", "vtkRenderingGridAxes", "vtkViewsQt", "vtkGUISupportQt", "vtkGUISupportQtQuick", "vtkGUISupportQtSQL", "vtkRenderingQt", "vtkGUISupportMFC", "vtkAcceleratorsVTKmCore", "vtkAcceleratorsVTKmDataModel", "vtkAcceleratorsVTKmFilters", "vtkvtkm", "vtkFiltersParallelMPI", "vtkIOMPIImage", "vtkIOMPIParallel", "vtkParallelMPI", "vtkParallelMPI4Py", "vtkmpi", "vtkCommonPython", "vtkFiltersPython", "vtkPython", "vtkWrappingPythonCore", "vtkWebPython", "vtkPythonContext2D", "vtkPythonInterpreter", "vtkRenderingWebGPU", "vtkWebCore", "vtkWebAssembly", "vtkWebGLExporter", "vtkDICOM", "MomentInvariants", "RenderingLookingGlass"}
  50. for _, lib in ipairs(libs) do
  51. package:add("links", lib .. "-" .. ver)
  52. end
  53. if package:config("cuda") then
  54. package:add("deps", "cuda")
  55. end
  56. package:add("deps", "double-conversion", "eigen", "expat", "exprtk", "fast_float", "fmt", "freetype", "gl2ps", "glew", "jsoncpp", "libharu", "libjpeg-turbo", "libpng", "libtiff", "libxml2", "lz4", "netcdf-c", "pegtl <3.0", "proj", "pugixml", "seacas", "sqlite3", "theora", "token", "utfcpp", "verdict", "xz", "zlib", {configs = {shared = package:config("shared")}})
  57. package:add("deps", "cgns", {configs = {hdf5 = true, shared = package:config("shared")}})
  58. package:add("deps", "hdf5", {configs = {zlib = true, shared = package:config("shared")}})
  59. package:add("deps", "nlohmann_json", {configs = {cmake = true}})
  60. end)
  61. on_install("windows|x64", "windows|x86", "macosx", "linux", function (package)
  62. os.cp(path.join(package:scriptdir(), "patches", "findhdf5.cmake"), "CMake/patches/99/FindHDF5.cmake")
  63. local configs = {
  64. "-DVTK_BUILD_TESTING=OFF",
  65. "-DVTK_BUILD_EXAMPLES=OFF",
  66. "-DVTK_ENABLE_WRAPPING=OFF",
  67. "-DCMAKE_CXX_STANDARD=14",
  68. "-DVTK_USE_EXTERNAL=ON",
  69. }
  70. table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
  71. table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
  72. table.insert(configs, "-DVTK_USE_CUDA=" .. (package:config("cuda") and "ON" or "OFF"))
  73. table.insert(configs, "-DVTK_GROUP_ENABLE_Imaging=" .. package:config("imaging"))
  74. table.insert(configs, "-DVTK_GROUP_ENABLE_Rendering=" .. package:config("rendering"))
  75. table.insert(configs, "-DVTK_GROUP_ENABLE_StandAlone=" .. package:config("standalone"))
  76. table.insert(configs, "-DVTK_GROUP_ENABLE_Views=" .. package:config("views"))
  77. table.insert(configs, "-DVTK_MODULE_ENABLE_VTK_GUISupportMFC=" .. package:config("mfc"))
  78. table.insert(configs, "-DVTK_GROUP_ENABLE_MPI=" .. package:config("mpi"))
  79. table.insert(configs, "-DVTK_MODULE_ENABLE_VTK_Python=" .. package:config("python"))
  80. table.insert(configs, "-DVTK_GROUP_ENABLE_Qt=" .. package:config("qt"))
  81. table.insert(configs, "-DVTK_ENABLE_REMOTE_MODULES=" .. package:config("remote"))
  82. table.insert(configs, "-DVTK_GROUP_ENABLE_Web=" .. package:config("web"))
  83. if package:config("shared") and package:is_plat("macosx") then
  84. local opt = {shflags = {"-framework", "OpenGL"}}
  85. import("package.tools.cmake").install(package, configs, opt)
  86. else
  87. import("package.tools.cmake").install(package, configs)
  88. end
  89. end)
  90. on_test(function (package)
  91. assert(package:check_cxxsnippets({test = [[
  92. void test() {
  93. vtkCompositeDataPipeline* exec = vtkCompositeDataPipeline::New();
  94. vtkAlgorithm::SetDefaultExecutivePrototype(exec);
  95. exec->Delete();
  96. }
  97. ]]}, {configs = {languages = "c++14"}, includes = {"vtkAlgorithm.h", "vtkCompositeDataPipeline.h"}}))
  98. end)