Fix go/ab builds for jb-mr1

This forces clang to avoid use init_array for all initialization rather than
splitting the initialization between init_array and ctors.

Local builds do this anyway, but for some reason the builds on go/ab do not.
Setting this flag makes the builds consistent (and unbroken on JB-MR1).

I already checked this in on cloud-android-current-release because I wanted
to test it before submitting.

Bug 25597090

Change-Id: I5a7195ba53531835fb8333b698ed39d21ff847a6
(cherry picked from commit 95c7182f118cc686df27c3f49db7d3c7908e0e59)
Reviewed-on: https://swiftshader-review.googlesource.com/4271
Reviewed-by: Nicolas Capens <capn@google.com>
Tested-by: Greg Hartman <ghartman@google.com>
diff --git a/src/Android.mk b/src/Android.mk
index a5f7778..61a4e42 100644
--- a/src/Android.mk
+++ b/src/Android.mk
@@ -82,7 +82,7 @@
 	OpenGL/common/Object.cpp \
 	OpenGL/common/MatrixStack.cpp \
 
-COMMON_CFLAGS := -DLOG_TAG=\"swiftshader\" -Wno-unused-parameter -Wno-implicit-exception-spec-mismatch -Wno-overloaded-virtual -fno-operator-names -msse2 -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -std=c++11
+COMMON_CFLAGS := -DLOG_TAG=\"swiftshader\" -Wno-unused-parameter -Wno-implicit-exception-spec-mismatch -Wno-overloaded-virtual -fno-operator-names -msse2 -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -std=c++11 -Xclang -fuse-init-array
 
 ifneq ($(filter gce_x86 gce calypso, $(TARGET_DEVICE)),)
 COMMON_CFLAGS += -DDISPLAY_LOGO=0
diff --git a/src/LLVM/Android.mk b/src/LLVM/Android.mk
index 2630a36..e573f11 100644
--- a/src/LLVM/Android.mk
+++ b/src/LLVM/Android.mk
@@ -399,7 +399,8 @@
 LOCAL_CFLAGS += -DLOG_TAG=\"libLLVM_swiftshader\" \
 	-Wno-unused-parameter \
 	-Wno-implicit-exception-spec-mismatch \
-	-Wno-overloaded-virtual
+	-Wno-overloaded-virtual \
+	-Xclang -fuse-init-array
 
 LOCAL_CFLAGS += -fomit-frame-pointer -Os -ffunction-sections -fdata-sections
 LOCAL_CFLAGS += -fno-operator-names -msse2 -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS
diff --git a/src/OpenGL/compiler/Android.mk b/src/OpenGL/compiler/Android.mk
index aeac3e6..65bfb0b 100644
--- a/src/OpenGL/compiler/Android.mk
+++ b/src/OpenGL/compiler/Android.mk
@@ -24,7 +24,8 @@
 	-msse2 \
 	-D__STDC_CONSTANT_MACROS \
 	-D__STDC_LIMIT_MACROS \
-	-std=c++11
+	-std=c++11 \
+	-Xclang -fuse-init-array
 
 COMMON_SRC_FILES := \
 	preprocessor/Diagnostics.cpp \
diff --git a/src/OpenGL/libEGL/Android.mk b/src/OpenGL/libEGL/Android.mk
index 0069eec..ff48bbd 100644
--- a/src/OpenGL/libEGL/Android.mk
+++ b/src/OpenGL/libEGL/Android.mk
@@ -7,7 +7,8 @@
 	-DEGL_EGLEXT_PROTOTYPES \
 	-Wno-unused-parameter \
 	-Wno-implicit-exception-spec-mismatch \
-	-Wno-overloaded-virtual
+	-Wno-overloaded-virtual \
+	-Xclang -fuse-init-array
 
 COMMON_SRC_FILES := \
 	Config.cpp \
diff --git a/src/OpenGL/libGLES_CM/Android.mk b/src/OpenGL/libGLES_CM/Android.mk
index 655d7ab..f547576 100644
--- a/src/OpenGL/libGLES_CM/Android.mk
+++ b/src/OpenGL/libGLES_CM/Android.mk
@@ -13,7 +13,8 @@
 	-DGL_GLEXT_PROTOTYPES \
 	-Wno-unused-parameter \
 	-Wno-implicit-exception-spec-mismatch \
-	-Wno-overloaded-virtual
+	-Wno-overloaded-virtual \
+	-Xclang -fuse-init-array
 
 
 COMMON_SRC_FILES := \
diff --git a/src/OpenGL/libGLESv2/Android.mk b/src/OpenGL/libGLESv2/Android.mk
index b1510d7..2b4158d 100644
--- a/src/OpenGL/libGLESv2/Android.mk
+++ b/src/OpenGL/libGLESv2/Android.mk
@@ -12,7 +12,8 @@
 	-DGL_GLEXT_PROTOTYPES \
 	-Wno-unused-parameter \
 	-Wno-implicit-exception-spec-mismatch \
-	-Wno-overloaded-virtual
+	-Wno-overloaded-virtual \
+	-Xclang -fuse-init-array
 
 COMMON_SRC_FILES := \
 	Buffer.cpp \