Chapter 10. Why?

This is one developer's Point Of View:

Dno was created out of frustration with the Arduino IDE. In particular:

10.1. And How?

So, I didn't like the IDE. I tried using a proper editor and cutting and pasting my code into the IDE. That sucked.

I know there are other IDEs, like eclipse, that maybe don't suck, but I still don't like IDEs.

I tried using the CLI. But the commands are pure mental: way too many parameters. That sucked. Even with some moderately smart scripts to run it all.

I found Arduino.mk. Finally, something that didn't suck. It showed that normal tools like make could be used. But it was really stuck in the avr world, and it still required a bit too much hand-holding, particulary around library use.

I looked at hacking it, and discovered a lot about make that I didn't know. It was a very good piece of work, but still not quite right.

I developed my own version of Arduino.mk that tackled some of the problems, but it still didn't feel right. Copies of the makefile had to be put in place in each directory. But library discovery worked pretty well.

It all came together when I was trying to parse the platform.txt file. I finally realised that a simple transform could turn it into makefile syntax. And then I discovered make's eval function and everything was suddenly possible.