Required tabs, lines are each their own "script" instead of blocks (allowing variables), not allowing other executors (i.e. python, TCL, etc would be better than sh).
Actually you can tell GNU Make not to create a new shell for every command using .ONESHELL[0] and you can also select a different shell executable to run said commands[1]