I just had to deal with a large, handwritten Makefile when trying to package and cross compile something for buildroot.
Turns out it was easier to learn to use cmake and rewrite the relevant parts of the Makefile than fix everything in the Makefile that didn't work in a cross compilation scenario.