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/prowl/

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/prowl/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/prowl/Build.Info
   cp prowl_tc_defconfig ~/buildroot/configs/

5) Adjust kernel absolute path in the buildroot 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/prowl

   Replace <gfiber-repo-dir> with the full absolute path to your gfiber client:
   BR2_LINUX_KERNEL_CUSTOM_LOCAL_PATH="<gfiber-repo-dir>/kernel/prowl"
                                       ^^^^^^^^^^^^^^^^^

   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>

6) Build the toolchain with buildroot

   cd ~/buildroot
   make prowl_tc_defconfig

   Verify that .config file looks good:
   less .config

   Start the build:
   make

7) Copy the new toolchain to toolchains/prowl

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

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

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