+--- a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py
++++ b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py
+@@ -154,6 +154,32 @@ cmd_alink_thin = rm -f $@ && $(AR.$(TOOL
+ quiet_cmd_link = LINK($(TOOLSET)) $@
+ cmd_link = $(LINK.$(TOOLSET)) -o $@ $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl,--start-group $(LD_INPUTS) $(LIBS) -Wl,--end-group
+
++define xargs
++ $(1) $(wordlist 1,100,$(2))
++ $(if $(word 101,$(2)),$(call xargs,$(1),$(wordlist 101,$(words $(2)),$(2))))
++endef
++
++define write-to-file
++ @echo >$(1)
++ $(call xargs,printf "%s\\n" >>$(1),$(2))
++endef
++
++OBJ_FILE_LIST_SFX := ar-file-list
++
++define create_archive
++ $(eval OBJ_FILE_LIST := $(basename $(notdir $(1))).$(OBJ_FILE_LIST_SFX))
++ rm -f $(1) $(1).$(OBJ_FILE_LIST); mkdir -p `dirname $(1)`
++ $(call write-to-file,$(1).$(OBJ_FILE_LIST),$(filter %.o,$(2)))
++ $(AR.$(TOOLSET)) crs $(1) @$(1).$(OBJ_FILE_LIST)
++endef
++
++define create_thin_archive
++ $(eval OBJ_FILE_LIST := $(basename $(notdir $(1))).$(OBJ_FILE_LIST_SFX))
++ rm -f $(1) $(OBJ_FILE_LIST); mkdir -p `dirname $(1)`
++ $(call write-to-file,$(1).$(OBJ_FILE_LIST),$(filter %.o,$(2)))
++ $(AR.$(TOOLSET)) crsT $(1) @$(1).$(OBJ_FILE_LIST)
++endef
++
+ # We support two kinds of shared objects (.so):
+ # 1) shared_library, which is just bundling together many dependent libraries
+ # into a link line.
+@@ -198,6 +224,32 @@ cmd_alink = rm -f $@ && $(AR.$(TOOLSET))
+ quiet_cmd_alink_thin = AR($(TOOLSET)) $@
+ cmd_alink_thin = rm -f $@ && $(AR.$(TOOLSET)) crsT $@ $(filter %.o,$^)
+
++define xargs
++ $(1) $(wordlist 1,100,$(2))
++ $(if $(word 101,$(2)),$(call xargs,$(1),$(wordlist 101,$(words $(2)),$(2))))
++endef
++
++define write-to-file
++ @echo >$(1)
++ $(call xargs,printf "%s\\n" >>$(1),$(2))
++endef
++
++OBJ_FILE_LIST_SFX := ar-file-list
++
++define create_archive
++ $(eval OBJ_FILE_LIST := $(basename $(notdir $(1))).$(OBJ_FILE_LIST_SFX))
++ rm -f $(1) $(1).$(OBJ_FILE_LIST); mkdir -p `dirname $(1)`
++ $(call write-to-file,$(1).$(OBJ_FILE_LIST),$(filter %.o,$(2)))
++ $(AR.$(TOOLSET)) crs $(1) @$(1).$(OBJ_FILE_LIST)
++endef
++
++define create_thin_archive
++ $(eval OBJ_FILE_LIST := $(basename $(notdir $(1))).$(OBJ_FILE_LIST_SFX))
++ rm -f $(1) $(OBJ_FILE_LIST); mkdir -p `dirname $(1)`
++ $(call write-to-file,$(1).$(OBJ_FILE_LIST),$(filter %.o,$(2)))
++ $(AR.$(TOOLSET)) crsT $(1) @$(1).$(OBJ_FILE_LIST)
++endef
++
+ # Due to circular dependencies between libraries :(, we wrap the
+ # special "figure out circular dependencies" flags around the entire
+ # input list during linking.
+@@ -1768,21 +1820,35 @@ $(obj).$(TOOLSET)/$(TARGET)/%%.o: $(obj)
+ self.flavor not in ("mac", "openbsd", "netbsd", "win")
+ and not self.is_standalone_static_library
+ ):
+- self.WriteDoCmd(
+- [self.output_binary],
+- link_deps,
+- "alink_thin",
+- part_of_all,
+- postbuilds=postbuilds,
+- )
++ if self.flavor in ('linux', 'android'):
++ self.WriteMakeRule(
++ [self.output_binary],
++ link_deps,
++ actions = ['$(call create_thin_archive,$@,$^)']
++ )
++ else:
++ self.WriteDoCmd(
++ [self.output_binary],
++ link_deps,
++ "alink_thin",
++ part_of_all,
++ postbuilds=postbuilds,
++ )
+ else:
+- self.WriteDoCmd(
+- [self.output_binary],
+- link_deps,
+- "alink",
+- part_of_all,
+- postbuilds=postbuilds,
+- )
++ if self.flavor in ('linux', 'android'):
++ self.WriteMakeRule(
++ [self.output_binary],
++ link_deps,
++ actions = ['$(call create_archive,$@,$^)']
++ )
++ else:
++ self.WriteDoCmd(
++ [self.output_binary],
++ link_deps,
++ "alink",
++ part_of_all,
++ postbuilds=postbuilds,
++ )
+ elif self.type == "shared_library":
+ self.WriteLn(
+ "%s: LD_INPUTS := %s"
+--- a/tools/gyp/pylib/gyp/generator/make.py
++++ b/tools/gyp/pylib/gyp/generator/make.py
+@@ -154,6 +154,32 @@ cmd_alink_thin = rm -f $@ && $(AR.$(TOOL
+ quiet_cmd_link = LINK($(TOOLSET)) $@
+ cmd_link = $(LINK.$(TOOLSET)) -o $@ $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl,--start-group $(LD_INPUTS) $(LIBS) -Wl,--end-group
+
++define xargs
++ $(1) $(wordlist 1,100,$(2))
++ $(if $(word 101,$(2)),$(call xargs,$(1),$(wordlist 101,$(words $(2)),$(2))))
++endef
++
++define write-to-file
++ @echo >$(1)
++ $(call xargs,printf "%s\\n" >>$(1),$(2))
++endef
++
++OBJ_FILE_LIST_SFX := ar-file-list
++
++define create_archive
++ $(eval OBJ_FILE_LIST := $(basename $(notdir $(1))).$(OBJ_FILE_LIST_SFX))
++ rm -f $(1) $(1).$(OBJ_FILE_LIST); mkdir -p `dirname $(1)`
++ $(call write-to-file,$(1).$(OBJ_FILE_LIST),$(filter %.o,$(2)))
++ $(AR.$(TOOLSET)) crs $(1) @$(1).$(OBJ_FILE_LIST)
++endef
++
++define create_thin_archive
++ $(eval OBJ_FILE_LIST := $(basename $(notdir $(1))).$(OBJ_FILE_LIST_SFX))
++ rm -f $(1) $(OBJ_FILE_LIST); mkdir -p `dirname $(1)`
++ $(call write-to-file,$(1).$(OBJ_FILE_LIST),$(filter %.o,$(2)))
++ $(AR.$(TOOLSET)) crsT $(1) @$(1).$(OBJ_FILE_LIST)
++endef
++
+ # We support two kinds of shared objects (.so):
+ # 1) shared_library, which is just bundling together many dependent libraries
+ # into a link line.
+@@ -198,6 +224,32 @@ cmd_alink = rm -f $@ && $(AR.$(TOOLSET))
+ quiet_cmd_alink_thin = AR($(TOOLSET)) $@
+ cmd_alink_thin = rm -f $@ && $(AR.$(TOOLSET)) crsT $@ $(filter %.o,$^)
+
++define xargs
++ $(1) $(wordlist 1,100,$(2))
++ $(if $(word 101,$(2)),$(call xargs,$(1),$(wordlist 101,$(words $(2)),$(2))))
++endef
++
++define write-to-file
++ @echo >$(1)
++ $(call xargs,printf "%s\\n" >>$(1),$(2))
++endef
++
++OBJ_FILE_LIST_SFX := ar-file-list
++
++define create_archive
++ $(eval OBJ_FILE_LIST := $(basename $(notdir $(1))).$(OBJ_FILE_LIST_SFX))
++ rm -f $(1) $(1).$(OBJ_FILE_LIST); mkdir -p `dirname $(1)`
++ $(call write-to-file,$(1).$(OBJ_FILE_LIST),$(filter %.o,$(2)))
++ $(AR.$(TOOLSET)) crs $(1) @$(1).$(OBJ_FILE_LIST)
++endef
++
++define create_thin_archive
++ $(eval OBJ_FILE_LIST := $(basename $(notdir $(1))).$(OBJ_FILE_LIST_SFX))
++ rm -f $(1) $(OBJ_FILE_LIST); mkdir -p `dirname $(1)`
++ $(call write-to-file,$(1).$(OBJ_FILE_LIST),$(filter %.o,$(2)))
++ $(AR.$(TOOLSET)) crsT $(1) @$(1).$(OBJ_FILE_LIST)
++endef
++
+ # Due to circular dependencies between libraries :(, we wrap the
+ # special "figure out circular dependencies" flags around the entire
+ # input list during linking.
+@@ -1768,21 +1820,35 @@ $(obj).$(TOOLSET)/$(TARGET)/%%.o: $(obj)
+ self.flavor not in ("mac", "openbsd", "netbsd", "win")
+ and not self.is_standalone_static_library
+ ):
+- self.WriteDoCmd(
+- [self.output_binary],
+- link_deps,
+- "alink_thin",
+- part_of_all,
+- postbuilds=postbuilds,
+- )
++ if self.flavor in ('linux', 'android'):
++ self.WriteMakeRule(
++ [self.output_binary],
++ link_deps,
++ actions = ['$(call create_thin_archive,$@,$^)']
++ )
++ else:
++ self.WriteDoCmd(
++ [self.output_binary],
++ link_deps,
++ 'alink_thin',
++ part_of_all,
++ postbuilds=postbuilds
++ )
+ else:
+- self.WriteDoCmd(
+- [self.output_binary],
+- link_deps,
+- "alink",
+- part_of_all,
+- postbuilds=postbuilds,
+- )
++ if self.flavor in ('linux', 'android'):
++ self.WriteMakeRule(
++ [self.output_binary],
++ link_deps,
++ actions = ['$(call create_archive,$@,$^)']
++ )
++ else:
++ self.WriteDoCmd(
++ [self.output_binary],
++ link_deps,
++ 'alink',
++ part_of_all,
++ postbuilds=postbuilds
++ )
+ elif self.type == "shared_library":
+ self.WriteLn(
+ "%s: LD_INPUTS := %s"