From 54bbd00448400e150d50b69737bdad623312dde5 Mon Sep 17 00:00:00 2001 From: Joseph Snyder Date: Thu, 24 Oct 2024 12:04:14 -0400 Subject: WindowsKernelModeDriver: Switch to appending to variables When using the WindowsKernelModeDriver, do not add the new paths if the variable was not previously defined. Instead, append them to the existing value. Add a new GUID for the Experimental mode gate --- Modules/Platform/WindowsKernelModeDriver.cmake | 13 ++++--------- Source/cmExperimental.cxx | 2 +- .../Experimental/WindowsKernelModeDriver-set.cmake | 2 +- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/Modules/Platform/WindowsKernelModeDriver.cmake b/Modules/Platform/WindowsKernelModeDriver.cmake index 3b1a427..78bf2d4 100644 --- a/Modules/Platform/WindowsKernelModeDriver.cmake +++ b/Modules/Platform/WindowsKernelModeDriver.cmake @@ -41,27 +41,22 @@ macro(__windows_kernel_mode lang) set(_KMDF_PLATFORM "$ENV{Platform}") - if(NOT DEFINED CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES) - set(CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES + list(APPEND CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES $ENV{WindowsSdkDir}/Include/${_WINDOWS_SDK_VERSION}/km $ENV{WindowsSdkDir}/Include/${_WINDOWS_SDK_VERSION}/km/crt $ENV{WindowsSdkDir}/Include/${_WINDOWS_SDK_VERSION}/shared $ENV{WindowsSdkDir}/Include/wdf/kmdf/${CMAKE_WINDOWS_KMDF_VERSION} $ENV{VCToolsInstallDir}/include ) - endif() - if(NOT DEFINED CMAKE_RC_STANDARD_INCLUDE_DIRECTORIES) - set(CMAKE_RC_STANDARD_INCLUDE_DIRECTORIES + list(APPEND CMAKE_RC_STANDARD_INCLUDE_DIRECTORIES ${CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES} ) - endif() + list(REMOVE_DUPLICATES CMAKE_RC_STANDARD_INCLUDE_DIRECTORIES) - if(NOT DEFINED CMAKE_${lang}_STANDARD_LINK_DIRECTORIES) - set(CMAKE_${lang}_STANDARD_LINK_DIRECTORIES + list(APPEND CMAKE_${lang}_STANDARD_LINK_DIRECTORIES $ENV{WindowsSdkDir}/Lib/${_WINDOWS_SDK_VERSION}/km/${_KMDF_PLATFORM} ) - endif() unset(_KMDF_ERROR_EPILOGUE) unset(_KMDF_PLATFORM) diff --git a/Source/cmExperimental.cxx b/Source/cmExperimental.cxx index 0e4ccc1..85eff1a 100644 --- a/Source/cmExperimental.cxx +++ b/Source/cmExperimental.cxx @@ -30,7 +30,7 @@ cmExperimental::FeatureData LookupTable[] = { false }, // WindowsKernelModeDriver { "WindowsKernelModeDriver", - "7f524e81-99c7-48f3-a35d-278bae54282c", + "fac18f65-504e-4dbb-b068-f356bb1f2ddb", "CMAKE_EXPERIMENTAL_WINDOWS_KERNEL_MODE_DRIVER", "CMake's Windows kernel-mode driver support is experimental. It is meant " "only for experimentation and feedback to CMake developers.", diff --git a/Tests/RunCMake/cmake_language/Experimental/WindowsKernelModeDriver-set.cmake b/Tests/RunCMake/cmake_language/Experimental/WindowsKernelModeDriver-set.cmake index 8068aaa..f9e22c5 100644 --- a/Tests/RunCMake/cmake_language/Experimental/WindowsKernelModeDriver-set.cmake +++ b/Tests/RunCMake/cmake_language/Experimental/WindowsKernelModeDriver-set.cmake @@ -1,5 +1,5 @@ set(CMAKE_EXPERIMENTAL_WINDOWS_KERNEL_MODE_DRIVER - "7f524e81-99c7-48f3-a35d-278bae54282c") + "fac18f65-504e-4dbb-b068-f356bb1f2ddb") cmake_language(GET_EXPERIMENTAL_FEATURE_ENABLED "WindowsKernelModeDriver" -- cgit v0.12