Bootstrapping steps: 1. Modify env.sh to accept the uname output. 1. Modify header.kmk to accept and correctly configure the platform / target OS. 1. Run kBuild/env.sh to configure the kBuild environment. 1. Copy unix like tools from you system to kBuild/bin/$BUILD_TARGET_ARCH.$BUILD_TARGET/. kBuild requires all ash, cat, cp, echo, install, ln, mkdir, mv, rm and sed. The kBuild copies must be prefixed with {{{kmk_}}}. Some of these tools will be replaced later in the bootstrapping. 1. Build plain GNU Make: 1. Run aclocal, autoconf and automake in src/gmake if needed. 1. Create and enter src/gmake/obj. 1. Run ../configure. 1. Run make 1. Copy config.h to src/gmake/config.h.$BUILD_TARGET (or similar, see Makefile.kmk). 1. We've now got our own make binary which will be used in the next step. 1. Build src/gmake using the GNU Make we just made: 1. Go to the src/gmake. 1. make -f Makefile.kmk 1. When it breaks fix the compiler / linker error and redo the previous step. 1. Copy out/$BUILD_TARGET.$BUILD_TARGET_ARCH/debug/kBuild/bin/$BUILD_TARGET_ARCH.$BUILD_TARGET/ to kBuild/bin/$BUILD_TARGET_ARCH.$BUILD_TARGET/. 1. Build a release build using kmk (which should now be in the path): 1. Run kBuild/env.sh (or continue in the shell from the previous step). 1. Go to the root. 1. kmk BUILD_TYPE=release 1. Copy out/$BUILD_TARGET.$BUILD_TARGET_ARCH/release/kBuild/bin/$BUILD_TARGET_ARCH.$BUILD_TARGET/ to kBuild/bin/$BUILD_TARGET_ARCH.$BUILD_TARGET/. 1. Add and commit the changes (including the binaries).