Many years ago, when building large software projects, I used GNU make aka gmake (or my own patched version of it), and had developed a set of macros to simplify developing complex build trees.
Since the early 90's (when my Sun workstation got zapped by a lighting strike) my main development machines, run BSD (NetBSD and FreeBSD). The BSD source tree is a good example of a large software project. In following NetBSD's -current development, I learned to use the BSD Makefiles and make(1). It was a vast improvement over anything I'd seen with gmake. I did an autoconf version of NetBSD's make that I'll refer to as bmake(1) from here on.
Since then all my new projects and many of my old ones use bmake. Because bmake.tar.gz uses GNU's autoconf and is very portable, I've skipped the effort of making the rest of my distributions support GNU make and thanks to mk-files I don't have to consider using automake which produces huge unreadable makefiles.
As noted above; bmake is derived from NetBSD's make(1), its goal is to be a portable version of same, so new features are added via imports of NetBSD's make (I'm one of the contributors to NetBSD). Thus bmake is kept in sync with NetBSD's make.
For those interested in change history, the NetBSD mirror on github is handy. Almost all meaningful changes to bmake can be seen here: https://github.com/NetBSD/src/tree/trunk/usr.bin/make
Since 2000 I've worked on Junos (a FreeBSD derived OS) which builds using bmake (in meta mode). FreeBSD 10.0 and later also use bmake (I'm a FreeBSD committer as well).
Since bmake-20121212 the distribution includes the mk/* files from my mk.tar.gz. This a collection of .mk files (many originally derrived from early NetBSD versions) that can augment and even substitute for bsd..mk (use the real ones if you have them).