]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/vtk/portfile.cmake
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / tools / vcpkg / ports / vtk / portfile.cmake
diff --git a/ceph/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/vtk/portfile.cmake b/ceph/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/vtk/portfile.cmake
new file mode 100644 (file)
index 0000000..596731a
--- /dev/null
@@ -0,0 +1,348 @@
+if(NOT VCPKG_TARGET_IS_WINDOWS)
+    message(WARNING "You will need to install Xorg dependencies to build vtk:\napt-get install libxt-dev\n")
+endif()
+
+# TODO:
+# - add loguru as a dependency requires #8682
+
+# =============================================================================
+# Options:
+# Collect CMake options for optional components
+if("qt" IN_LIST FEATURES)
+    list(APPEND ADDITIONAL_OPTIONS
+        -DVTK_GROUP_ENABLE_Qt=YES
+        -DVTK_MODULE_ENABLE_VTK_GUISupportQt=YES
+        -DVTK_MODULE_ENABLE_VTK_GUISupportQtSQL=YES
+        -DVTK_MODULE_ENABLE_VTK_RenderingQt=YES
+        -DVTK_MODULE_ENABLE_VTK_ViewsQt=YES
+    )
+
+endif()
+if("atlmfc" IN_LIST FEATURES)
+    list(APPEND ADDITIONAL_OPTIONS
+        -DVTK_MODULE_ENABLE_VTK_GUISupportMFC=YES
+    )
+endif()
+if("vtkm" IN_LIST FEATURES)
+    list(APPEND ADDITIONAL_OPTIONS
+        -DVTK_MODULE_ENABLE_VTK_AcceleratorsVTKm=YES
+        -DVTK_MODULE_ENABLE_VTK_vtkm=YES
+    )
+endif()
+
+if("python" IN_LIST FEATURES)
+    vcpkg_find_acquire_program(PYTHON3)
+    list(APPEND ADDITIONAL_OPTIONS
+        -DVTK_WRAP_PYTHON=ON
+        -DVTK_PYTHON_VERSION=3
+        -DPython3_FIND_REGISTRY=NEVER
+        "-DPython3_EXECUTABLE:PATH=${PYTHON3}"
+    )
+
+    #VTK_PYTHON_SITE_PACKAGES_SUFFIX should be set to the install dir of the site-packages
+endif()
+
+if("paraview" IN_LIST FEATURES)
+    list(APPEND ADDITIONAL_OPTIONS
+        -DVTK_MODULE_ENABLE_VTK_FiltersParallelStatistics=YES
+        -DVTK_MODULE_ENABLE_VTK_IOParallelExodus=YES
+        -DVTK_MODULE_ENABLE_VTK_RenderingContextOpenGL2=YES
+        -DVTK_MODULE_ENABLE_VTK_RenderingParallel=YES
+        -DVTK_MODULE_ENABLE_VTK_RenderingVolumeAMR=YES
+        -DVTK_MODULE_ENABLE_VTK_IOXdmf2=YES
+        -DVTK_MODULE_ENABLE_VTK_IOH5part=YES
+        -DVTK_MODULE_ENABLE_VTK_IOParallelLSDyna=YES
+        -DVTK_MODULE_ENABLE_VTK_IOTRUCHAS=YES
+        -DVTK_MODULE_ENABLE_VTK_IOVPIC=YES
+        -DVTK_MODULE_ENABLE_VTK_RenderingLICOpenGL2=YES
+        -DVTK_MODULE_ENABLE_VTK_RenderingAnnotation=YES
+        -DVTK_MODULE_ENABLE_VTK_DomainsChemistryOpenGL2=YES
+    )
+    if("python" IN_LIST FEATURES)
+        list(APPEND ADDITIONAL_OPTIONS
+            -DVTK_MODULE_ENABLE_VTK_RenderingMatplotlib=YES
+        )
+    endif()
+endif()
+
+if("mpi" IN_LIST FEATURES)
+    list(APPEND ADDITIONAL_OPTIONS
+        -DVTK_GROUP_ENABLE_MPI=YES
+        -DVTK_USE_MPI=YES
+    )
+endif()
+
+if("mpi" IN_LIST FEATURES AND "python" IN_LIST FEATURES)
+    list(APPEND ADDITIONAL_OPTIONS
+        -DVTK_MODULE_USE_EXTERNAL_VTK_mpi4py=OFF
+    )
+endif()
+
+if("opengl" IN_LIST FEATURES)
+    list(APPEND ADDITIONAL_OPTIONS
+        -DVTK_MODULE_ENABLE_VTK_DomainsChemestryOpenGL2=YES
+        -DVTK_MODULE_ENABLE_VTK_ImagingOpenGL2=YES
+        -DVTK_MODULE_ENABLE_VTK_RenderingContextOpenGL2=YES
+        -DVTK_MODULE_ENABLE_VTK_RenderingGL2PSOpenGL2=YES
+        -DVTK_MODULE_ENABLE_VTK_RenderingLICOpenGL2=YES
+        -DVTK_MODULE_ENABLE_VTK_RenderingOpenGL2=YES
+        -DVTK_MODULE_ENABLE_VTK_RenderingVolumeOpenGL2=YES
+        -DVTK_MODULE_ENABLE_VTK_opengl=YES
+        )
+endif()
+
+if ("openvr" IN_LIST FEATURES)
+    list(APPEND ADDITIONAL_OPTIONS    
+        -DVTK_MODULE_ENABLE_VTK_RenderingOpenVR=YES
+    )
+endif()
+
+if("cuda" IN_LIST FEATURES AND CMAKE_HOST_WIN32)
+    vcpkg_add_to_path("$ENV{CUDA_PATH}/bin")
+endif()
+
+if("utf8" IN_LIST FEATURES)
+    list(APPEND ADDITIONAL_OPTIONS
+        -DKWSYS_ENCODING_DEFAULT_CODEPAGE=CP_UTF8
+    )
+endif()
+
+if("all" IN_LIST FEATURES)
+    list(APPEND ADDITIONAL_OPTIONS
+        -DVTK_USE_TK=OFF # TCL/TK currently not included in vcpkg
+    )
+endif()
+
+vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+    "cuda"         VTK_USE_CUDA
+    "all"          VTK_BUILD_ALL_MODULES
+)
+
+
+# =============================================================================
+# Clone & patch
+
+# This patch is huge, we prefer to download it on demand
+vcpkg_download_distfile(QT_NO_KEYWORDS_PATCH
+  URLS "https://github.com/Kitware/VTK/commit/64265c5fd1a8e26a6a81241284dea6b3272f6db6.diff"
+  FILENAME 64265c5fd1a8e26a6a81241284dea6b3272f6db6.diff
+  SHA512 08991f07b30b893b14e906017b77fb700a8298a3a8906086a0c4b67688c1c0431b3d6bf890df70bd3ebf963cbb9c035b5dbcb9d7593e8c716c3a594ccb9a0fc7
+)
+
+vcpkg_from_github(
+    OUT_SOURCE_PATH SOURCE_PATH
+    REPO Kitware/VTK
+    REF 96e6fa9b3ff245e4d51d49f23d40e9ad8774e85e # v9.0.1
+    SHA512 0efb1845053b6143e5ee7fa081b8be98f6825262c59051e88b2be02497e23362055067b2f811eff82e93eb194e5a9afd2a12e3878a252eb4011a5dab95127a6f
+    HEAD_REF master
+    PATCHES
+        6811.patch
+        FindLZMA.patch    # Will be fixed in 9.1?
+        FindLZ4.patch
+        Findproj.patch
+        vtkm.patch # To include an external VTKm build (v.1.5 required)
+        pegtl.patch
+        pythonwrapper.patch # Required by ParaView to Wrap required classes
+        NoUndefDebug.patch # Required to link against correct Python library depending on build type.
+        python_debug.patch
+        fix-using-hdf5.patch
+        module-name-mangling.patch
+        # Last patch TODO: Patch out internal loguru
+        FindExpat.patch # The find_library calls are taken care of by vcpkg-cmake-wrapper.cmake of expat
+        fix-freetype.patch # Should be fixed next version, !7367 + !7434
+        # Remove these 2 official patches in the next update
+        ${QT_NO_KEYWORDS_PATCH}
+        0002-Qt-enforce-QT_NO_KEYWORDS-builds-by-VTK-itself.patch
+)
+
+# =============================================================================
+#Overwrite outdated modules if they have not been patched:
+file(COPY "${CURRENT_PORT_DIR}/FindPostgreSQL.cmake" DESTINATION "${SOURCE_PATH}/CMake") # will be backported from CMake in VTK in a future release
+file(COPY "${CURRENT_PORT_DIR}/FindHDF5.cmake" DESTINATION "${SOURCE_PATH}/CMake/patches/99") # due to usage of targets in netcdf-c
+# =============================================================================
+
+# =============================================================================
+# Configure & Install
+
+# We set all libraries to "system" and explicitly list the ones that should use embedded copies
+vcpkg_configure_cmake(
+    SOURCE_PATH ${SOURCE_PATH}
+    PREFER_NINJA
+    OPTIONS ${FEATURE_OPTIONS}
+        -DBUILD_TESTING=OFF
+        -DVTK_BUILD_TESTING=OFF
+        -DVTK_BUILD_EXAMPLES=OFF
+        -DVTK_INSTALL_INCLUDE_DIR=include
+        -DVTK_INSTALL_DATA_DIR=share/vtk/data
+        -DVTK_INSTALL_DOC_DIR=share/vtk/doc
+        -DVTK_INSTALL_PACKAGE_DIR=share/vtk
+        -DVTK_INSTALL_RUNTIME_DIR=bin
+        -DVTK_FORBID_DOWNLOADS=ON
+        -DVTK_ENABLE_REMOTE_MODULES=OFF
+        # VTK groups to enable
+        -DVTK_GROUP_ENABLE_StandAlone=YES
+        -DVTK_GROUP_ENABLE_Rendering=YES
+        -DVTK_GROUP_ENABLE_Views=YES
+        # Disable deps not in VCPKG
+        -DVTK_USE_TK=OFF # TCL/TK currently not included in vcpkg
+        # Select modules / groups to install
+        -DVTK_USE_EXTERNAL:BOOL=ON
+        -DVTK_MODULE_USE_EXTERNAL_VTK_gl2ps:BOOL=OFF # Not yet in VCPKG
+        ${ADDITIONAL_OPTIONS}
+)
+
+vcpkg_install_cmake()
+vcpkg_copy_pdbs()
+
+# =============================================================================
+# Fixup target files
+vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/vtk-9.0)
+
+# TODO: Check if the following is still required
+# For some reason the references to the XDMF libraries in the target files do not end up
+# correctly, so we fix them here.
+# if(VTK_WITH_ALL_MODULES)
+    # file(READ ${CURRENT_PACKAGES_DIR}/share/vtk/VTKTargets-release.cmake VTK_TARGETS_RELEASE_CONTENT)
+    # string(REPLACE "lib/../XdmfCore.lib" "lib/XdmfCore.lib" VTK_TARGETS_RELEASE_CONTENT "${VTK_TARGETS_RELEASE_CONTENT}")
+    # string(REPLACE "bin/../XdmfCore.dll" "bin/XdmfCore.dll" VTK_TARGETS_RELEASE_CONTENT "${VTK_TARGETS_RELEASE_CONTENT}")
+    # string(REPLACE "lib/../vtkxdmf3.lib" "lib/vtkxdmf3.lib" VTK_TARGETS_RELEASE_CONTENT "${VTK_TARGETS_RELEASE_CONTENT}")
+    # string(REPLACE "bin/../vtkxdmf3.dll" "bin/vtkxdmf3.dll" VTK_TARGETS_RELEASE_CONTENT "${VTK_TARGETS_RELEASE_CONTENT}")
+    # file(WRITE ${CURRENT_PACKAGES_DIR}/share/vtk/VTKTargets-release.cmake "${VTK_TARGETS_RELEASE_CONTENT}")
+
+    # file(READ ${CURRENT_PACKAGES_DIR}/share/vtk/VTKTargets-debug.cmake VTK_TARGETS_DEBUG_CONTENT)
+    # string(REPLACE "lib/../XdmfCore.lib" "lib/XdmfCore.lib" VTK_TARGETS_DEBUG_CONTENT "${VTK_TARGETS_DEBUG_CONTENT}")
+    # string(REPLACE "bin/../XdmfCore.dll" "bin/XdmfCore.dll" VTK_TARGETS_DEBUG_CONTENT "${VTK_TARGETS_DEBUG_CONTENT}")
+    # string(REPLACE "lib/../vtkxdmf3.lib" "lib/vtkxdmf3.lib" VTK_TARGETS_DEBUG_CONTENT "${VTK_TARGETS_DEBUG_CONTENT}")
+    # string(REPLACE "bin/../vtkxdmf3.dll" "bin/vtkxdmf3.dll" VTK_TARGETS_DEBUG_CONTENT "${VTK_TARGETS_DEBUG_CONTENT}")
+    # file(WRITE ${CURRENT_PACKAGES_DIR}/share/vtk/VTKTargets-debug.cmake "${VTK_TARGETS_DEBUG_CONTENT}")
+# endif()
+# =============================================================================
+# Remove other files and directories that are not valid for vcpkg
+# if(VTK_WITH_ALL_MODULES)
+    # file(REMOVE ${CURRENT_PACKAGES_DIR}/XdmfConfig.cmake)
+    # file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/XdmfConfig.cmake)
+# endif()
+
+# =============================================================================
+# Clean-up other directories
+
+
+# Delete the debug binary TOOL_NAME that is not required
+function(_vtk_remove_debug_tool TOOL_NAME)
+    set(filename ${CURRENT_PACKAGES_DIR}/debug/bin/${TOOL_NAME}${VCPKG_TARGET_EXECUTABLE_SUFFIX})
+    if(EXISTS ${filename})
+        file(REMOVE ${filename})
+    endif()
+    set(filename ${CURRENT_PACKAGES_DIR}/debug/bin/${TOOL_NAME}d${VCPKG_TARGET_EXECUTABLE_SUFFIX})
+    if(EXISTS ${filename})
+        file(REMOVE ${filename})
+    endif()
+    if (NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL debug)
+        # we also have to bend the lines referencing the tools in VTKTargets-debug.cmake
+        # to make them point to the release version of the tools
+        file(READ "${CURRENT_PACKAGES_DIR}/share/vtk/VTK-targets-debug.cmake" VTK_TARGETS_CONTENT_DEBUG)
+        string(REPLACE "debug/bin/${TOOL_NAME}" "tools/vtk/${TOOL_NAME}" VTK_TARGETS_CONTENT_DEBUG "${VTK_TARGETS_CONTENT_DEBUG}")
+        string(REPLACE "tools/vtk/${TOOL_NAME}d" "tools/vtk/${TOOL_NAME}" VTK_TARGETS_CONTENT_DEBUG "${VTK_TARGETS_CONTENT_DEBUG}")
+        file(WRITE "${CURRENT_PACKAGES_DIR}/share/vtk/VTK-targets-debug.cmake" "${VTK_TARGETS_CONTENT_DEBUG}")
+    endif()
+endfunction()
+
+# Move the release binary TOOL_NAME from bin to tools
+function(_vtk_move_release_tool TOOL_NAME)
+    set(old_filename "${CURRENT_PACKAGES_DIR}/bin/${TOOL_NAME}${VCPKG_TARGET_EXECUTABLE_SUFFIX}")
+    if(EXISTS ${old_filename})
+        file(INSTALL ${old_filename} DESTINATION "${CURRENT_PACKAGES_DIR}/tools/vtk" USE_SOURCE_PERMISSIONS)
+        file(REMOVE ${old_filename})
+    endif()
+
+    if (NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL release)
+        # we also have to bend the lines referencing the tools in VTKTargets-release.cmake
+        # to make them point to the tool folder
+        file(READ "${CURRENT_PACKAGES_DIR}/share/vtk/VTK-targets-release.cmake" VTK_TARGETS_CONTENT_RELEASE)
+        string(REPLACE "bin/${TOOL_NAME}" "tools/vtk/${TOOL_NAME}" VTK_TARGETS_CONTENT_RELEASE "${VTK_TARGETS_CONTENT_RELEASE}")
+        file(WRITE "${CURRENT_PACKAGES_DIR}/share/vtk/VTK-targets-release.cmake" "${VTK_TARGETS_CONTENT_RELEASE}")
+    endif()
+endfunction()
+
+set(VTK_SHORT_VERSION 9.0)
+set(VTK_TOOLS
+    vtkEncodeString-${VTK_SHORT_VERSION}
+    vtkHashSource-${VTK_SHORT_VERSION}
+    vtkWrapTclInit-${VTK_SHORT_VERSION}
+    vtkWrapTcl-${VTK_SHORT_VERSION}
+    vtkWrapPythonInit-${VTK_SHORT_VERSION}
+    vtkWrapPython-${VTK_SHORT_VERSION}
+    vtkWrapJava-${VTK_SHORT_VERSION}
+    vtkWrapHierarchy-${VTK_SHORT_VERSION}
+    vtkParseJava-${VTK_SHORT_VERSION}
+    vtkParseOGLExt-${VTK_SHORT_VERSION}
+    vtkProbeOpenGLVersion-${VTK_SHORT_VERSION}
+    vtkTestOpenGLVersion-${VTK_SHORT_VERSION}
+    vtkpython
+    pvtkpython
+)
+# TODO: Replace with vcpkg_copy_tools if known which tools are built with which feature
+# or add and option to vcpkg_copy_tools which does not require the tool to be present
+foreach(TOOL_NAME IN LISTS VTK_TOOLS)
+    _vtk_remove_debug_tool("${TOOL_NAME}")
+    _vtk_move_release_tool("${TOOL_NAME}")
+endforeach()
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+    file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin)
+    file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/bin)
+endif()
+
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share)
+
+vcpkg_copy_tool_dependencies("${CURRENT_PACKAGES_DIR}/tools/vtk")
+
+## Files Modules needed by ParaView
+if("paraview" IN_LIST FEATURES)
+    set(VTK_CMAKE_NEEDED vtkCompilerChecks vtkCompilerPlatformFlags vtkCompilerExtraFlags vtkInitializeBuildType
+                         vtkSupportMacros vtkDirectories vtkVersion FindPythonModules vtkModuleDebugging vtkExternalData)
+    foreach(module ${VTK_CMAKE_NEEDED})
+        file(INSTALL "${SOURCE_PATH}/CMake/${module}.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/vtk")
+    endforeach()
+
+    ## Check List on UPDATE !!
+    file(INSTALL "${SOURCE_PATH}/CMake/vtkRequireLargeFilesSupport.cxx" DESTINATION "${CURRENT_PACKAGES_DIR}/share/vtk")
+
+    file(INSTALL "${SOURCE_PATH}/GUISupport/Qt/QVTKOpenGLWidget.h" DESTINATION "${CURRENT_PACKAGES_DIR}/include/vtk-${VTK_SHORT_VERSION}") # Legacy header
+
+    file(INSTALL "${SOURCE_PATH}/Common/Core/vtkRange.h" DESTINATION "${CURRENT_PACKAGES_DIR}/include/vtk-${VTK_SHORT_VERSION}") # this should get installed by VTK
+    file(INSTALL "${SOURCE_PATH}/Common/Core/vtkRangeIterableTraits.h" DESTINATION "${CURRENT_PACKAGES_DIR}/include/vtk-${VTK_SHORT_VERSION}") # this should get installed by VTK
+    file(INSTALL "${SOURCE_PATH}/Common/DataModel/vtkCompositeDataSetNodeReference.h" DESTINATION "${CURRENT_PACKAGES_DIR}/include/vtk-${VTK_SHORT_VERSION}") # this should get installed by VTK
+    #ParaView requires some internal headers
+    file(INSTALL "${SOURCE_PATH}/Rendering/Annotation/vtkScalarBarActorInternal.h" DESTINATION "${CURRENT_PACKAGES_DIR}/include/vtk-${VTK_SHORT_VERSION}")
+    file(INSTALL "${SOURCE_PATH}/Filters/Statistics/vtkStatisticsAlgorithmPrivate.h" DESTINATION "${CURRENT_PACKAGES_DIR}/include/vtk-${VTK_SHORT_VERSION}")
+    file(INSTALL "${SOURCE_PATH}/Rendering/OpenGL2/vtkCompositePolyDataMapper2Internal.h" DESTINATION "${CURRENT_PACKAGES_DIR}/include/vtk-${VTK_SHORT_VERSION}")
+    file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/Rendering/OpenGL2/vtkTextureObjectVS.h" DESTINATION "${CURRENT_PACKAGES_DIR}/include/vtk-${VTK_SHORT_VERSION}")
+endif()
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+    if(EXISTS ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/CMakeFiles/vtkpythonmodules/static_python) #python headers
+        file(GLOB_RECURSE STATIC_PYTHON_FILES "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/CMakeFiles/*/static_python/*.h")
+        file(INSTALL ${STATIC_PYTHON_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/include/vtk-${VTK_SHORT_VERSION})
+    endif()
+endif()
+
+#remove one get_filename_component(_vtk_module_import_prefix "${_vtk_module_import_prefix}" DIRECTORY) from vtk-prefix.cmake and VTK-vtk-module-properties and vtk-python.cmake
+set(filenames_fix_prefix vtk-prefix VTK-vtk-module-properties vtk-python)
+foreach(name IN LISTS filenames_fix_prefix)
+if(EXISTS "${CURRENT_PACKAGES_DIR}/share/vtk/${name}.cmake")
+    file(READ "${CURRENT_PACKAGES_DIR}/share/vtk/${name}.cmake" _contents)
+    string(REPLACE
+[[set(_vtk_module_import_prefix "${CMAKE_CURRENT_LIST_DIR}")
+get_filename_component(_vtk_module_import_prefix "${_vtk_module_import_prefix}" DIRECTORY)]]
+[[set(_vtk_module_import_prefix "${CMAKE_CURRENT_LIST_DIR}")]] _contents "${_contents}")
+    file(WRITE "${CURRENT_PACKAGES_DIR}/share/vtk/${name}.cmake" "${_contents}")
+else()
+    debug_message("FILE:${CURRENT_PACKAGES_DIR}/share/vtk/${name}.cmake does not exist! No prefix correction!")
+endif()
+endforeach()
+
+# =============================================================================
+# Handle copyright
+file(INSTALL ${SOURCE_PATH}/Copyright.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)