|
|
@@ -1 +1,70 @@
|
|
|
include(Platform/Windows)
|
|
|
+macro(__windows_kernel_mode lang)
|
|
|
+ if(CMAKE_CROSSCOMPILING)
|
|
|
+ set(_KMDF_ERROR_EPILOGUE
|
|
|
+ "Please set a valid CMAKE_WINDOWS_KMDF_VERSION in the toolchain file. "
|
|
|
+ "For more information, see\n"
|
|
|
+ " https://learn.microsoft.com/en-us/windows-hardware/drivers/wdf/kmdf-version-history"
|
|
|
+ )
|
|
|
+ if(NOT DEFINED CMAKE_WINDOWS_KMDF_VERSION)
|
|
|
+ message(FATAL_ERROR
|
|
|
+ "The Kernel-Mode Driver Framework (KMDF) version has not been set. "
|
|
|
+ ${_KMDF_ERROR_EPILOGUE}
|
|
|
+ )
|
|
|
+ endif()
|
|
|
+ if(NOT CMAKE_WINDOWS_KMDF_VERSION MATCHES "^[0-9]\.[0-9]+$")
|
|
|
+ message(FATAL_ERROR
|
|
|
+ "The Kernel-Mode Driver Framework (KMDF) version is set to an invalid value. "
|
|
|
+ "The expected format is [0-9].[0-9]+. For example, 1.15 or 1.9. "
|
|
|
+ ${_KMDF_ERROR_EPILOGUE}
|
|
|
+ )
|
|
|
+ endif()
|
|
|
+
|
|
|
+ set(_KMDF_ENV_VARS
|
|
|
+ Platform
|
|
|
+ WindowsSdkDir
|
|
|
+ VCToolsInstallDir
|
|
|
+ )
|
|
|
+ if(DEFINED ENV{EnterpriseWDK})
|
|
|
+ set(_WINDOWS_SDK_VERSION "$ENV{Version_Number}")
|
|
|
+ list(APPEND _KMDF_ENV_VARS Version_Number)
|
|
|
+ else()
|
|
|
+ set(_WINDOWS_SDK_VERSION "$ENV{WindowsSDKLibVersion}")
|
|
|
+ list(APPEND _KMDF_ENV_VARS WindowsSDKLibVersion)
|
|
|
+ endif()
|
|
|
+ foreach(var IN LISTS _KMDF_ENV_VARS)
|
|
|
+ if(NOT DEFINED ENV{${var}})
|
|
|
+ message(FATAL_ERROR "Required environment variable '${var}' is not defined.")
|
|
|
+ endif()
|
|
|
+ endforeach()
|
|
|
+ unset(_KMDF_ENV_VARS)
|
|
|
+
|
|
|
+ set(_KMDF_PLATFORM "$ENV{Platform}")
|
|
|
+
|
|
|
+ if(NOT DEFINED CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES)
|
|
|
+ set(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
|
|
|
+ ${CMAKE_${lang}_STANDARD_INCLUDE_DIRECTORIES}
|
|
|
+ )
|
|
|
+ endif()
|
|
|
+
|
|
|
+ if(NOT DEFINED CMAKE_${lang}_STANDARD_LINK_DIRECTORIES)
|
|
|
+ set(CMAKE_${lang}_STANDARD_LINK_DIRECTORIES
|
|
|
+ $ENV{WindowsSdkDir}/Lib/${_WINDOWS_SDK_VERSION}/km/${_KMDF_PLATFORM}
|
|
|
+ )
|
|
|
+ endif()
|
|
|
+
|
|
|
+ unset(_KMDF_ERROR_EPILOGUE)
|
|
|
+ unset(_KMDF_PLATFORM)
|
|
|
+ unset(_WINDOWS_SDK_VERSION)
|
|
|
+ endif()
|
|
|
+endmacro()
|