Itk: CMake policy deprecation warning in itkhdf5

Created on 29 Aug 2018  路  9Comments  路  Source: InsightSoftwareConsortium/ITK

Description

CMake policy deprecation warning in itkhdf5

Steps to Reproduce

Configure current master with cmake 3.12.1

Expected behavior

No deprecation warnings

Actual behavior

 CMake Warning (dev) at /usr/share/cmake-3.12/Modules/CheckIncludeFileCXX.cmake:69 (message):
   Policy CMP0075 is not set: Include file check macros honor
   CMAKE_REQUIRED_LIBRARIES.  Run "cmake --help-policy CMP0075" for policy
   details.  Use the cmake_policy command to set the policy and suppress this
   warning.

   CMAKE_REQUIRED_LIBRARIES is set to:

     m;dl

   For compatibility with CMake 3.11 and below this check is ignoring it.
 Call Stack (most recent call first):
   Modules/ThirdParty/HDF5/src/itkhdf5/config/cmake_ext_mod/HDFUseCXX.cmake:39 (CHECK_INCLUDE_FILE_CXX)
   Modules/ThirdParty/HDF5/src/itkhdf5/CMakeLists.txt:862 (include)
 This warning is for project developers.  Use -Wno-dev to suppress it.

This is the help policy: cmake --help-policy CMP0075

-------

Include file check macros honor ``CMAKE_REQUIRED_LIBRARIES``.

In CMake 3.12 and above, the

* ``check_include_file`` macro in the ``CheckIncludeFile`` module, the
* ``check_include_file_cxx`` macro in the
  ``CheckIncludeFileCXX`` module, and the
* ``check_include_files`` macro in the ``CheckIncludeFiles`` module

now prefer to link the check executable to the libraries listed in the
``CMAKE_REQUIRED_LIBRARIES`` variable.  This policy provides compatibility
with projects that have not been updated to expect this behavior.

The ``OLD`` behavior for this policy is to ignore ``CMAKE_REQUIRED_LIBRARIES``
in the include file check macros.  The ``NEW`` behavior of this policy is to
honor ``CMAKE_REQUIRED_LIBRARIES`` in the include file check macros.

This policy was introduced in CMake version 3.12.  CMake version
3.12.1 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.

Reproducibility

Everytime building with cmake 3.12.1

Confirmed Infrastructure

All 9 comments

@phcerdan
is this with current master?

If so,

https://github.com/InsightSoftwareConsortium/ITK/commit/2647f883867e0f7472cddb2ed4802b8bebd1a024

may have been clobbered and needs to be re-applied.

@thewtex yes, it was.
The warning is generated in sibling cmake file of the one that set the policy.
@jcfr mentioned to have a look at NO_POLICY_SCOPE

We might need to add here NO_POLICY_SCOPE to that include for the policy to be applied to the top directory, and another NO_POLICY_SCOPE in the warning I raised here.

Or maybe easier to just add in the file which still generates the warning:

if(POLICY CMP0075)
  cmake_policy(SET CMP0075 NEW)
endif()

What do you think?

Neat to learn about NO_POLICY_SCOPE. Either approach looks fine :+1:

I am trying to contribute these policy changes to upstream HDF5 directly, created PR in a mirror: https://github.com/live-clones/hdf5/pull/2

I have to figure out how to contribute to their bitbucket

Nice,

I may suggest a syntax like the following:

#-----------------------------------------------------------------------------
if(POLICY CMP0075)
  cmake_policy(SET CMP0075 NEW) # CMake 3.12.1: Include file check macros honor CMAKE_REQUIRED_LIBRARIES.
endif()

Thanks @jcfr, updated following your suggestion

@phcerdan @jcfr Thanks for contributing the fix upstream :+1:

According to the HDF5 FAQ, patches are submitted via an email to [email protected] with the content:

VERSION:
   HDF5-N.N.N

USER:
   [Name and Email Address]

SYNOPSIS:
   [Brief description of the problem] 

MACHINE / OPERATING SYSTEM:
   [Platform and platform version. On Unix platforms please include
    the output from "uname -a"]

COMPILER:
   [The compiler and compiler version used]

DESCRIPTION:
   [Detailed description of problem]

REPEAT BUG BY:
   [What you did to get the error; include test program or session
    transcript if at all possible.  If you include a program, make
    sure it depends only on libraries in the HDF distribution, not
    on any vendor or third-party libraries.  Please be specific;
    if we can't reproduce it, we can't fix it. Tell us exactly what
    we should see when the program is run.  NOTE:  It helps us if 
    the example program is written in C and can be run easily on Unix]

SAMPLE FIX:
   [Fix or patch, if you have one]

Sent the mail, cc'ed you.

I will provide a patch for ITK, just in case it is not timely merged.

EDIT: http://review.source.kitware.com/23697

Was this page helpful?
0 / 5 - 0 ratings