cmake_host_system_information(WINDOWS_REGISTRY) updates
* add a cross-reference in 'get_filename_component()' documentation * rework tests for better 32bit systems support
This commit is contained in:
parent
bbb51444a2
commit
0c33f12a39
@ -261,6 +261,8 @@ Example:
|
||||
.. _man 5 os-release: https://www.freedesktop.org/software/systemd/man/os-release.html
|
||||
.. _various distribution-specific files: http://linuxmafia.com/faq/Admin/release-files.html
|
||||
|
||||
.. _Query Windows registry:
|
||||
|
||||
Query Windows registry
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
@ -4,10 +4,16 @@ get_filename_component
|
||||
Get a specific component of a full filename.
|
||||
|
||||
.. versionchanged:: 3.20
|
||||
This command been superseded by :command:`cmake_path` command, except
|
||||
``REALPATH`` now offered by :ref:`file(REAL_PATH) <REAL_PATH>` command and
|
||||
This command has been superseded by :command:`cmake_path` command, except
|
||||
``REALPATH`` now offered by :ref:`file(REAL_PATH)<REAL_PATH>` command and
|
||||
``PROGRAM`` now available in :command:`separate_arguments(PROGRAM)` command.
|
||||
|
||||
.. versionchanged:: 3.24
|
||||
The undocumented feature offering the capability to query the ``Windows``
|
||||
registry is superseded by
|
||||
:ref:`cmake_host_system_information(QUERY WINDOWS_REGISTRY)<Query Windows registry>`
|
||||
command.
|
||||
|
||||
.. code-block:: cmake
|
||||
|
||||
get_filename_component(<var> <FileName> <mode> [CACHE])
|
||||
|
@ -1,12 +1,4 @@
|
||||
|
||||
# check Windows architecture
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "HKCU" SUBKEYS VIEW 64 ERROR_VARIABLE status)
|
||||
if (status STREQUAL "")
|
||||
set(HOST_64BIT TRUE)
|
||||
else()
|
||||
set(HOST_64BIT FALSE)
|
||||
endif()
|
||||
|
||||
# helper function for test validation
|
||||
function(CHECK key result status expression)
|
||||
if(status STREQUAL "")
|
||||
@ -25,33 +17,51 @@ set(KEY "HKCU/Software/Classes/CLSID/CMake-Tests/chsi-registry")
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}"
|
||||
"(HOST_64BIT AND result STREQUAL \"default 64bit\")
|
||||
OR (NOT HOST_64BIT AND result STREQUAL \"default 32bit\")")
|
||||
"result STREQUAL \"default ${ARCH}\"")
|
||||
# query value using special name should be identical to default value
|
||||
cmake_host_system_information(RESULT result2 QUERY WINDOWS_REGISTRY "${KEY}" VALUE "(default)" ERROR_VARIABLE status)
|
||||
check("${KEY}{(default)}" "${result2}" "${status}" "result2 STREQUAL result")
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VIEW HOST ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}"
|
||||
"(HOST_64BIT AND result STREQUAL \"default 64bit\")
|
||||
OR (NOT HOST_64BIT AND result STREQUAL \"default 32bit\")")
|
||||
"result STREQUAL \"default ${ARCH}\"")
|
||||
# VIEW TARGET should have same value as VIEW HOST
|
||||
cmake_host_system_information(RESULT result2 QUERY WINDOWS_REGISTRY "${KEY}" VIEW TARGET ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result2}" "${status}" "result2 STREQUAL result")
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VIEW 64 ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}" "result STREQUAL \"default 64bit\"")
|
||||
if (ARCH STREQUAL "64bit")
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VIEW 32 ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}" "result STREQUAL \"default 32bit\"")
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VIEW 64 ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}" "result STREQUAL \"default 64bit\"")
|
||||
|
||||
# reg 64bit is read first
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VIEW 64_32 ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}" "result STREQUAL \"default 64bit\"")
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VIEW 32 ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}" "result STREQUAL \"default 32bit\"")
|
||||
|
||||
# reg 32bit is read first
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VIEW 32_64 ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}" "result STREQUAL \"default 32bit\"")
|
||||
# reg 64bit is read first
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VIEW 64_32 ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}" "result STREQUAL \"default 64bit\"")
|
||||
|
||||
# reg 32bit is read first
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VIEW 32_64 ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}" "result STREQUAL \"default 32bit\"")
|
||||
|
||||
else() #32bit
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VIEW 64 ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}" "result STREQUAL \"\"")
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VIEW 32 ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}" "result STREQUAL \"default 32bit\"")
|
||||
|
||||
# reg 64bit is read first
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VIEW 64_32 ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}" "result STREQUAL \"default 32bit\"")
|
||||
|
||||
# reg 32bit is read first
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VIEW 32_64 ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}" "result STREQUAL \"default 32bit\"")
|
||||
|
||||
endif()
|
||||
|
||||
|
||||
# HKCU/Software/CMake-Tests/chsi-registry: Query named value
|
||||
@ -60,37 +70,58 @@ set(KEY "HKCU/Software/Classes/CLSID/CMake-Tests/chsi-registry")
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE BYTE_SIZE
|
||||
ERROR_VARIABLE status)
|
||||
check("${KEY}{BYTE_SIZE}" "${result}" "${status}"
|
||||
"(HOST_64BIT AND result STREQUAL \"64bit\")
|
||||
OR (NOT HOST_64BIT AND result STREQUAL \"32bit\")")
|
||||
"result STREQUAL \"${ARCH}\"")
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE BYTE_SIZE
|
||||
VIEW HOST ERROR_VARIABLE status)
|
||||
check("${KEY}{BYTE_SIZE}" "${result}" "${status}"
|
||||
"(HOST_64BIT AND result STREQUAL \"64bit\")
|
||||
OR (NOT HOST_64BIT AND result STREQUAL \"32bit\")")
|
||||
"result STREQUAL \"${ARCH}\"")
|
||||
# VIEW TARGET should have same value as VIEW HOST
|
||||
cmake_host_system_information(RESULT result2 QUERY WINDOWS_REGISTRY "${KEY}" VALUE BYTE_SIZE
|
||||
VIEW TARGET ERROR_VARIABLE status)
|
||||
check("${KEY}{BYTE_SIZE}" "${result2}" "${status}" "result2 STREQUAL result")
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE BYTE_SIZE
|
||||
VIEW 64 ERROR_VARIABLE status)
|
||||
check("${KEY}{BYTE_SIZE}" "${result}" "${status}" "result STREQUAL \"64bit\"")
|
||||
if (ARCH STREQUAL "64bit")
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE BYTE_SIZE
|
||||
VIEW 32 ERROR_VARIABLE status)
|
||||
check("${KEY}{BYTE_SIZE}" "${result}" "${status}" "result STREQUAL \"32bit\"")
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE BYTE_SIZE
|
||||
VIEW 64 ERROR_VARIABLE status)
|
||||
check("${KEY}{BYTE_SIZE}" "${result}" "${status}" "result STREQUAL \"64bit\"")
|
||||
|
||||
# reg 64bit is read first
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE BYTE_SIZE
|
||||
VIEW 64_32 ERROR_VARIABLE status)
|
||||
check("${KEY}{BYTE_SIZE}" "${result}" "${status}" "result STREQUAL \"64bit\"")
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE BYTE_SIZE
|
||||
VIEW 32 ERROR_VARIABLE status)
|
||||
check("${KEY}{BYTE_SIZE}" "${result}" "${status}" "result STREQUAL \"32bit\"")
|
||||
|
||||
# reg 32bit is read first
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE BYTE_SIZE
|
||||
VIEW 32_64 ERROR_VARIABLE status)
|
||||
check("${KEY}{BYTE_SIZE}" "${result}" "${status}" "result STREQUAL \"32bit\"")
|
||||
# reg 64bit is read first
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE BYTE_SIZE
|
||||
VIEW 64_32 ERROR_VARIABLE status)
|
||||
check("${KEY}{BYTE_SIZE}" "${result}" "${status}" "result STREQUAL \"64bit\"")
|
||||
|
||||
# reg 32bit is read first
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE BYTE_SIZE
|
||||
VIEW 32_64 ERROR_VARIABLE status)
|
||||
check("${KEY}{BYTE_SIZE}" "${result}" "${status}" "result STREQUAL \"32bit\"")
|
||||
|
||||
else() # 32bit
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE BYTE_SIZE
|
||||
VIEW 64 ERROR_VARIABLE status)
|
||||
check("${KEY}{BYTE_SIZE}" "${result}" "${status}" "result STREQUAL \"\"")
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE BYTE_SIZE
|
||||
VIEW 32 ERROR_VARIABLE status)
|
||||
check("${KEY}{BYTE_SIZE}" "${result}" "${status}" "result STREQUAL \"32bit\"")
|
||||
|
||||
# reg 64bit is read first
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE BYTE_SIZE
|
||||
VIEW 64_32 ERROR_VARIABLE status)
|
||||
check("${KEY}{BYTE_SIZE}" "${result}" "${status}" "result STREQUAL \"32bit\"")
|
||||
|
||||
# reg 32bit is read first
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE BYTE_SIZE
|
||||
VIEW 32_64 ERROR_VARIABLE status)
|
||||
check("${KEY}{BYTE_SIZE}" "${result}" "${status}" "result STREQUAL \"32bit\"")
|
||||
|
||||
endif()
|
||||
|
||||
# HKCU/Software/CMake-Tests/chsi-registry: check retrieval of various types
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE VALUE_SZ ERROR_VARIABLE status)
|
||||
@ -114,119 +145,192 @@ check("${KEY}{VALUE_QWORD}" "${result}" "${status}" "result EQUAL \"513\"")
|
||||
|
||||
|
||||
# HKCU/Software/CMake-Tests/chsi-registry: check retrieval of value names
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE_NAMES
|
||||
ERROR_VARIABLE status)
|
||||
check("${KEY}[VALUE_NAMES]" "${result}" "${status}" "result STREQUAL \"(default);BYTE_SIZE;VALUE2_MULTI_SZ;VALUE2_SZ;VALUE_DWORD;VALUE_EXPAND_SZ;VALUE_MULTI_SZ;VALUE_QWORD;VALUE_SZ\"")
|
||||
# VIEW BOTH should have same result as default view
|
||||
cmake_host_system_information(RESULT result2 QUERY WINDOWS_REGISTRY "${KEY}" VALUE_NAMES
|
||||
VIEW BOTH ERROR_VARIABLE status)
|
||||
check("${KEY}[VALUE_NAMES]" "${result2}" "${status}" "result STREQUAL \"(default);BYTE_SIZE;VALUE2_MULTI_SZ;VALUE2_SZ;VALUE_DWORD;VALUE_EXPAND_SZ;VALUE_MULTI_SZ;VALUE_QWORD;VALUE_SZ\"")
|
||||
if (ARCH STREQUAL "64bit")
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE_NAMES
|
||||
VIEW HOST ERROR_VARIABLE status)
|
||||
check("${KEY}[VALUE_NAMES]" "${result}" "${status}"
|
||||
"(HOST_64BIT AND result STREQUAL \"(default);BYTE_SIZE;VALUE2_MULTI_SZ;VALUE_DWORD;VALUE_EXPAND_SZ;VALUE_MULTI_SZ;VALUE_QWORD;VALUE_SZ\")
|
||||
OR (NOT HOST_64BIT AND result STREQUAL \"(default);BYTE_SIZE;VALUE2_SZ\")")
|
||||
# VIEW TARGET should have same result as VIEW HOST
|
||||
cmake_host_system_information(RESULT result2 QUERY WINDOWS_REGISTRY "${KEY}" VALUE_NAMES
|
||||
VIEW TARGET ERROR_VARIABLE status)
|
||||
check("${KEY}[VALUE_NAMES]" "${result2}" "${status}"
|
||||
"(HOST_64BIT AND result STREQUAL \"(default);BYTE_SIZE;VALUE2_MULTI_SZ;VALUE_DWORD;VALUE_EXPAND_SZ;VALUE_MULTI_SZ;VALUE_QWORD;VALUE_SZ\")
|
||||
OR (NOT HOST_64BIT AND result STREQUAL \"(default);BYTE_SIZE;VALUE2_SZ\")")
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE_NAMES
|
||||
ERROR_VARIABLE status)
|
||||
check("${KEY}[VALUE_NAMES]" "${result}" "${status}" "result STREQUAL \"(default);BYTE_SIZE;VALUE2_MULTI_SZ;VALUE2_SZ;VALUE_DWORD;VALUE_EXPAND_SZ;VALUE_MULTI_SZ;VALUE_QWORD;VALUE_SZ\"")
|
||||
# VIEW BOTH should have same result as default view
|
||||
cmake_host_system_information(RESULT result2 QUERY WINDOWS_REGISTRY "${KEY}" VALUE_NAMES
|
||||
VIEW BOTH ERROR_VARIABLE status)
|
||||
check("${KEY}[VALUE_NAMES]" "${result2}" "${status}" "result2 STREQUAL result")
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE_NAMES
|
||||
VIEW 64 ERROR_VARIABLE status)
|
||||
check("${KEY}[VALUE_NAMES]" "${result}" "${status}"
|
||||
"result STREQUAL \"(default);BYTE_SIZE;VALUE2_MULTI_SZ;VALUE_DWORD;VALUE_EXPAND_SZ;VALUE_MULTI_SZ;VALUE_QWORD;VALUE_SZ\"")
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE_NAMES
|
||||
VIEW HOST ERROR_VARIABLE status)
|
||||
check("${KEY}[VALUE_NAMES]" "${result}" "${status}"
|
||||
"result STREQUAL \"(default);BYTE_SIZE;VALUE2_MULTI_SZ;VALUE_DWORD;VALUE_EXPAND_SZ;VALUE_MULTI_SZ;VALUE_QWORD;VALUE_SZ\"")
|
||||
# VIEW TARGET should have same result as VIEW HOST
|
||||
cmake_host_system_information(RESULT result2 QUERY WINDOWS_REGISTRY "${KEY}" VALUE_NAMES
|
||||
VIEW TARGET ERROR_VARIABLE status)
|
||||
check("${KEY}[VALUE_NAMES]" "${result2}" "${status}" "result2 STREQUAL result")
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE_NAMES
|
||||
VIEW 32 ERROR_VARIABLE status)
|
||||
check("${KEY}[VALUE_NAMES]" "${result}" "${status}" "result STREQUAL \"(default);BYTE_SIZE;VALUE2_SZ\"")
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE_NAMES
|
||||
VIEW 64 ERROR_VARIABLE status)
|
||||
check("${KEY}[VALUE_NAMES]" "${result}" "${status}"
|
||||
"result STREQUAL \"(default);BYTE_SIZE;VALUE2_MULTI_SZ;VALUE_DWORD;VALUE_EXPAND_SZ;VALUE_MULTI_SZ;VALUE_QWORD;VALUE_SZ\"")
|
||||
|
||||
# reg 64bit is read first
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE_NAMES
|
||||
VIEW 64_32 ERROR_VARIABLE status)
|
||||
check("${KEY}[VALUE_NAMES]" "${result}" "${status}"
|
||||
"result STREQUAL \"(default);BYTE_SIZE;VALUE2_MULTI_SZ;VALUE2_SZ;VALUE_DWORD;VALUE_EXPAND_SZ;VALUE_MULTI_SZ;VALUE_QWORD;VALUE_SZ\"")
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE_NAMES
|
||||
VIEW 32 ERROR_VARIABLE status)
|
||||
check("${KEY}[VALUE_NAMES]" "${result}" "${status}" "result STREQUAL \"(default);BYTE_SIZE;VALUE2_SZ\"")
|
||||
|
||||
# reg 32bit is read first. Result is the same as with view 64_32
|
||||
cmake_host_system_information(RESULT result2 QUERY WINDOWS_REGISTRY "${KEY}" VALUE_NAMES
|
||||
VIEW 32_64 ERROR_VARIABLE status)
|
||||
check("${KEY}[VALUE_NAMES]" "${result2}" "${status}" "result2 STREQUAL result")
|
||||
# reg 64bit is read first
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE_NAMES
|
||||
VIEW 64_32 ERROR_VARIABLE status)
|
||||
check("${KEY}[VALUE_NAMES]" "${result}" "${status}"
|
||||
"result STREQUAL \"(default);BYTE_SIZE;VALUE2_MULTI_SZ;VALUE2_SZ;VALUE_DWORD;VALUE_EXPAND_SZ;VALUE_MULTI_SZ;VALUE_QWORD;VALUE_SZ\"")
|
||||
|
||||
# reg 32bit is read first. Result is the same as with view 64_32
|
||||
cmake_host_system_information(RESULT result2 QUERY WINDOWS_REGISTRY "${KEY}" VALUE_NAMES
|
||||
VIEW 32_64 ERROR_VARIABLE status)
|
||||
check("${KEY}[VALUE_NAMES]" "${result2}" "${status}" "result2 STREQUAL result")
|
||||
|
||||
else()
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE_NAMES
|
||||
ERROR_VARIABLE status)
|
||||
check("${KEY}[VALUE_NAMES]" "${result}" "${status}" "result STREQUAL \"(default);BYTE_SIZE;VALUE2_MULTI_SZ;VALUE_DWORD;VALUE_EXPAND_SZ;VALUE_MULTI_SZ;VALUE_QWORD;VALUE_SZ\"")
|
||||
# VIEW BOTH should have same result as default view
|
||||
cmake_host_system_information(RESULT result2 QUERY WINDOWS_REGISTRY "${KEY}" VALUE_NAMES
|
||||
VIEW BOTH ERROR_VARIABLE status)
|
||||
check("${KEY}[VALUE_NAMES]" "${result2}" "${status}" "result STREQUAL result2")
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE_NAMES
|
||||
VIEW HOST ERROR_VARIABLE status)
|
||||
check("${KEY}[VALUE_NAMES]" "${result}" "${status}"
|
||||
"result STREQUAL \"(default);BYTE_SIZE;VALUE2_MULTI_SZ;VALUE_DWORD;VALUE_EXPAND_SZ;VALUE_MULTI_SZ;VALUE_QWORD;VALUE_SZ")
|
||||
# VIEW TARGET should have same result as VIEW HOST
|
||||
cmake_host_system_information(RESULT result2 QUERY WINDOWS_REGISTRY "${KEY}" VALUE_NAMES
|
||||
VIEW TARGET ERROR_VARIABLE status)
|
||||
check("${KEY}[VALUE_NAMES]" "${result2}" "${status}" "result2 STREQUAL result")
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE_NAMES
|
||||
VIEW 64 ERROR_VARIABLE status)
|
||||
check("${KEY}[VALUE_NAMES]" "${result}" "${status}" "result STREQUAL \"\"")
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE_NAMES
|
||||
VIEW 32 ERROR_VARIABLE status)
|
||||
check("${KEY}[VALUE_NAMES]" "${result}" "${status}" "result STREQUAL \"(default);BYTE_SIZE;VALUE2_MULTI_SZ;VALUE_DWORD;VALUE_EXPAND_SZ;VALUE_MULTI_SZ;VALUE_QWORD;VALUE_SZ\"")
|
||||
|
||||
# reg 64bit is read first
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE_NAMES
|
||||
VIEW 64_32 ERROR_VARIABLE status)
|
||||
check("${KEY}[VALUE_NAMES]" "${result}" "${status}"
|
||||
"result STREQUAL \"(default);BYTE_SIZE;VALUE2_MULTI_SZ;VALUE_DWORD;VALUE_EXPAND_SZ;VALUE_MULTI_SZ;VALUE_QWORD;VALUE_SZ\"")
|
||||
|
||||
# reg 32bit is read first. Result is the same as with view 64_32
|
||||
cmake_host_system_information(RESULT result2 QUERY WINDOWS_REGISTRY "${KEY}" VALUE_NAMES
|
||||
VIEW 32_64 ERROR_VARIABLE status)
|
||||
check("${KEY}[VALUE_NAMES]" "${result2}" "${status}" "result2 STREQUAL result")
|
||||
|
||||
endif()
|
||||
|
||||
|
||||
# HKCU/Software/CMake-Tests/chsi-registry: check retrieval of sub keys
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" SUBKEYS
|
||||
ERROR_VARIABLE status)
|
||||
check("${KEY}[SUBKEYS]" "${result}" "${status}" "result STREQUAL \"subkey1;subkey2;subkey3\"")
|
||||
if (ARCH STREQUAL "64bit")
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" SUBKEYS
|
||||
VIEW HOST ERROR_VARIABLE status)
|
||||
check("${KEY}[SUBKEYS]" "${result}" "${status}"
|
||||
"(HOST_64BIT AND result STREQUAL \"subkey1;subkey2\")
|
||||
OR (NOT HOST_64BIT AND result STREQUAL \"subkey1;subkey3\")")
|
||||
# VIEW TARGET should have same result as VIEW HOST
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" SUBKEYS
|
||||
VIEW TARGET ERROR_VARIABLE status)
|
||||
check("${KEY}[SUBKEYS]" "${result}" "${status}"
|
||||
"(HOST_64BIT AND result STREQUAL \"subkey1;subkey2\")
|
||||
OR (NOT HOST_64BIT AND result STREQUAL \"subkey1;subkey3\")")
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" SUBKEYS
|
||||
ERROR_VARIABLE status)
|
||||
check("${KEY}[SUBKEYS]" "${result}" "${status}" "result STREQUAL \"subkey1;subkey2;subkey3\"")
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" SUBKEYS
|
||||
VIEW 64 ERROR_VARIABLE status)
|
||||
check("${KEY}[SUBKEYS]" "${result}" "${status}"
|
||||
"result STREQUAL \"subkey1;subkey2\"")
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" SUBKEYS
|
||||
VIEW HOST ERROR_VARIABLE status)
|
||||
check("${KEY}[SUBKEYS]" "${result}" "${status}" "result STREQUAL \"subkey1;subkey2\"")
|
||||
# VIEW TARGET should have same result as VIEW HOST
|
||||
cmake_host_system_information(RESULT result2 QUERY WINDOWS_REGISTRY "${KEY}" SUBKEYS
|
||||
VIEW TARGET ERROR_VARIABLE status)
|
||||
check("${KEY}[SUBKEYS]" "${result}" "${status}" "result2 STREQUAL result")
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" SUBKEYS
|
||||
VIEW 32 ERROR_VARIABLE status)
|
||||
check("${KEY}[SUBKEYS]" "${result}" "${status}"
|
||||
"result STREQUAL \"subkey1;subkey3\"")
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" SUBKEYS
|
||||
VIEW 64 ERROR_VARIABLE status)
|
||||
check("${KEY}[SUBKEYS]" "${result}" "${status}" "result STREQUAL \"subkey1;subkey2\"")
|
||||
|
||||
# reg 64bit is read first
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" SUBKEYS
|
||||
VIEW 64_32 ERROR_VARIABLE status)
|
||||
check("${KEY}[SUBLEYS]" "${result}" "${status}" "result STREQUAL \"subkey1;subkey2;subkey3\"")
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" SUBKEYS
|
||||
VIEW 32 ERROR_VARIABLE status)
|
||||
check("${KEY}[SUBKEYS]" "${result}" "${status}" "result STREQUAL \"subkey1;subkey3\"")
|
||||
|
||||
# reg 32bit is read first. Result is the same as with view 64_32
|
||||
cmake_host_system_information(RESULT result2 QUERY WINDOWS_REGISTRY "${KEY}" SUBKEYS
|
||||
VIEW 32_64 ERROR_VARIABLE status)
|
||||
check("${KEY}[SUBKEYS]" "${result2}" "${status}" "result2 STREQUAL result")
|
||||
# reg 64bit is read first
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" SUBKEYS
|
||||
VIEW 64_32 ERROR_VARIABLE status)
|
||||
check("${KEY}[SUBLEYS]" "${result}" "${status}" "result STREQUAL \"subkey1;subkey2;subkey3\"")
|
||||
|
||||
# reg 32bit is read first. Result is the same as with view 64_32
|
||||
cmake_host_system_information(RESULT result2 QUERY WINDOWS_REGISTRY "${KEY}" SUBKEYS
|
||||
VIEW 32_64 ERROR_VARIABLE status)
|
||||
check("${KEY}[SUBKEYS]" "${result2}" "${status}" "result2 STREQUAL result")
|
||||
|
||||
else()
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" SUBKEYS
|
||||
ERROR_VARIABLE status)
|
||||
check("${KEY}[SUBKEYS]" "${result}" "${status}" "result STREQUAL \"subkey1;subkey2\"")
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" SUBKEYS
|
||||
VIEW HOST ERROR_VARIABLE status)
|
||||
check("${KEY}[SUBKEYS]" "${result}" "${status}" "result STREQUAL \"subkey1;subkey2\"")
|
||||
# VIEW TARGET should have same result as VIEW HOST
|
||||
cmake_host_system_information(RESULT result2 QUERY WINDOWS_REGISTRY "${KEY}" SUBKEYS
|
||||
VIEW TARGET ERROR_VARIABLE status)
|
||||
check("${KEY}[SUBKEYS]" "${result}" "${status}" "result2 STREQUAL result")
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" SUBKEYS
|
||||
VIEW 64 ERROR_VARIABLE status)
|
||||
check("${KEY}[SUBKEYS]" "${result}" "${status}" "result STREQUAL \"\"")
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" SUBKEYS
|
||||
VIEW 32 ERROR_VARIABLE status)
|
||||
check("${KEY}[SUBKEYS]" "${result}" "${status}" "result STREQUAL \"subkey1;subkey2\"")
|
||||
|
||||
# reg 64bit is read first
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" SUBKEYS
|
||||
VIEW 64_32 ERROR_VARIABLE status)
|
||||
check("${KEY}[SUBLEYS]" "${result}" "${status}" "result STREQUAL \"subkey1;subkey2\"")
|
||||
|
||||
# reg 32bit is read first. Result is the same as with view 64_32
|
||||
cmake_host_system_information(RESULT result2 QUERY WINDOWS_REGISTRY "${KEY}" SUBKEYS
|
||||
VIEW 32_64 ERROR_VARIABLE status)
|
||||
check("${KEY}[SUBKEYS]" "${result2}" "${status}" "result2 STREQUAL result")
|
||||
|
||||
endif()
|
||||
|
||||
|
||||
# Check influence of variable CMAKE_SIZEOF_VOID_P
|
||||
set(CMAKE_SIZEOF_VOID_P 8)
|
||||
if (ARCH STREQUAL "64bit")
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}"
|
||||
VIEW TARGET ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}" "result STREQUAL \"default 64bit\"")
|
||||
# Check influence of variable CMAKE_SIZEOF_VOID_P
|
||||
set(CMAKE_SIZEOF_VOID_P 8)
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE BYTE_SIZE
|
||||
VIEW TARGET ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}" "result STREQUAL \"64bit\"")
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}"
|
||||
VIEW TARGET ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}" "result STREQUAL \"default 64bit\"")
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE_NAMES
|
||||
VIEW TARGET ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}" "result STREQUAL \"(default);BYTE_SIZE;VALUE2_MULTI_SZ;VALUE_DWORD;VALUE_EXPAND_SZ;VALUE_MULTI_SZ;VALUE_QWORD;VALUE_SZ\"")
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE BYTE_SIZE
|
||||
VIEW TARGET ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}" "result STREQUAL \"64bit\"")
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" SUBKEYS
|
||||
VIEW TARGET ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}" "result STREQUAL \"subkey1;subkey2\"")
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE_NAMES
|
||||
VIEW TARGET ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}" "result STREQUAL \"(default);BYTE_SIZE;VALUE2_MULTI_SZ;VALUE_DWORD;VALUE_EXPAND_SZ;VALUE_MULTI_SZ;VALUE_QWORD;VALUE_SZ\"")
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" SUBKEYS
|
||||
VIEW TARGET ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}" "result STREQUAL \"subkey1;subkey2\"")
|
||||
|
||||
|
||||
set(CMAKE_SIZEOF_VOID_P 4)
|
||||
set(CMAKE_SIZEOF_VOID_P 4)
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}"
|
||||
VIEW TARGET ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}" "result STREQUAL \"default 32bit\"")
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}"
|
||||
VIEW TARGET ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}" "result STREQUAL \"default 32bit\"")
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE BYTE_SIZE
|
||||
VIEW TARGET ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}" "result STREQUAL \"32bit\"")
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE BYTE_SIZE
|
||||
VIEW TARGET ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}" "result STREQUAL \"32bit\"")
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE_NAMES
|
||||
VIEW TARGET ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}" "result STREQUAL \"(default);BYTE_SIZE;VALUE2_SZ\"")
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" VALUE_NAMES
|
||||
VIEW TARGET ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}" "result STREQUAL \"(default);BYTE_SIZE;VALUE2_SZ\"")
|
||||
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" SUBKEYS
|
||||
VIEW TARGET ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}" "result STREQUAL \"subkey1;subkey3\"")
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "${KEY}" SUBKEYS
|
||||
VIEW TARGET ERROR_VARIABLE status)
|
||||
check("${KEY}" "${result}" "${status}" "result STREQUAL \"subkey1;subkey3\"")
|
||||
|
||||
endif()
|
||||
|
@ -36,12 +36,24 @@ if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
|
||||
# Tests using the Windows registry
|
||||
find_program(REG NAMES "reg.exe" NO_CACHE)
|
||||
if (REG)
|
||||
## check host architecture
|
||||
cmake_host_system_information(RESULT result QUERY WINDOWS_REGISTRY "HKCU" SUBKEYS VIEW 64 ERROR_VARIABLE status)
|
||||
if (status STREQUAL "")
|
||||
set(ARCH "64bit")
|
||||
else()
|
||||
set(ARCH "32bit")
|
||||
endif()
|
||||
|
||||
# crete some entries in the registry
|
||||
cmake_path(CONVERT "${RunCMake_SOURCE_DIR}/registry_data.reg" TO_NATIVE_PATH_LIST registry_data)
|
||||
cmake_path(CONVERT "${RunCMake_SOURCE_DIR}/registry_host${ARCH}.reg" TO_NATIVE_PATH_LIST registry_data)
|
||||
execute_process(COMMAND "${REG}" import "${registry_data}" OUTPUT_QUIET ERROR_QUIET)
|
||||
run_cmake(Registry_Query)
|
||||
|
||||
run_cmake_with_options(Registry_Query -DARCH=${ARCH})
|
||||
|
||||
# clean-up registry
|
||||
execute_process(COMMAND "${REG}" delete "HKCU\\SOFTWARE\\Classes\\CLSID\\CMake-Tests" /f OUTPUT_QUIET ERROR_QUIET)
|
||||
execute_process(COMMAND "${REG}" delete "HKCU\\SOFTWARE\\Classes\\WOW6432Node\\CLSID\\CMake-Tests" /f OUTPUT_QUIET ERROR_QUIET)
|
||||
execute_process(COMMAND "${REG}" delete "HKCU\\SOFTWARE\\Classes\\CLSID\\CMake-Tests\\chsi-registry" /f OUTPUT_QUIET ERROR_QUIET)
|
||||
if (ARCH STREQUAL "64bit")
|
||||
execute_process(COMMAND "${REG}" delete "HKCU\\SOFTWARE\\Classes\\WOW6432Node\\CLSID\\CMake-Tests\\chsi-registry" /f OUTPUT_QUIET ERROR_QUIET)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user