Browse files

build: fix config.gypi target

The config.gypi target has a recipe that uses the control function error
to report if the config.gypi file is missing or if it is stale (the
configure file was updated which is a prerequisite of this rule).

GNU make has two phases, immediate and deferred. During the first phase
 it will expand any variables or functions as the makefile is parsed.
The recipe in this case is a shell if statement, which is a deferred
construct. But the control function $(error) is an immediate construct
which will cause the makefile processing to stop during the first phase
of the Make process.

If I understand this correctly the only possible outcome of this rule is
the "Stale config.gypi, please re-run ./configure"  message which will
be done in the first phase and then exit. The shell condition will not
be considered. So it will never report that the config.gypi is missing.

bnoordhuis suggested that we simply change this into a single error
"Missing or stale config.gypi, please run configure"

PR-URL: #9053
Reviewed-By: Ben Noordhuis <>
Reviewed-By: Gibson Fahnestock <>
  • Loading branch information...
danbev authored and MylesBorins committed Oct 12, 2016
1 parent 695ee1e commit 4de7a6e2919dd640bbfeeb1b1c91c20976e5a792
Showing with 1 addition and 5 deletions.
  1. +1 −5 Makefile
@@ -71,11 +71,7 @@ out/Makefile: common.gypi deps/uv/uv.gyp deps/http_parser/http_parser.gyp deps/z
$(PYTHON) tools/ -f make
config.gypi: configure
if [ -f $@ ]; then
$(error Stale $@, please re-run ./configure)
$(error No $@, please run ./configure first)
$(error Missing or stale $@, please run ./$<)
install: all
$(PYTHON) tools/ $@ '$(DESTDIR)' '$(PREFIX)'

0 comments on commit 4de7a6e

Please sign in to comment.