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",