summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Miedema <thomasmiedema@gmail.com>2015-03-02 11:09:33 -0600
committerAustin Seipp <austin@well-typed.com>2015-04-14 07:53:56 -0500
commit335c02562af599434ff42e5f3dac160a76229999 (patch)
tree1c0abab41b0479469c7a91082b5859829265a511
parentd86de4a856f61ad4172d6fbdd28ae5906b0d2168 (diff)
downloadhaskell-335c02562af599434ff42e5f3dac160a76229999.tar.gz
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 (cherry picked from commit 1dfab7a8ace5f09f00f8fb695932b4324e88b822)
-rw-r--r--aclocal.m420
-rw-r--r--configure.ac4
-rw-r--r--docs/users_guide/flags.xml2
3 files changed, 18 insertions, 8 deletions
diff --git a/aclocal.m4 b/aclocal.m4
index f3f74060e9..049a8462c4 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -2100,21 +2100,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 4f88de0990..b25e3ff29b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -514,7 +514,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
@@ -531,7 +531,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 a7f4473e45..f019854c1f 100644
--- a/docs/users_guide/flags.xml
+++ b/docs/users_guide/flags.xml
@@ -2722,6 +2722,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>
@@ -2734,7 +2735,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>