From 8a0d887f9153034794c176231b890461c07986b2 Mon Sep 17 00:00:00 2001
From: Zbynek Slajchrt <zbynek.slajchrt@oracle.com>
Date: Fri, 13 Apr 2018 10:14:59 +0200
Subject: [PATCH] LLVM build scripts treat spaces in paths correctly

---
 .../llvm_tools/llvm-c++                       |  4 +-
 .../llvm_tools/llvm-cc                        |  2 +-
 .../llvm_tools/llvm-fc                        |  2 +-
 .../llvm_tools/llvm-helper                    | 40 +++++++++++--------
 4 files changed, 28 insertions(+), 20 deletions(-)

diff --git a/com.oracle.truffle.r.native/llvm_tools/llvm-c++ b/com.oracle.truffle.r.native/llvm_tools/llvm-c++
index cd595e9cfe..a6cd013f89 100755
--- a/com.oracle.truffle.r.native/llvm_tools/llvm-c++
+++ b/com.oracle.truffle.r.native/llvm_tools/llvm-c++
@@ -53,9 +53,9 @@ else
   get_llvm_tool
   unamestr=`uname`
   if [[ "$unamestr" == 'Linux' ]]; then
-    llvm_args="-stdlib=libc++ -I/usr/include/libcxxabi $llvm_args"
+    llvm_args="-stdlib=libc++ -I/usr/include/libcxxabi ${llvm_args[@]}"
   fi
-  runit $llvm_tool_bin $llvm_args
+  runit $llvm_tool_bin "${llvm_args[@]}"
   ecode=$?
   if [[ $ecode -ne 0 ]]; then
     exit $ecode
diff --git a/com.oracle.truffle.r.native/llvm_tools/llvm-cc b/com.oracle.truffle.r.native/llvm_tools/llvm-cc
index 6534f76c0f..8b83f95858 100755
--- a/com.oracle.truffle.r.native/llvm_tools/llvm-cc
+++ b/com.oracle.truffle.r.native/llvm_tools/llvm-cc
@@ -51,7 +51,7 @@ then
 else
   llvm_tool=clang
   get_llvm_tool
-  runit $llvm_tool_bin $llvm_args
+  runit $llvm_tool_bin "${llvm_args[@]}"
   ecode=$?
   if [[ $ecode -ne 0 ]]; then
     exit $ecode
diff --git a/com.oracle.truffle.r.native/llvm_tools/llvm-fc b/com.oracle.truffle.r.native/llvm_tools/llvm-fc
index 2ee09e49c9..7a6bfea588 100755
--- a/com.oracle.truffle.r.native/llvm_tools/llvm-fc
+++ b/com.oracle.truffle.r.native/llvm_tools/llvm-fc
@@ -69,7 +69,7 @@ function ll_to_bc() {
   llvm_ir_bc_file=${d}/${f%%.*}.bc
 }
 
-runit $FASTR_LLVM_GFORTRAN -fplugin=$FASTR_LLVM_DRAGONEGG -fplugin-arg-dragonegg-emit-ir $llvm_args
+runit $FASTR_LLVM_GFORTRAN -fplugin=$FASTR_LLVM_DRAGONEGG -fplugin-arg-dragonegg-emit-ir "${llvm_args[@]}"
 ll_to_bc
 runit $FASTR_LLVM_GFORTRAN_LLVM_AS $llvm_ir_file -o $llvm_ir_bc_file
 runit rm $llvm_ir_file
diff --git a/com.oracle.truffle.r.native/llvm_tools/llvm-helper b/com.oracle.truffle.r.native/llvm_tools/llvm-helper
index 8633852412..7164390ac1 100644
--- a/com.oracle.truffle.r.native/llvm_tools/llvm-helper
+++ b/com.oracle.truffle.r.native/llvm_tools/llvm-helper
@@ -33,13 +33,13 @@ fi
 function runit() {
   if [ $run_mode == "echo" ]
   then
-    echo $@
+    echo "$@"
   elif [ $run_mode == "echorun" ]
   then
-    echo $@
-    $@
+    echo "$@"
+    "$@"
   else
-    $@
+    "$@"
   fi
 }
 
@@ -50,7 +50,8 @@ function runit() {
 # llvm_args: processed arguments to pass to llvm tool, e.g. clang
 
 function analyze_args() {
-  llvm_args="-g "
+  llvm_args_tmp=()	
+  llvm_args_tmp+=("-g")
   if [ $fortran -eq 1 ]
   then
     llvm_file_ext='.ll'
@@ -59,9 +60,9 @@ function analyze_args() {
   fi
 
   is_link=0
-  out_file_opt=""
+  out_file_opt=()
   llvm_ir_file=""
-  llvm_ir_file_opt=""
+  llvm_ir_file_opt=()
   c_opt_found=0
 
   while [[ $# -gt 0 ]]
@@ -69,7 +70,7 @@ function analyze_args() {
     case $1 in
       -c)
         c_opt_found=1
-        llvm_args+="$1 "
+        llvm_args_tmp+=("$1")
       ;;
       -o)
         shift
@@ -84,35 +85,42 @@ function analyze_args() {
 		then
 			llvm_ir_file=${d}/${f%%.*}
 		    llvm_ir_file="${llvm_ir_file}${llvm_file_ext}"
-         	llvm_ir_file_opt="-o ${llvm_ir_file}"
+         	llvm_ir_file_opt=("-o" $llvm_ir_file)
         else
-          out_file_opt="-o $p"
+          out_file_opt=("-o" "$p")
         fi
       ;;
       *)
-        llvm_args+="$1 "
+        llvm_args_tmp+=("$1")
       ;;
     esac
     shift
   done
 
+  llvm_args=()
   if [ $fortran -eq 1 ]
   then
     if [ $c_opt_found -eq 1 ]
     then
-      llvm_args="-S $llvm_ir_file_opt $llvm_args "
+      llvm_args+=("-S") 
+      llvm_args+=("${llvm_ir_file_opt[@]}")
+      llvm_args+=("${llvm_args_tmp[@]}")
     else
-      llvm_args="$out_file_opt $llvm_args "
+      llvm_args+=("${out_file_opt[@]}")
+      llvm_args+=("${llvm_args_tmp[@]}")
     fi
   else
     if [ $c_opt_found -eq 1 ]
     then
-      llvm_args="-emit-llvm $llvm_ir_file_opt $llvm_args "
+      llvm_args+=("-emit-llvm") 
+      llvm_args+=("${llvm_ir_file_opt[@]}")
+	  llvm_args+=("${llvm_args_tmp[@]}")
     else
-      llvm_args="$out_file_opt $llvm_args "
+      llvm_args+=("${out_file_opt[@]}")
+      llvm_args+=("${llvm_args_tmp[@]}")
     fi
   fi
-
+  
 }
 
 # Input arguments:
-- 
GitLab