From 485dba86d2519cc4855e01db279e127d0221f88a Mon Sep 17 00:00:00 2001 From: Erik de Castro Lopo <erikd@mega-nerd.com> Date: Wed, 8 Apr 2015 15:11:38 +1000 Subject: [PATCH] configure : LLVM and LD detections improvements (#10234). * 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 | 22 ++++++++++++++++++++++ configure.ac | 21 +++++---------------- distrib/configure.ac.in | 21 +++++++++++++++++++-- 3 files changed, 46 insertions(+), 18 deletions(-) diff --git a/aclocal.m4 b/aclocal.m4 index c247f917e07a..226e15aec556 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -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 diff --git a/configure.ac b/configure.ac index fc6b3c217e4f..d5d9ab303276 100644 --- a/configure.ac +++ b/configure.ac @@ -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]) diff --git a/distrib/configure.ac.in b/distrib/configure.ac.in index ab5c29933add..0fcd869491ea 100644 --- a/distrib/configure.ac.in +++ b/distrib/configure.ac.in @@ -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 -- GitLab