diff --git a/CMakeLists.txt b/CMakeLists.txt index 36da01122..b7f771c29 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,6 +24,22 @@ if(CMAKE_SYSTEM_NAME STREQUAL Windows) include_directories(BEFORE SYSTEM ${DISPATCH_INCLUDES}) dispatch_windows_lib_for_arch(${CMAKE_SYSTEM_PROCESSOR} DISPATCH_LIBDIR) link_directories(${DISPATCH_LIBDIR}) + + include(CheckCSourceCompiles) + check_c_source_compiles([=[ +#include +int main(int argc, char *argv[]) { + switch ((LOGICAL_PROCESSOR_RELATIONSHIP)0) { + case RelationProcessorDie: + case RelationNumaNodeEx: + return 0; + } + return 0; +} +]=] DISPATCH_HAVE_EXTENDED_SLPI_20348) + if(DISPATCH_HAVE_EXTENDED_SLPI_20348) + add_compile_definitions(DISPATCH_HAVE_EXTENDED_SLPI_20348) + endif() endif() set(CMAKE_C_STANDARD 11) diff --git a/src/shims/hw_config.h b/src/shims/hw_config.h index 5ed1739eb..185cbdf14 100644 --- a/src/shims/hw_config.h +++ b/src/shims/hw_config.h @@ -156,8 +156,14 @@ _dispatch_hw_get_config(_dispatch_hw_config_t c) ++dwProcessorPhysicalCount; dwProcessorLogicalCount += __popcnt64(slpiCurrent->ProcessorMask); break; +#if defined(DISPATCH_HAVE_EXTENDED_SLPI_20348) + case RelationProcessorDie: +#endif case RelationProcessorPackage: case RelationNumaNode: +#if defined(DISPATCH_HAVE_EXTENDED_SLPI_20348) + case RelationNumaNodeEx: +#endif case RelationCache: case RelationGroup: case RelationAll: