+#!/usr/bin/env bash
+
+LIST="@KCFG_LIST@"
+
+main() {
+ local kcfg="${1}"; shift
+ local k
+
+ case "${kcfg}" in
+ "") error "what should I do (see -h)?\n";;
+ -h|--help) help; exit 0;;
+ -*) error "no such option '%s'\n" "${kcfg}";;
+ esac
+
+ for k in ${LIST}; do
+ if [ "${kcfg}" = "${k}" ]; then
+ exec kconfig-${kcfg} "${@}"
+ error "cannot execute tool '%s'\n" "${kcfg}"
+ fi
+ done
+ error "no such tool '%s'\n" "${kcfg}"
+}
+
+help() {
+ cat <<-_EOF_
+NAME
+ kconfig - meta-frontend to kconfig tools
+
+SYNOPSIS
+ kconfig -h|--help
+ kconfig <kconfig-tool> [option ...]
+
+DESCRIPTION
+ kconfig is the meta-frontend to all other kconfig tools:
+ ${LIST}
+
+ The acceptable options depend on what tool is being called.
+_EOF_
+}
+
+error() {
+ local fmt="${1}"; shift
+
+ printf "kconfig: ${fmt}" "${@}" >&2
+ exit 1
+}
+
+main "${@}"