Package with multiple targets

My Frotz program has three different targets – one for curses interface, one for an SDL interface, and a “dumb” interface that simply prints to the terminal without bothering with cursor control (for bots and teletypes). The curses interface can be build without audio support.

What is the best way to handle variants like this? A separate formula for each variant?

Generally I’d say to pick the most useful/default one and ship that.

Okay, I’ll start with the curses interface with audio support enabled.