If reimplementing build systems is being investigated, the jam(perforce)/bjam(b2,boost)/boost.build/rypple searches should dig up a lot of well thought through issues for very generic and cross platform considerations.