Build system, except for basic commands like cc, (POSIX) make, requires
at least:

* bsdtar
  GNU tar, available by default on GNU OSes, brings many complications
  in build-related scripts, because it is unable to decompress stdin
  data on the fly. Many GNU/Linux distributions have libarchive-tools
  package, containing libarchive-based bsdtar utility, that perfectly
  deals with any compressed archive transparently.

=> meta4ra
  Utilities for making and checking .meta4 files. They are just a
  wrapper over XML and external hasher commands interoperation. They
  also can be used for downloading.

=> Perl
  Shell scripts are hard to write in a portable way. For example there
  is no way to know file's size using POSIX-compatible utilities solely,
  except for feeding through "wc -c". There is no way to get file's
  mtime, as "stat"'s options are completely different on BSD and GNU
  systems. Only small subset of features is common among sed, awk, grep
  utilities. There is no reliable portable way of using "sed -i" for
  example.

  That is why the only sane option is Perl in most cases. Its
  interpreter is minimalistic enough and tend to be included even in
  OpenWRT distributions. It behaves the same way on all widespread OSes
  (no zoo of loosely compatible dialects).

=> redo build system
  redo started to be used in the project due to its built-in ability of
  using locks to prevent concurrent building of the same target.
  skelbins have to be installed to permanent paths, so concurrent builds
  will ruin them. redo contains atomic reliable writes of the target's
  result. And by definition it has dependency tracking of the targets.
  All of that greatly reduces the skel's code size. And as an unexpected
  feature you get ability to parallelise your builds.

  => goredo
  is recommended implementation, being very fast and having largest
  integration test suite.

* Any of setlock from daemontools, or lockf from BSD, or flock from GNU.

=> Go
  At least for building supplementary utilities. And, obviously, if you
  build Go-related software. Actually Go-written utilities can be
  replaced and no Go dependency will be required at all.

* FreeBSD's fetch, or
  => GNU Wget
  => cURL
  Although meta4ra can be used instead all of them.