Stop offering alternatives. He gets what you cook- period. Require that he eats his dinner (an appropriate amount for his age) - before he has anything else... and if he goes to bed hungry a few times because he CHOSE no to eat- so be it. (Save his dinner in the refrigerator- he might decide to eat it later- if he gets up hungry... feed him his dinner)
It will probably be rough, but he is in a power struggle with you- and he is "winning"- he isn't trying to be bad necessarily, but he is finding where his boundaries are.
I really doubt he is truly starving... if so he couldn't afford to be so picky at dinnertime. Make sure his snacks are a combination of proteins and carbs (like crackers and cheese, or a half a turkey sandwich) to make them last longer so he won't get SO hungry at night if that is what you are worried about.
It might be a tough bit until he realizes that you mean business and you aren't a short order chef. But he will get it, and as long as you are firm and consistent... you won't scar him for life.
Good Luck
-M.
PS- we also do the one bite rule like McMama- especially with new foods. Except we switched to "two bites" because sometimes she would like a new food on the second taste. Unfamiliar foods that she may not like, I offer an alternative like a half PB&J or leftovers from last night AFTER she tries two bites of everything on her plate.