make reads various makefiles, including any obtained from the
MAKEFILES variable, the command line, the default files, or
include directives, their names will be automatically
appended to the
MAKEFILE_LIST variable. They are added right
make begins to parse them.
This means that if the first thing a makefile does is examine the last
word in this variable, it will be the name of the current makefile.
Once the current makefile has used
include, however, the last
word will be the just-included makefile.
If a makefile named
Makefile has this content:
name1 := $(lastword $(MAKEFILE_LIST)) include inc.mk name2 := $(lastword $(MAKEFILE_LIST)) all: @echo name1 = $(name1) @echo name2 = $(name2)
then you would expect to see this output:
name1 = Makefile name2 = inc.mk
See Text Functions, for more information on the
words functions used above. See The Two Flavors of Variables, for more information on simply-expanded (