Cleanup code

Revmoved lots of trailing spaces, etc.

Change-Id: I5adee31b96a8c4b1375d93d386abde8e5f15f184
diff --git a/samples/PhotoEditor/jni/Android.mk b/samples/PhotoEditor/jni/Android.mk
index 794c7b8..e1db8b8 100644
--- a/samples/PhotoEditor/jni/Android.mk
+++ b/samples/PhotoEditor/jni/Android.mk
@@ -41,7 +41,7 @@
 endif
 
 LOCAL_CFLAGS := -Werror \
-    -I$(OUT)/../../../../frameworks/compile/libbcc/include 
+    -I$(OUT)/../../../../frameworks/compile/libbcc/include
 
 LOCAL_LDFLAGS := -L$(OUT)/system/lib
 
diff --git a/samples/PhotoEditor/jni/_jni.cpp b/samples/PhotoEditor/jni/_jni.cpp
index 63fd3d6..a5935bb 100644
--- a/samples/PhotoEditor/jni/_jni.cpp
+++ b/samples/PhotoEditor/jni/_jni.cpp
@@ -72,19 +72,19 @@
     }
   #endif
     bccRegisterSymbolCallback(script_ref, lookupSymbol, NULL);
-   
+
   #ifdef OLD_BCC
     if (bccPrepareExecutable(script_ref, "/data/data/com.android.photoeditor/photoeditorLLVM.oBCC", 0)) {
         LOGE("Error! Cannot bccPrepareExecutable");
         return JNI_FALSE;
     }
-  #else 
+  #else
     if (bccPrepareExecutable(script_ref, "/data/data/com.android.photoeditor/", "photoeditorLLVM", 0)) {
         LOGE("Error! Cannot bccPrepareExecutable");
         return JNI_FALSE;
     }
   #endif // OLD_BCC
