Browse Source

Merge topic 'GNUInstallDirs-cached-default' into release-4.1

5071c93a78 GNUInstallDirs: Fix regression on -DCMAKE_INSTALL_<dir>=<default>

Acked-by: Kitware Robot <[email protected]>
Acked-by: buildbot <[email protected]>
Acked-by: Cristian Le <[email protected]>
Merge-request: !10921
Brad King 4 months ago
parent
commit
567ce02d48

+ 4 - 1
Modules/GNUInstallDirs.cmake

@@ -279,7 +279,10 @@ function(_GNUInstallDirs_cache_path var description)
       # the old default, reset the value to the new default
       if(${cmake_install_var} STREQUAL "$CACHE{${cmake_install_var}}"
           AND ${cmake_install_var} STREQUAL last_default)
-        set(${cmake_install_var} "${default}" CACHE PATH "${full_description}" FORCE)
+        set(full_description "${description} (${default})")
+        set_property(CACHE ${cmake_install_var} PROPERTY TYPE PATH)
+        set_property(CACHE ${cmake_install_var} PROPERTY VALUE "${default}")
+        set_property(CACHE ${cmake_install_var} PROPERTY HELPSTRING "${full_description}")
       endif()
       # Continue to normal flow
     endif()

+ 6 - 0
Tests/RunCMake/GNUInstallDirs/ExplicitDefaults-stdout.txt

@@ -0,0 +1,6 @@
+-- CMAKE_INSTALL_BINDIR='bin'
+-- CMAKE_INSTALL_INCLUDEDIR='include'
+-- CMAKE_INSTALL_LIBDIR='lib'
+-- CMAKE_INSTALL_FULL_BINDIR='/usr/local/bin'
+-- CMAKE_INSTALL_FULL_INCLUDEDIR='/usr/local/include'
+-- CMAKE_INSTALL_FULL_LIBDIR='/usr/local/lib'

+ 15 - 0
Tests/RunCMake/GNUInstallDirs/ExplicitDefaults.cmake

@@ -0,0 +1,15 @@
+set(CMAKE_SIZEOF_VOID_P 8)
+set(CMAKE_LIBRARY_ARCHITECTURE "arch")
+set(CMAKE_INSTALL_PREFIX "/usr/local")
+include(GNUInstallDirs)
+set(dirs
+  BINDIR
+  INCLUDEDIR
+  LIBDIR
+  )
+foreach(dir ${dirs})
+  message(STATUS "CMAKE_INSTALL_${dir}='$CACHE{CMAKE_INSTALL_${dir}}'")
+endforeach()
+foreach(dir ${dirs})
+  message(STATUS "CMAKE_INSTALL_FULL_${dir}='${CMAKE_INSTALL_FULL_${dir}}'")
+endforeach()

+ 6 - 0
Tests/RunCMake/GNUInstallDirs/RunCMakeTest.cmake

@@ -39,3 +39,9 @@ endblock()
 
 run_cmake(GetAbs)
 run_cmake(NoSystem)
+
+run_cmake_with_options(ExplicitDefaults
+  -DCMAKE_INSTALL_BINDIR=bin
+  -DCMAKE_INSTALL_INCLUDEDIR=include
+  -DCMAKE_INSTALL_LIBDIR=lib
+)