ARC toolchain is built with upstream buildroot.

Once the toolchain build completes, simply copy everything from
<buildroot-dir>/output/host/ to <gfiber-repo-dir>/toolchains/quantenna/

1) Clone the upstream buildroot

   cd ~
   git clone git://git.busybox.net/buildroot

   This creates <buildroot-dir> at ~/buildroot

2) Check out specific commit (optional)

   If you want arc-2016.09-eng008 tools, you should check out
   the commit below. For the very latest tools, skip this step.

   commit f0e1381ef91ac85ad4fc9ab3db30057279ffe7c5
   Author: Zakharov Vlad <Vladislav.Zakharov@synopsys.com>
   Date:   Wed Aug 10 20:10:40 2016 +0300
   toolchain: Bump ARC tools to arc-2016.09-eng008

   cd ~/buildroot
   git checkout f0e1381ef91ac85ad4fc9ab3db30057279ffe7c5

3) Patch uClibc

   Copy patches to buildroot directory:
   cd <gfiber-repo-dir>/toolchains/quantenna/Build.Info
   cp 000*.patch ~/buildroot

   Apply the patches:
   cd ~/buildroot
   git am 000*.patch

4) Copy buildroot configuration for the toolchain build

   cd <gfiber-repo-dir>/toolchains/quantenna/Build.Info
   cp prowl_tc_defconfig ~/buildroot/configs/

5) Adjust kernel absolute path in the local.mk config file

   When a new toolchain is built, it should be built against
   the same Linux kernel source that runs on the target.

   Prowl kernel source is at <gfiber-repo-dir>/kernel/quantenna

   Replace <gfiber-repo-dir> with the full absolute path to your gfiber client:

   LINUX_OVERRIDE_SRCDIR = <gfiber-repo-dir>/kernel/quantenna
                           ^^^^^^^^^^^^^^^^^
   LINUX_HEADERS_OVERRIDE_SRCDIR = <gfiber-repo-dir>/kernel/quantenna
                                   ^^^^^^^^^^^^^^^^^

6) Verify that version 4.7 is still correct for headers:
   BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y
                                         ^^^
   Adjust the above as needed:
   cd ~/buildroot/configs
   <edit prowl_tc_defconfig>

7) Build the toolchain with buildroot

   cd ~/buildroot
   make prowl_tc_defconfig

   Verify that .config file looks good:
   less .config

   Start the build:
   make

8) Copy the new toolchain to toolchains/quantenna

   Remove the old toolchain:
   cd <gfiber-repo-dir>/toolchains/quantenna
   repo start master .
   rm -rf sbin usr

   Copy the new toolchain:
   cd ~/buildroot/output/host
   cp -a * <gfiber-repo-dir>/toolchains/quantenna/

   Commit the new toolchain:
   cd <gfiber-repo-dir>/toolchains/quantenna
   git add -A .
   git commit
