Update BUILD.gn configs to support ARM[64] builds. Bug: b/114402930 Change-Id: Id7eedc6b01f40d24188d514755d5c89689b24abb Reviewed-on: https://swiftshader-review.googlesource.com/20568 Tested-by: Stephen Lanham <slan@google.com> Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/BUILD.gn b/BUILD.gn index 7af9f6a..d218425 100644 --- a/BUILD.gn +++ b/BUILD.gn
@@ -88,7 +88,7 @@ "-march=x86-64", "-mtune=generic", ] - } else { # 32 bit version + } else if (target_cpu == "x86") { # 32 bit version cflags += [ "-m32", "-msse2",
diff --git a/src/Common/BUILD.gn b/src/Common/BUILD.gn index 6b23321..87b7005 100644 --- a/src/Common/BUILD.gn +++ b/src/Common/BUILD.gn
@@ -21,7 +21,7 @@ "/wd4201", # nameless struct/union "/wd5030", # attribute is not recognized ] - } else { + } else if (target_cpu == "x86" || target_cpu == "x64") { cflags = [ "-msse2" ] } }
diff --git a/src/Common/Thread.hpp b/src/Common/Thread.hpp index 14ccfd5..b8280f1 100644 --- a/src/Common/Thread.hpp +++ b/src/Common/Thread.hpp
@@ -241,7 +241,7 @@ return InterlockedExchange64(target, value); #else int ret; - __asm__ __volatile__("lock; xchg8 %0,(%1)" : "=r" (ret) :"r" (target), "0" (value) : "memory" ); + __asm__ __volatile__("lock; xchg8 %x0,(%x1)" : "=r" (ret) :"r" (target), "0" (value) : "memory" ); return ret; #endif } @@ -252,7 +252,7 @@ return InterlockedExchange((volatile long*)target, (long)value); #else int ret; - __asm__ __volatile__("lock; xchgl %0,(%1)" : "=r" (ret) :"r" (target), "0" (value) : "memory" ); + __asm__ __volatile__("lock; xchgl %x0,(%x1)" : "=r" (ret) :"r" (target), "0" (value) : "memory" ); return ret; #endif }
diff --git a/src/Main/BUILD.gn b/src/Main/BUILD.gn index ee76067..61054d4 100644 --- a/src/Main/BUILD.gn +++ b/src/Main/BUILD.gn
@@ -29,7 +29,7 @@ "-Wno-sign-compare", ] } - } else { + } else if (target_cpu == "x86" || target_cpu == "x64") { cflags = [ "-msse2" ] defines = [ "NO_SANITIZE_FUNCTION=__attribute__((no_sanitize(\"function\")))" ]
diff --git a/src/OpenGL/libEGL/BUILD.gn b/src/OpenGL/libEGL/BUILD.gn index bbbd2eb..3184f9b 100644 --- a/src/OpenGL/libEGL/BUILD.gn +++ b/src/OpenGL/libEGL/BUILD.gn
@@ -28,7 +28,10 @@ defines += [ "EGLAPI=" ] } else { - cflags = [ "-Wno-sign-compare" ] + cflags = [ + "-Wno-sign-compare", + "-Wno-unused-function", + ] if (!is_clang) { cflags += [ "-Wno-unused-but-set-variable" ] }
diff --git a/src/Reactor/BUILD.gn b/src/Reactor/BUILD.gn index 97446fc..1084f27 100644 --- a/src/Reactor/BUILD.gn +++ b/src/Reactor/BUILD.gn
@@ -152,7 +152,7 @@ "/wd4201", # nameless struct/union "/wd4245", # conversion from int to unsigned int (llvm) ] - } else { + } else if (target_cpu == "x86" || target_cpu == "x64") { cflags = [ "-Wno-unused-local-typedef", "-msse2",
diff --git a/src/Reactor/SubzeroReactor.cpp b/src/Reactor/SubzeroReactor.cpp index 3d49658..0103a25 100644 --- a/src/Reactor/SubzeroReactor.cpp +++ b/src/Reactor/SubzeroReactor.cpp
@@ -103,7 +103,7 @@ static bool detectARM() { - #if defined(__arm__) + #if defined(__arm__) || defined(__aarch64__) return true; #elif defined(__i386__) || defined(__x86_64__) return false; @@ -372,6 +372,8 @@ assert(sizeof(void*) == 8 && elfHeader->e_machine == EM_X86_64); #elif defined(__arm__) assert(sizeof(void*) == 4 && elfHeader->e_machine == EM_ARM); + #elif defined(__aarch64__) + assert(sizeof(void*) == 8 && elfHeader->e_machine == EM_AARCH64); #else #error "Unsupported platform" #endif
diff --git a/src/Renderer/BUILD.gn b/src/Renderer/BUILD.gn index 04ccd2e..6b95b11 100644 --- a/src/Renderer/BUILD.gn +++ b/src/Renderer/BUILD.gn
@@ -22,7 +22,7 @@ "/wd4324", # structure was padded due to alignment specifier "/wd5030", # attribute is not recognized ] - } else { + } else if (target_cpu == "x86" || target_cpu == "x64") { cflags = [ "-msse2", "-Wno-sign-compare",
diff --git a/third_party/LLVM/BUILD.gn b/third_party/LLVM/BUILD.gn index 9883df3..c09a83e 100644 --- a/third_party/LLVM/BUILD.gn +++ b/third_party/LLVM/BUILD.gn
@@ -54,7 +54,7 @@ cflags += [ "-Wno-error" ] } - if (is_clang) { + if (is_clang && (target_cpu == "x86" || target_cpu == "x64")) { cflags += [ "-msse2", "-Wno-header-hygiene",