From ade97ac3e1cc8fd57e6e8b58924ef6f191222254 Mon Sep 17 00:00:00 2001 From: Xavier Del Campo <90845888+midokura-xavi92@users.noreply.github.com> Date: Wed, 17 Jan 2024 07:56:04 +0000 Subject: [PATCH] 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. --- wamr-compiler/CMakeLists.txt | 37 ++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/wamr-compiler/CMakeLists.txt b/wamr-compiler/CMakeLists.txt index 4e5b76f86..f7617fed9 100644 --- a/wamr-compiler/CMakeLists.txt +++ b/wamr-compiler/CMakeLists.txt @@ -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)