def toolchain(name, tc)
      raise "not a tc" unless tc.is_a?(Hash)
      check_hash(tc, Cxxproject::Toolchain::Provider.default.keys)
      check_compiler(tc[:COMPILER]) if tc[:COMPILER]
      check_linker(tc[:LINKER]) if tc[:LINKER]
      check_archiver(tc[:ARCHIVER]) if tc[:ARCHIVER]
      PluginContext::expand(tc)
      Cxxproject::Toolchain::Provider.add(name)
      Cxxproject::Toolchain::Provider.merge(Cxxproject::Toolchain::Provider[name], tc)
    end
def toolchain(name, tc)
      raise "not a tc" unless tc.is_a?(Hash)
      check_hash(tc, Cxxproject::Toolchain::Provider.default.keys)
      check_compiler(tc[:COMPILER]) if tc[:COMPILER]
      check_linker(tc[:LINKER]) if tc[:LINKER]
      check_archiver(tc[:ARCHIVER]) if tc[:ARCHIVER]
      PluginContext::expand(tc)
      Cxxproject::Toolchain::Provider.add(name)
      Cxxproject::Toolchain::Provider.merge(Cxxproject::Toolchain::Provider[name], tc)
    end
specify a toolchain
 hash supports:
 * :command