-   
+
     for(i=0; i<JNI_max; i++) {
         new_func_ptr[i] = bccGetFuncAddr(script_ref, JNIFunc[i].func_name);
         if (new_func_ptr[i] == NULL) {
@@ -106,7 +106,7 @@
 
     return JNI_TRUE;
 #else
-   
+
     return JNI_FALSE;
 
 #endif // !__GDK__ && !__NOGDK__
diff --git a/samples/PhotoEditor/src/com/android/photoeditor/PhotoEditor.java b/samples/PhotoEditor/src/com/android/photoeditor/PhotoEditor.java
index 074b882..5add524 100644
--- a/samples/PhotoEditor/src/com/android/photoeditor/PhotoEditor.java
+++ b/samples/PhotoEditor/src/com/android/photoeditor/PhotoEditor.java
@@ -41,9 +41,9 @@
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);
-       
+
         if (ImageUtils.gdk())
-	{
+        {
           // HACK: create faked view in order to read bitcode in resource
                 View view = new View(getApplication());
                 byte[] pgm;
diff --git a/samples/bitmap-plasma-llvm/jni/Application.mk b/samples/bitmap-plasma-llvm/jni/Application.mk
index 5b6cab6..58a5cc4 100644
--- a/samples/bitmap-plasma-llvm/jni/Application.mk
+++ b/samples/bitmap-plasma-llvm/jni/Application.mk
@@ -1,5 +1,5 @@
 # The ARMv7 is significanly faster due to the use of the hardware FPU
-APP_ABI := armeabi armeabi-v7a 
+APP_ABI := armeabi armeabi-v7a
 #APP_ABI := mips mips-r2
 #APP_ABI := x86
 APP_PLATFORM := android-8
diff --git a/samples/bitmap-plasma-llvm/jni/plasma.cpp b/samples/bitmap-plasma-llvm/jni/plasma.cpp
index d05990f..e487c7f 100644
--- a/samples/bitmap-plasma-llvm/jni/plasma.cpp
+++ b/samples/bitmap-plasma-llvm/jni/plasma.cpp
@@ -419,7 +419,7 @@
       count = 0, time_sum = 0;
     last_mode = use_llvm;
 #endif // !__NOGDK__
-   
+
     if (!init) {
         init_tables();
         stats_init(&stats);
@@ -439,7 +439,7 @@
     if ((ret = AndroidBitmap_lockPixels(env, bitmap, &pixels)) < 0) {
         LOGE("AndroidBitmap_lockPixels() failed ! error=%d", ret);
     }
-   
+
 #if !defined(__NOGDK__)
     if (use_llvm) {
       double start_jit = now_ms();
@@ -463,22 +463,22 @@
           LOGE("Error! Cannot bccLinkBC");
           return -1;
         }
-     #endif	 
-	 
-	bccRegisterSymbolCallback(script_ref, lookupSymbol, NULL);
-	 
-     #ifdef OLD_BCC 
+     #endif
+
+        bccRegisterSymbolCallback(script_ref, lookupSymbol, NULL);
+
+     #ifdef OLD_BCC
         if (bccPrepareExecutable(script_ref, "/data/data/com.example.plasma.llvm/plasmaLLVM.oBCC", 0)) {
           LOGE("Error! Cannot bccPrepareExecutable");
           return -1;
         }
-     #else        	 
+     #else
         if (bccPrepareExecutable(script_ref, "/data/data/com.example.plasma.llvm/", "plasmaLLVM", 0)) {
           LOGE("Error! Cannot bccPrepareExecutable");
           return -1;
         }
      #endif // OLD_BCC
-	 
+
         native_function = (pPlasmaType)bccGetFuncAddr(script_ref, "fill_plasma");
         if (native_function == NULL) {
           LOGE("Error! Cannot find fill_plasma()");
@@ -493,7 +493,7 @@
           LOGI("LLVM Time JIT: %.2lf , Run: %.2lf, Avg: %.2lf, count=%d", start_run-start_jit, diff, time_sum / count, count+1);
       time_sum += diff + start_run - start_jit;
     } 
-    else 
+    else
 #endif // !__NOGDK__
 
     {
diff --git a/samples/bitmap-plasma-llvm/src/com/example/plasma/llvm/Plasma.java b/samples/bitmap-plasma-llvm/src/com/example/plasma/llvm/Plasma.java
index a627a1c..1614482 100644
--- a/samples/bitmap-plasma-llvm/src/com/example/plasma/llvm/Plasma.java
+++ b/samples/bitmap-plasma-llvm/src/com/example/plasma/llvm/Plasma.java
@@ -93,7 +93,7 @@
 
     public PlasmaView(Context context) {
         super(context);
-       
+
         llvm_mode = gdk();
 
         mStartTime = System.currentTimeMillis();
@@ -125,8 +125,8 @@
             } catch(IOException e) {
                 throw new Resources.NotFoundException();
             }
-	}
-       
+        }
+
         paint = new Paint();
         paint.setTextSize(40);
     }
diff --git a/samples/quake/jni/Android.mk b/samples/quake/jni/Android.mk
index 27dd381..893c96d 100644
--- a/samples/quake/jni/Android.mk
+++ b/samples/quake/jni/Android.mk
@@ -33,9 +33,9 @@
 LOCAL_MODULE_TAGS := optional
 
 LOCAL_CFLAGS := -Werror \
-	-I$(OUT)/../../../../frameworks/compile/libbcc/include \
-	-I$(OUT)/../../../../frameworks/native/include \
-	-I$(OUT)/../../../../system/core/include
+    -I$(OUT)/../../../../frameworks/compile/libbcc/include \
+    -I$(OUT)/../../../../frameworks/native/include \
+    -I$(OUT)/../../../../system/core/include
 
 LOCAL_C_INCLUDES := $(call include-path-for, wilhelm)
 
diff --git a/samples/quake/jni/Application.mk b/samples/quake/jni/Application.mk
index a64dbba..bb9ec4d 100644
--- a/samples/quake/jni/Application.mk
+++ b/samples/quake/jni/Application.mk
@@ -1,5 +1,5 @@
-APP_ABI := armeabi armeabi-v7a 
-#APP_ABI := mips mips-r2 
+APP_ABI := armeabi armeabi-v7a
+#APP_ABI := mips mips-r2
 #APP_ABI := x86
 APP_PLATFORM := android-9
 
diff --git a/samples/quake/jni/masterMain.cpp b/samples/quake/jni/masterMain.cpp
index 67e9697..8bd08ce 100644
--- a/samples/quake/jni/masterMain.cpp
+++ b/samples/quake/jni/masterMain.cpp
@@ -92,7 +92,7 @@
     return pAndroidQuit();
 }
 
-jboolean 
+jboolean
 gdk(JNIEnv *env, jobject obj)
 {
 #if !defined(__NOGDK__)
@@ -148,13 +148,13 @@
     time = newtime;
 
     bccRegisterSymbolCallback(script_ref, lookupSymbol, NULL);
-   
+
  #ifdef OLD_BCC
     if (bccPrepareExecutable(script_ref, "/data/data/com.android.quake.llvm/quakeLLVM.oBCC", 0)) {
         LOGE("Error! Cannot bccPrepareExecutable");
         return JNI_FALSE;
     }
- #else  
+ #else
     if (bccPrepareExecutable(script_ref, "/data/data/com.android.quake.llvm/", "quakeLLVM", 0)) {
         LOGE("Error! Cannot bccPrepareExecutable");
         return JNI_FALSE;
@@ -227,15 +227,15 @@
     }
     newtime = Sys_FloatTime ();
     double findptrtime = newtime - time;
-    
+
     LOGI("LLVM JIT time = %lf (%lf + %lf + %lf)\n", readtime+compiletime+findptrtime, 
-	   readtime, compiletime, findptrtime);
+           readtime, compiletime, findptrtime);
 
     return JNI_TRUE;
 #else
-   
+
     return JNI_FALSE;
-   
+
 #endif // !__GDK__ && !__NOGDK__
 }
 
