There is a blacksmith saying that you have to have a pair of tongs to be able to make a pair of tongs (think about it). Likewise, you have to have a working compiler in order to build a working compiler.
GCC is very powerful, very widespread freeware. it's been ported to every operating system on every platform there is. In order to make something that powerful buildable on damn near anything, the GCC team have a 'make' procedure that boggles the mind. There are at least eight different packages you have to have built before you can build the compiler. But you need a compiler in order to build those packages that you need to build the compiler.
Do you see where I'm going with this? If I could put a half-twist in my neck, I'd be a Moebuis strip. each iteration of the compiler build is about a two-day job, AFTER I manage to figure out what went wrong with the last build. It's a stepwise approach to nervous prostration.
ANYWAY, yesterday I finally got a clean build, copied it to where the user could get it, and hung up my tools. This morning, the user told me he needs several functionalities that he hadn't put in the original request.
*sigh* back to the forge...
But the weekend is here, and I get to spend two days pretending I'm Nikolai Tesla and rewiring the garage for the new garage door opener!