[commit: ghc] master: Fix detection of llvm-x.x (1dfab7a)

git at git.haskell.org git at git.haskell.org
Mon Mar 2 17:16:04 UTC 2015


Repository : ssh://git@git.haskell.org/ghc

On branch  : master
Link       : http://ghc.haskell.org/trac/ghc/changeset/1dfab7a8ace5f09f00f8fb695932b4324e88b822/ghc

>---------------------------------------------------------------

commit 1dfab7a8ace5f09f00f8fb695932b4324e88b822
Author: Thomas Miedema <thomasmiedema at gmail.com>
Date:   Mon Mar 2 11:09:33 2015 -0600

    Fix detection of llvm-x.x
    
    Summary:
    Four bug fixes and a little refactoring.
    * `find -perm \mode` should be `find -perm /mode` (#9697)
    
    * `find -regex '$3' should be `find -regex "$3"` (#7661)
    
    From `man sh` on my system (Ubuntu 14.04):
    "Enclosing characters in single quotes preserves the literal meaning of all
    the characters ..."
    
    * LlcCmd and OptCmd should be passed to ghc, using `-pgmlo` and `-pgmlc`, for
      detection of #9439.
    
    * -pgmlo and -pgmlc were undocumented because of an xml tag misplacement.
    
    Test Plan:
    The aclocal.m4 macro has seen about 10 iterations since its inception. Without a
    testsuite, I can't guarantee this version is bug free either. It's all pretty
    frustrating.
    
    Reviewers: bgamari, austin
    
    Reviewed By: austin
    
    Subscribers: thomie
    
    Differential Revision: https://phabricator.haskell.org/D683
    
    GHC Trac Issues: #9697, #7661, #9439


>---------------------------------------------------------------

1dfab7a8ace5f09f00f8fb695932b4324e88b822
 aclocal.m4                 | 20 +++++++++++++++-----
 configure.ac               |  4 ++--
 docs/users_guide/flags.xml |  2 +-
 3 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/aclocal.m4 b/aclocal.m4
index 73b8890..a4944c1 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -2095,21 +2095,31 @@ AC_DEFUN([XCODE_VERSION],[
 AC_DEFUN([FIND_LLVM_PROG],[
     FP_ARG_WITH_PATH_GNU_PROG_OPTIONAL_NOTARGET([$1], [$2], [$3])
     if test "$$1" = ""; then
+        echo -n "checking for $3-x.x... "
         save_IFS=$IFS
         IFS=":;"
+        if test "$windows" = YES; then
+            PERM=
+            MODE=
+        else
+            # Search for executables.
+            PERM="-perm"
+            MODE="/+x"
+        fi
         for p in ${PATH}; do
             if test -d "${p}"; then
-                if test "$windows" = YES; then
-                    $1=`${FindCmd} "${p}" -type f -maxdepth 1 -regex '.*/$3-[[0-9]]\.[[0-9]]' -or -type l -maxdepth 1 -regex '.*/$3-[[0-9]]\.[[0-9]]' | ${SortCmd} -n | tail -1`
-                else
-                    $1=`${FindCmd} "${p}" -type f -perm \111 -maxdepth 1 -regex '.*/$3-[[0-9]]\.[[0-9]]' -or -type l -perm \111 -maxdepth 1 -regex '.*/$3-[[0-9]]\.[[0-9]]' | ${SortCmd} -n | tail -1`
-                fi
+                $1=`${FindCmd} "${p}" -maxdepth 1 \( -type f -o -type l \) ${PERM} ${MODE} -regex ".*/$3-[[0-9]]\.[[0-9]]" | ${SortCmd} -n | tail -1`
                 if test -n "$$1"; then
                     break
                 fi
             fi
         done
         IFS=$save_IFS
+        if test -n "$$1"; then
+            echo "$$1"
+        else
+            echo "no"
+        fi
     fi
 ])
 
diff --git a/configure.ac b/configure.ac
index f65d133..c64af90 100644
--- a/configure.ac
+++ b/configure.ac
@@ -508,7 +508,7 @@ then
     echo "main = putStrLn \"%function\"" > conftestghc.hs
 
     # Check whether LLVM backend is default for this platform
-    "${WithGhc}" conftestghc.hs 2>&1 >/dev/null
+    "${WithGhc}" -pgmlc="${LlcCmd}" -pgmlo="${OptCmd}" conftestghc.hs 2>&1 >/dev/null
     res=`./conftestghc`
     if test "x$res" = "x%object"
     then
@@ -525,7 +525,7 @@ then
 
     # -fllvm is not the default, but set a flag so the Makefile can check
     # -for it in the build flags later on
-    "${WithGhc}" -fforce-recomp -fllvm conftestghc.hs 2>&1 >/dev/null
+    "${WithGhc}" -fforce-recomp -pgmlc="${LlcCmd}" -pgmlo="${OptCmd}" -fllvm conftestghc.hs 2>&1 >/dev/null
     if test $? = 0
     then
         res=`./conftestghc`
diff --git a/docs/users_guide/flags.xml b/docs/users_guide/flags.xml
index 3d90479..4bf78b6 100644
--- a/docs/users_guide/flags.xml
+++ b/docs/users_guide/flags.xml
@@ -2731,6 +2731,7 @@
             <entry>Use <replaceable>cmd</replaceable> as the C compiler</entry>
             <entry>dynamic</entry>
             <entry>-</entry>
+          </row>
             <row>
               <entry><option>-pgmlo</option> <replaceable>cmd</replaceable></entry>
               <entry>Use <replaceable>cmd</replaceable> as the LLVM optimiser</entry>
@@ -2743,7 +2744,6 @@
               <entry>dynamic</entry>
               <entry>-</entry>
             </row>
-          </row>
           <row>
             <entry><option>-pgms</option> <replaceable>cmd</replaceable></entry>
             <entry>Use <replaceable>cmd</replaceable> as the splitter</entry>



More information about the ghc-commits mailing list