December 11, 2013

Piping input to the gcc preprocessor

Spent a while hacking this little pipe to grab the configuration constants for the Marline firmware on my Rostock 3D printer:


echo "$(grep -e '^#define' Configuration.h)$(echo -e "\nDELTA_DIAGONAL_ROD")" | gcc -E - | tail -n 1


The first part,
echo "$(grep -e '^#define' Configuration.h)$(echo -e "\nDELTA_DIAGONAL_ROD")" 
will spit out all the #define lines in Configuration.h, followed by a newline (echo -e) and the symbol I am after. Having newlines within bash variables still feels like magic :)


After that, I rely on standard Unix notation to make gcc use standard input ("-"). The gcc documentation doesn't seem to mention this possibility.


Note to self: find a way of using markdown on Blogger -- straight HTML and the "Composer" are equally horrible for geeky stuff.

No comments: