diff options
-rw-r--r-- | kde-modules/KDEInstallDirs.cmake | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/kde-modules/KDEInstallDirs.cmake b/kde-modules/KDEInstallDirs.cmake index 7d592afc..72a67641 100644 --- a/kde-modules/KDEInstallDirs.cmake +++ b/kde-modules/KDEInstallDirs.cmake @@ -163,7 +163,7 @@ # ``${PROJECT_NAME}`` to provide a sensible default for this CMake option. #============================================================================= -# Copyright 2014 Alex Merry <alex.merry@kde.org> +# Copyright 2014-2015 Alex Merry <alex.merry@kde.org> # Copyright 2013 Stephen Kelly <steveire@gmail.com> # Copyright 2012 David Faure <faure@kde.org> # Copyright 2007 Matthias Kretz <kretz@kde.org> @@ -280,7 +280,18 @@ macro(_define_relative varname parent subdir docstring) set(_realpath "${_subdir}") endif() - if(${_oldstylename}) + if(KDE_INSTALL_${varname}) + # make sure the cache documentation is set correctly + get_property(_iscached CACHE KDE_INSTALL_${varname} PROPERTY VALUE SET) + if (_iscached) + # make sure the docs are still set if it was passed on the command line + set_property(CACHE KDE_INSTALL_${varname} + PROPERTY HELPSTRING "${docstring} (${_docpath})") + # make sure the type is correct if it was passed on the command line + set_property(CACHE KDE_INSTALL_${varname} + PROPERTY TYPE PATH) + endif() + elseif(${_oldstylename}) if(NOT CMAKE_VERSION VERSION_LESS 3.0.0) message(DEPRECATION "${_oldstylename} is deprecated, use KDE_INSTALL_${varname} instead.") endif() @@ -290,10 +301,6 @@ macro(_define_relative varname parent subdir docstring) CACHE PATH "${docstring} (${_docpath})" FORCE) - unset(${_oldstylename} CACHE) - if(_cmakename AND ${_cmakename}) - unset(${_cmakename} CACHE) - endif() elseif(${_cmakename}) if(_cmakename_is_deprecated AND NOT CMAKE_VERSION VERSION_LESS 3.0.0) message(DEPRECATION "${_cmakename} is deprecated, use KDE_INSTALL_${varname} instead.") @@ -304,21 +311,12 @@ macro(_define_relative varname parent subdir docstring) CACHE PATH "${docstring} (${_docpath})" FORCE) - unset(${_cmakename} CACHE) - elseif(NOT KDE_INSTALL_${varname}) + else() + # insert an empty value into the cache, indicating the default + # should be used (including compatibility vars above) set(KDE_INSTALL_${varname} "" CACHE PATH "${docstring} (${_docpath})") set(KDE_INSTALL_${varname} "${_realpath}") - else() - get_property(_iscached CACHE KDE_INSTALL_${varname} PROPERTY VALUE SET) - if (_iscached) - # make sure the docs are still set if it was passed on the command line - set_property(CACHE KDE_INSTALL_${varname} - PROPERTY HELPSTRING "${docstring} (${_docpath})") - # make sure the type is correct if it was passed on the command line - set_property(CACHE KDE_INSTALL_${varname} - PROPERTY TYPE PATH) - endif() endif() mark_as_advanced(KDE_INSTALL_${varname}) @@ -330,6 +328,10 @@ macro(_define_relative varname parent subdir docstring) set(KDE_INSTALL_FULL_${varname} "${KDE_INSTALL_${varname}}") endif() + # Override compatibility vars at runtime, even though we don't touch + # them in the cache; this way, we keep the variables in sync where + # KDEInstallDirs is included, but don't interfere with, say, + # GNUInstallDirs in a parallel part of the CMake tree. if(_cmakename) set(${_cmakename} "${KDE_INSTALL_${varname}}") set(CMAKE_INSTALL_FULL_${varname} "${KDE_INSTALL_FULL_${varname}}") |