Makefile で現在処理中の makefile のパスを知りたい(未解決)

3 時間ほど調査したけど、結局わからなかった。

Makefile が複数ある場合、例えば

$(MAKE) -C hoge -f fuga.mk

という感じでネストする Makefile が呼び出されていれば、

$(shell pwd)

ディレクトリは取得できる。

けど、ファイル名は取得できない。



これよりも困難なのが、include を使用したパターンで

include hoge/fuga.mk

と書かれていた場合、fuga.mk が呼び出された際に自分自身のパスはおろか、ディレクトリも知る術がない*1


じゃあどうするのか、というと、おそらく make コマンドをラップするシェルスクリプトか何かを書いて、その中で環境変数を書き換えつつ、呼び出された Makefile からは環境変数を参照しつつ、というのを行うのだろう。

*1:$(shell pwd) で取れるパスは、最初に make を叩いたカレントディレクト