diff --git a/nss/coreconf/Werror.mk b/nss/coreconf/Werror.mk
index a569a49..e69de29 100644
--- a/nss/coreconf/Werror.mk
+++ b/nss/coreconf/Werror.mk
@@ -1,107 +0,0 @@
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-# This sets WARNING_CFLAGS for gcc-like compilers.
-
-ifndef CC_IS_CLANG
-  CC_IS_CLANG := $(and $(findstring clang, $(shell $(CC) --version 2>&1)), 1)
-  # Export CC_IS_CLANG to save a shell invocation when recursing.
-  export CC_IS_CLANG
-endif
-
-ifdef CC_IS_CLANG
-  # Clang claims GCC 4.2.1 compatibility, see GCC_VERSION
-  CC_IS_GCC = 1
-  # Export CC_IS_GCC to save a shell invocation when recursing.
-  export CC_IS_GCC
-endif
-
-ifndef CC_IS_GCC
-  CC_IS_GCC := $(shell $(CC) -x c -E -Wall -Werror /dev/null >/dev/null 2>&1 && echo 1)
-  # Export CC_IS_GCC to save a shell invocation when recursing.
-  export CC_IS_GCC
-endif
-
-ifndef CC_NAME
-  ifeq (1,$(CC_IS_GCC))
-    CC_NAME := $(shell $(CC) -? 2>&1 >/dev/null | sed -e 's/:.*//;1q')
-  else
-    CC_NAME := $(notdir $(CC))
-  endif
-  # Export CC_NAME to save a shell invocation when recursing.
-  export CC_NAME
-endif
-
-ifndef GCC_VERSION
-  ifeq (1,$(CC_IS_GCC))
-    GCC_VERSION := $(subst ., ,$(shell $(CC) -dumpversion || echo x.x.x))
-    # Export GCC_VERSION to save a shell invocation when recursing.
-    export GCC_VERSION
-  endif
-endif
-
-ifndef WARNING_CFLAGS
-  ifneq (1,$(CC_IS_GCC))
-    WARNING_CFLAGS = $(NULL)
-  else
-    # This tests to see if enabling the warning is possible before
-    # setting an option to disable it.
-    set_warning = $(shell $(CC) -x c -E -Werror -W$(1) /dev/null >/dev/null 2>&1 && echo -W$(2)$(1))
-    enable_warning = $(call set_warning,$(1),)
-    disable_warning = $(call set_warning,$(1),no-)
-
-    WARNING_CFLAGS = -Wall $(call enable_warning,shadow)
-    ifdef CC_IS_CLANG
-      # -Qunused-arguments : clang objects to arguments that it doesn't understand
-      #    and fixing this would require rearchitecture
-      WARNING_CFLAGS += -Qunused-arguments
-      # -Wno-parentheses-equality : because clang warns about macro expansions
-      WARNING_CFLAGS += $(call disable_warning,parentheses-equality)
-      ifdef BUILD_OPT
-        # clang is unable to handle glib's expansion of strcmp and similar for optimized
-        # builds, so ignore the resulting errors.
-        # See https://llvm.org/bugs/show_bug.cgi?id=20144
-        WARNING_CFLAGS += $(call disable_warning,array-bounds)
-        WARNING_CFLAGS += $(call disable_warning,unevaluated-expression)
-      endif
-    endif # if clang
-
-    ifndef NSS_ENABLE_WERROR
-      ifeq ($(OS_TARGET),Android)
-        # Android lollipop generates the following warning:
-        # error: call to 'sprintf' declared with attribute warning:
-        #   sprintf is often misused; please use snprintf [-Werror]
-        # So, just suppress -Werror entirely on Android
-        NSS_ENABLE_WERROR = 0
-        $(warning OS_TARGET is Android, disabling -Werror)
-      else
-        ifdef CC_IS_CLANG
-          # Clang reports its version as an older gcc, but it's OK
-          NSS_ENABLE_WERROR = 1
-        else
-          ifneq (,$(filter 4.8 4.9,$(word 1,$(GCC_VERSION)).$(word 2,$(GCC_VERSION))))
-            NSS_ENABLE_WERROR = 1
-          endif
-          ifeq (,$(filter 0 1 2 3 4,$(word 1,$(GCC_VERSION))))
-            NSS_ENABLE_WERROR = 1
-          endif
-        endif
-        ifndef NSS_ENABLE_WERROR
-          $(warning Unable to find gcc 4.8 or greater, disabling -Werror)
-          NSS_ENABLE_WERROR = 0
-        endif
-      endif
-    endif #ndef NSS_ENABLE_WERROR
-
-    ifeq ($(NSS_ENABLE_WERROR),1)
-      WARNING_CFLAGS += -Werror
-    else
-      # Old versions of gcc (< 4.8) don't support #pragma diagnostic in functions.
-      # Use this to disable use of that #pragma and the warnings it suppresses.
-      WARNING_CFLAGS += -DNSS_NO_GCC48
-    endif
-  endif
-  export WARNING_CFLAGS
-endif # ndef WARNING_CFLAGS
-- 
2.35.1.1178.g4f1659d476-goog

