Remove .PHONY support
Add Makefile struct and rename Makefile func to Marshal
Move external make function to external.go and rename