Files
2026-07-07 15:39:46 +08:00

195 lines
9.6 KiB
CMake

include_guard(GLOBAL)
include(${CMAKE_CURRENT_LIST_DIR}/global.cmake)
# Inf2Cat /os Version identifier
# https://learn.microsoft.com/en-us/windows-hardware/drivers/devtest/inf2cat
# WHCP CodeQL version matrix
# https://learn.microsoft.com/en-us/windows-hardware/drivers/devtest/static-tools-and-codeql
set(WDK_SUPPORTED_VERSION_IDENTIFIERS "")
macro(wvi_register NAME VALUE)
set(WVI_${NAME} "${VALUE}")
list(APPEND WDK_SUPPORTED_VERSION_IDENTIFIERS "${WVI_${NAME}}")
endmacro()
wvi_register(WINDOWS_11_25H2_X64 "10_25H2_X64")
wvi_register(WINDOWS_11_25H2_ARM64 "10_25H2_ARM64")
wvi_register(WINDOWS_11_24H2_X64 "10_GE_X64")
wvi_register(WINDOWS_11_24H2_ARM64 "10_GE_ARM64")
wvi_register(WINDOWS_SERVER_2025_X64 "Server2025_X64")
wvi_register(WINDOWS_SERVER_2025_ARM64 "Server2025_ARM64")
wvi_register(WINDOWS_11_22H2_X64 "10_NI_X64")
wvi_register(WINDOWS_11_22H2_ARM64 "10_NI_ARM64")
wvi_register(WINDOWS_11_21H2_X64 "10_CO_X64")
wvi_register(WINDOWS_11_21H2_ARM64 "10_CO_ARM64")
wvi_register(WINDOWS_SERVER_2022_X64 "ServerFE_X64")
wvi_register(WINDOWS_SERVER_2022_ARM64 "ServerFE_ARM64")
wvi_register(WINDOWS_10_VB_X86 "10_VB_X86")
wvi_register(WINDOWS_10_VB_X64 "10_VB_X64")
wvi_register(WINDOWS_10_VB_ARM64 "10_VB_ARM64")
wvi_register(WINDOWS_10_19H1_X86 "10_19H1_X86")
wvi_register(WINDOWS_10_19H1_X64 "10_19H1_X64")
wvi_register(WINDOWS_10_19H1_ARM64 "10_19H1_ARM64")
wvi_register(WINDOWS_10_RS5_X86 "10_RS5_X86")
wvi_register(WINDOWS_10_RS5_X64 "10_RS5_X64")
wvi_register(WINDOWS_10_RS5_ARM64 "10_RS5_ARM64")
wvi_register(WINDOWS_SERVER_2019_X64 "ServerRS5_X64")
wvi_register(WINDOWS_SERVER_2019_ARM64 "ServerRS5_ARM64")
wvi_register(WINDOWS_10_RS4_X86 "10_RS4_X86")
wvi_register(WINDOWS_10_RS4_X64 "10_RS4_X64")
wvi_register(WINDOWS_10_RS4_ARM64 "10_RS4_ARM64")
wvi_register(WINDOWS_10_RS3_X86 "10_RS3_X86")
wvi_register(WINDOWS_10_RS3_X64 "10_RS3_X64")
wvi_register(WINDOWS_10_RS3_ARM64 "10_RS3_ARM64")
wvi_register(WINDOWS_10_RS2_X86 "10_RS2_X86")
wvi_register(WINDOWS_10_RS2_X64 "10_RS2_X64")
wvi_register(WINDOWS_10_AU_X86 "10_AU_X86")
wvi_register(WINDOWS_10_AU_X64 "10_AU_X64")
wvi_register(WINDOWS_SERVER_2016_X64 "SERVER2016_X64")
wvi_register(WINDOWS_10_X86 "10_X86")
wvi_register(WINDOWS_10_X64 "10_X64")
wvi_register(WINDOWS_SERVER_10_X64 "Server10_X64")
wvi_register(WINDOWS_SERVER_10_ARM64 "Server10_ARM64")
wvi_register(WINDOWS_8_1_X86 "8_1_X86")
wvi_register(WINDOWS_8_1_X64 "8_1_X64")
wvi_register(WINDOWS_8_X86 "8_X86")
wvi_register(WINDOWS_8_X64 "8_X64")
wvi_register(WINDOWS_7_X86 "7_X86")
wvi_register(WINDOWS_7_X64 "7_X64")
function(wdk_print_supported_version_identifiers)
wdk_print_list("Supported WDK Version identifier values:" WDK_SUPPORTED_VERSION_IDENTIFIERS)
endfunction()
function(wvi_select_winver version_identifier out_winver)
string(STRIP "${version_identifier}" _version_identifier)
string(TOUPPER "${_version_identifier}" _version_identifier_upper)
if(_version_identifier_upper MATCHES "^(10|SERVER)")
set(_winver "0x0A00")
elseif(_version_identifier_upper MATCHES "^8_1_")
set(_winver "0x0603")
elseif(_version_identifier_upper MATCHES "^8_")
set(_winver "0x0602")
elseif(_version_identifier_upper MATCHES "^7_")
set(_winver "0x0601")
else()
set(_winver "")
endif()
set(${out_winver} "${_winver}" PARENT_SCOPE)
endfunction()
function(wvi_select_ntddi_version version_identifier out_ntddi_version)
string(STRIP "${version_identifier}" _version_identifier)
string(TOUPPER "${_version_identifier}" _version_identifier_upper)
if(_version_identifier_upper MATCHES "^10_VB_")
set(_ntddi_version "0x0A000008")
elseif(_version_identifier_upper MATCHES "^10_19H1_")
set(_ntddi_version "0x0A000007")
elseif(_version_identifier_upper MATCHES "^10_RS5_")
set(_ntddi_version "0x0A000006")
elseif(_version_identifier_upper MATCHES "^10_RS4_")
set(_ntddi_version "0x0A000005")
elseif(_version_identifier_upper MATCHES "^10_RS3_")
set(_ntddi_version "0x0A000004")
elseif(_version_identifier_upper MATCHES "^10_RS2_")
set(_ntddi_version "0x0A000003")
elseif(_version_identifier_upper MATCHES "^10_AU_"
OR _version_identifier_upper MATCHES "^SERVER2016_")
set(_ntddi_version "0x0A000002")
elseif(_version_identifier_upper MATCHES "^10_(X86|X64)$"
OR _version_identifier_upper MATCHES "^SERVER10_")
set(_ntddi_version "0x0A000000")
elseif(_version_identifier_upper MATCHES "^8_1_")
set(_ntddi_version "0x06030000")
elseif(_version_identifier_upper MATCHES "^8_")
set(_ntddi_version "0x06020000")
elseif(_version_identifier_upper MATCHES "^7_")
set(_ntddi_version "0x06010000")
else()
set(_ntddi_version "")
endif()
set(${out_ntddi_version} "${_ntddi_version}" PARENT_SCOPE)
endfunction()
function(wvi_select_kmdf_version version_identifier out_kmdf_version)
string(STRIP "${version_identifier}" _version_identifier)
string(TOUPPER "${_version_identifier}" _version_identifier_upper)
if(_version_identifier_upper MATCHES "^10_(25H2|GE|NI|CO)_(X86|X64|ARM64)$"
OR _version_identifier_upper MATCHES "^SERVER(2025|FE)_(X64|ARM64)$")
set(_kmdf_version "1.33")
elseif(_version_identifier_upper MATCHES "^10_VB_(X86|X64|ARM64)$")
set(_kmdf_version "1.31")
elseif(_version_identifier_upper MATCHES "^10_19H1_(X86|X64|ARM64)$")
set(_kmdf_version "1.29")
elseif(_version_identifier_upper MATCHES "^10_RS5_(X86|X64|ARM64)$"
OR _version_identifier_upper MATCHES "^SERVERRS5_(X64|ARM64)$")
set(_kmdf_version "1.27")
elseif(_version_identifier_upper MATCHES "^10_RS4_(X86|X64|ARM64)$")
set(_kmdf_version "1.25")
elseif(_version_identifier_upper MATCHES "^10_RS3_(X86|X64|ARM64)$")
set(_kmdf_version "1.23")
elseif(_version_identifier_upper MATCHES "^10_RS2_(X86|X64)$")
set(_kmdf_version "1.21")
elseif(_version_identifier_upper MATCHES "^10_AU_(X86|X64)$"
OR _version_identifier_upper MATCHES "^SERVER2016_X64$")
set(_kmdf_version "1.19")
elseif(_version_identifier_upper MATCHES "^10_(X86|X64)$"
OR _version_identifier_upper MATCHES "^SERVER10_(X64|ARM64)$")
set(_kmdf_version "1.15")
elseif(_version_identifier_upper MATCHES "^8_1_(X86|X64)$")
set(_kmdf_version "1.13")
elseif(_version_identifier_upper MATCHES "^8_(X86|X64)$")
set(_kmdf_version "1.11")
elseif(_version_identifier_upper MATCHES "^7_(X86|X64)$")
set(_kmdf_version "1.9")
else()
set(_kmdf_version "")
endif()
set(${out_kmdf_version} "${_kmdf_version}" PARENT_SCOPE)
endfunction()
macro(_whcp_set_codeql_versions out_codeql_cli_version out_windows_drivers_pack out_cpp_queries_pack out_whcp_branch codeql_cli_version windows_drivers_pack cpp_queries_pack whcp_branch)
set(${out_codeql_cli_version} "${codeql_cli_version}" PARENT_SCOPE)
set(${out_windows_drivers_pack} "${windows_drivers_pack}" PARENT_SCOPE)
set(${out_cpp_queries_pack} "${cpp_queries_pack}" PARENT_SCOPE)
set(${out_whcp_branch} "${whcp_branch}" PARENT_SCOPE)
endmacro()
function(whcp_select_codeql_versions version_identifier out_codeql_cli_version out_windows_drivers_pack out_cpp_queries_pack out_whcp_branch)
string(STRIP "${version_identifier}" _version_identifier)
string(TOUPPER "${_version_identifier}" _version_identifier_upper)
if(_version_identifier_upper MATCHES "^10_25H2_(X64|ARM64)$"
OR _version_identifier_upper MATCHES "^SERVER2025_(X64|ARM64)$")
_whcp_set_codeql_versions(${out_codeql_cli_version} ${out_windows_drivers_pack} ${out_cpp_queries_pack} ${out_whcp_branch}
"2.20.1" "microsoft/windows-drivers@1.8.0" "microsoft/cpp-queries@0.0.4" "WHCP_25H2")
elseif(_version_identifier_upper MATCHES "^10_GE_(X64|ARM64)$")
_whcp_set_codeql_versions(${out_codeql_cli_version} ${out_windows_drivers_pack} ${out_cpp_queries_pack} ${out_whcp_branch}
"2.15.4" "microsoft/windows-drivers@1.1.0" "codeql/cpp-queries@0.9.0" "WHCP_24H2")
elseif(_version_identifier_upper MATCHES "^10_NI_(X64|ARM64)$")
_whcp_set_codeql_versions(${out_codeql_cli_version} ${out_windows_drivers_pack} ${out_cpp_queries_pack} ${out_whcp_branch}
"2.15.4" "microsoft/windows-drivers@1.0.13" "codeql/cpp-queries@0.9.0" "WHCP_22H2")
elseif(_version_identifier_upper MATCHES "^10_CO_(X64|ARM64)$"
OR _version_identifier_upper MATCHES "^SERVERFE_(X64|ARM64)$")
_whcp_set_codeql_versions(${out_codeql_cli_version} ${out_windows_drivers_pack} ${out_cpp_queries_pack} ${out_whcp_branch}
"2.15.4" "microsoft/windows-drivers@1.0.13" "codeql/cpp-queries@0.9.0" "WHCP_21H2")
elseif(_version_identifier_upper MATCHES "^10_(VB|19H1|RS5|RS4|RS3)_(X86|X64|ARM64)$"
OR _version_identifier_upper MATCHES "^10_(RS2|AU)_(X86|X64)$"
OR _version_identifier_upper MATCHES "^SERVER(RS5|2016|10)_(X64|ARM64)$"
OR _version_identifier_upper MATCHES "^10_(X86|X64)$"
OR _version_identifier_upper MATCHES "^(8_1|8|7)_(X86|X64)$")
_whcp_set_codeql_versions(${out_codeql_cli_version} ${out_windows_drivers_pack} ${out_cpp_queries_pack} ${out_whcp_branch}
"2.15.4" "microsoft/windows-drivers@1.0.13" "codeql/cpp-queries@0.9.0" "CUSTOM_LEGACY_WINDOWS")
else()
message(WARNING "Unsupported WDK Version identifier: '${version_identifier}'")
wdk_print_supported_version_identifiers()
wdk_fatal("${CMAKE_CURRENT_FUNCTION}" "Invalid WDK Version identifier. Use one value from WDK_SUPPORTED_VERSION_IDENTIFIERS.")
endif()
endfunction()