From 2934b5529ea20a6d8a6274e6108371bcb3f8f251 Mon Sep 17 00:00:00 2001 From: james Date: Fri, 25 Aug 2023 12:44:17 +0100 Subject: [PATCH 1/7] When building for ARM processors on Linux no longer omit the `-m64` flag which isn't supported by compilers in this environment. --- build/ProductConfig.cmake | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/build/ProductConfig.cmake b/build/ProductConfig.cmake index 3f51fa68..1f817cb5 100644 --- a/build/ProductConfig.cmake +++ b/build/ProductConfig.cmake @@ -114,8 +114,12 @@ if (UNIX) endif() if(CMAKE_CL_64) - set(XMP_EXTRA_COMPILE_FLAGS "-m64") - set(XMP_EXTRA_LINK_FLAGS "-m64") + + if(NOT ${CMAKE_ARCH} MATCHES "ARM64") + set(XMP_EXTRA_COMPILE_FLAGS "-m64") + set(XMP_EXTRA_LINK_FLAGS "-m64") + endif() + if(CENTOS) set(XMP_PLATFORM_FOLDER "i80386linux_x64_centos") # add XMP_BUILDMODE_DIR to follow what other platforms do set(XMP_GCC_LIBPATH /opt/llvm/lib) @@ -136,8 +140,11 @@ if (UNIX) else() # running toolchain if(CMAKE_CL_64) - set(XMP_EXTRA_COMPILE_FLAGS "-m64") - set(XMP_EXTRA_LINK_FLAGS "-m64") + + if(NOT ${CMAKE_ARCH} MATCHES "ARM64") + set(XMP_EXTRA_COMPILE_FLAGS "-m64") + set(XMP_EXTRA_LINK_FLAGS "-m64") + endif() if(CENTOS) set(XMP_GCC_LIBPATH /opt/llvm/lib) From ee6eb65187d4abf9ebe2636bb77ec7ade40415d5 Mon Sep 17 00:00:00 2001 From: james Date: Fri, 25 Aug 2023 13:16:55 +0100 Subject: [PATCH 2/7] Fixes XMP_ENABLE_SECURE_SETTINGS not being respected --- build/shared/ToolchainGCC.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/shared/ToolchainGCC.cmake b/build/shared/ToolchainGCC.cmake index 4c7f6713..b88bc491 100644 --- a/build/shared/ToolchainGCC.cmake +++ b/build/shared/ToolchainGCC.cmake @@ -34,7 +34,7 @@ CMAKE_FORCE_CXX_COMPILER("${CMAKE_SYSTEM_LIBRARY_PATH}/bin/g++" GNU) set(CMAKE_MAKE_PROGRAMM "${CMAKE_SYSTEM_LIBRARY_PATH}/bin/make") # specify to use secure settings -set(XMP_ENABLE_SECURE_SETTINGS "ON") +set(XMP_ENABLE_SECURE_SETTINGS off) # search for programs in the build host directories set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) From ab4ea30b8f5cafbd8b32eec0fc9081d923451701 Mon Sep 17 00:00:00 2001 From: james Date: Fri, 25 Aug 2023 13:18:08 +0100 Subject: [PATCH 3/7] Secure setting was on by default. --- build/shared/ToolchainGCC.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/shared/ToolchainGCC.cmake b/build/shared/ToolchainGCC.cmake index b88bc491..4c7f6713 100644 --- a/build/shared/ToolchainGCC.cmake +++ b/build/shared/ToolchainGCC.cmake @@ -34,7 +34,7 @@ CMAKE_FORCE_CXX_COMPILER("${CMAKE_SYSTEM_LIBRARY_PATH}/bin/g++" GNU) set(CMAKE_MAKE_PROGRAMM "${CMAKE_SYSTEM_LIBRARY_PATH}/bin/make") # specify to use secure settings -set(XMP_ENABLE_SECURE_SETTINGS off) +set(XMP_ENABLE_SECURE_SETTINGS "ON") # search for programs in the build host directories set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) From 874b5a09b58c5eec13d01b4e19ef16233398ec69 Mon Sep 17 00:00:00 2001 From: james Date: Fri, 25 Aug 2023 13:18:39 +0100 Subject: [PATCH 4/7] Respect XMP_ENABLE_SECURE_SETTINGS setting --- build/ProductConfig.cmake | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/build/ProductConfig.cmake b/build/ProductConfig.cmake index 1f817cb5..220ace6f 100644 --- a/build/ProductConfig.cmake +++ b/build/ProductConfig.cmake @@ -177,7 +177,12 @@ if (UNIX) #set(CMAKE_CXX_COMPILER "/user/unicore/i80386linux/compiler/gcc4.4.4/linux2.6_32/bin/gcc") #set(XMP_GCC_LIBPATH /user/unicore/i80386linux/compiler/gcc4.4.4/linux2.6_32/lib) - set(XMP_PLATFORM_LINK "-z defs -Xlinker -Bsymbolic -Wl,--no-undefined ${XMP_EXTRA_LINK_FLAGS} ${XMP_TOOLCHAIN_LINK_FLAGS} -lrt -Wl,--no-as-needed -ldl -lpthread ${XMP_GCC_LIBPATH}/libssp.a") + set(XMP_PLATFORM_LINK "-z defs -Xlinker -Bsymbolic -Wl,--no-undefined ${XMP_EXTRA_LINK_FLAGS} ${XMP_TOOLCHAIN_LINK_FLAGS} -lrt -Wl,--no-as-needed -ldl -lpthread") + + if (XMP_ENABLE_SECURE_SETTINGS) + set (XMP_PLATFORM_LINK "${XMP_PLATFORM_LINK} ${XMP_GCC_LIBPATH}/libssp.a") + endif() + if(CENTOS) set(XMP_PLATFORM_LINK " -lc++abi ${XMP_PLATFORM_LINK}") endif() From de142876445c5a686556b5c792a32f324c8e5747 Mon Sep 17 00:00:00 2001 From: james Date: Fri, 25 Aug 2023 13:20:24 +0100 Subject: [PATCH 5/7] Add arm settings for endianness --- source/EndianUtils.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/EndianUtils.hpp b/source/EndianUtils.hpp index 48d92812..41121c6b 100644 --- a/source/EndianUtils.hpp +++ b/source/EndianUtils.hpp @@ -49,6 +49,9 @@ #elif __GNUC__ && (__sparc__) #define kBigEndianHost 1 #define kLittleEndianHost 0 + #elif __GNUC__ && (__arm__) + #define kBigEndianHost 1 + #define kLittleEndianHost 0 #else #error "Must define kBigEndianHost as 0 or 1 in the makefile." #endif From 02a8149bb8b97ffd8a5f186f23b3b6c845559956 Mon Sep 17 00:00:00 2001 From: james Date: Fri, 25 Aug 2023 13:58:40 +0100 Subject: [PATCH 6/7] The flag is actually __aarch64__ not __arm__ --- source/EndianUtils.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/EndianUtils.hpp b/source/EndianUtils.hpp index 41121c6b..aa8acc7f 100644 --- a/source/EndianUtils.hpp +++ b/source/EndianUtils.hpp @@ -49,7 +49,7 @@ #elif __GNUC__ && (__sparc__) #define kBigEndianHost 1 #define kLittleEndianHost 0 - #elif __GNUC__ && (__arm__) + #elif __GNUC__ && (__aarch64__) #define kBigEndianHost 1 #define kLittleEndianHost 0 #else From c015c64f95be16578ebda18ad392bd02cf81a6ee Mon Sep 17 00:00:00 2001 From: james Date: Wed, 30 Aug 2023 12:27:02 +0100 Subject: [PATCH 7/7] Check if Arm64 before emitting -m 32 too --- build/ProductConfig.cmake | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/build/ProductConfig.cmake b/build/ProductConfig.cmake index 220ace6f..488a2e57 100644 --- a/build/ProductConfig.cmake +++ b/build/ProductConfig.cmake @@ -128,7 +128,9 @@ if (UNIX) set(XMP_GCC_LIBPATH /user/unicore/i80386linux_x64/compiler/gcc4.8.2/linux3.10_64/lib64) endif() else() - set(XMP_EXTRA_LINK_FLAGS "-m32 -mtune=i686") + if(NOT ${CMAKE_ARCH} MATCHES "ARM64") + set(XMP_EXTRA_LINK_FLAGS "-m32 -mtune=i686") + endif() if(CENTOS) set(XMP_GCC_LIBPATH /opt/llvm/lib) set(XMP_PLATFORM_FOLDER "i80386linux_centos") # add XMP_BUILDMODE_DIR to follow what other platforms do @@ -154,8 +156,10 @@ if (UNIX) set(XMP_GCC_LIBPATH /user/unicore/i80386linux_x64/compiler/gcc4.8.2/linux3.10_64/lib64) endif() else() - set(XMP_EXTRA_COMPILE_FLAGS "-m32 -mtune=i686") - set(XMP_EXTRA_LINK_FLAGS "-m32") + if(NOT ${CMAKE_ARCH} MATCHES "ARM64") + set(XMP_EXTRA_COMPILE_FLAGS "-m32 -mtune=i686") + set(XMP_EXTRA_LINK_FLAGS "-m32") + endif() if(CENTOS) set(XMP_GCC_LIBPATH /opt/llvm/lib) set(XMP_PLATFORM_FOLDER "i80386linux_centos") # add XMP_BUILDMODE_DIR to follow what other platforms do