Basically, if options.gypi is modified after ./configure is ran, gyp attempts to regenerate the makefile, however because the makefile is in the out/ folder, ./tools/gyp_node isn't the correct path.
Gyp provides a variable toplevel_dir in WriteAutoRegenerationRule (gyp/pylib/gyp/generator/make.py) but I'm not sure where that should be set, just that it has to be set because at the moment it doesn't work.
yes, this is annoying
I tried to make this work with gyp, but it seems that it's more or less hard-coded on a Chromium-like build environment.
The easiest fix for this is to add this in the top Makefile (and possibly remove the call from configure):
out/Makefile: common.gypi deps/uv/uv.gyp deps/http_parser/http_parser.gyp deps/zlib/zlib.gyp deps/v8/build/common.gypi deps/v8/tools/gyp/v8.gyp node.gyp options.gypi
tools/gyp_node -f make
Regenerate out/Makefile from within the main Makefile. Fixes #2147.
build: regenerate out/Makefile from within the main Makefile