From ace05ce4e3bcee8ff4d6204f4dac835f86f17d4a Mon Sep 17 00:00:00 2001
From: Matthew Dwyer <Mluckydwyer@users.noreply.github.com>
Date: Tue, 25 Oct 2022 02:07:41 -0500
Subject: [PATCH] Fix Linux aarch64 support on GCC with lax vector conversions
---
CMakeLists.txt | 7 +++++++
common/cmake/gnu.cmake | 1 +
2 files changed, 8 insertions(+)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 36f77a5520..86343eaae6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -167,6 +167,13 @@ IF (APPLE)
ENDIF()
ENDIF()
+IF (UNIX)
+ IF (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
+ MESSAGE(STATUS "Building for ARM64")
+ SET(EMBREE_ARM ON)
+ ENDIF()
+ENDIF()
+
SET(EMBREE_TASKING_SYSTEM "TBB" CACHE STRING "Selects tasking system")
SET(EMBREE_TBB_COMPONENT "tbb" CACHE STRING "The TBB component/library name.")
diff --git a/common/cmake/gnu.cmake b/common/cmake/gnu.cmake
index 1b2682d9eb..00ace8152d 100644
--- a/common/cmake/gnu.cmake
+++ b/common/cmake/gnu.cmake
@@ -28,6 +28,7 @@ ENDIF()
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
IF (EMBREE_ARM)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsigned-char") # treat 'char' as 'signed char'
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flax-vector-conversions") # allow lax SIMD vector type conversions (required for aarch64 support)
ENDIF (EMBREE_ARM)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") # enables most warnings
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wformat -Wformat-security") # enables string format vulnerability warnings