Fix build-*llvm.sh to build either mclinker 2.4.0 or the coming 2.5.0

Differences between 2.4.0 and 2.5.0:
1. binary location is different
2. Use ld.lite in 2.5.0 (1/10 size of 2.4.0) and rename it to ld.mcld

Also misc fixes:
1. Build llvm-as as well
2. One typo about -z

Change-Id: I175ad1390b5c16c6d46cc754c7105de874fb4af1
diff --git a/build/tools/build-device-llvm.sh b/build/tools/build-device-llvm.sh
index 93aedf1..669488f 100755
--- a/build/tools/build-device-llvm.sh
+++ b/build/tools/build-device-llvm.sh
@@ -238,7 +238,12 @@
   fail_panic "Couldn't compile mclinker"
 
   run mkdir -p $TOOLCHAIN_BUILD_PREFIX/$abi
-  run cp -f $MCLINKER_BUILD_OUT/optimized/ld.mcld $TOOLCHAIN_BUILD_PREFIX/$abi
+  if [ -f $MCLINKER_BUILD_OUT/tools/ld.lite/ld.lite ]; then
+    run cp -f $MCLINKER_BUILD_OUT/tools/ld.lite/ld.lite $TOOLCHAIN_BUILD_PREFIX/$abi/ld.mcld
+  else
+    run cp -f $MCLINKER_BUILD_OUT/optimized/ld.mcld $TOOLCHAIN_BUILD_PREFIX/$abi
+  fi
+  fail_panic "Couldn't copy mclinker"
 
   # Strip
   STRIP=$BUILD_OUT/ndk-standalone-$arch/bin/$toolchain_prefix-strip
diff --git a/build/tools/build-llvm.sh b/build/tools/build-llvm.sh
index 407ef2a..8503f1a 100755
--- a/build/tools/build-llvm.sh
+++ b/build/tools/build-llvm.sh
@@ -314,6 +314,9 @@
     fail_panic "Couldn't configure mclinker"
 
     dump "Building : mclinker"
+    if [ "$MINGW" = "yes" ]; then
+        MAKE_FLAGS="$MAKE_FLAGS LIBS=-lshlwapi" # lib/Object/SectionMap.cpp needs PathMatchSpec to replace fnmatch()
+    fi
     cd $MCLINKER_BUILD_OUT
     run make -j$NUM_JOBS $MAKE_FLAGS CXXFLAGS="$CXXFLAGS"
     fail_panic "Couldn't compile mclinker"
@@ -343,11 +346,17 @@
 rm -rf $TOOLCHAIN_BUILD_PREFIX/lib/B*.dylib
 rm -rf $TOOLCHAIN_BUILD_PREFIX/lib/LLVMH*.so
 rm -rf $TOOLCHAIN_BUILD_PREFIX/lib/LLVMH*.dylib
-rm -rf $TOOLCHAIN_BUILD_PREFIX/bin/ld.bcc*
+if [ -f $TOOLCHAIN_BUILD_PREFIX/bin/ld.lite${HOST_EXE} ]; then
+    # rename ld.lite to ld.mcld
+    rm -rf $TOOLCHAIN_BUILD_PREFIX/bin/ld.[bm]*
+    mv -f $TOOLCHAIN_BUILD_PREFIX/bin/ld.lite${HOST_EXE} $TOOLCHAIN_BUILD_PREFIX/bin/ld.mcld${HOST_EXE}
+else
+    rm -rf $TOOLCHAIN_BUILD_PREFIX/bin/ld.bcc
+fi
 rm -rf $TOOLCHAIN_BUILD_PREFIX/share
 
 UNUSED_LLVM_EXECUTABLES="
-bugpoint c-index-test clang-check clang-format clang-tblgen lli llvm-as llvm-bcanalyzer
+bugpoint c-index-test clang-check clang-format clang-tblgen lli llvm-bcanalyzer
 llvm-config llvm-config-host llvm-cov llvm-diff llvm-dwarfdump llvm-extract llvm-ld
 llvm-mc llvm-nm llvm-mcmarkup llvm-objdump llvm-prof llvm-ranlib llvm-readobj llvm-rtdyld
 llvm-size llvm-stress llvm-stub llvm-symbolizer llvm-tblgen macho-dump cloog"
diff --git a/build/tools/prebuilt-common.sh b/build/tools/prebuilt-common.sh
index a87b0c8..31bf12e 100644
--- a/build/tools/prebuilt-common.sh
+++ b/build/tools/prebuilt-common.sh
@@ -1195,7 +1195,7 @@
 arch_in_unknown_archs()
 {
     local UNKNOWN_ARCH=$(find_ndk_unknown_archs | grep $1)
-    if [ -z $UNKNOWN_ARCH ]; then
+    if [ -z "$UNKNOWN_ARCH" ]; then
         echo "no"
     else
         echo "yes"