From b32f05bc1a8ecc56d4ca7eb749168c1219881307 Mon Sep 17 00:00:00 2001 From: The Tumultuous Unicorn Of Darkness Date: Sat, 22 Mar 2025 10:52:30 +0100 Subject: [PATCH] [CMake] Fix build for i686 CPUs Fix #376 --- CMakeLists.txt | 23 +++++++++++++++++++---- src/CMakeLists.txt | 8 ++++---- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6f72b93f..35cf3700 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,12 +8,27 @@ project(cpu-x LANGUAGES C CXX ) +# Check for x86 CPU +if(CMAKE_SYSTEM_PROCESSOR MATCHES "^i.86$|(x86)|(X86)") + set(CPU_ISA_X86 TRUE) +else() + set(CPU_ISA_X86 FALSE) +endif(CMAKE_SYSTEM_PROCESSOR MATCHES "^i.86$|(x86)|(X86)") + +# Check for ARM CPU +if(CMAKE_SYSTEM_PROCESSOR MATCHES "^armv.*|aarch64") + set(CPU_ISA_ARM TRUE) +else() + set(CPU_ISA_ARM FALSE) +endif(CMAKE_SYSTEM_PROCESSOR MATCHES "^armv.*|aarch64") + +# Check if platform is supported if(NOT CMAKE_SYSTEM_NAME MATCHES "Linux|FreeBSD") message(WARNING "'${CMAKE_SYSTEM_NAME}' system is not officially supported by CPU-X, some features will not be available.") endif(NOT CMAKE_SYSTEM_NAME MATCHES "Linux|FreeBSD") -if(NOT CMAKE_SYSTEM_PROCESSOR MATCHES "(x86)|(X86)|(amd64)|(AMD64)|^armv.*|aarch64") +if(NOT CPU_ISA_X86 AND NOT CPU_ISA_ARM) message(FATAL_ERROR "'${CMAKE_SYSTEM_PROCESSOR}' processor is not supported by CPU-X.") -endif(NOT CMAKE_SYSTEM_PROCESSOR MATCHES "(x86)|(X86)|(amd64)|(AMD64)|^armv.*|aarch64") +endif(NOT CPU_ISA_X86 AND NOT CPU_ISA_ARM) ### DEFAULT CONFIG @@ -71,11 +86,11 @@ option(WITH_OPENCL "Use OpenCL library" option(WITH_LIBPROCPS "Use Libprocps library" ON) option(WITH_LIBSTATGRAB "Use Libstatgrab library" ON) option(WITH_DMIDECODE "Built-in Dmidecode" ON) -if(CMAKE_SYSTEM_PROCESSOR MATCHES "(x86)|(X86)|(amd64)|(AMD64)") +if(CPU_ISA_X86) option(WITH_BANDWIDTH "Built-in Bandwidth" ON) # Bandwidth is only supported on x86 CPUs (requires cache size) else() set(WITH_BANDWIDTH OFF) -endif(CMAKE_SYSTEM_PROCESSOR MATCHES "(x86)|(X86)|(amd64)|(AMD64)") +endif(CPU_ISA_X86) option(FORCE_LIBSTATGRAB "Force use of Libstatgrab instead of Libprocps (GNU/Linux system)" OFF) option(APPIMAGE "Enable workarounds for AppImage" OFF) option(FLATPAK "Enable workarounds for Flatpak" OFF) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c99c52ef..418feca1 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -141,13 +141,13 @@ if(WITH_DMIDECODE) endif(WITH_DMIDECODE) # Bandwidth -if(CMAKE_SYSTEM_PROCESSOR MATCHES "(x86)|(X86)|(amd64)|(AMD64)" AND WITH_BANDWIDTH) +if(CPU_ISA_X86 AND WITH_BANDWIDTH) add_subdirectory(core/bandwidth) if(BANDWIDTH_FOUND) include_directories(core/bandwidth) set(BANDWIDTH_LIBRARIES "bandwidth") endif(BANDWIDTH_FOUND) -endif(CMAKE_SYSTEM_PROCESSOR MATCHES "(x86)|(X86)|(amd64)|(AMD64)" AND WITH_BANDWIDTH) +endif(CPU_ISA_X86 AND WITH_BANDWIDTH) ### FINAL CONFIG @@ -332,9 +332,9 @@ if(${LIBSYSTEM} EQUAL 0 OR ${LIBSYSTEM} EQUAL 2) # When Libstatgrab is used endif() # ARM CPUs workarounds -if(CMAKE_SYSTEM_PROCESSOR MATCHES "^armv.*|aarch64" AND CMAKE_SYSTEM_NAME MATCHES "Linux") +if(CPU_ISA_ARM AND CMAKE_SYSTEM_NAME MATCHES "Linux") set(OTHER_LIBRARIES "-latomic") -endif(CMAKE_SYSTEM_PROCESSOR MATCHES "^armv.*|aarch64" AND CMAKE_SYSTEM_NAME MATCHES "Linux") +endif(CPU_ISA_ARM AND CMAKE_SYSTEM_NAME MATCHES "Linux") # AppImage workarounds if(APPIMAGE)