makeの恐ろしく低レベルな質問をお願いします。

a.out: source.o
cc -o $@ source.o
source.o: source.c
cc -c $<
source.c: header.h

というmakefileを作ったのですが、header.hを更新してもa.outが再生成されません。source.cを更新した場合はされるのですが。
どう見ても間違いはなさそうなんですが、でもやっぱり間違ってるんでしょうか…
基本的過ぎて逆に答えが分からない、というやつですorz