diff --git a/samples/quake/jni/net_udp.cpp b/samples/quake/jni/net_udp.cpp
index aaf470f..f0a6c0e 100644
--- a/samples/quake/jni/net_udp.cpp
+++ b/samples/quake/jni/net_udp.cpp
@@ -63,7 +63,7 @@
 #include <net/if.h>
 
 //
-// system dependent 
+// system dependent
 //
 
 #define SOCK_DGRAM_PORTABLE    2
@@ -71,15 +71,15 @@
 #define FIONBIO_PORTABLE       0x5421
 #define FIONREAD_PORTABLE      0x541B
 #define ECONNREFUSED_PORTABLE  111
-#define SOL_SOCKET_PORTABLE     1 
-#define SO_BROADCAST_PORTABLE   6 
+#define SOL_SOCKET_PORTABLE     1
+#define SO_BROADCAST_PORTABLE   6
 
 #define SOCK_DGRAM_MIPS    1
 #define SOCK_STREAM_MIPS   2
 #define FIONBIO_MIPS       0x667e
 #define FIONREAD_MIPS      0x467f
 #define ECONNREFUSED_MIPS  146
-#define SOL_SOCKET_MIPS     0xffff 
+#define SOL_SOCKET_MIPS     0xffff
 #define SO_BROADCAST_MIPS   0x0020
 
 
@@ -92,13 +92,13 @@
 #if !defined(__GDK__)
 int socket_portable(int domain, int type, int protocol)
 {
-#if defined(__mips__) 
+#if defined(__mips__)
    switch(type) {
-   case SOCK_DGRAM_PORTABLE: 
-      type = SOCK_DGRAM_MIPS; 
+   case SOCK_DGRAM_PORTABLE:
+      type = SOCK_DGRAM_MIPS;
       break;
    case SOCK_STREAM_PORTABLE:
-      type = SOCK_STREAM_MIPS; 
+      type = SOCK_STREAM_MIPS;
       break;
    }
 #endif // __mips__
@@ -110,47 +110,47 @@
 #if defined(__mips__)
    switch(cmd) {
     case FIONBIO_PORTABLE:
-      cmd = FIONBIO_MIPS; 
+      cmd = FIONBIO_MIPS;
       break;
     case FIONREAD_PORTABLE:
       cmd = FIONREAD_MIPS;
-    //ToDo: there are a lot more diff!  
+    //ToDo: there are a lot more diff!
    }
 #endif // __mips__
    return ioctl(fd, cmd, arg);
 }
