Why make files over TCL scripts


I have a general (and what may be a dumb) question. Why was the decision made to use so many make files over just using TCL files or shell scripts?

As a side note - I know you guys are busy, but one thing that would be extremely helpful is a flow or block diagram of what files the make files call and what files those call so it is possible to understand the compilation process of these different project, overlays and sub-modules. It is a little difficult to trace out what all these scripts do and what scrips call what other scripts. A flow chart or block diagram illuminating this would be so helpful.

It might be worth reading up on the merits of makefiles, shell scripts, tcl etc.
All methods have advantages and disadvantages. You may be able to achieve the same result with different flows, but it can be substantially more effort. We’ve tried to use the most appropriate tools for a given task.

Tcl is generally used to drive the tools. E.g. create a block design in Vivado, run the bitstream build.

One advantage of makefiles is that they allow minimal rebuilds in a straightforward way.

Just curious, does our choice of tool for build flow affect you in some way?

Thanks for feedback on flowchart. We’ll see what we can do.


Hi cathal,

Thank you for the response! No - I’m beginning to grasp this project/software stack and how it is working and it works great for me. I have no problems with the flow or make files, I’ve just had a hard time wrapping my head around it. This is in part due to me being more of an FPGA guy and less of a software guy I think. The make file approach looks really cool from the little I’ve read so far and is working great for me. I’ve just noticed from trying to read and understand some of the make files they seem to generally just pass calls to the OS like calling the cross compiler, uBlaze compiler and calls a lot of tcl files. Since I’m currently poorly versed in the make system I figured there were good reasons you guys chose this approach and was just curious what some of the big picture benefits might be.

Understanding your approach also will help me improve my overall approach to project management for revision control and a best approach for developing more exotic platforms for Zynq based solutions.

Long story short I’m getting the hang of this and it is running really well considering the amount of complexity here. Good job to you and the Pynq developers!

1 Like