summaryrefslogtreecommitdiffstats
path: root/Source/CMakeInstallDestinations.cmake
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2013-09-26 18:13:38 (GMT)
committerBrad King <brad.king@kitware.com>2013-10-15 14:46:54 (GMT)
commitc9a5f34bd7d35ebf8a4a326481ce22e809de8e4c (patch)
tree386404512d4f6723701ddd096aea5f3e41e389ad /Source/CMakeInstallDestinations.cmake
parentc72f8513f7adc764aafd94f2deb9071ee1f261d9 (diff)
downloadCMake-c9a5f34bd7d35ebf8a4a326481ce22e809de8e4c.zip
CMake-c9a5f34bd7d35ebf8a4a326481ce22e809de8e4c.tar.gz
CMake-c9a5f34bd7d35ebf8a4a326481ce22e809de8e4c.tar.bz2
Cleanup use of CMake version in install destinations
Factor the CMAKE_DATA_DIR, CMAKE_DOC_DIR, and CMAKE_MAN_DIR selection out of CMakeLists.txt and into a Source/CMakeInstallDestinations.cmake script. Load the script from the original location of the code. Cache the destination values as empty strings so we know if the user sets them explicitly. If not, then compute defaults based on the platform and full CMake version string. By not caching the versioned defaults, we can change them in a single build tree as the version changes. Remove duplication of the install destination defaults from the bootstrap script. Cache empty defaults there too. Parse from the CMake code the default values to report in the help output. Keep the CMake code in a structured format to make this reliable.
Diffstat (limited to 'Source/CMakeInstallDestinations.cmake')
-rw-r--r--Source/CMakeInstallDestinations.cmake36
1 files changed, 36 insertions, 0 deletions
diff --git a/Source/CMakeInstallDestinations.cmake b/Source/CMakeInstallDestinations.cmake
new file mode 100644
index 0000000..33e8ce8
--- /dev/null
+++ b/Source/CMakeInstallDestinations.cmake
@@ -0,0 +1,36 @@
+# Keep formatting here consistent with bootstrap script expectations.
+set(CMAKE_DATA_DIR_DEFAULT "share/cmake-${CMake_VERSION}") # OTHER
+if(BEOS)
+ set(CMAKE_MAN_DIR_DEFAULT "documentation/man") # HAIKU
+ set(CMAKE_DOC_DIR_DEFAULT "documentation/doc/cmake-${CMake_VERSION}") # HAIKU
+elseif(CYGWIN)
+ set(CMAKE_DOC_DIR_DEFAULT "share/doc/cmake-${CMake_VERSION}") # CYGWIN
+ set(CMAKE_MAN_DIR_DEFAULT "share/man") # CYGWIN
+else()
+ set(CMAKE_DOC_DIR_DEFAULT "doc/cmake-${CMake_VERSION}") # OTHER
+ set(CMAKE_MAN_DIR_DEFAULT "man") # OTHER
+endif()
+
+set(CMAKE_DATA_DIR_DESC "data")
+set(CMAKE_DOC_DIR_DESC "docs")
+set(CMAKE_MAN_DIR_DESC "man pages")
+
+foreach(v
+ CMAKE_DATA_DIR
+ CMAKE_DOC_DIR
+ CMAKE_MAN_DIR
+ )
+ # Populate the cache with empty values so we know when the user sets them.
+ set(${v} "" CACHE STRING "")
+ set_property(CACHE ${v} PROPERTY HELPSTRING
+ "Location under install prefix for ${${v}_DESC} (default \"${${v}_DEFAULT}\")"
+ )
+ set_property(CACHE ${v} PROPERTY ADVANCED 1)
+
+ # Use the default when the user did not set this variable.
+ if(NOT ${v})
+ set(${v} "${${v}_DEFAULT}")
+ endif()
+ # Remove leading slash to treat as relative to install prefix.
+ string(REGEX REPLACE "^/" "" ${v} "${${v}}")
+endforeach()