@@ -50,15 +50,20 @@ set(SIZEOF_VOID_P ${CMAKE_SIZEOF_VOID_P})
50
50
set (HWLOC_X86_32_ARCH )
51
51
set (HWLOC_X86_64_ARCH )
52
52
set (HWLOC_HAVE_X86_CPUID 1 )
53
- if (CMAKE_SYSTEM_PROCESSOR MATCHES "(^AMD64$|^x86_64$)" )
54
- # "AMD64" on Windows, "x86_64" on Linux
53
+ if (CMAKE_C_COMPILER_ARCHITECTURE_ID MATCHES "^(x64|x86_64)$" )
54
+ # "x64" for Windows (MSVC)
55
+ # "x86_64" for Windows (MinGW), Linux, macOS
55
56
set (HWLOC_X86_64_ARCH 1 )
56
- elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "(^x86$|i.86)" )
57
- # "x86" on Windows, "i.86" on Linux
57
+ elseif (CMAKE_C_COMPILER_ARCHITECTURE_ID MATCHES "^(X86|i[3-6]86)$" )
58
+ # "X86" for Windows (MSVC)
59
+ # "i[3-6]86" for Windows (MinGW), Linux, macOS
58
60
set (HWLOC_X86_32_ARCH 1 )
59
61
else ()
62
+ # For "arm64", "aarch64", "ARM64"...
60
63
set (HWLOC_HAVE_X86_CPUID 0 )
61
64
endif ()
65
+ message (STATUS "Target Arch ID = ${CMAKE_C_COMPILER_ARCHITECTURE_ID} " )
66
+ message (STATUS "HWLOC_HAVE_X86_CPUID = ${HWLOC_HAVE_X86_CPUID} " )
62
67
63
68
check_c_source_compiles ("int main(void) {int cpuinfo[4]; __cpuidex(cpuinfo,0,0); return 0;}"
64
69
HWLOC_HAVE_MSVC_CPUIDEX
@@ -122,7 +127,7 @@ add_library(hwloc
122
127
${TOPDIR} /hwloc/topology-xml.c
123
128
${TOPDIR} /hwloc/topology-xml-nolibxml.c
124
129
${TOPDIR} /hwloc/topology-windows.c
125
- ${ TOPDIR} /hwloc/topology-x86.c
130
+ $< $< BOOL: ${HWLOC_HAVE_X86_CPUID} > : ${ TOPDIR} /hwloc/topology-x86.c>
126
131
$< $< BOOL:${HWLOC_HAVE_LIBXML2} > :${TOPDIR} /hwloc/topology-xml-libxml.c>
127
132
$< $< BOOL:${HWLOC_HAVE_OPENCL} > :${TOPDIR} /hwloc/topology-opencl.c>
128
133
$< $< BOOL:${HAVE_CUDA} > :${TOPDIR} /hwloc/topology-cuda.c>
0 commit comments