# The target built for a native non-bootstrap build.
all:
@if gcc-bootstrap
[ -f stage_final ] || echo stage3 > stage_final
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(MAKE) $(RECURSE_FLAGS_TO_PASS) `cat stage_final`-bubble
@endif gcc-bootstrap
@: $(MAKE); $(unstage)
@r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
@if gcc-bootstrap
if [ -f stage_last ]; then \
TFLAGS="$(STAGE$(shell test ! -f stage_last || sed s,^stage,, stage_last)_TFLAGS)"; \
$(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target; \
else \
@endif gcc-bootstrap
$(MAKE) $(RECURSE_FLAGS_TO_PASS) all-host all-target \
@if gcc-bootstrap
; \
fi \
@endif gcc-bootstrap
&& :
What does this statement, @: $(MAKE); $(unstage)
, do in this recipe for target all?
I have tried to remove other statements but this one, and make this Makefile, it does nothing. However, according to the mechanism of make, it should invoke the recipe for first target if without dependencies, therefore it will spawn a new shell process to call make in current directory, which may lead to a indefinitively recursive call. But it just does nothing and terminate.
I am confused about what that statement, @: $(MAKE); $(unstage)
do, and why need it there in recipe.