I'm compiling LLVM as well as clang. I noticed that the output of compilation has llvm[1]:
or llvm[2]:
or llvm[3]
: prefixed to each line. What do those integers in brackets mean?
问题:
回答1:
It's the number of the compilation job (make -j
). Helpful to trace compilation errors.
回答2:
Apparently, it's not connected to the number of the compilation job (can be easily checked via make -j 1). The autoconf-based build system indicates the "level" of the makefile inside the source tree). To be prices, it's a value of make's MAKELEVEL variable.
回答3:
The currently accepted answer is not correct. Furthermore, this is really a GNU Make question, not a LLVM question.
What you're seeing is the current value of the MAKELEVEL
variable echoed by make
to the command line. This value is set as a result of recursive execution. From the GNU make manual:
As a special feature, the variable MAKELEVEL is changed when it is passed down from level to level. This variable’s value is a string which is the depth of the level as a decimal number. The value is ‘0’ for the top-level make; ‘1’ for a sub-make, ‘2’ for a sub-sub-make, and so on. The incrementation happens when make sets up the environment for a recipe.
If you have a copy of the GNU Make source code on hand, you can see your output message being generated in output.c
with the void message(...)
function. In GNU make v4.2, this happens on line 626. Specifically the program
argument is set to the string "llvm" and the makelevel argument is set as noted above.
Since it was erroneously brought up, it is not the number of the compilation job. The -j [jobs]
or --jobs[=jobs]
options enable parallel execution of up to jobs
number of recipes simultaneously. If -j
or --jobs
is selected, but jobs
is not set, GNU Make attempts to execute as many recipes simultaneously as possible. See this section of the GNU Make manual for more information.
It is possible to have recursive execution without parallel execution, and parallel execution without recursive execution. This is the main reason that the currently accepted answer is not correct.