wamr-compiler: Fix non-x86{_64} host builds (#3037)

The build system assumed sizeof (void *) == 8 as a host system
running on a x86_64 architecture, x86 otherwise. However, this
assumption is invalid for most other architectures out there, such as
aarch64 or armv7l.

This PR refers to the CMAKE_HOST_SYSTEM_PROCESSOR variable
which, according to the documentation, typically refers to the output
from "uname -m" for Unix-like systems.
This commit is contained in:
Xavier Del Campo 2024-01-17 07:56:04 +00:00 committed by GitHub
parent 5c8b8a17a6
commit ade97ac3e1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -58,25 +58,38 @@ if (DEFINED WAMR_BUILD_AOT_FUNC_PREFIX)
add_definitions(-DAOT_FUNC_PREFIX="${WAMR_BUILD_AOT_FUNC_PREFIX}")
endif ()
# Set WAMR_BUILD_TARGET, currently values supported:
# "X86_64", "AMD_64", "X86_32", "ARM_32", "MIPS_32", "XTENSA_32"
if (NOT WAMR_BUILD_TARGET)
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
# Build as X86_64 by default in 64-bit platform
if (CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64")
set (WAMR_BUILD_TARGET "X86_64")
else ()
# Build as X86_32 by default in 32-bit platform
elseif (CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "i686")
set (WAMR_BUILD_TARGET "X86_32")
endif ()
elseif (CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "amd64")
set (WAMR_BUILD_TARGET "AMD_64")
elseif (CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "aarch64"
OR CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "arm64")
set (WAMR_BUILD_TARGET "AARCH64")
elseif (CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "arm.*")
message(STATUS "Assuming ${CMAKE_HOST_SYSTEM_PROCESSOR} as ARM_32")
set (WAMR_BUILD_TARGET "ARM_32")
elseif (CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "mips")
set (WAMR_BUILD_TARGET "MIPS_32")
elseif (CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "xtensa")
set (WAMR_BUILD_TARGET "XTENSA_32")
elseif (CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "riscv64")
set (WAMR_BUILD_TARGET "RISCV64")
elseif (CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "riscv")
message(STATUS "Assuming ${CMAKE_HOST_SYSTEM_PROCESSOR} as RISCV32")
set (WAMR_BUILD_TARGET "RISCV32")
else ()
message (FATAL_ERROR "Unsupported CMAKE_HOST_SYSTEM_PROCESSOR "
"${CMAKE_HOST_SYSTEM_PROCESSOR}")
endif()
if (WAMR_BUILD_PLATFORM STREQUAL "windows")
if (("${CMAKE_GENERATOR_PLATFORM}" STREQUAL "Win32"))
set (WAMR_BUILD_TARGET "X86_32")
endif()
elseif (WAMR_BUILD_PLATFORM STREQUAL "darwin")
if (CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "arm64")
set (WAMR_BUILD_TARGET "AARCH64")
endif ()
endif()
endif ()
endif ()
string(TOUPPER ${WAMR_BUILD_TARGET} WAMR_BUILD_TARGET)