-   
+
 int errno_portable()
 {
    int ret = errno;
 #if defined(__mips__)
    switch(ret) {
-   case ECONNREFUSED_PORTABLE: 
+   case ECONNREFUSED_PORTABLE:
       ret = ECONNREFUSED_MIPS;
       break;
      //ToDo: there are a lot more diff!
    }
-#endif // __mips__   
+#endif // __mips__
    return ret;
 }
-   
+
 int setsockopt_portable(int s, int level, int optname, const void *optval, socklen_t optlen)
 {
 #if defined(__mips__)
    switch(level) {
-   case SOL_SOCKET_PORTABLE: 
+   case SOL_SOCKET_PORTABLE:
       level = SOL_SOCKET_MIPS;
       break;
      //ToDo: there are a lot more diff!
    }
-   
+
    switch(optname) {
-   case SO_BROADCAST_PORTABLE: 
+   case SO_BROADCAST_PORTABLE:
       optname = SO_BROADCAST_MIPS;
       break;
      //ToDo: there are a lot more diff!
    }
-#endif   
+#endif
    return setsockopt(s, level, optname, optval, optlen);
 }
 
diff --git a/samples/quake/jni/sys_android.cpp b/samples/quake/jni/sys_android.cpp
index 5d418ea..7afb55c 100644
--- a/samples/quake/jni/sys_android.cpp
+++ b/samples/quake/jni/sys_android.cpp
@@ -67,14 +67,14 @@
 
 
 //
-// system dependent 
-//    
+// system dependent
+//
 
 struct stat_portable {
     unsigned long long st_dev;
     unsigned char __pad0[4];
 
-    unsigned long __st_ino;  
+    unsigned long __st_ino;
     unsigned int st_mode;
     unsigned int st_nlink;
 
@@ -159,26 +159,26 @@
    pst_portable->st_mtime_nsec = pst_mips->st_mtime_nsec;
    pst_portable->st_ctime = pst_mips->st_ctime;
    pst_portable->st_ctime_nsec = pst_mips->st_ctime_nsec;
-   pst_portable->st_ino = pst_mips->st_ino; 
+   pst_portable->st_ino = pst_mips->st_ino;
 }
 #endif // __mips__
-			
+
 int stat_portable(const char *path, struct stat_portable *st)
 {
 #if !defined(__mips__)
    struct stat st_orig;
    //assert(sizeof(st_orig) == sizeof(*st));   //ToDo: and offset of each field !
-   
+
    return stat(path, (struct stat*)st);
 #else
    struct stat/*_mips*/ st_mips;
    //assert(sizeof(st_mips) == sizeof(*st));   //ToDo: and offset of each field !
-   
+
    int ret = stat(path, &st_mips);
    __copy_mips_stat_to_portable((struct stat_portable *)st, &st_mips);
-   
+
    return ret;
-#endif   
+#endif
 }
 
 int fstat_portable(int fd, struct stat_portable *st)
@@ -186,17 +186,17 @@
 #if !defined(__mips__)
    struct stat st_orig;
    //assert(sizeof(st_orig) == sizeof(*st));   //ToDo: and offset of each field !
-   
+
    return fstat(fd, (struct stat*)st);
 #else
    struct stat/*_mips*/ st_mips;
    //assert(sizeof(st_mips) == sizeof(*st));   //ToDo: and offset of each field !
-   
+
    int ret = fstat(fd, &st_mips);
    __copy_mips_stat_to_portable((struct stat_portable *)st, &st_mips);
-   
+
    return ret;
-#endif   
+#endif
 }
 
 #endif // !__GDK__
