From b0b3e016e5c682ba06772c0978739130b8bb5e3d Mon Sep 17 00:00:00 2001 From: Albert Ou Date: Mon, 23 Sep 2019 16:59:27 -0700 Subject: [PATCH 01/10] scripts: Remove unnecessary experimental-blocks ignore Polluting the global .gitconfig is not appreciated in any case. --- scripts/init-submodules-no-riscv-tools.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/init-submodules-no-riscv-tools.sh b/scripts/init-submodules-no-riscv-tools.sh index 627c9285..cf3244c4 100755 --- a/scripts/init-submodules-no-riscv-tools.sh +++ b/scripts/init-submodules-no-riscv-tools.sh @@ -13,7 +13,6 @@ scripts_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" # in the submodule tree will get pulled anyway git config submodule.toolchains/riscv-tools.update none git config submodule.toolchains/esp-tools.update none -git config --global submodule.experimental-blocks.update none # Disable updates to the FireSim submodule until explicitly requested git config submodule.sims/firesim.update none # Disable updates to the hammer tool plugins repos @@ -24,7 +23,6 @@ git submodule update --init --recursive #--jobs 8 # unignore riscv-tools,catapult-shell2 globally git config --unset submodule.toolchains/riscv-tools.update git config --unset submodule.toolchains/esp-tools.update -git config --global --unset submodule.experimental-blocks.update git config --unset submodule.vlsi/hammer-cadence-plugins.update git config --unset submodule.vlsi/hammer-synopsys-plugins.update git config --unset submodule.vlsi/hammer-mentor-plugins.update From 2f1e5e994b5c867fac6a7c90fb1dc72dd4082b2d Mon Sep 17 00:00:00 2001 From: Albert Ou Date: Mon, 23 Sep 2019 23:47:39 -0700 Subject: [PATCH 02/10] toolchains: Flatten riscv-tools submodule This allows individual components to be better maintained following the deprecation of riscv-tools. Eliminate non-essential submodules. build-static-libfesvr.sh is no longer necessary since libfesvr.a is built as part of the riscv-isa-sim build. For simplicity, only riscv-gnu-toolchain is now pre-built instead of the entirety of riscv-tools. --- .gitmodules | 22 ++- scripts/build-static-libfesvr.sh | 21 --- scripts/build-toolchains.sh | 151 ++++++------------ scripts/build-util.sh | 89 +++++++++++ scripts/init-submodules-no-riscv-tools.sh | 28 ++-- toolchains/esp-tools | 1 - toolchains/riscv-tools | 1 - toolchains/riscv-tools/riscv-gnu-toolchain | 1 + .../riscv-tools/riscv-gnu-toolchain-prebuilt | 1 + toolchains/riscv-tools/riscv-isa-sim | 1 + toolchains/riscv-tools/riscv-pk | 1 + toolchains/riscv-tools/riscv-tests | 1 + 12 files changed, 174 insertions(+), 144 deletions(-) delete mode 100755 scripts/build-static-libfesvr.sh create mode 100644 scripts/build-util.sh delete mode 160000 toolchains/esp-tools delete mode 160000 toolchains/riscv-tools create mode 160000 toolchains/riscv-tools/riscv-gnu-toolchain create mode 160000 toolchains/riscv-tools/riscv-gnu-toolchain-prebuilt create mode 160000 toolchains/riscv-tools/riscv-isa-sim create mode 160000 toolchains/riscv-tools/riscv-pk create mode 160000 toolchains/riscv-tools/riscv-tests diff --git a/.gitmodules b/.gitmodules index 35addf76..d7691ffb 100644 --- a/.gitmodules +++ b/.gitmodules @@ -34,12 +34,22 @@ [submodule "generators/block-inclusivecache-sifive"] path = generators/sifive-cache url = https://github.com/sifive/block-inclusivecache-sifive.git -[submodule "toolchains/riscv-tools"] - path = toolchains/riscv-tools - url = https://github.com/freechipsproject/rocket-tools.git -[submodule "toolchains/esp-tools"] - path = toolchains/esp-tools - url = https://github.com/ucb-bar/esp-tools.git +[submodule "toolchains/riscv-tools/riscv-gnu-toolchain"] + path = toolchains/riscv-tools/riscv-gnu-toolchain + url = https://github.com/riscv/riscv-gnu-toolchain.git +[submodule "toolchains/riscv-tools/riscv-gnu-toolchain-prebuilt"] + path = toolchains/riscv-tools/riscv-gnu-toolchain-prebuilt + url = https://github.com/ucb-bar/chipyard-toolchain-prebuilt.git + shallow = true +[submodule "toolchains/riscv-tools/riscv-isa-sim"] + path = toolchains/riscv-tools/riscv-isa-sim + url = https://github.com/riscv/riscv-isa-sim.git +[submodule "toolchains/riscv-tools/riscv-pk"] + path = toolchains/riscv-tools/riscv-pk + url = https://github.com/riscv/riscv-pk.git +[submodule "toolchains/riscv-tools/riscv-tests"] + path = toolchains/riscv-tools/riscv-tests + url = https://github.com/riscv/riscv-tests.git [submodule "vlsi/hammer"] path = vlsi/hammer url = https://github.com/ucb-bar/hammer.git diff --git a/scripts/build-static-libfesvr.sh b/scripts/build-static-libfesvr.sh deleted file mode 100755 index d5b7f896..00000000 --- a/scripts/build-static-libfesvr.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -# This ungodly script surreptitiously builds an archive from existing fesvr objects -# Invoke from riscv-fesvr/build - -if [ "x$RISCV" = "x" ] -then - echo "Please set the RISCV environment variable to your preferred install path." - exit 1 -fi - -set -e - -objs=$(make -n -f <( - echo 'include Makefile' - echo '$(info $(value fesvr_objs))' - ) | head -n 1) - -ar rcs -o libfesvr.a $objs -cp -f libfesvr.a "${RISCV}/lib" - diff --git a/scripts/build-toolchains.sh b/scripts/build-toolchains.sh index 76680f79..734398c3 100755 --- a/scripts/build-toolchains.sh +++ b/scripts/build-toolchains.sh @@ -6,11 +6,8 @@ set -e set -o pipefail -unamestr=$(uname) RDIR=$(pwd) -: ${CHIPYARD_DIR:=$(pwd)} #default value is the PWD unless overridden - -PRECOMPILED_REPO_HASH=56a40961c98db5e8f904f15dc6efd0870bfefd9e +CHIPYARD_DIR="${CHIPYARD_DIR:-$(git rev-parse --show-toplevel)}" usage() { echo "usage: ${0} [riscv-tools | esp-tools | ec2fast]" @@ -23,18 +20,13 @@ usage() { error() { echo "${0##*/}: ${1}" >&2 } - -#taken from riscv-tools to check for open-ocd autoconf versions -check_version() { - "$1" --version | awk "NR==1 {if (\$NF>$2) {exit 0} exit 1}" || { - error "${3} requires at least ${1} version ${2}" - exit 1 - } +die() { + error "$1" + exit "${2:--1}" } TOOLCHAIN="riscv-tools" EC2FASTINSTALL="false" -FASTINSTALL="false" while getopts 'hH-:' opt ; do case $opt in @@ -64,33 +56,6 @@ elif [ -n "$1" ] ; then TOOLCHAIN="$1" fi - -if [ "$EC2FASTINSTALL" = "true" ]; then - if [ "$TOOLCHAIN" = "riscv-tools" ]; then - cd "$RDIR" - git clone https://github.com/firesim/firesim-riscv-tools-prebuilt.git - cd firesim-riscv-tools-prebuilt - git checkout "$PRECOMPILED_REPO_HASH" - PREBUILTHASH="$(cat HASH)" - git -C "${CHIPYARD_DIR}" submodule update --init "toolchains/${TOOLCHAIN}" - cd "$CHIPYARD_DIR/toolchains/$TOOLCHAIN" - GITHASH="$(git rev-parse HEAD)" - cd "$RDIR" - echo "prebuilt hash: $PREBUILTHASH" - echo "git hash: $GITHASH" - if [[ $PREBUILTHASH == $GITHASH && "$EC2FASTINSTALL" == "true" ]]; then - FASTINSTALL=true - echo "Using fast pre-compiled install for riscv-tools" - else - error 'error: hash of precompiled toolchain does not match the riscv-tools submodule hash' - exit -1 - fi - else - error "error: unsupported precompiled toolchain: ${TOOLCHAIN}" - exit -1 - fi -fi - INSTALL_DIR="$TOOLCHAIN-install" RISCV="$(pwd)/$INSTALL_DIR" @@ -98,52 +63,57 @@ RISCV="$(pwd)/$INSTALL_DIR" # install risc-v tools export RISCV="$RISCV" -if [ "$FASTINSTALL" = true ]; then - cd firesim-riscv-tools-prebuilt - ./installrelease.sh - mv distrib "$RISCV" - # copy HASH in case user wants it later - cp HASH "$RISCV" - cd "$RDIR" - rm -rf firesim-riscv-tools-prebuilt +cd "${CHIPYARD_DIR}" + +SRCDIR="$(pwd)/toolchains/${TOOLCHAIN}" +[ -d "${SRCDIR}" ] || die "unsupported toolchain: ${TOOLCHAIN}" +. ./scripts/build-util.sh + + +if [ "${EC2FASTINSTALL}" = true ] ; then + [ "${TOOLCHAIN}" = 'riscv-tools' ] || + die "unsupported precompiled toolchain: ${TOOLCHAIN}" + + echo '=> Fetching pre-built toolchain' + module=toolchains/riscv-tools/riscv-gnu-toolchain-prebuilt + git config --unset submodule."${module}".update || : + git submodule update --init --depth 1 "${module}" + + echo '==> Verifying toolchain version hash' + # Find commit hash without initializing the submodule + hashsrc="$(git ls-tree -d HEAD "${SRCDIR}/riscv-gnu-toolchain" | { + unset IFS && read -r _ type obj _ && + test -n "${obj}" && test "${type}" = 'commit' && echo "${obj}" + }; )" || + die 'failed to obtain riscv-gnu-toolchain submodule hash' "$?" + + read -r hashbin < "${module}/HASH" || + die 'failed to obtain riscv-gnu-toolchain-prebuilt hash' "$?" + + echo "==> ${hashsrc}" + [ "${hashsrc}" = "${hashbin}" ] || + die "pre-built version mismatch: ${hashbin}" + + echo '==> Installing pre-built toolchain' + "${MAKE}" -C "${module}" DESTDIR="${RISCV}" install + git submodule deinit "${module}" || : + else - mkdir -p "$RISCV" - git -C "${CHIPYARD_DIR}" submodule update --init --recursive "toolchains/${TOOLCHAIN}" #--jobs 8 - cd "$CHIPYARD_DIR/toolchains/$TOOLCHAIN" - - # Scale number of parallel make jobs by hardware thread count - ncpu="$(getconf _NPROCESSORS_ONLN || # GNU - getconf NPROCESSORS_ONLN || # *BSD, Solaris - nproc --all || # Linux - sysctl -n hw.ncpu || # *BSD, OS X - :)" 2>/dev/null - case ${ncpu} in - ''|*[^0-9]*) ;; # Ignore non-integer values - *) export MAKEFLAGS="-j ${ncpu}" ;; - esac - - #build the actual toolchain - #./build.sh - source build.common - echo "Starting RISC-V Toolchain build process" - build_project riscv-fesvr --prefix="${RISCV}" - build_project riscv-isa-sim --prefix="${RISCV}" --with-fesvr="${RISCV}" - build_project riscv-gnu-toolchain --prefix="${RISCV}" - CC= CXX= build_project riscv-pk --prefix="${RISCV}" --host=riscv64-unknown-elf - build_project riscv-tests --prefix="${RISCV}/riscv64-unknown-elf" - echo -e "\\nRISC-V Toolchain installation completed!" - - # build static libfesvr library for linking into firesim driver (or others) - cd riscv-fesvr/build - "${CHIPYARD_DIR}/scripts/build-static-libfesvr.sh" - cd "$RDIR" - # build linux toolchain - cd "$CHIPYARD_DIR/toolchains/$TOOLCHAIN/riscv-gnu-toolchain/build" - make linux - echo -e "\\nRISC-V Linux GNU Toolchain installation completed!" - + module_prepare riscv-gnu-toolchain qemu + module_build riscv-gnu-toolchain --prefix="${RISCV}" + echo '==> Building GNU/Linux toolchain' + module_make riscv-gnu-toolchain linux fi +module_all riscv-isa-sim --prefix="${RISCV}" +# build static libfesvr library for linking into firesim driver (or others) +echo '==> Installing libfesvr static library' +module_make riscv-isa-sim libfesvr.a +cp -p "${SRCDIR}/riscv-isa-sim/build/libfesvr.a" "${RISCV}/lib/" + +CC= CXX= module_all riscv-pk --prefix="${RISCV}" --host=riscv64-unknown-elf +module_all riscv-tests --prefix="${RISCV}/riscv64-unknown-elf" + cd "$RDIR" { @@ -153,20 +123,3 @@ cd "$RDIR" echo "export LD_LIBRARY_PATH=\${RISCV}/lib\${LD_LIBRARY_PATH:+":\${LD_LIBRARY_PATH}"}" } > env.sh echo "Toolchain Build Complete!" - -if [ "$FASTINSTALL" = "false" ]; then - # commands that can't run on EC2 (specifically, OpenOCD because of autoconf version_ - # see if the instance info page exists. if not, we are not on ec2. - # this is one of the few methods that works without sudo - if wget -T 1 -t 3 -O /dev/null http://169.254.169.254/; then - echo "Skipping RISC-V OpenOCD" - else - echo "Building RISC-V OpenOCD" - cd "$CHIPYARD_DIR/toolchains/$TOOLCHAIN" - check_version automake 1.14 "OpenOCD build" - check_version autoconf 2.64 "OpenOCD build" - build_project riscv-openocd --prefix="${RISCV}" --enable-remote-bitbang --enable-jtag_vpi --disable-werror - echo -e "\\nRISC-V OpenOCD installation completed!" - cd "$RDIR" - fi -fi diff --git a/scripts/build-util.sh b/scripts/build-util.sh new file mode 100644 index 00000000..5ca38147 --- /dev/null +++ b/scripts/build-util.sh @@ -0,0 +1,89 @@ +# Derived from +# https://github.com/riscv/riscv-tools/blob/master/build.common + +[ -n "${SRCDIR}" ] || exit 1 + +# Scale number of parallel make jobs by hardware thread count +ncpu="${NPROC:-$(getconf _NPROCESSORS_ONLN || # GNU + getconf NPROCESSORS_ONLN || # *BSD, Solaris + nproc --all || # Linux + sysctl -n hw.ncpu || # *BSD, OS X + :)}" 2>/dev/null +case ${ncpu} in +''|*[!0-9]*) ;; # Ignore non-integer values +*) export MAKEFLAGS="-j ${ncpu} ${MAKEFLAGS}" ;; +esac + +MAKE=$(command -v gmake || command -v make) +readonly MAKE + + +module_prepare() ( # [ignored-submodule..] + set -e + name=$1 + shift + + dir="${SRCDIR}/${name}" + echo "=> Starting ${name} build" + echo "==> Initializing ${name} submodule" + if [ $# -gt 0 ] ; then + git submodule update --init "${dir}" + while [ -n "$1" ] ; do + git -C "${dir}" config submodule."${1}".update none + shift + done + fi + git submodule update --init --recursive "${dir}" +) + +module_run() ( # + set -e + cd "${SRCDIR}/${1}" + shift + "$@" +) + +module_make() ( # + set -e -o pipefail + cd "${SRCDIR}/${1}/build" + shift + "${MAKE}" "$@" | tee "build-${1:-make}.log" +) + +module_build() ( # [configure-arg..] + set -e -o pipefail + name=$1 + shift + + cd "${SRCDIR}/${name}" + + if [ -e build ] ; then + echo "==> Removing existing ${name}/build directory" + rm -rf build + fi + if ! [ -e configure ] ; then + echo "==> Updating autoconf files for ${name}" + find . -iname configure.ac -type f -print0 | + while read -r -d '' file ; do + mkdir -p -- "${file%/*}/m4" + done + autoreconf -i + fi + + mkdir -p build + cd build + { + export PATH="${RISCV:+${RISCV}/bin:}${PATH}" + echo "==> Configuring ${name}" + ../configure "$@" + echo "==> Building ${name}" + "${MAKE}" + echo "==> Installing ${name}" + "${MAKE}" install + } 2>&1 | tee build.log +) + +module_all() { # [configure-arg..] + module_prepare "$1" + module_build "$@" +} diff --git a/scripts/init-submodules-no-riscv-tools.sh b/scripts/init-submodules-no-riscv-tools.sh index cf3244c4..e17b67ef 100755 --- a/scripts/init-submodules-no-riscv-tools.sh +++ b/scripts/init-submodules-no-riscv-tools.sh @@ -4,15 +4,13 @@ set -e set -o pipefail -unamestr=$(uname) -RDIR=$(pwd) -scripts_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +RDIR=$(git rev-parse --show-toplevel) -# ignore riscv-tools for submodule init recursive -# you must do this globally (otherwise riscv-tools deep -# in the submodule tree will get pulled anyway -git config submodule.toolchains/riscv-tools.update none -git config submodule.toolchains/esp-tools.update none +# Ignore toolchain submodules +cd "$RDIR" +for name in toolchains/*/*/ ; do + git config submodule."${name%/}".update none +done # Disable updates to the FireSim submodule until explicitly requested git config submodule.sims/firesim.update none # Disable updates to the hammer tool plugins repos @@ -20,9 +18,10 @@ git config submodule.vlsi/hammer-cadence-plugins.update none git config submodule.vlsi/hammer-synopsys-plugins.update none git config submodule.vlsi/hammer-mentor-plugins.update none git submodule update --init --recursive #--jobs 8 -# unignore riscv-tools,catapult-shell2 globally -git config --unset submodule.toolchains/riscv-tools.update -git config --unset submodule.toolchains/esp-tools.update +# Un-ignore toolchain submodules +for name in toolchains/*/*/ ; do + git config --unset submodule."${name%/}".update +done git config --unset submodule.vlsi/hammer-cadence-plugins.update git config --unset submodule.vlsi/hammer-synopsys-plugins.update git config --unset submodule.vlsi/hammer-mentor-plugins.update @@ -30,9 +29,6 @@ git config --unset submodule.vlsi/hammer-mentor-plugins.update # Renable firesim and init only the required submodules to provide # all required scala deps, without doing a full build-setup git config --unset submodule.sims/firesim.update -cd "${scripts_dir}/../sims" -git submodule update --init firesim -cd firesim/sim -git submodule update --init midas -cd "$RDIR" +git submodule update --init sims/firesim +git -C sims/firesim submodule update --init sim/midas git config submodule.sims/firesim.update none diff --git a/toolchains/esp-tools b/toolchains/esp-tools deleted file mode 160000 index dcb6012f..00000000 --- a/toolchains/esp-tools +++ /dev/null @@ -1 +0,0 @@ -Subproject commit dcb6012f77101e793948cc90ac31b3735a9f3f6d diff --git a/toolchains/riscv-tools b/toolchains/riscv-tools deleted file mode 160000 index bce7b5e3..00000000 --- a/toolchains/riscv-tools +++ /dev/null @@ -1 +0,0 @@ -Subproject commit bce7b5e363957c134f944769e677354467b7e4ed diff --git a/toolchains/riscv-tools/riscv-gnu-toolchain b/toolchains/riscv-tools/riscv-gnu-toolchain new file mode 160000 index 00000000..2855d823 --- /dev/null +++ b/toolchains/riscv-tools/riscv-gnu-toolchain @@ -0,0 +1 @@ +Subproject commit 2855d823a6e93d50af604264b02ced951e80de67 diff --git a/toolchains/riscv-tools/riscv-gnu-toolchain-prebuilt b/toolchains/riscv-tools/riscv-gnu-toolchain-prebuilt new file mode 160000 index 00000000..5e32a015 --- /dev/null +++ b/toolchains/riscv-tools/riscv-gnu-toolchain-prebuilt @@ -0,0 +1 @@ +Subproject commit 5e32a0157f91ebfb5c7ea7113fce28bf40016fa4 diff --git a/toolchains/riscv-tools/riscv-isa-sim b/toolchains/riscv-tools/riscv-isa-sim new file mode 160000 index 00000000..9443c1db --- /dev/null +++ b/toolchains/riscv-tools/riscv-isa-sim @@ -0,0 +1 @@ +Subproject commit 9443c1dbac0301faf3a47c5e6914cc7dcb34983e diff --git a/toolchains/riscv-tools/riscv-pk b/toolchains/riscv-tools/riscv-pk new file mode 160000 index 00000000..a3e4ac61 --- /dev/null +++ b/toolchains/riscv-tools/riscv-pk @@ -0,0 +1 @@ +Subproject commit a3e4ac61d2b1ff37a22b9193b85d3b94273e80cb diff --git a/toolchains/riscv-tools/riscv-tests b/toolchains/riscv-tools/riscv-tests new file mode 160000 index 00000000..249796ce --- /dev/null +++ b/toolchains/riscv-tools/riscv-tests @@ -0,0 +1 @@ +Subproject commit 249796cec94d75ff10ca034153e206a319e87158 From b4ed5eb61bf6615716fb06b3a49ab879971436c4 Mon Sep 17 00:00:00 2001 From: Albert Ou Date: Tue, 24 Sep 2019 03:58:19 -0700 Subject: [PATCH 03/10] toolchains: Optionally build riscv-openocd with a separate script --- .gitmodules | 3 +++ scripts/build-openocd.sh | 24 ++++++++++++++++++++++++ toolchains/riscv-tools/riscv-openocd | 1 + 3 files changed, 28 insertions(+) create mode 100755 scripts/build-openocd.sh create mode 160000 toolchains/riscv-tools/riscv-openocd diff --git a/.gitmodules b/.gitmodules index d7691ffb..284318c6 100644 --- a/.gitmodules +++ b/.gitmodules @@ -50,6 +50,9 @@ [submodule "toolchains/riscv-tools/riscv-tests"] path = toolchains/riscv-tools/riscv-tests url = https://github.com/riscv/riscv-tests.git +[submodule "toolchains/riscv-tools/riscv-openocd"] + path = toolchains/riscv-tools/riscv-openocd + url = https://github.com/riscv/riscv-openocd.git [submodule "vlsi/hammer"] path = vlsi/hammer url = https://github.com/ucb-bar/hammer.git diff --git a/scripts/build-openocd.sh b/scripts/build-openocd.sh new file mode 100755 index 00000000..0075fdbe --- /dev/null +++ b/scripts/build-openocd.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +# exit script if any command fails +set -e +set -o pipefail + +RDIR=$(git rev-parse --show-toplevel) + +if [ -z "${RISCV}" ] ; then + ! [ -r "${RDIR}/env.sh" ] || . "${RDIR}/env.sh" + if [ -z "${RISCV}" ] ; then + echo "${0}: set the RISCV environment variable to desired install path" + exit 1 + fi +fi + +SRCDIR="${RDIR}/toolchains/riscv-tools" +. "${RDIR}/scripts/build-util.sh" + +git config --unset submodule.toolchains/riscv-tools/riscv-openocd.update || : +module_prepare riscv-openocd +module_run riscv-openocd ./bootstrap +module_build riscv-openocd --prefix="${RISCV}" \ + --enable-remote-bitbang --enable-jtag_vpi --disable-werror diff --git a/toolchains/riscv-tools/riscv-openocd b/toolchains/riscv-tools/riscv-openocd new file mode 160000 index 00000000..7c82a7b9 --- /dev/null +++ b/toolchains/riscv-tools/riscv-openocd @@ -0,0 +1 @@ +Subproject commit 7c82a7b9d5b7d8b71e0a66826705ec141db718c3 From 361a9bf1d89b8174326a464dce23002d9df17870 Mon Sep 17 00:00:00 2001 From: Albert Ou Date: Wed, 25 Sep 2019 21:26:55 -0700 Subject: [PATCH 04/10] toolchains: Flatten esp-tools submodule --- .gitignore | 1 + .gitmodules | 12 ++++++++++++ toolchains/esp-tools/riscv-gnu-toolchain | 1 + toolchains/esp-tools/riscv-isa-sim | 1 + toolchains/esp-tools/riscv-pk | 1 + toolchains/esp-tools/riscv-tests | 1 + 6 files changed, 17 insertions(+) create mode 160000 toolchains/esp-tools/riscv-gnu-toolchain create mode 160000 toolchains/esp-tools/riscv-isa-sim create mode 160000 toolchains/esp-tools/riscv-pk create mode 160000 toolchains/esp-tools/riscv-tests diff --git a/.gitignore b/.gitignore index fe0f53ff..7c1463a4 100644 --- a/.gitignore +++ b/.gitignore @@ -12,5 +12,6 @@ target .DS_Store env.sh riscv-tools-install +esp-tools-install tags *~ diff --git a/.gitmodules b/.gitmodules index 284318c6..4c23765e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -53,6 +53,18 @@ [submodule "toolchains/riscv-tools/riscv-openocd"] path = toolchains/riscv-tools/riscv-openocd url = https://github.com/riscv/riscv-openocd.git +[submodule "toolchains/esp-tools/riscv-gnu-toolchain"] + path = toolchains/esp-tools/riscv-gnu-toolchain + url = https://github.com/ucb-bar/esp-gnu-toolchain.git +[submodule "toolchains/esp-tools/riscv-isa-sim"] + path = toolchains/esp-tools/riscv-isa-sim + url = https://github.com/ucb-bar/esp-isa-sim.git +[submodule "toolchains/esp-tools/riscv-pk"] + path = toolchains/esp-tools/riscv-pk + url = https://github.com/riscv/riscv-pk.git +[submodule "toolchains/esp-tools/riscv-tests"] + path = toolchains/esp-tools/riscv-tests + url = https://github.com/ucb-bar/esp-tests.git [submodule "vlsi/hammer"] path = vlsi/hammer url = https://github.com/ucb-bar/hammer.git diff --git a/toolchains/esp-tools/riscv-gnu-toolchain b/toolchains/esp-tools/riscv-gnu-toolchain new file mode 160000 index 00000000..9f532293 --- /dev/null +++ b/toolchains/esp-tools/riscv-gnu-toolchain @@ -0,0 +1 @@ +Subproject commit 9f532293985d08b0c176d96c7b650e5f433780e1 diff --git a/toolchains/esp-tools/riscv-isa-sim b/toolchains/esp-tools/riscv-isa-sim new file mode 160000 index 00000000..92f2f467 --- /dev/null +++ b/toolchains/esp-tools/riscv-isa-sim @@ -0,0 +1 @@ +Subproject commit 92f2f467c00caa991379ba55ece7118f068c2218 diff --git a/toolchains/esp-tools/riscv-pk b/toolchains/esp-tools/riscv-pk new file mode 160000 index 00000000..a3e4ac61 --- /dev/null +++ b/toolchains/esp-tools/riscv-pk @@ -0,0 +1 @@ +Subproject commit a3e4ac61d2b1ff37a22b9193b85d3b94273e80cb diff --git a/toolchains/esp-tools/riscv-tests b/toolchains/esp-tools/riscv-tests new file mode 160000 index 00000000..f1370d05 --- /dev/null +++ b/toolchains/esp-tools/riscv-tests @@ -0,0 +1 @@ +Subproject commit f1370d054389fc83974fc820985b5c51693b8f9d From 383b58542fabddce8193b72f919d5785a637bfed Mon Sep 17 00:00:00 2001 From: Albert Ou Date: Wed, 25 Sep 2019 22:20:20 -0700 Subject: [PATCH 05/10] vcs: Statically link against libfesvr libfesvr.so is no longer built after fesvr merged with riscv-isa-sim. --- sims/vcs/Makefile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sims/vcs/Makefile b/sims/vcs/Makefile index 6a65d0a2..aeda8a1b 100644 --- a/sims/vcs/Makefile +++ b/sims/vcs/Makefile @@ -48,8 +48,7 @@ VCS_CC_OPTS = \ -CC "-I$(VCS_HOME)/include" \ -CC "-I$(RISCV)/include" \ -CC "-std=c++11" \ - -CC "-Wl,-rpath,$(RISCV)/lib" \ - $(RISCV)/lib/libfesvr.so + $(RISCV)/lib/libfesvr.a VCS_NONCC_OPTS = \ +lint=all,noVCDE,noONGS,noUI \ From dbd7e49c094e67e5081e8ca7b99ea6af88aa796d Mon Sep 17 00:00:00 2001 From: Albert Ou Date: Thu, 26 Sep 2019 13:43:30 -0700 Subject: [PATCH 06/10] ci: Bump docker image to 0.0.11 Building glibc now requires Python 3.4+. --- .circleci/config.yml | 46 ++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 88ec3e45..855d7aba 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -7,7 +7,7 @@ version: 2 jobs: commit-on-master-check: docker: - - image: riscvboom/riscvboom-images:0.0.10 + - image: riscvboom/riscvboom-images:0.0.11 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb @@ -19,7 +19,7 @@ jobs: .circleci/check-commit.sh install-riscv-toolchain: docker: - - image: riscvboom/riscvboom-images:0.0.10 + - image: riscvboom/riscvboom-images:0.0.11 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb @@ -43,7 +43,7 @@ jobs: - "/home/riscvuser/riscv-tools-install" install-esp-toolchain: docker: - - image: riscvboom/riscvboom-images:0.0.10 + - image: riscvboom/riscvboom-images:0.0.11 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb @@ -67,7 +67,7 @@ jobs: - "/home/riscvuser/esp-tools-install" install-verilator: docker: - - image: riscvboom/riscvboom-images:0.0.10 + - image: riscvboom/riscvboom-images:0.0.11 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb @@ -90,7 +90,7 @@ jobs: - "/home/riscvuser/verilator" build-extra-tests: docker: - - image: riscvboom/riscvboom-images:0.0.10 + - image: riscvboom/riscvboom-images:0.0.11 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb @@ -116,7 +116,7 @@ jobs: - "/home/riscvuser/project/tests" prepare-example: docker: - - image: riscvboom/riscvboom-images:0.0.10 + - image: riscvboom/riscvboom-images:0.0.11 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb @@ -145,7 +145,7 @@ jobs: - "/home/riscvuser/project" prepare-boomrocketexample: docker: - - image: riscvboom/riscvboom-images:0.0.10 + - image: riscvboom/riscvboom-images:0.0.11 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb @@ -174,7 +174,7 @@ jobs: - "/home/riscvuser/project" prepare-boom: docker: - - image: riscvboom/riscvboom-images:0.0.10 + - image: riscvboom/riscvboom-images:0.0.11 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb @@ -203,7 +203,7 @@ jobs: - "/home/riscvuser/project" prepare-rocketchip: docker: - - image: riscvboom/riscvboom-images:0.0.10 + - image: riscvboom/riscvboom-images:0.0.11 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb @@ -232,7 +232,7 @@ jobs: - "/home/riscvuser/project" prepare-blockdevrocketchip: docker: - - image: riscvboom/riscvboom-images:0.0.10 + - image: riscvboom/riscvboom-images:0.0.11 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb @@ -261,7 +261,7 @@ jobs: - "/home/riscvuser/project" prepare-hwacha: docker: - - image: riscvboom/riscvboom-images:0.0.10 + - image: riscvboom/riscvboom-images:0.0.11 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb @@ -290,7 +290,7 @@ jobs: - "/home/riscvuser/project" prepare-firesim: docker: - - image: riscvboom/riscvboom-images:0.0.10 + - image: riscvboom/riscvboom-images:0.0.11 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb @@ -319,7 +319,7 @@ jobs: - "/home/riscvuser/project" prepare-fireboom: docker: - - image: riscvboom/riscvboom-images:0.0.10 + - image: riscvboom/riscvboom-images:0.0.11 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb @@ -348,7 +348,7 @@ jobs: - "/home/riscvuser/project" prepare-firesim-clockdiv: docker: - - image: riscvboom/riscvboom-images:0.0.10 + - image: riscvboom/riscvboom-images:0.0.11 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb @@ -377,7 +377,7 @@ jobs: - "/home/riscvuser/project" midasexamples-run-tests: docker: - - image: riscvboom/riscvboom-images:0.0.10 + - image: riscvboom/riscvboom-images:0.0.11 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb @@ -398,7 +398,7 @@ jobs: command: .circleci/run-midasexamples-tests.sh example-run-tests: docker: - - image: riscvboom/riscvboom-images:0.0.10 + - image: riscvboom/riscvboom-images:0.0.11 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb @@ -422,7 +422,7 @@ jobs: command: .circleci/run-tests.sh example boomrocketexample-run-tests: docker: - - image: riscvboom/riscvboom-images:0.0.10 + - image: riscvboom/riscvboom-images:0.0.11 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb @@ -446,7 +446,7 @@ jobs: command: .circleci/run-tests.sh boomrocketexample boom-run-tests: docker: - - image: riscvboom/riscvboom-images:0.0.10 + - image: riscvboom/riscvboom-images:0.0.11 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb @@ -470,7 +470,7 @@ jobs: command: .circleci/run-tests.sh boom rocketchip-run-tests: docker: - - image: riscvboom/riscvboom-images:0.0.10 + - image: riscvboom/riscvboom-images:0.0.11 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb @@ -494,7 +494,7 @@ jobs: command: .circleci/run-tests.sh rocketchip hwacha-run-tests: docker: - - image: riscvboom/riscvboom-images:0.0.10 + - image: riscvboom/riscvboom-images:0.0.11 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb @@ -518,7 +518,7 @@ jobs: command: .circleci/run-tests.sh hwacha firesim-run-tests: docker: - - image: riscvboom/riscvboom-images:0.0.10 + - image: riscvboom/riscvboom-images:0.0.11 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb @@ -545,7 +545,7 @@ jobs: command: .circleci/run-firesim-tests.sh firesim fireboom-run-tests: docker: - - image: riscvboom/riscvboom-images:0.0.10 + - image: riscvboom/riscvboom-images:0.0.11 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb @@ -573,7 +573,7 @@ jobs: no_output_timeout: 20m firesim-clockdiv-run-tests: docker: - - image: riscvboom/riscvboom-images:0.0.10 + - image: riscvboom/riscvboom-images:0.0.11 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb From 090f3c68c32dfae5eee00743b9565d896d123207 Mon Sep 17 00:00:00 2001 From: Albert Ou Date: Thu, 26 Sep 2019 19:11:23 -0700 Subject: [PATCH 07/10] ci: Limit toolchain builds to two concurrent jobs This helps avoid OOM conditions with CircleCI instances. --- .circleci/build-toolchains.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/build-toolchains.sh b/.circleci/build-toolchains.sh index 63f47505..b43d2eda 100755 --- a/.circleci/build-toolchains.sh +++ b/.circleci/build-toolchains.sh @@ -14,5 +14,5 @@ if [ ! -d "$HOME/$1-install" ]; then cd $HOME # init all submodules including the tools - CHIPYARD_DIR=$LOCAL_CHIPYARD_DIR $LOCAL_CHIPYARD_DIR/scripts/build-toolchains.sh $1 + CHIPYARD_DIR="$LOCAL_CHIPYARD_DIR" NPROC=2 $LOCAL_CHIPYARD_DIR/scripts/build-toolchains.sh $1 fi From a6b8301f0fa14eea50ad4979fb768c2bf11e8e80 Mon Sep 17 00:00:00 2001 From: Albert Ou Date: Thu, 26 Sep 2019 23:04:34 -0700 Subject: [PATCH 08/10] ci: Increment toolchain cache keys to clear cache Generate hashfiles from normalized output of git-submodule status. (Interestingly, the old method also worked after submodule flattening.) --- .circleci/config.yml | 46 ++++++++++++++++++++-------------------- .circleci/create-hash.sh | 13 ++++++------ 2 files changed, 30 insertions(+), 29 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 855d7aba..d0453176 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -31,14 +31,14 @@ jobs: .circleci/create-hash.sh - restore_cache: keys: - - riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }} + - riscv-tools-installed-v2-{{ checksum "../riscv-tools.hash" }} - run: name: Building riscv-tools toolchain command: | .circleci/build-toolchains.sh riscv-tools no_output_timeout: 120m - save_cache: - key: riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }} + key: riscv-tools-installed-v2-{{ checksum "../riscv-tools.hash" }} paths: - "/home/riscvuser/riscv-tools-install" install-esp-toolchain: @@ -55,14 +55,14 @@ jobs: .circleci/create-hash.sh - restore_cache: keys: - - esp-tools-installed-v1-{{ checksum "../esp-tools.hash" }} + - esp-tools-installed-v2-{{ checksum "../esp-tools.hash" }} - run: name: Building esp-tools toolchain command: | .circleci/build-toolchains.sh esp-tools no_output_timeout: 120m - save_cache: - key: esp-tools-installed-v1-{{ checksum "../esp-tools.hash" }} + key: esp-tools-installed-v2-{{ checksum "../esp-tools.hash" }} paths: - "/home/riscvuser/esp-tools-install" install-verilator: @@ -105,7 +105,7 @@ jobs: .circleci/create-hash.sh - restore_cache: keys: - - riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }} + - riscv-tools-installed-v2-{{ checksum "../riscv-tools.hash" }} - run: name: Build extra tests command: .circleci/build-extra-tests.sh @@ -131,7 +131,7 @@ jobs: .circleci/create-hash.sh - restore_cache: keys: - - riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }} + - riscv-tools-installed-v2-{{ checksum "../riscv-tools.hash" }} - restore_cache: keys: - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} @@ -160,7 +160,7 @@ jobs: .circleci/create-hash.sh - restore_cache: keys: - - riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }} + - riscv-tools-installed-v2-{{ checksum "../riscv-tools.hash" }} - restore_cache: keys: - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} @@ -189,7 +189,7 @@ jobs: .circleci/create-hash.sh - restore_cache: keys: - - riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }} + - riscv-tools-installed-v2-{{ checksum "../riscv-tools.hash" }} - restore_cache: keys: - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} @@ -218,7 +218,7 @@ jobs: .circleci/create-hash.sh - restore_cache: keys: - - riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }} + - riscv-tools-installed-v2-{{ checksum "../riscv-tools.hash" }} - restore_cache: keys: - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} @@ -247,7 +247,7 @@ jobs: .circleci/create-hash.sh - restore_cache: keys: - - riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }} + - riscv-tools-installed-v2-{{ checksum "../riscv-tools.hash" }} - restore_cache: keys: - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} @@ -276,7 +276,7 @@ jobs: .circleci/create-hash.sh - restore_cache: keys: - - esp-tools-installed-v1-{{ checksum "../esp-tools.hash" }} + - esp-tools-installed-v2-{{ checksum "../esp-tools.hash" }} - restore_cache: keys: - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} @@ -305,7 +305,7 @@ jobs: .circleci/create-hash.sh - restore_cache: keys: - - riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }} + - riscv-tools-installed-v2-{{ checksum "../riscv-tools.hash" }} - restore_cache: keys: - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} @@ -334,7 +334,7 @@ jobs: .circleci/create-hash.sh - restore_cache: keys: - - riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }} + - riscv-tools-installed-v2-{{ checksum "../riscv-tools.hash" }} - restore_cache: keys: - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} @@ -363,7 +363,7 @@ jobs: .circleci/create-hash.sh - restore_cache: keys: - - riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }} + - riscv-tools-installed-v2-{{ checksum "../riscv-tools.hash" }} - restore_cache: keys: - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} @@ -389,7 +389,7 @@ jobs: .circleci/create-hash.sh - restore_cache: keys: - - riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }} + - riscv-tools-installed-v2-{{ checksum "../riscv-tools.hash" }} - restore_cache: keys: - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} @@ -410,7 +410,7 @@ jobs: .circleci/create-hash.sh - restore_cache: keys: - - riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }} + - riscv-tools-installed-v2-{{ checksum "../riscv-tools.hash" }} - restore_cache: keys: - example-{{ .Branch }}-{{ .Revision }} @@ -434,7 +434,7 @@ jobs: .circleci/create-hash.sh - restore_cache: keys: - - riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }} + - riscv-tools-installed-v2-{{ checksum "../riscv-tools.hash" }} - restore_cache: keys: - boomrocketexample-{{ .Branch }}-{{ .Revision }} @@ -458,7 +458,7 @@ jobs: .circleci/create-hash.sh - restore_cache: keys: - - riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }} + - riscv-tools-installed-v2-{{ checksum "../riscv-tools.hash" }} - restore_cache: keys: - boom-{{ .Branch }}-{{ .Revision }} @@ -482,7 +482,7 @@ jobs: .circleci/create-hash.sh - restore_cache: keys: - - riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }} + - riscv-tools-installed-v2-{{ checksum "../riscv-tools.hash" }} - restore_cache: keys: - rocketchip-{{ .Branch }}-{{ .Revision }} @@ -506,7 +506,7 @@ jobs: .circleci/create-hash.sh - restore_cache: keys: - - esp-tools-installed-v1-{{ checksum "../esp-tools.hash" }} + - esp-tools-installed-v2-{{ checksum "../esp-tools.hash" }} - restore_cache: keys: - hwacha-{{ .Branch }}-{{ .Revision }} @@ -530,7 +530,7 @@ jobs: .circleci/create-hash.sh - restore_cache: keys: - - riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }} + - riscv-tools-installed-v2-{{ checksum "../riscv-tools.hash" }} - restore_cache: keys: - firesim-{{ .Branch }}-{{ .Revision }} @@ -557,7 +557,7 @@ jobs: .circleci/create-hash.sh - restore_cache: keys: - - riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }} + - riscv-tools-installed-v2-{{ checksum "../riscv-tools.hash" }} - restore_cache: keys: - fireboom-{{ .Branch }}-{{ .Revision }} @@ -585,7 +585,7 @@ jobs: .circleci/create-hash.sh - restore_cache: keys: - - riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }} + - riscv-tools-installed-v2-{{ checksum "../riscv-tools.hash" }} - restore_cache: keys: - firesim-clockdiv-{{ .Branch }}-{{ .Revision }} diff --git a/.circleci/create-hash.sh b/.circleci/create-hash.sh index 84a75244..63dfa242 100755 --- a/.circleci/create-hash.sh +++ b/.circleci/create-hash.sh @@ -4,6 +4,7 @@ # turn echo on and error on earliest command set -ex +set -o pipefail # get shared variables SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )" @@ -12,10 +13,10 @@ source $SCRIPT_DIR/defaults.sh # enter bhd repo cd $LOCAL_CHIPYARD_DIR -# get the version of riscv-tools from the git submodule hash -git submodule status | grep "riscv-tools" | awk '{print$1}' | grep -o "[[:alnum:]]*" >> $HOME/riscv-tools.hash -git submodule status | grep "esp-tools" | awk '{print$1}' | grep -o "[[:alnum:]]*" >> $HOME/esp-tools.hash - +# Use normalized output of git-submodule status as hashfile +for tools in 'riscv-tools' 'esp-tools' ; do + git submodule status "toolchains/${tools}" | while read -r line ; do + echo "${line#[!0-9a-f]}" + done > "${HOME}/${tools}.hash" +done echo "Hashfile for riscv-tools and esp-tools created in $HOME" -echo "Contents: riscv-tools:$(cat $HOME/riscv-tools.hash)" -echo "Contents: esp-tools:$(cat $HOME/esp-tools.hash)" From c7b252aa09773364781a03bbf498782573ee8585 Mon Sep 17 00:00:00 2001 From: Albert Ou Date: Fri, 27 Sep 2019 22:18:56 +0000 Subject: [PATCH 09/10] toolchains: Check for GNU make 4.x GNU make 4.x is needed to cross-compile glibc 2.28 and newer. This ensures the problem is caught earlier on CentOS release 7.6, whose default make version remains 3.82. --- scripts/build-toolchains.sh | 7 +++++++ scripts/build-util.sh | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/scripts/build-toolchains.sh b/scripts/build-toolchains.sh index 734398c3..738b5ae7 100755 --- a/scripts/build-toolchains.sh +++ b/scripts/build-toolchains.sh @@ -99,6 +99,13 @@ if [ "${EC2FASTINSTALL}" = true ] ; then git submodule deinit "${module}" || : else + "${MAKE}" --version | ( + read -r makever + case ${makever} in + 'GNU Make '[4-9]\.*|'GNU Make '[1-9][0-9]) ;; + *) false ;; + esac; ) || die 'obsolete make version; need GNU make 4.x or later' + module_prepare riscv-gnu-toolchain qemu module_build riscv-gnu-toolchain --prefix="${RISCV}" echo '==> Building GNU/Linux toolchain' diff --git a/scripts/build-util.sh b/scripts/build-util.sh index 5ca38147..be58a6a1 100644 --- a/scripts/build-util.sh +++ b/scripts/build-util.sh @@ -14,7 +14,7 @@ case ${ncpu} in *) export MAKEFLAGS="-j ${ncpu} ${MAKEFLAGS}" ;; esac -MAKE=$(command -v gmake || command -v make) +MAKE=$(command -v gnumake || command -v gmake || command -v make) readonly MAKE From 1e40014b8e0a7d7ff63ca67f01975e7b784b9988 Mon Sep 17 00:00:00 2001 From: Albert Ou Date: Wed, 2 Oct 2019 13:10:17 -0700 Subject: [PATCH 10/10] firesim: Bump for firemarshal update --- sims/firesim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sims/firesim b/sims/firesim index 4769e5d8..26ffba7c 160000 --- a/sims/firesim +++ b/sims/firesim @@ -1 +1 @@ -Subproject commit 4769e5d86acf6a9508d2b5a63141dc80a6ef20a6 +Subproject commit 26ffba7cbca2982fef6b221a7abbc51d5cdc4b62