https://github.com/gigalasr/vhdlmake
A build system for vhdl that can infer all dependencies automaticaly
https://github.com/gigalasr/vhdlmake
build-system cpp vhdl
Last synced: 4 months ago
JSON representation
A build system for vhdl that can infer all dependencies automaticaly
- Host: GitHub
- URL: https://github.com/gigalasr/vhdlmake
- Owner: gigalasr
- Created: 2023-05-03T15:02:00.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2025-06-02T18:26:07.000Z (about 1 year ago)
- Last Synced: 2025-07-05T13:35:28.579Z (12 months ago)
- Topics: build-system, cpp, vhdl
- Language: C++
- Homepage:
- Size: 164 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# vhdlmake

An awesome build system made for my uni vhdl projects.
This build system automaticaly infers the dependencies between vhdl files
and compiles only the necerssary files when a or multiple files were changed.
It builds a DAG and a partial DAG based on the updated files and uses these to
determine which files need to be rebuilt/analysed. In comparison to make, vhdlmake
inverts its DAG. Instead of "listing" the dependencies, each node lists its dependants.
This is useful, because now the edges point directly to the files
that need to be updated. Generating the correct compile commands is now as simple
as building the partital DAG and running a topological sort on that.
This approach is inspired by the [Tup Build System](https://gittup.org/tup/build_system_rules_and_algorithms.pdf).
### Usage
```bash
vhdlmake build [entity] - builds project and optionaly elaborates
vhdlmake run - builds project and runs
vhdlmake info - show info for
vhdlmake graph - get dependency graph as mermaid url
vhdlmake graph* - get partial dependency graph as mermaid url (only updated files and deps)
vhdlmake subset - get list of changed files and their dependencies
```
### Clone and Build
```bash
git clone --recursive https://github.com/gigalasr/vhdlmake.git
cd vhdlmake
mkdir build
cd build
cmake ..
make
```
If you forgot to clone with ``--recursive`` you can run ``git submodule update --init`` to clone the submodules afterwards.