diff --git a/samples/quake/src/com/android/quake/llvm/QuakeLib.java b/samples/quake/src/com/android/quake/llvm/QuakeLib.java
index 664acf6..5bdcfc7 100644
--- a/samples/quake/src/com/android/quake/llvm/QuakeLib.java
+++ b/samples/quake/src/com/android/quake/llvm/QuakeLib.java
@@ -136,10 +136,10 @@
      static {
          System.loadLibrary("quake");
      }
-   
+
      public QuakeLib(byte[] pgm, int pgmLength) {
-	 if (gdk())
-            compile_bc(pgm, pgmLength);
+         if (gdk())
+             compile_bc(pgm, pgmLength);
      }
 
      public static native boolean gdk();
diff --git a/toolchains/llvm/setup-arm.mk b/toolchains/llvm/setup-arm.mk
new file mode 100644
index 0000000..14a27b0
--- /dev/null
+++ b/toolchains/llvm/setup-arm.mk
@@ -0,0 +1,39 @@
+# FIXME(Nowar): Use llvm-ndk-cc instead of clang.
+#TARGET_CC := $(TOOLCHAIN_PREBUILT_ROOT)/llvm-ndk-cc
+#TARGET_CFLAGS :=
+#
+#TARGET_CXX := $(TARGET_CC)
+#TARGET_CXXFLAGS := $(TARGET_CFLAGS) -fno-exceptions -fno-rtti -D __cplusplus
+#
+#TARGET_LD := $(TOOLCHAIN_PREBUILT_ROOT)/llvm-ndk-link
+#TARGET_LDFLAGS :=
+
+TARGET_C_INCLUDES := $(GDK_PLATFORMS_ROOT)/android-portable/arch-llvm/usr/include
+
+# Workaround before the required headers are in the above dir.
+##TARGET_C_INCLUDES += $(NDK_ROOT)/platforms/android-9/arch-arm/usr/include
+TARGET_C_INCLUDES += $(NDK_ROOT)/sources/cxx-stl/system/include
+TARGET_C_INCLUDES += $(NDK_ROOT)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/lib/gcc/arm-linux-androideabi/4.4.3/include
+#TARGET_C_INCLUDES += $(NDK_ROOT)/toolchains/mips-linux-android-4.4.3/prebuilt/linux-x86/lib/gcc/mips-linux-android/4.4.3/include
+#TARGET_C_INCLUDES += $(NDK_ROOT)/toolchains/x86-4.4.3/prebuilt/linux-x86/lib/gcc/i686-android-linux/4.4.3/include
+
+TARGET_CC       := $(OUT)/../../../host/linux-x86/bin/clang
+TARGET_CFLAGS   := -ccc-host-triple armv7-none-linux-gnueabi
+#TARGET_CFLAGS   := -ccc-host-triple mipsel-none-linux-gnueabi
+#TARGET_CFLAGS   := -ccc-host-triple i686-unknown-linux
+TARGET_CFLAGS   += -emit-llvm
+TARGET_CFLAGS += -D_MIPS_SZLONG=32  ## Workaround for arch-mips
+
+TARGET_CXX      := $(OUT)/../../../host/linux-x86/bin/clang++
+TARGET_CXXFLAGS := $(TARGET_CFLAGS) -fno-exceptions -fno-rtti -D __cplusplus -ffunction-sections -fdata-sections
+
+TARGET_LD       := $(OUT)/../../../host/linux-x86/bin/llvm-link
+TARGET_LDFLAGS  :=
+
+TARGET_STRIP    := $(OUT)/../../../host/linux-x86/bin/opt
+
+define cmd-link-bitcodes
+$(TARGET_LD) \
+  $(call host-path, $(PRIVATE_OBJECTS)) | \
+  $(TARGET_STRIP) -strip -o $(call host-path,$@)
+endef
diff --git a/toolchains/llvm/setup-mips.mk b/toolchains/llvm/setup-mips.mk
new file mode 100644
index 0000000..dfdcf04
--- /dev/null
+++ b/toolchains/llvm/setup-mips.mk
@@ -0,0 +1,39 @@
+# FIXME(Nowar): Use llvm-ndk-cc instead of clang.
+#TARGET_CC := $(TOOLCHAIN_PREBUILT_ROOT)/llvm-ndk-cc
+#TARGET_CFLAGS :=
+#
+#TARGET_CXX := $(TARGET_CC)
+#TARGET_CXXFLAGS := $(TARGET_CFLAGS) -fno-exceptions -fno-rtti -D __cplusplus
+#
+#TARGET_LD := $(TOOLCHAIN_PREBUILT_ROOT)/llvm-ndk-link
+#TARGET_LDFLAGS :=
+
+TARGET_C_INCLUDES := $(GDK_PLATFORMS_ROOT)/android-portable/arch-llvm/usr/include
+
+# Workaround before the required headers are in the above dir.
+##TARGET_C_INCLUDES += $(NDK_ROOT)/platforms/android-9/arch-arm/usr/include
+TARGET_C_INCLUDES += $(NDK_ROOT)/sources/cxx-stl/system/include
+#TARGET_C_INCLUDES += $(NDK_ROOT)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/lib/gcc/arm-linux-androideabi/4.4.3/include
+TARGET_C_INCLUDES += $(NDK_ROOT)/toolchains/mips-linux-android-4.4.3/prebuilt/linux-x86/lib/gcc/mips-linux-android/4.4.3/include
+#TARGET_C_INCLUDES += $(NDK_ROOT)/toolchains/x86-4.4.3/prebuilt/linux-x86/lib/gcc/i686-android-linux/4.4.3/include
+
+TARGET_CC       := $(OUT)/../../../host/linux-x86/bin/clang
+#TARGET_CFLAGS   := -ccc-host-triple armv7-none-linux-gnueabi
+TARGET_CFLAGS   := -ccc-host-triple mipsel-none-linux-gnueabi
+#TARGET_CFLAGS   := -ccc-host-triple i686-unknown-linux
+TARGET_CFLAGS   += -emit-llvm
+TARGET_CFLAGS += -D_MIPS_SZLONG=32  ## Workaround for arch-mips
+
+TARGET_CXX      := $(OUT)/../../../host/linux-x86/bin/clang++
+TARGET_CXXFLAGS := $(TARGET_CFLAGS) -fno-exceptions -fno-rtti -D __cplusplus -ffunction-sections -fdata-sections
+
+TARGET_LD       := $(OUT)/../../../host/linux-x86/bin/llvm-link
+TARGET_LDFLAGS  :=
+
+TARGET_STRIP    := $(OUT)/../../../host/linux-x86/bin/opt
+
+define cmd-link-bitcodes
+$(TARGET_LD) \
+  $(call host-path, $(PRIVATE_OBJECTS)) | \
+  $(TARGET_STRIP) -strip -o $(call host-path,$@)
+endef
diff --git a/toolchains/llvm/setup-x86.mk b/toolchains/llvm/setup-x86.mk
new file mode 100644
index 0000000..033588c
--- /dev/null
+++ b/toolchains/llvm/setup-x86.mk
@@ -0,0 +1,39 @@
+# FIXME(Nowar): Use llvm-ndk-cc instead of clang.
+#TARGET_CC := $(TOOLCHAIN_PREBUILT_ROOT)/llvm-ndk-cc
+#TARGET_CFLAGS :=
+#
+#TARGET_CXX := $(TARGET_CC)
+#TARGET_CXXFLAGS := $(TARGET_CFLAGS) -fno-exceptions -fno-rtti -D __cplusplus
+#
+#TARGET_LD := $(TOOLCHAIN_PREBUILT_ROOT)/llvm-ndk-link
+#TARGET_LDFLAGS :=
+
+TARGET_C_INCLUDES := $(GDK_PLATFORMS_ROOT)/android-portable/arch-llvm/usr/include
+
+# Workaround before the required headers are in the above dir.
+##TARGET_C_INCLUDES += $(NDK_ROOT)/platforms/android-9/arch-arm/usr/include
+TARGET_C_INCLUDES += $(NDK_ROOT)/sources/cxx-stl/system/include
+#TARGET_C_INCLUDES += $(NDK_ROOT)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/lib/gcc/arm-linux-androideabi/4.4.3/include
+#TARGET_C_INCLUDES += $(NDK_ROOT)/toolchains/mips-linux-android-4.4.3/prebuilt/linux-x86/lib/gcc/mips-linux-android/4.4.3/include
+TARGET_C_INCLUDES += $(NDK_ROOT)/toolchains/x86-4.4.3/prebuilt/linux-x86/lib/gcc/i686-android-linux/4.4.3/include
+
+TARGET_CC       := $(OUT)/../../../host/linux-x86/bin/clang
+#TARGET_CFLAGS   := -ccc-host-triple armv7-none-linux-gnueabi
+#TARGET_CFLAGS   := -ccc-host-triple mipsel-none-linux-gnueabi
+TARGET_CFLAGS   := -ccc-host-triple i686-unknown-linux
+TARGET_CFLAGS   += -emit-llvm
+TARGET_CFLAGS += -D_MIPS_SZLONG=32  ## Workaround for arch-mips
+
+TARGET_CXX      := $(OUT)/../../../host/linux-x86/bin/clang++
+TARGET_CXXFLAGS := $(TARGET_CFLAGS) -fno-exceptions -fno-rtti -D __cplusplus -ffunction-sections -fdata-sections
+
+TARGET_LD       := $(OUT)/../../../host/linux-x86/bin/llvm-link
+TARGET_LDFLAGS  :=
+
+TARGET_STRIP    := $(OUT)/../../../host/linux-x86/bin/opt
+
+define cmd-link-bitcodes
+$(TARGET_LD) \
+  $(call host-path, $(PRIVATE_OBJECTS)) | \
+  $(TARGET_STRIP) -strip -o $(call host-path,$@)
+endef
diff --git a/toolchains/llvm/setup.mk b/toolchains/llvm/setup.mk
deleted file mode 100644
index 5a3fbc5..0000000
--- a/toolchains/llvm/setup.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-# FIXME(Nowar): Use llvm-ndk-cc instead of clang.
-#TARGET_CC := $(TOOLCHAIN_PREBUILT_ROOT)/llvm-ndk-cc
-#TARGET_CFLAGS :=
-#
-#TARGET_CXX := $(TARGET_CC)
-#TARGET_CXXFLAGS := $(TARGET_CFLAGS) -fno-exceptions -fno-rtti -D __cplusplus
-#
-#TARGET_LD := $(TOOLCHAIN_PREBUILT_ROOT)/llvm-ndk-link
-#TARGET_LDFLAGS :=
-
-TARGET_C_INCLUDES := $(GDK_PLATFORMS_ROOT)/android-portable/arch-llvm/usr/include
-
-# Workaround before the required headers are in the above dir.
-TARGET_C_INCLUDES += $(NDK_ROOT)/platforms/android-9/arch-arm/usr/include \
-                     $(NDK_ROOT)/sources/cxx-stl/system/include \
-                     $(NDK_ROOT)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/lib/gcc/arm-linux-androideabi/4.4.3/include
-
-TARGET_CC       := $(OUT)/../../../host/linux-x86/bin/clang
-TARGET_CFLAGS   := -ccc-host-triple armv7-none-linux-gnueabi -emit-llvm
-
-TARGET_CXX      := $(OUT)/../../../host/linux-x86/bin/clang++
-TARGET_CXXFLAGS := $(TARGET_CFLAGS) -fno-exceptions -fno-rtti -D __cplusplus
-
-TARGET_LD       := $(OUT)/../../../host/linux-x86/bin/llvm-link
-TARGET_LDFLAGS  :=
-
-define cmd-link-bitcodes
-$(TARGET_LD) \
-  $(call host-path, $(PRIVATE_OBJECTS)) \
-  -o $(call host-path,$@)
-endef
diff --git a/toolchains/llvm/setup.mk b/toolchains/llvm/setup.mk
new file mode 120000
index 0000000..f8f72e9
--- /dev/null
+++ b/toolchains/llvm/setup.mk
@@ -0,0 +1 @@
+setup-arm.mk
\ No newline at end of file