So it doesn't seem like the right solution to package all of these decisions in a single script.
What is the right abstraction?
I guess that the right abstraction is - conservative: it always works - end user-oriented: it should work out of the box for those who know nothing and don't want to know more. A few others will tweak it manually. Most people do *not* need unusual (sic) compiler options, or to select the calling convention.
In short: It's better to make it work out of the box for 90% of the users than to make something highly (and with difficulty) configurable for the rest 10%.
Package the "stupid" scripts, and let other users do everything manually as before…
P!