configure : LLVM and LD detections improvements (#10234).
authorErik de Castro Lopo <erikd@mega-nerd.com>
Wed, 8 Apr 2015 05:11:38 +0000 (15:11 +1000)
committerErik de Castro Lopo <erikd@mega-nerd.com>
Fri, 10 Apr 2015 20:45:07 +0000 (06:45 +1000)
* distrib/configure.ac.in : Detect correct version of LLVM tools as
  was done for the top level configure.ac in 42448e3757.
* aclocal.m4 : Add a FIND_LD macro that can be used in both
  configure scripts.
* Use new FIND_LD macro in both configure scripts.

Signed-off-by: Erik de Castro Lopo <erikd@mega-nerd.com>
Test Plan: validate on amd64-linux and armhf-linux.

Reviewers: rwbarton, austin

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D828

GHC Trac Issues: #10234

aclocal.m4
configure.ac
distrib/configure.ac.in

index c247f91..226e15a 100644 (file)
@@ -2114,6 +2114,28 @@ AC_DEFUN([FIND_LLVM_PROG],[
     fi
 ])
 
+# FIND_LD
+# Find the version of `ld` to use. This is used in both in the top level
+# configure.ac and in distrib/configure.ac.in.
+#
+# $1 = the variable to set
+#
+AC_DEFUN([FIND_LD],[
+    FP_ARG_WITH_PATH_GNU_PROG([LD], [ld], [ld])
+    case $target in
+        arm*linux*)
+            # Arm requires use of the binutils ld.gold linker.
+            # This case should catch at least arm-unknown-linux-gnueabihf and
+            # arm-linux-androideabi.
+            FP_ARG_WITH_PATH_GNU_PROG([LD_GOLD], [ld.gold], [ld.gold])
+            $1="$LD_GOLD"
+            ;;
+        *)
+            $1="$LD"
+            ;;
+    esac
+])
+
 # FIND_GHC_BOOTSTRAP_PROG()
 # --------------------------------
 # Parse the bootstrap GHC's compier settings file for the location of things
index fc6b3c2..d5d9ab3 100644 (file)
@@ -437,19 +437,7 @@ AC_SUBST([HaskellCPPArgs])
 
 dnl ** Which ld to use?
 dnl --------------------------------------------------------------
-FP_ARG_WITH_PATH_GNU_PROG([LD], [ld], [ld])
-case $target in
-arm*linux*)
-       # Arm requires use of the binutils ld.gold linker.
-       # This case should catch at least arm-unknown-linux-gnueabihf and
-       # arm-linux-androideabi.
-       FP_ARG_WITH_PATH_GNU_PROG([LD_GOLD], [ld.gold], [ld.gold])
-       LdCmd="$LD_GOLD"
-       ;;
-*)
-       LdCmd="$LD"
-       ;;
-esac
+FIND_LD([LdCmd])
 AC_SUBST([LdCmd])
 
 dnl ** Which nm to use?
@@ -487,17 +475,18 @@ esac
 # tools we are looking for. In the past, GHC supported a number of
 # versions of LLVM simultaneously, but that stopped working around
 # 3.5/3.6 release of LLVM.
-llvm_version=3.6
+LlvmVersion=3.6
+AC_SUBST([LlvmVersion])
 
 dnl ** Which LLVM llc to use?
 dnl --------------------------------------------------------------
-FIND_LLVM_PROG([LLC], [llc], [llc], [$llvm_version])
+FIND_LLVM_PROG([LLC], [llc], [llc], [$LlvmVersion])
 LlcCmd="$LLC"
 AC_SUBST([LlcCmd])
 
 dnl ** Which LLVM opt to use?
 dnl --------------------------------------------------------------
-FIND_LLVM_PROG([OPT], [opt], [opt], [$llvm_version])
+FIND_LLVM_PROG([OPT], [opt], [opt], [$LlvmVersion])
 OptCmd="$OPT"
 AC_SUBST([OptCmd])
 
index ab5c299..0fcd869 100644 (file)
@@ -68,10 +68,27 @@ FP_CPP_CMD_WITH_ARGS(HaskellCPPCmd, HaskellCPPArgs)
 AC_SUBST([HaskellCPPCmd])
 AC_SUBST([HaskellCPPArgs])
 
+# Here is where we re-target which specific version of the LLVM
+# tools we are looking for. In the past, GHC supported a number of
+# versions of LLVM simultaneously, but that stopped working around
+# 3.5/3.6 release of LLVM.
+LlvmVersion=@LlvmVersion@
+
+dnl ** Which LLVM llc to use?
+dnl --------------------------------------------------------------
+FIND_LLVM_PROG([LLC], [llc], [llc], [$LlvmVersion])
+LlcCmd="$LLC"
+AC_SUBST([LlcCmd])
+
+dnl ** Which LLVM opt to use?
+dnl --------------------------------------------------------------
+FIND_LLVM_PROG([OPT], [opt], [opt], [$LlvmVersion])
+OptCmd="$OPT"
+AC_SUBST([OptCmd])
+
 dnl ** Which ld to use?
 dnl --------------------------------------------------------------
-FP_ARG_WITH_PATH_GNU_PROG([LD], [ld], [ld])
-LdCmd="$LD"
+FIND_LD([LdCmd])
 AC_SUBST([LdCmd])
 
 FP_GCC_VERSION