From dfc6555fecddf409741b3f211b231ee923803029 Mon Sep 17 00:00:00 2001 From: Timon Kruiper Date: Tue, 14 Feb 2023 19:54:43 +0100 Subject: [PATCH] CMake: Add -mstrict-align flag to compile options for aarch64 build The aarch64 processor is set up to trap on unaligned memory accesses, so to enforce that the compiler correctly generates aligned accesses, the -mstrict-align flag is needed. We also need the -Wno-cast-align as there are some files in AK that don't build without the flag. --- Meta/CMake/serenity_compile_options.cmake | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Meta/CMake/serenity_compile_options.cmake b/Meta/CMake/serenity_compile_options.cmake index 603e4664e3..849a11e8e5 100644 --- a/Meta/CMake/serenity_compile_options.cmake +++ b/Meta/CMake/serenity_compile_options.cmake @@ -52,3 +52,10 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang$") # Clang doesn't add compiler_rt to the search path when compiling with -nostdlib. link_directories(${TOOLCHAIN_ROOT}/lib/clang/${CMAKE_CXX_COMPILER_VERSION}/lib/${SERENITY_ARCH}-pc-serenity/) endif() + +if ("${SERENITY_ARCH}" STREQUAL "aarch64") + # Unaligned memory access will cause a trap, so to make sure the compiler doesn't generate + # those unaligned accesses, the strict-align flag is added. + # FIXME: Remove -Wno-cast-align when we are able to build everything without this warning turned on. + add_compile_options(-mstrict-align -Wno-cast-align) +endif()