From 0ccda73d3b5474be0ea71a9a0f05e0ae92262c1c Mon Sep 17 00:00:00 2001 From: edgchen1 <18449977+edgchen1@users.noreply.github.com> Date: Tue, 26 Aug 2025 13:40:38 -0700 Subject: [PATCH 1/3] Use CMAKE_C_COMPILER_ARCHITECTURE_ID to determine target processor when compiler is MSVC. --- CMakeLists.txt | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ea1bae1e..75bbf7d2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -72,23 +72,39 @@ IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD" AND CPUINFO_TARGET_PROCESSOR STREQUAL "am ENDIF() IF(IS_APPLE_OS AND CMAKE_OSX_ARCHITECTURES MATCHES "^(x86_64|arm64.*)$") SET(CPUINFO_TARGET_PROCESSOR "${CMAKE_OSX_ARCHITECTURES}") -ELSEIF(CMAKE_GENERATOR MATCHES "^Visual Studio " AND CMAKE_VS_PLATFORM_NAME) - IF(CMAKE_VS_PLATFORM_NAME STREQUAL "Win32") - SET(CPUINFO_TARGET_PROCESSOR "x86") - ELSEIF(CMAKE_VS_PLATFORM_NAME STREQUAL "x64") - SET(CPUINFO_TARGET_PROCESSOR "x86_64") - ELSEIF(CMAKE_VS_PLATFORM_NAME STREQUAL "ARM64") - SET(CPUINFO_TARGET_PROCESSOR "arm64") - ELSEIF(CMAKE_VS_PLATFORM_NAME MATCHES "^(ARM64EC|arm64ec|ARM64E|arm64e)") - SET(CPUINFO_TARGET_PROCESSOR "arm64") +ELSEIF(MSVC) + IF(CMAKE_VERSION VERSION_GREATER_EQUAL "3.10") + # Use CMAKE_C_COMPILER_ARCHITECTURE_ID. MSVC values are documented as available since CMake 3.10. + IF(CMAKE_C_COMPILER_ARCHITECTURE_ID STREQUAL "X86") + SET(CPUINFO_TARGET_PROCESSOR "x86") + ELSEIF(CMAKE_C_COMPILER_ARCHITECTURE_ID STREQUAL "x64") + SET(CPUINFO_TARGET_PROCESSOR "x86_64") + ELSEIF(CMAKE_C_COMPILER_ARCHITECTURE_ID MATCHES "^(ARM64|ARM64EC)$") + SET(CPUINFO_TARGET_PROCESSOR "arm64") + ELSE() + MESSAGE(FATAL_ERROR "Unsupported MSVC compiler architecture ID \"${CMAKE_C_COMPILER_ARCHITECTURE_ID}\"") + ENDIF() ELSE() - MESSAGE(FATAL_ERROR "Unsupported Visual Studio architecture \"${CMAKE_VS_PLATFORM_NAME}\"") + # Fall back to checking VS generator platform name. + IF(CMAKE_GENERATOR MATCHES "^Visual Studio " AND CMAKE_VS_PLATFORM_NAME) + IF(CMAKE_VS_PLATFORM_NAME STREQUAL "Win32") + SET(CPUINFO_TARGET_PROCESSOR "x86") + ELSEIF(CMAKE_VS_PLATFORM_NAME STREQUAL "x64") + SET(CPUINFO_TARGET_PROCESSOR "x86_64") + ELSEIF(CMAKE_VS_PLATFORM_NAME STREQUAL "ARM64") + SET(CPUINFO_TARGET_PROCESSOR "arm64") + ELSEIF(CMAKE_VS_PLATFORM_NAME MATCHES "^(ARM64EC|arm64ec|ARM64E|arm64e)") + SET(CPUINFO_TARGET_PROCESSOR "arm64") + ELSE() + MESSAGE(FATAL_ERROR "Unsupported Visual Studio architecture \"${CMAKE_VS_PLATFORM_NAME}\"") + ENDIF() + ENDIF() ENDIF() ENDIF() # ---[ Build flags SET(CPUINFO_SUPPORTED_PLATFORM TRUE) -IF(NOT CMAKE_SYSTEM_PROCESSOR) +IF(NOT CPUINFO_TARGET_PROCESSOR) IF(NOT IOS) MESSAGE(WARNING "Target processor architecture is not specified. " From f4f52fe4d1d465f8a54e05cc3a71f2200b9ef046 Mon Sep 17 00:00:00 2001 From: edgchen1 <18449977+edgchen1@users.noreply.github.com> Date: Tue, 26 Aug 2025 15:41:26 -0700 Subject: [PATCH 2/3] update condition --- CMakeLists.txt | 47 +++++++++++++++++++++-------------------------- 1 file changed, 21 insertions(+), 26 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 75bbf7d2..eb0ae960 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -72,33 +72,28 @@ IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD" AND CPUINFO_TARGET_PROCESSOR STREQUAL "am ENDIF() IF(IS_APPLE_OS AND CMAKE_OSX_ARCHITECTURES MATCHES "^(x86_64|arm64.*)$") SET(CPUINFO_TARGET_PROCESSOR "${CMAKE_OSX_ARCHITECTURES}") -ELSEIF(MSVC) - IF(CMAKE_VERSION VERSION_GREATER_EQUAL "3.10") - # Use CMAKE_C_COMPILER_ARCHITECTURE_ID. MSVC values are documented as available since CMake 3.10. - IF(CMAKE_C_COMPILER_ARCHITECTURE_ID STREQUAL "X86") - SET(CPUINFO_TARGET_PROCESSOR "x86") - ELSEIF(CMAKE_C_COMPILER_ARCHITECTURE_ID STREQUAL "x64") - SET(CPUINFO_TARGET_PROCESSOR "x86_64") - ELSEIF(CMAKE_C_COMPILER_ARCHITECTURE_ID MATCHES "^(ARM64|ARM64EC)$") - SET(CPUINFO_TARGET_PROCESSOR "arm64") - ELSE() - MESSAGE(FATAL_ERROR "Unsupported MSVC compiler architecture ID \"${CMAKE_C_COMPILER_ARCHITECTURE_ID}\"") - ENDIF() +ELSEIF(MSVC AND CMAKE_VERSION VERSION_GREATER_EQUAL "3.10") + # Use CMAKE_C_COMPILER_ARCHITECTURE_ID. MSVC values are documented as available since CMake 3.10. + IF(CMAKE_C_COMPILER_ARCHITECTURE_ID STREQUAL "X86") + SET(CPUINFO_TARGET_PROCESSOR "x86") + ELSEIF(CMAKE_C_COMPILER_ARCHITECTURE_ID STREQUAL "x64") + SET(CPUINFO_TARGET_PROCESSOR "x86_64") + ELSEIF(CMAKE_C_COMPILER_ARCHITECTURE_ID MATCHES "^(ARM64|ARM64EC)$") + SET(CPUINFO_TARGET_PROCESSOR "arm64") ELSE() - # Fall back to checking VS generator platform name. - IF(CMAKE_GENERATOR MATCHES "^Visual Studio " AND CMAKE_VS_PLATFORM_NAME) - IF(CMAKE_VS_PLATFORM_NAME STREQUAL "Win32") - SET(CPUINFO_TARGET_PROCESSOR "x86") - ELSEIF(CMAKE_VS_PLATFORM_NAME STREQUAL "x64") - SET(CPUINFO_TARGET_PROCESSOR "x86_64") - ELSEIF(CMAKE_VS_PLATFORM_NAME STREQUAL "ARM64") - SET(CPUINFO_TARGET_PROCESSOR "arm64") - ELSEIF(CMAKE_VS_PLATFORM_NAME MATCHES "^(ARM64EC|arm64ec|ARM64E|arm64e)") - SET(CPUINFO_TARGET_PROCESSOR "arm64") - ELSE() - MESSAGE(FATAL_ERROR "Unsupported Visual Studio architecture \"${CMAKE_VS_PLATFORM_NAME}\"") - ENDIF() - ENDIF() + MESSAGE(FATAL_ERROR "Unsupported MSVC compiler architecture ID \"${CMAKE_C_COMPILER_ARCHITECTURE_ID}\"") + ENDIF() +ELSEIF(CMAKE_GENERATOR MATCHES "^Visual Studio " AND CMAKE_VS_PLATFORM_NAME) + IF(CMAKE_VS_PLATFORM_NAME STREQUAL "Win32") + SET(CPUINFO_TARGET_PROCESSOR "x86") + ELSEIF(CMAKE_VS_PLATFORM_NAME STREQUAL "x64") + SET(CPUINFO_TARGET_PROCESSOR "x86_64") + ELSEIF(CMAKE_VS_PLATFORM_NAME STREQUAL "ARM64") + SET(CPUINFO_TARGET_PROCESSOR "arm64") + ELSEIF(CMAKE_VS_PLATFORM_NAME MATCHES "^(ARM64EC|arm64ec|ARM64E|arm64e)") + SET(CPUINFO_TARGET_PROCESSOR "arm64") + ELSE() + MESSAGE(FATAL_ERROR "Unsupported Visual Studio architecture \"${CMAKE_VS_PLATFORM_NAME}\"") ENDIF() ENDIF() From c2ef7949cb67e4a8823c2fa756e25c93479d461c Mon Sep 17 00:00:00 2001 From: edgchen1 <18449977+edgchen1@users.noreply.github.com> Date: Tue, 26 Aug 2025 15:57:37 -0700 Subject: [PATCH 3/3] replace CMAKE_SYSTEM_PROCESSOR with CPUINFO_TARGET_PROCESSOR --- CMakeLists.txt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index eb0ae960..25c4683f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -212,12 +212,12 @@ IF(CPUINFO_SUPPORTED_PLATFORM) src/arm/linux/chipset.c src/arm/linux/midr.c src/arm/linux/hwcap.c) - IF(CMAKE_SYSTEM_PROCESSOR MATCHES "^armv[5-8]") + IF(CPUINFO_TARGET_PROCESSOR MATCHES "^armv[5-8]") LIST(APPEND CPUINFO_SRCS src/arm/linux/aarch32-isa.c) IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND ANDROID_ABI STREQUAL "armeabi") SET_SOURCE_FILES_PROPERTIES(src/arm/linux/aarch32-isa.c PROPERTIES COMPILE_FLAGS -marm) ENDIF() - ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64)$") + ELSEIF(CPUINFO_TARGET_PROCESSOR MATCHES "^(aarch64|arm64)$") LIST(APPEND CPUINFO_SRCS src/arm/linux/aarch64-isa.c) ENDIF() ELSEIF(IS_APPLE_OS AND CPUINFO_TARGET_PROCESSOR MATCHES "arm64.*") @@ -406,7 +406,7 @@ IF(CPUINFO_SUPPORTED_PLATFORM AND CPUINFO_BUILD_MOCK_TESTS) TARGET_COMPILE_DEFINITIONS(cpuinfo_mock PRIVATE _GNU_SOURCE=1) ENDIF() - IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv5te|armv7-a)$") + IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND CPUINFO_TARGET_PROCESSOR MATCHES "^(armv5te|armv7-a)$") ADD_EXECUTABLE(atm7029b-tablet-test test/mock/atm7029b-tablet.cc) TARGET_INCLUDE_DIRECTORIES(atm7029b-tablet-test BEFORE PRIVATE test/mock) TARGET_LINK_LIBRARIES(atm7029b-tablet-test PRIVATE cpuinfo_mock gtest) @@ -588,7 +588,7 @@ IF(CPUINFO_SUPPORTED_PLATFORM AND CPUINFO_BUILD_MOCK_TESTS) ADD_TEST(NAME xperia-sl-test COMMAND xperia-sl-test) ENDIF() - IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv5te|armv7-a|aarch64)$") + IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND CPUINFO_TARGET_PROCESSOR MATCHES "^(armv5te|armv7-a|aarch64)$") ADD_EXECUTABLE(alcatel-revvl-test test/mock/alcatel-revvl.cc) TARGET_INCLUDE_DIRECTORIES(alcatel-revvl-test BEFORE PRIVATE test/mock) TARGET_LINK_LIBRARIES(alcatel-revvl-test PRIVATE cpuinfo_mock gtest) @@ -785,7 +785,7 @@ IF(CPUINFO_SUPPORTED_PLATFORM AND CPUINFO_BUILD_MOCK_TESTS) ADD_TEST(NAME xperia-c4-dual-test COMMAND xperia-c4-dual-test) ENDIF() - IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(i686|x86_64)$") + IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND CPUINFO_TARGET_PROCESSOR MATCHES "^(i686|x86_64)$") ADD_EXECUTABLE(alldocube-iwork8-test test/mock/alldocube-iwork8.cc) TARGET_INCLUDE_DIRECTORIES(alldocube-iwork8-test BEFORE PRIVATE test/mock) TARGET_LINK_LIBRARIES(alldocube-iwork8-test PRIVATE cpuinfo_mock gtest) @@ -842,7 +842,7 @@ IF(CPUINFO_SUPPORTED_PLATFORM AND CPUINFO_BUILD_UNIT_TESTS) ADD_TEST(NAME brand-string-test COMMAND brand-string-test) ENDIF() - IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv[5-8].*|aarch64)$") + IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND CPUINFO_TARGET_PROCESSOR MATCHES "^(armv[5-8].*|aarch64)$") ADD_LIBRARY(android_properties_interface STATIC test/name/android-properties-interface.c) CPUINFO_TARGET_ENABLE_C99(android_properties_interface) CPUINFO_TARGET_RUNTIME_LIBRARY(android_properties_interface) @@ -890,7 +890,7 @@ IF(CPUINFO_SUPPORTED_PLATFORM AND CPUINFO_BUILD_TOOLS) TARGET_LINK_LIBRARIES(cache-info PRIVATE cpuinfo) INSTALL(TARGETS cache-info RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) - IF(CMAKE_SYSTEM_NAME MATCHES "^(Android|Linux)$" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv[5-8].*|aarch64)$") + IF(CMAKE_SYSTEM_NAME MATCHES "^(Android|Linux)$" AND CPUINFO_TARGET_PROCESSOR MATCHES "^(armv[5-8].*|aarch64)$") ADD_EXECUTABLE(auxv-dump tools/auxv-dump.c) CPUINFO_TARGET_ENABLE_C99(auxv-dump) CPUINFO_TARGET_RUNTIME_LIBRARY(auxv-dump)