diff --git a/ghcup b/ghcup index b1f24ba..0ef9a97 100755 --- a/ghcup +++ b/ghcup @@ -297,9 +297,10 @@ USAGE: ${SCRIPT} compile [FLAGS] FLAGS: - -h, --help Prints help information - -f, --force Overwrite already existing installation - -j, --jobs How many jobs for compilation + -h, --help Prints help information + -f, --force Overwrite already existing installation + -j, --jobs How many jobs for compilation + -c, --build-config Use the given config file as build config ARGS: E.g. \"8.4.3\" or \"8.6.1\" @@ -866,10 +867,12 @@ install_cabal() { } # @FUNCTION: compile_ghc -# @USAGE: +# @USAGE: [build.mk] # @DESCRIPTION: # Compile and installs the given GHC version with the # specified GHC bootstrap version. +# Can additionally take a custom file that will be used +# as build configuration. compile_ghc() { { [ -z "$1" ] || [ -z "$2" ] ;} && die "Internal error: not enough arguments given to compile_ghc" @@ -879,6 +882,14 @@ compile_ghc() { download_url="https://downloads.haskell.org/~ghc/${myghcver}/ghc-${myghcver}-src.tar.xz" download_tarball_name=$(basename "${download_url}") + if [ -n "$3" ] ; then + case "$3" in + /*) build_config=$3 ;; + *) build_config="$(pwd)/$3" ;; + esac + [ -e "${build_config}" ] || die "specified build config \"${build_config}\" file does not exist!" + fi + if ghc_already_installed "${myghcver}" ; then if ${FORCE} ; then echo "GHC already installed in ${inst_location}, overwriting!" @@ -898,15 +909,19 @@ compile_ghc() { edo tar -xf ghc-*-src.tar.xz edo cd "ghc-${myghcver}" - cat <<-EOF > mk/build.mk || die - BuildFlavour = quick - V=0 - BUILD_MAN = NO - BUILD_SPHINX_HTML = NO - BUILD_SPHINX_PDF = NO - HADDOCK_DOCS = YES - GhcWithLlvmCodeGen = YES - EOF + if [ -n "${build_config}" ] ; then + edo cat "${build_config}" > mk/build.mk + else + cat <<-EOF > mk/build.mk || die + V=0 + BUILD_MAN = NO + BUILD_SPHINX_HTML = NO + BUILD_SPHINX_PDF = NO + HADDOCK_DOCS = YES + GhcWithLlvmCodeGen = YES + EOF + fi + edo ./boot edo ./configure --prefix="${inst_location}" --with-ghc="${bootstrap_ghc}" @@ -1074,6 +1089,8 @@ while [ $# -gt 0 ] ; do shift 1;; -j|--jobs) JOBS=$2 shift 2;; + -c|--build-config) BUILD_CONFIG=$2 + shift 2;; *) GHC_VER=$1 BOOTSTRAP_GHC=$2 break;; @@ -1081,7 +1098,7 @@ while [ $# -gt 0 ] ; do done [ "${GHC_VER}" ] || compile_usage [ "${BOOTSTRAP_GHC}" ] || compile_usage - compile_ghc "${GHC_VER}" "${BOOTSTRAP_GHC}" + compile_ghc "${GHC_VER}" "${BOOTSTRAP_GHC}" "${BUILD_CONFIG}" break;; *) usage;; esac