Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CMake warning about LEGACY and GLVND libraries for OpenGL on Linux #22835

Open
4 tasks done
kallaballa opened this issue Nov 20, 2022 · 1 comment
Open
4 tasks done

CMake warning about LEGACY and GLVND libraries for OpenGL on Linux #22835

kallaballa opened this issue Nov 20, 2022 · 1 comment
Labels

Comments

@kallaballa
Copy link
Contributor

System Information

OpenCV version: 4.x
Operating System / Platform: openSUSE Tumbleweed (20221102) / Linux
Compiler & compiler version: g++ (SUSE Linux) 12.2.1 20221020 [revision 0aaef83351473e8f4eb774f8f999bbe87a4866d7]

Detailed description

When invoking cmake to configure the build of OpenCV there is a warning when configured with OpenGL:

CMake Warning (dev) at /usr/share/cmake/Modules/FindOpenGL.cmake:315 (message):
  Policy CMP0072 is not set: FindOpenGL prefers GLVND by default when
  available.  Run "cmake --help-policy CMP0072" for policy details.  Use the
  cmake_policy command to set the policy and suppress this warning.

  FindOpenGL found both a legacy GL library:

    OPENGL_gl_LIBRARY: /lib64/libGL.so

  and GLVND libraries for OpenGL and GLX:

    OPENGL_opengl_LIBRARY: /lib64/libOpenGL.so
    OPENGL_glx_LIBRARY: /lib64/libGLX.so

  OpenGL_GL_PREFERENCE has not been set to "GLVND" or "LEGACY", so for
  compatibility with CMake 3.10 and below the legacy GL library will be used.
Call Stack (most recent call first):
  modules/highgui/cmake/detect_gtk.cmake:40 (find_package)
  modules/highgui/cmake/init.cmake:35 (include)
  modules/highgui/cmake/init.cmake:39 (add_backend)
  cmake/OpenCVModule.cmake:298 (include)
  cmake/OpenCVModule.cmake:361 (_add_modules_1)
  cmake/OpenCVModule.cmake:385 (ocv_glob_modules)
  CMakeLists.txt:945 (ocv_register_modules)
This warning is for project developers.  Use -Wno-dev to suppress it.

Steps to reproduce

Reproducer:

git clone -b 4.x https://github.com/opencv/opencv.git
mkdir opencv/build
cd opencv/build
cmake -DWITH_OPENGL=ON ..

Issue submission checklist

  • I report the issue, it's not a question
  • I checked the problem with documentation, FAQ, open issues, forum.opencv.org, Stack Overflow, etc and have not found any solution
  • I updated to the latest OpenCV version and the issue is still there
  • There is reproducer code and related data files (videos, images, onnx, etc)
@kallaballa kallaballa added the bug label Nov 20, 2022
@kallaballa
Copy link
Contributor Author

From the cmake help:

The ``FindOpenGL`` module provides an ``OpenGL::GL`` target and an
``OPENGL_LIBRARIES`` variable for projects to use for legacy GL interfaces.
When both a legacy GL library (e.g. ``libGL.so``) and GLVND libraries
for OpenGL and GLX (e.g. ``libOpenGL.so`` and ``libGLX.so``) are available,
the module must choose between them.  It documents an ``OpenGL_GL_PREFERENCE``
variable that can be used to specify an explicit preference.  When no such
preference is set, the module must choose a default preference.

CMake 3.11 and above prefer to choose GLVND libraries.  This policy provides
compatibility with projects that expect the legacy GL library to be used.

The ``OLD`` behavior for this policy is to set ``OpenGL_GL_PREFERENCE`` to
``LEGACY``.  The ``NEW`` behavior for this policy is to set
``OpenGL_GL_PREFERENCE`` to ``GLVND``.

This policy was introduced in CMake version 3.11.  CMake version
3.24.2 warns when the policy is not set and uses ``OLD`` behavior.
Use the ``cmake_policy()`` command to set it to ``OLD`` or ``NEW``
explicitly.

.. note::
  The ``OLD`` behavior of a policy is
  ``deprecated by definition``
  and may be removed in a future version of CMake.

I guess we stick to legacy?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant