GNU `make'

Node:MAKEFILE_LIST Variable, Next:Special Variables, Previous:MAKEFILES Variable, Up:Makefiles

### The Variable `MAKEFILE_LIST`

As `make` reads various makefiles, including any obtained from the `MAKEFILES` variable, the command line, the default files, or from `include` directives, their names will be automatically appended to the `MAKEFILE_LIST` variable. They are added right before `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 := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))

         include inc.mk

         name2 := $(word $(words $(MAKEFILE_LIST)),$(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 `word` and `words` functions used above. See The Two Flavors of Variables, for more information on simply-expanded (`:=`) variable definitions.