Azure / azure-c-shared-utility

Azure C SDKs common code
Other
111 stars 203 forks source link

Building on ARM64 shows "target architecture: GENERIC" #615

Open JeffMill opened 1 year ago

JeffMill commented 1 year ago

here's why GENERIC is showing. azure c isn't detecting ARM64: azure_c_shared_utility\azure_iot_build_rules.cmake has:

if (MSVC)
    detect_architecture("_M_AMD64" x86_64)
    detect_architecture("_M_IX86" x86)
    detect_architecture("_M_ARM" ARM)
else()
    detect_architecture("__x86_64__" x86_64)
    detect_architecture("__i386__" x86)
    detect_architecture("__arm__" ARM)
endif()
if (NOT DEFINED ARCHITECTURE OR ARCHITECTURE STREQUAL "")
    set(ARCHITECTURE "GENERIC")
endif()
message(STATUS "target architecture: ${ARCHITECTURE}")

_M_ARM: Defined as the integer literal value 7 for compilations that target ARM processors. Undefined for ARM64, ARM64EC, and other targets.

This should also have a check for:

_M_ARM64: Defined as 1 for compilations that target ARM64. Otherwise, undefined.

ewertons commented 1 year ago

I see, the description you mentioned is coming from https://learn.microsoft.com/en-us/cpp/preprocessor/predefined-macros?view=msvc-170