First make sure you have bash-completion installed.
Then add this to your .bashrc
file:
complete -W "\`grep -oE '^[a-zA-Z0-9_.-]+:([^=]|$)' Makefile | sed 's/[^a-zA-Z0-9_.-]*$//'\`" make
This assumes your Makefiles are all names Makefile
(with capital M) - if not you will need to adapt this command to your specific file naming scheme.
If you want to exclude the dot-targets from suggestions (including all .PHONY
special targets) you can use its slightly modified version:
complete -W "\`grep -oE '^[^.][a-zA-Z0-9_.-]+:([^=]|$)' Makefile | sed 's/[^a-zA-Z0-9_.-]*$//'\`" make