makefile tem uma relação muito estúpida com guias, todas as ações de todas as regras são identificadas por guias. E não, 4 espaços não formam uma guia, apenas uma guia cria uma guia.
para verificar eu uso o comando cat -e -t -v makefile_name
Ele mostra a presença de guias ^I
e terminações de linha com $
ambas são vitais para garantir que as dependências terminem corretamente e as guias marcam a ação das regras para que sejam facilmente identificáveis pelo utilitário make.
Exemplo:
Kaizen ~/so_test $ cat -e -t -v mk.t
all:ll$ ## here the $ is end of line ...
$
ll:ll.c $
^Igcc -c -Wall -Werror -02 c.c ll.c -o ll $@ $<$
## the ^I above means a tab was there before the action part, so this line is ok .
$
clean :$
\rm -fr ll$
## see here there is no ^I which means , tab is not present ....
## in this case you need to open the file again and edit/ensure a tab
## starts the action part