diff --git a/clear_xpcom_vars.mk b/clear_xpcom_vars.mk
index b0113e7919ad2e03c886b91bc0a3cffeb30c9f68..52e6b5fe20b9544c756aff5d7dab9f400ab23f41 100644
--- a/clear_xpcom_vars.mk
+++ b/clear_xpcom_vars.mk
@@ -6,6 +6,7 @@ LOCAL_INSTALLED_XPCOM_IDLS :=
 LOCAL_INSTALLED_XPCOM_IDL_HEADERS :=
 LOCAL_JS_NOTICE :=
 LOCAL_JS_SRC_FILES :=
+LOCAL_JS_LINTONLY_FILES :=
 LOCAL_XPCOM_IDLS :=
 LOCAL_XPCOM_INSTALL_DIR :=
 LOCAL_XPCOM_MODULE_OBJDIR :=
diff --git a/xpcom.mk b/xpcom.mk
index bbc53b630e9c3f80e555690c8859ee3c1275deca..9893c005e94aad5adddcd44766e19954b9cd27d7 100644
--- a/xpcom.mk
+++ b/xpcom.mk
@@ -201,6 +201,15 @@ endif
 	$(ACP) $< $@
 endif
 
+JS_LINTONLY_OK_FILES := $(addsuffix .ok, $(addprefix $(LOCAL_XPCOM_MODULE_OBJDIR)/,$(LOCAL_JS_LINTONLY_FILES)))
+
+$(JS_LINTONLY_OK_FILES): $(LOCAL_XPCOM_MODULE_OBJDIR)/%.js.ok: $(LOCAL_PATH)/%.js
+ifdef GJSLINT
+	$(GJSLINT) $<
+endif
+	@mkdir -p $(@D)
+	touch $@
+
 LOCAL_ADDITIONAL_INSTALL_DEPENDENCIES += $(LOCAL_MODULE_PATH)/chrome.manifest
 
 $(LOCAL_MODULE_PATH)/chrome.manifest: $(LOCAL_PATH)/chrome.manifest $(BUILDLIST_PY) $(ACP)
@@ -216,4 +225,4 @@ include $(BUILD_SHARED_LIBRARY)
 
 $(all_objects): $(DEPENDS_ON_GECKO) $(LOCAL_INSTALLED_XPCOM_IDL_HEADERS) $(LOCAL_INSTALLED_REQUIRED_XPCOM_IDL_HEADERS)
 
-$(LOCAL_INSTALLED_MODULE): $(LOCAL_ADDITIONAL_INSTALL_DEPENDENCIES)
+$(LOCAL_INSTALLED_MODULE): $(LOCAL_ADDITIONAL_INSTALL_DEPENDENCIES) $(JS_LINTONLY_OK_FILES)