M.L.
Sounds like me as as a child. i had major texture and sensory issues, and only ate a few handfuls of food a day. It wasn't until I was about 11, with a bone scan of a 9 year old and a threat of iv feeding by my endocrinologist and that I would never reach 5 feet that I started to force myself to eat! (And I am just under 5 feet as an adult).
Anyways, the very few foods I would eat, was chicken noodle soup (usually broth only with crackers and cheese), spaghetti noodles with no sauce, some fruits, raw carrots with ranch, bread and milk, toast... and that was after much trying.
What my pedi had us do was the Carnation instant drink mixes, and I know it's still recommended for kids like this today. It t least helped.
What you can try is making fruit smoothies and popsicles, and adding in vitamin powder. You can add supplements to almost anything, soups, oatmeal, sauces... that was another thing my mom did to sneak in nutrients into my meals.
Withhold items such as ice cream, unless you keep it light and add in toppings like nuts and fresh fruits. If you do waffles, make whole wheat ones and a healthier syrup option and fresh fruit. Try making carrot or zucchini bread. Try making sweet potato fries. Quesidillas, english muffin pizza, and he can help put on the toppings. He gets constipated a lot because he has no fiber intake, which means he needs to be eating those fruits and veggies.
Even the smallest children will understand things explained simply, "Strawberries and carrots are yummy and make you grown big and strong like Superman... they will make your tummy feel better so going to the bathroom doesn't hurt so bad. Would you like to get big and strong and have an easier time in the bathroom?"
Involve him in the kitchen in preparing the food, get him a fun kids cookbook... do things to help excite him about what he's eating.
Remember to give him plenty of options and limit the junk you bring into the house, so he can't default away from healthy choices.
When he throws a tantrum, there is nothing wrong with marching him in timeout, waiting until he calms down and reminding him he's a good boy that needs to eat his dinner, than he can go watch his favorite cartoon and have ice cream.
We give choices to our kids, "You can either eat 4 really big bites until you are done, or 10 little bites!" They usually choose the 4 big bites. After the 4 I usually say, "That was good huh, you think you can eat 3 more big bites, then we'll have ice cream!" It works a lot... even if I spoon feed them (which my 5 year old doesn't mind at this point because we make it fun.)
Hang in there, sounds like you are really trying!