diff --git a/CMake/PackageDepends/MITK_OpenGL_Config.cmake b/CMake/PackageDepends/MITK_OpenGL_Config.cmake index 0925ef472b..41e4f41c91 100644 --- a/CMake/PackageDepends/MITK_OpenGL_Config.cmake +++ b/CMake/PackageDepends/MITK_OpenGL_Config.cmake @@ -1,3 +1,17 @@ -set(OpenGL_GL_PREFERENCE LEGACY) -find_package(OpenGL REQUIRED) -list(APPEND ALL_LIBRARIES OpenGL::GL) +if(WIN32 OR APPLE OR (DEFINED OpenGL_GL_PREFERENCE AND OpenGL_GL_PREFERENCE STREQUAL LEGACY)) + find_package(OpenGL REQUIRED) + list(APPEND ALL_LIBRARIES OpenGL::GL) +else() + find_package(OpenGL REQUIRED OPTIONAL_COMPONENTS EGL GLX) + list(APPEND ALL_LIBRARIES OpenGL::OpenGL) + + if(TARGET OpenGL::EGL) + list(APPEND ALL_LIBRARIES OpenGL::EGL) + elseif(TARGET OpenGL::GLX) + list(APPEND ALL_LIBRARIES OpenGL::GLX) + else() + set(OpenGL_GL_PREFERENCE LEGACY) + find_package(OpenGL REQUIRED) + list(APPEND ALL_LIBRARIES OpenGL::GL) + endif() +endif() diff --git a/CMakeExternals/VTK.cmake b/CMakeExternals/VTK.cmake index 2fc0c6a6e5..0fd5609fba 100644 --- a/CMakeExternals/VTK.cmake +++ b/CMakeExternals/VTK.cmake @@ -1,87 +1,99 @@ #----------------------------------------------------------------------------- # VTK #----------------------------------------------------------------------------- # Sanity checks if(DEFINED VTK_DIR AND NOT EXISTS ${VTK_DIR}) message(FATAL_ERROR "VTK_DIR variable is defined but corresponds to non-existing directory") endif() set(proj VTK) set(proj_DEPENDENCIES ) set(VTK_DEPENDS ${proj}) if(NOT DEFINED VTK_DIR) set(additional_cmake_args ) if(WIN32) list(APPEND additional_cmake_args -DCMAKE_CXX_MP_FLAG:BOOL=ON ) else() list(APPEND additional_cmake_args -DVTK_MODULE_USE_EXTERNAL_VTK_freetype:BOOL=ON ) + + if(NOT APPLE) + if(NOT DEFINED OpenGL_GL_PREFERENCE OR OpenGL_GL_PREFERENCE STREQUAL GLVND) + find_package(OpenGL REQUIRED OPTIONAL_COMPONENTS EGL) + if(TARGET OpenGL::EGL) + list(APPEND additional_cmake_args "-DVTK_OPENGL_HAS_EGL:BOOL=ON") + endif() + endif() + if(DEFINED OpenGL_GL_PREFERENCE) + list(APPEND additional_cmake_args "-DOpenGL_GL_PREFERENCE:STRING=${OpenGL_GL_PREFERENCE}") + endif() + endif() + endif() # Optionally enable memory leak checks for any objects derived from vtkObject. This # will force unit tests to fail if they have any of these memory leaks. option(MITK_VTK_DEBUG_LEAKS OFF) mark_as_advanced(MITK_VTK_DEBUG_LEAKS) list(APPEND additional_cmake_args -DVTK_DEBUG_LEAKS:BOOL=${MITK_VTK_DEBUG_LEAKS} ) if(MITK_USE_Qt6) list(APPEND additional_cmake_args -DVTK_GROUP_ENABLE_Qt:STRING=YES ) endif() if(CTEST_USE_LAUNCHERS) list(APPEND additional_cmake_args "-DCMAKE_PROJECT_${proj}_INCLUDE:FILEPATH=${CMAKE_ROOT}/Modules/CTestUseLaunchers.cmake" ) endif() mitk_query_custom_ep_vars() ExternalProject_Add(${proj} LIST_SEPARATOR ${sep} GIT_REPOSITORY https://github.com/Kitware/VTK.git GIT_TAG v9.2.6 GIT_SUBMODULES "" CMAKE_GENERATOR ${gen} CMAKE_GENERATOR_PLATFORM ${gen_platform} CMAKE_ARGS ${ep_common_args} - -DOpenGL_GL_PREFERENCE:STRING=LEGACY -DVTK_ENABLE_WRAPPING:BOOL=OFF -DVTK_LEGACY_REMOVE:BOOL=ON -DVTK_MODULE_ENABLE_VTK_TestingRendering:STRING=YES -DVTK_MODULE_ENABLE_VTK_RenderingContextOpenGL2:STRING=YES -DVTK_MODULE_ENABLE_VTK_RenderingVolumeOpenGL2:STRING=YES -DVTK_MODULE_ENABLE_VTK_GUISupportQtQuick:STRING=NO -DVTK_MODULE_ENABLE_VTK_IOIOSS:STRING=NO # See T29633 -DVTK_MODULE_ENABLE_VTK_ioss:STRING=NO # See T29633 -DVTK_QT_VERSION:STRING=6 ${additional_cmake_args} ${${proj}_CUSTOM_CMAKE_ARGS} CMAKE_CACHE_ARGS ${ep_common_cache_args} ${${proj}_CUSTOM_CMAKE_CACHE_ARGS} CMAKE_CACHE_DEFAULT_ARGS ${ep_common_cache_default_args} ${${proj}_CUSTOM_CMAKE_CACHE_DEFAULT_ARGS} DEPENDS ${proj_DEPENDENCIES} ) set(VTK_DIR ${ep_prefix}) mitkFunctionInstallExternalCMakeProject(${proj}) else() mitkMacroEmptyExternalProject(${proj} "${proj_DEPENDENCIES}") endif()