Hardware build has different problems to solve compared to software build. In particular you often want to build with multiple different tools (e.g. A simulator, a synthesis tool, a formal tool and a linter) and each tool requires its own mix of files and settings with some commonality between them. You may also want different 'levels' of build from a full chip down to the block level.
Often this is handled with some home grown makefile solution or perl or python. I find FuseSoC, with the Edalize backend (which knows all the details of how a particular tool is run) a good improvement on this.
Often this is handled with some home grown makefile solution or perl or python. I find FuseSoC, with the Edalize backend (which knows all the details of how a particular tool is run) a good improvement on this.