On Friday 06 of December 2013 03:54:49 Darrell Anderson wrote:
All,
I gave a pass at compiling R14 on the newly released Slackware
14.1, which contains cmake 2.8.12.
The arts package compiled with cmake warnings I never saw before
and tdelibs FTBFS with the same warnings. The arts warnings:
CMake Warning (dev) in libltdl/CMakeLists.txt:
CMake Warning (dev) in flow/gsl/CMakeLists.txt:
CMake Warning (dev) in libltdl/CMakeLists.txt:
CMake Warning (dev) in libltdl/CMakeLists.txt:
CMake Warning (dev) in libltdl/CMakeLists.txt:
CMake Warning (dev) in flow/gsl/CMakeLists.txt:
CMake Warning (dev) in libltdl/CMakeLists.txt:
CMake Warning (dev) in libltdl/CMakeLists.txt:
tdelibs:
CMake Warning (dev) in tdecore/tdehw/CMakeLists.txt:
CMake Warning (dev) in tdecore/tdehw/networkbackends/network-
manager/CMakeLists.txt:
CMake Warning (dev) in libltdl/CMakeLists.txt:
CMake Warning (dev) in tdecore/svgicons/CMakeLists.txt:
CMake Warning (dev) in tdeio/tdeio/CMakeLists.txt:
CMake Warning (dev) in libltdl/CMakeLists.txt:
CMake Warning (dev) in tdehtml/java/CMakeLists.txt:
Following the colon of each warning:
Common to both arts and tdelibs:
CMake Warning (dev) in libltdl/CMakeLists.txt:
Policy CMP0022 is not set: INTERFACE_LINK_LIBRARIES defines the
link
interface. Run "cmake --help-policy CMP0022" for policy details.
Use the
cmake_policy command to set the policy and suppress this warning.
Static library target "ltdlc-static" has a
INTERFACE_LINK_LIBRARIES
property. This should be preferred as the source of the link
interface for
this library. Ignoring the property and using the link
implementation as
the link interface instead.
This warning is for project developers. Use -Wno-dev to suppress
it.
If I understand correctly from reading around the web, the cause is
cmake 2.8.12 changed LINK_INTERFACE_LIBRARIES to
INTERFACE_LINK_LIBRARIES.
If that is correct, then seems TDEMacros.cmake:696 needs to be
updated to handle both variables:
target_link_libraries( ${_target} LINK_INTERFACE_LIBRARIES
${_shared_libs} )
I'm wild guessing something similar to this (I'm not a cmake guru):
If (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${
CMAKE_PATCH_VERSION } GREATER 2.8.11)
target_link_libraries( ${_target} INTERFACE_LINK_LIBRARIES
${_shared_libs} )
else()
target_link_libraries( ${_target} LINK_INTERFACE_LIBRARIES
${_shared_libs} )
endif()
I presume others will experience these same warnings and build
failures when they update to cmake 2.8.12.
Regardless, this requires a change to the common cmake sources,
which need to be propogated through the source tree.
Darrell
I dove into research the problem and I noticed that on Jessie is reported
another problem. For example:
CMake Warning (dev) in tdefx/CMakeLists.txt:
Policy CMP0022 is not set: INTERFACE_LINK_LIBRARIES defines the link
interface. Run "cmake --help-policy CMP0022" for policy details. Use the
cmake_policy command to set the policy and suppress this warning.
Target "tdefx-shared" has an INTERFACE_LINK_LIBRARIES property which
differs from its LINK_INTERFACE_LIBRARIES properties.
INTERFACE_LINK_LIBRARIES:
tqt;tqt-mt;Xrender;X11;c;tqt;tqt-mt;Xrender;X11;c
LINK_INTERFACE_LIBRARIES:
tqt;tqt-mt;Xrender;X11;c
This warning is for project developers. Use -Wno-dev to suppress it.
Therefore, I have prepared a patch that could solve both of these problems.
Please, test it.
Slavek
--