Bug 950298 - Make the js build system use top-level as its root objdir. r=gps
authorMike Hommey <mh+mozilla@glandium.org>
Tue, 14 Jan 2014 07:38:40 +0900
changeset 179234 1a1968da61b32a7dee6f1c08c15f7de9e825ec77
parent 179233 d2d3bfbb75a677e55535d15f2e110526587a2acf
child 179235 481e4766030eefc867a29701d37007c3796e696b
push id3343
push userffxbld
push dateMon, 17 Mar 2014 21:55:32 +0000
treeherdermozilla-beta@2f7d3415f79f [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersgps
bugs950298
milestone29.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 950298 - Make the js build system use top-level as its root objdir. r=gps
CLOBBER
Makefile.in
client.mk
config/Makefile.in
config/baseconfig.mk
config/config.mk
config/moz.build
config/rules.mk
config/static-checking-config.mk
js/src/Makefile.in
js/src/aclocal.m4
js/src/build/check-sync-exceptions
js/src/build/msys-perl-wrapper
js/src/build/qemu-wrap
js/src/build/subconfigure.py
js/src/build/unix/add_phony_targets.py
js/src/build/unix/headers/bits/c++config.h
js/src/build/unix/print-failed-commands.sh
js/src/build/unix/uniq.pl
js/src/build/win32/pgomerge.py
js/src/config/Makefile.in
js/src/config/Moz/Milestone.pm
js/src/config/autoconf.mk.in
js/src/config/baseconfig.mk
js/src/config/check-sync-dirs.py
js/src/config/check-sync-exceptions
js/src/config/check_source_count.py
js/src/config/check_spidermonkey_style.py
js/src/config/check_vanilla_allocations.py
js/src/config/config.mk
js/src/config/emptyvars.mk.in
js/src/config/expandlibs.py
js/src/config/expandlibs_config.py
js/src/config/expandlibs_exec.py
js/src/config/expandlibs_gen.py
js/src/config/find_OOM_errors.py
js/src/config/gcc_hidden.h
js/src/config/make-system-wrappers.pl
js/src/config/makefiles/autotargets.mk
js/src/config/makefiles/debugmake.mk
js/src/config/makefiles/functions.mk
js/src/config/makefiles/java-build.mk
js/src/config/makefiles/makeutils.mk
js/src/config/makefiles/mochitest.mk
js/src/config/makefiles/nonrecursive.mk
js/src/config/makefiles/rcs.mk
js/src/config/makefiles/target_binaries.mk
js/src/config/milestone.pl
js/src/config/milestone.txt
js/src/config/moz.build
js/src/config/nsinstall.c
js/src/config/nsinstall.py
js/src/config/pathsub.c
js/src/config/pathsub.h
js/src/config/pythonpath.py
js/src/config/rebuild_check.py
js/src/config/recurse.mk
js/src/config/rules.mk
js/src/config/solaris_ia32.map
js/src/config/static-checking-config.mk
js/src/config/static-checking.js
js/src/config/string-format.js
js/src/config/system-headers
js/src/config/version.mk
js/src/config/version_win.pl
js/src/configure.in
js/src/gdb/Makefile.in
js/src/jsapi-tests/Makefile.in
js/src/make-source-package.sh
js/src/moz.build
js/src/shell/Makefile.in
moz.build
python/mozbuild/mozbuild/backend/recursivemake.py
testing/testsuite-targets.mk
toolkit/mozapps/installer/packager.mk
--- a/CLOBBER
+++ b/CLOBBER
@@ -17,9 +17,9 @@
 #
 # Modifying this file will now automatically clobber the buildbot machines \o/
 #
 
 # Are you updating CLOBBER because you think it's needed for your WebIDL
 # changes to stick? As of bug 928195, this shouldn't be necessary! Please
 # don't change CLOBBER for WebIDL changes any more.
 
-Bug 958185 requires clobber on Android to force a Proguard refresh
+Bug 950298 requires clobber because it changes where nsinstall is picked and it was previously installed there with wrong permissions. Also, the directory where js is built changed.
--- a/Makefile.in
+++ b/Makefile.in
@@ -12,56 +12,71 @@ ifneq ($(make_min_ver),$(firstword $(sor
 $(error GNU Make $(make_min_ver) or higher is required)
 endif
 endif
 
 export TOPLEVEL_BUILD := 1
 
 default::
 
+ifdef MOZ_BUILD_APP
 include $(topsrcdir)/$(MOZ_BUILD_APP)/build.mk
+endif
 
 include $(topsrcdir)/config/config.mk
 
 ifndef LIBXUL_SDK
 ifdef COMPILE_ENVIRONMENT
+ifndef BUILDING_JS
 BUILD_JS = 1
 endif
 endif
+endif
 
 GARBAGE_DIRS += dist _javagen _profile staticlib
 DIST_GARBAGE = config.cache config.log config.status* config-defs.h \
    config/autoconf.mk \
    mozilla-config.h \
    netwerk/necko-config.h xpcom/xpcom-config.h xpcom/xpcom-private.h \
    .mozconfig.mk
 
+ifdef BUILDING_JS
+configure_dir = $(topsrcdir)/js/src
+else
+configure_dir = $(topsrcdir)
+endif
+
 ifndef MOZ_PROFILE_USE
 # We need to explicitly put backend.RecursiveMakeBackend here
 # otherwise the rule in rules.mk doesn't run early enough.
-libs binaries export tools:: CLOBBER $(topsrcdir)/configure config.status backend.RecursiveMakeBackend
+libs binaries export tools:: CLOBBER $(configure_dir)/configure config.status backend.RecursiveMakeBackend
 ifdef BUILD_JS
 libs binaries export tools:: js-config-status
 endif
 endif
 
+ifdef BUILDING_JS
+.PHONY: CLOBBER
+CLOBBER:
+else
 CLOBBER: $(topsrcdir)/CLOBBER
 	@echo 'STOP!  The CLOBBER file has changed.'
 	@echo 'Please run the build through a sanctioned build wrapper, such as'
 	@echo '"mach build" or client.mk.'
 	@exit 1
+endif
 
-$(topsrcdir)/configure: $(topsrcdir)/configure.in
+$(configure_dir)/configure: $(configure_dir)/configure.in
 	@echo 'STOP!  configure.in has changed, and your configure is out of date.'
 	@echo 'Please rerun autoconf and re-configure your build directory.'
 	@echo 'To ignore this message, touch "configure" in the source directory,'
 	@echo 'but your build might not succeed.'
 	@exit 1
 
-config.status: $(topsrcdir)/configure
+config.status: $(configure_dir)/configure
 	@echo 'STOP!  configure has changed and needs to be run in this build directory.'
 	@echo 'Please rerun configure.'
 	@echo 'To ignore this message, touch "config.status" in the build directory,'
 	@echo 'but your build might not succeed.'
 	@exit 1
 
 # Regenerate the build backend if it is out of date. We only have this rule in
 # this main make file because having it in rules.mk and applied to partial tree
@@ -85,28 +100,40 @@ ifdef BUILD_JS
 .PHONY: js-config-status
 js-config-status:
 	$(call SUBMAKE,backend.RecursiveMakeBackend,js/src,1)
 endif
 
 install_manifests := bin idl include public private sdk
 install_manifest_depends = \
   CLOBBER \
-  $(topsrcdir)/configure \
+  $(configure_dir)/configure \
   config.status \
   backend.RecursiveMakeBackend \
   $(NULL)
 
 ifdef BUILD_JS
 install_manifest_depends += js-config-status
 endif
 
 .PHONY: install-manifests
 install-manifests: $(addprefix install-dist-,$(install_manifests))
 
+# process_install_manifest needs to be invoked with --no-remove when building
+# js as standalone because automated builds are building nspr separately and
+# that would remove the resulting files. It is also necessary when building
+# js as part of gecko because that would remove the files exported from gecko.
+# Eventually, a standalone js build would just be able to build nspr itself,
+# removing the need for the former. But that won't likely happen before
+# finishing to merge gecko and js build systems, removing the need for the
+# latter.
+ifdef BUILDING_JS
+NO_REMOVE=1
+endif
+
 .PHONY: $(addprefix install-dist-,$(install_manifests))
 $(addprefix install-dist-,$(install_manifests)): install-dist-%: $(install_manifest_depends)
 	$(call py_action,process_install_manifest,$(if $(NO_REMOVE),--no-remove )$(DIST)/$* _build_manifests/install/dist_$* $(if $(BUILD_JS),js/src/_build_manifests/install/dist_$*))
 
 .PHONY: install-tests
 install-manifests: install-tests
 install-tests: $(install_manifest_depends)
 	$(call py_action,process_install_manifest,$(if $(NO_REMOVE),--no-remove )_tests _build_manifests/install/tests $(if $(BUILD_JS),js/src/_build_manifests/install/tests))
@@ -134,20 +161,22 @@ export:: install-manifests
 binaries::
 	@$(MAKE) install-manifests NO_REMOVE=1
 endif
 
 # For historical reasons that are unknown, $(DIST)/sdk is always blown away
 # with no regard for PGO passes. This decision could probably be revisited.
 export:: install-dist-sdk
 
+ifndef BUILDING_JS
 ifdef ENABLE_TESTS
 # Additional makefile targets to call automated test suites
 include $(topsrcdir)/testing/testsuite-targets.mk
 endif
+endif
 
 default all::
 	$(call BUILDSTATUS,TIERS export $(if $(COMPILE_ENVIRONMENT),$(if $(MOZ_PSEUDO_DERECURSE),compile ))libs tools)
 
 include $(topsrcdir)/config/rules.mk
 
 distclean::
 	$(RM) $(DIST_GARBAGE)
@@ -176,16 +205,17 @@ endif
 ifeq (,$(filter-out Linux SunOS,$(OS_ARCH)))
 MAKE_SYM_STORE_ARGS := -c --vcs-info
 DUMP_SYMS_BIN ?= $(DIST)/host/bin/dump_syms
 MAKE_SYM_STORE_PATH := $(DIST)/bin
 endif
 
 SYM_STORE_SOURCE_DIRS := $(topsrcdir)
 
+ifndef BUILDING_JS
 include $(topsrcdir)/toolkit/mozapps/installer/package-name.mk
 
 ifdef MOZ_SYMBOLS_EXTRA_BUILDID
 EXTRA_BUILDID := -$(MOZ_SYMBOLS_EXTRA_BUILDID)
 endif
 
 SYMBOL_INDEX_NAME = \
   $(MOZ_APP_NAME)-$(MOZ_APP_VERSION)-$(OS_TARGET)-$(BUILDID)-$(CPU_ARCH)$(EXTRA_BUILDID)-symbols.txt
@@ -220,16 +250,17 @@ ifdef MOZ_CRASHREPORTER
 	$(SHELL) $(topsrcdir)/toolkit/crashreporter/tools/upload_symbols.sh $(SYMBOL_INDEX_NAME) '$(DIST)/$(PKG_PATH)$(SYMBOL_FULL_ARCHIVE_BASENAME).zip'
 endif
 
 # MOZ_SOURCE_STAMP is defined in package-name.mk with a deferred assignment.
 # exporting it makes make run its $(shell) command for each invoked submake,
 # so transform it to an immediate assignment.
 MOZ_SOURCE_STAMP := $(MOZ_SOURCE_STAMP)
 export MOZ_SOURCE_STAMP
+endif
 
 #XXX: this is a hack, since we don't want to clobber for MSVC
 # PGO support, but we can't do this test in client.mk
 ifneq ($(OS_ARCH)_$(GNU_CC), WINNT_)
 # No point in clobbering if PGO has been explicitly disabled.
 ifndef NO_PROFILE_GUIDED_OPTIMIZE
 maybe_clobber_profiledbuild: clean
 else
@@ -245,21 +276,37 @@ endif
 
 # Look for R_386_PC32 relocations in shared libs, these
 # break x86_64 builds and SELinux users.
 ifeq ($(OS_TARGET)_$(TARGET_XPCOM_ABI),Linux_x86-gcc3)
 check::
 	@relcount=`find $(DIST)/bin -name '*.so' | xargs objdump -R | grep R_386_PC32 | wc -l` && if test $$relcount -gt 0; then echo 'FAILED: R_386_PC32 relocations detected in a shared library.  Did you use a system header without adding it to config/system-headers?'; exit 1; else echo 'PASSED'; fi
 endif
 
+ifdef BUILDING_JS
+# Delegate js-specific rules to js
+check-%:
+	$(MAKE) -C js/src $@
+
+source-package install:
+	$(MAKE) -C js/src $@
+
+# Every export rule depends on config/export, but the rule for config/export
+# doesn't exist when building js non-standalone.
+.PHONY: config/export
+config/export:
+
+else
+
 ifdef BUILD_JS
 js/src/Makefile: subsrcdir := js/src
 
 ifdef MOZ_PSEUDO_DERECURSE
 # Interdependencies for parallel export.
 js/xpconnect/src/export: dom/bindings/export xpcom/xpidl/export
 accessible/src/xpcom/export: xpcom/xpidl/export
 js/src/export: mfbt/export
 ifdef ENABLE_CLANG_PLUGIN
 js/src/export config/export: build/clang-plugin/export
 endif
 endif
 endif
+endif
--- a/client.mk
+++ b/client.mk
@@ -307,27 +307,25 @@ CONFIG_CACHE  = $(wildcard $(OBJDIR)/con
 
 EXTRA_CONFIG_DEPS := \
   $(TOPSRCDIR)/aclocal.m4 \
   $(wildcard $(TOPSRCDIR)/build/autoconf/*.m4) \
   $(TOPSRCDIR)/js/src/aclocal.m4 \
   $(NULL)
 
 $(CONFIGURES): %: %.in $(EXTRA_CONFIG_DEPS)
-	@$(PYTHON) $(TOPSRCDIR)/js/src/config/check-sync-dirs.py $(TOPSRCDIR)/js/src/build $(TOPSRCDIR)/build
 	@echo Generating $@ using autoconf
 	cd $(@D); $(AUTOCONF)
 
 CONFIG_STATUS_DEPS := \
   $(wildcard $(TOPSRCDIR)/*/confvars.sh) \
   $(CONFIGURES) \
   $(TOPSRCDIR)/CLOBBER \
   $(TOPSRCDIR)/nsprpub/configure \
   $(TOPSRCDIR)/config/milestone.txt \
-  $(TOPSRCDIR)/js/src/config/milestone.txt \
   $(TOPSRCDIR)/browser/config/version.txt \
   $(TOPSRCDIR)/build/virtualenv_packages.txt \
   $(TOPSRCDIR)/python/mozbuild/mozbuild/virtualenv.py \
   $(TOPSRCDIR)/testing/mozbase/packages.txt \
   $(NULL)
 
 CONFIGURE_ENV_ARGS += \
   MAKE='$(MAKE)' \
@@ -391,17 +389,17 @@ ifdef MOZ_PREFLIGHT
 	for mkfile in $(MOZ_PREFLIGHT); do \
 	  $(MAKE) -f $(TOPSRCDIR)/$$mkfile preflight TOPSRCDIR=$(TOPSRCDIR) OBJDIR=$(OBJDIR) MOZ_OBJDIR=$(MOZ_OBJDIR); \
 	done
 endif
 
 ####################################
 # Build it
 
-realbuild::  $(OBJDIR)/Makefile $(OBJDIR)/config.status check-sync-dirs-config
+realbuild::  $(OBJDIR)/Makefile $(OBJDIR)/config.status
 	$(MOZ_MAKE)
 
 ####################################
 # Other targets
 
 # Pass these target onto the real build system
 $(OBJDIR_TARGETS):: $(OBJDIR)/Makefile $(OBJDIR)/config.status
 	$(MOZ_MAKE) $@
@@ -449,35 +447,16 @@ cleansrcdir:
 	else \
 	  echo 'Removing object files from srcdir...'; \
 	  rm -fr `find . -type d \( -name .deps -print -o -name CVS \
 	          -o -exec test ! -d {}/CVS \; \) -prune \
 	          -o \( -name '*.[ao]' -o -name '*.so' \) -type f -print`; \
 	   build/autoconf/clean-config.sh; \
 	fi;
 
-# Because SpiderMonkey can be distributed and built independently
-# of the Mozilla source tree, it contains its own copies of many of
-# the files used by the top-level Mozilla build process, from the
-# 'config' and 'build' subtrees.
-#
-# To make it simpler to keep the copies in sync, we follow the policy
-# that the SpiderMonkey copies must always be exact copies of those in
-# the containing Mozilla tree.  If you've made a change in one, it
-# belongs in the other as well.  If the change isn't right for both
-# places, then that's something to bring up with the other developers.
-#
-# Some files are reasonable to diverge; for  example,
-# js/src/config/autoconf.mk.in doesn't need most of the stuff in
-# config/autoconf.mk.in.
-.PHONY: check-sync-dirs
-check-sync-dirs: check-sync-dirs-build check-sync-dirs-config
-check-sync-dirs-%:
-	@$(PYTHON) $(TOPSRCDIR)/js/src/config/check-sync-dirs.py $(TOPSRCDIR)/js/src/$* $(TOPSRCDIR)/$*
-
 echo-variable-%:
 	@echo $($*)
 
 # This makefile doesn't support parallel execution. It does pass
 # MOZ_MAKE_FLAGS to sub-make processes, so they will correctly execute
 # in parallel.
 .NOTPARALLEL:
 
--- a/config/Makefile.in
+++ b/config/Makefile.in
@@ -22,44 +22,48 @@ include $(topsrcdir)/config/config.mk
 
 ifneq (WINNT,$(HOST_OS_ARCH))
 ifdef COMPILE_ENVIRONMENT
 # Ensure nsinstall is atomically created
 nsinstall$(HOST_BIN_SUFFIX): $(HOST_PROGRAM)
 	cp $^ $@.tmp
 	mv $@.tmp $@
 
-NSINSTALL_FILES := nsinstall$(HOST_BIN_SUFFIX)
+NSINSTALL_EXECUTABLES := nsinstall$(HOST_BIN_SUFFIX)
 NSINSTALL_DEST := $(DIST)/bin
 NSINSTALL_TARGET := export
 INSTALL_TARGETS += NSINSTALL
 endif
 endif
 
+ifndef BUILDING_JS
 HEADERS_FILES = \
 	$(DEPTH)/mozilla-config.h \
 	$(NULL)
 HEADERS_DEST := $(DIST)/include
 HEADERS_TARGET := export
 INSTALL_TARGETS += HEADERS
+endif
 
 PYTHON_UNIT_TESTS := $(wildcard $(srcdir)/tests/unit-*.py)
 
 include $(topsrcdir)/config/rules.mk
 
 HOST_CFLAGS += -DUNICODE -D_UNICODE
 
+ifndef BUILDING_JS
 # Generate a new buildid every time we "export" in config... that's only
 # supposed to be once per-build!
 export::
 ifdef MOZ_BUILD_DATE
 	printf '%s' $(MOZ_BUILD_DATE) > buildid
 else
 	$(PYTHON) $(topsrcdir)/toolkit/xre/make-platformini.py --print-buildid > buildid
 endif
+endif
 
 ifdef WRAP_SYSTEM_INCLUDES
 export-preqs = \
   $(call mkdir_deps,system_wrappers) \
   $(NULL)
 
 export:: $(export-preqs)
 	$(PYTHON) -m mozbuild.action.preprocessor $(DEFINES) $(ACDEFINES) \
@@ -103,20 +107,20 @@ GARBAGE += $(STL_WRAPPERS_SENTINEL)
 GARBAGE_DIRS += stl_wrappers
 endif
 
 GARBAGE += \
   $(FINAL_LINK_COMPS) $(FINAL_LINK_LIBS) $(FINAL_LINK_COMP_NAMES) buildid $(srcdir)/*.pyc *.pyc
 
 FORCE:
 
-check-preqs = \
-  check-jar-mn \
-  check-makefiles \
-  $(NULL)
+ifndef BUILDING_JS
+check-preqs += check-jar-mn
+endif
+check-preqs += check-makefiles
 
 check:: $(check-preqs)
 
 check-jar-mn::
 	$(MAKE) -C tests/src-simple check-jar
 	$(MAKE) -C tests/src-simple check-flat
 	$(MAKE) -C tests/src-simple check-flat USE_EXTENSION_MANIFEST=1
 ifneq (,$(filter-out WINNT OS2,$(OS_ARCH)))
--- a/config/baseconfig.mk
+++ b/config/baseconfig.mk
@@ -1,13 +1,24 @@
 includedir := $(includedir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
 idldir = $(datadir)/idl/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
 installdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
 sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION)
-DIST = $(DEPTH)/dist
+ifndef TOP_DIST
+TOP_DIST = dist
+endif
+ifneq (,$(filter /%,$(TOP_DIST)))
+DIST = $(TOP_DIST)
+else
+ifeq (.,$(DEPTH))
+DIST = $(TOP_DIST)
+else
+DIST = $(DEPTH)/$(TOP_DIST)
+endif
+endif
 
 # We do magic with OBJ_SUFFIX in config.mk, the following ensures we don't
 # manually use it before config.mk inclusion
 _OBJ_SUFFIX := $(OBJ_SUFFIX)
 OBJ_SUFFIX = $(error config/config.mk needs to be included before using OBJ_SUFFIX)
 
 ifeq ($(HOST_OS_ARCH),WINNT)
 # We only support building with pymake or a non-msys gnu make version
--- a/config/config.mk
+++ b/config/config.mk
@@ -712,17 +712,17 @@ ifdef NSINSTALL_BIN
 NSINSTALL = $(NSINSTALL_BIN)
 else
 ifeq (OS2,$(CROSS_COMPILE)$(OS_ARCH))
 NSINSTALL = $(MOZ_TOOLS_DIR)/nsinstall
 else
 ifeq ($(HOST_OS_ARCH),WINNT)
 NSINSTALL = $(NSINSTALL_PY)
 else
-NSINSTALL = $(CONFIG_TOOLS)/nsinstall$(HOST_BIN_SUFFIX)
+NSINSTALL = $(DIST)/bin/nsinstall$(HOST_BIN_SUFFIX)
 endif # WINNT
 endif # OS2
 endif # NSINSTALL_BIN
 
 
 ifeq (,$(CROSS_COMPILE)$(filter-out WINNT OS2, $(OS_ARCH)))
 INSTALL = $(NSINSTALL) -t
 ifdef .PYMAKE
--- a/config/moz.build
+++ b/config/moz.build
@@ -5,19 +5,17 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 NO_DIST_INSTALL = True
 # For sanity's sake, we compile nsinstall without the wrapped system
 # headers, so that we can use it to set up the wrapped system headers.
 NO_VISIBILITY_FLAGS = True
 
 CONFIGURE_SUBST_FILES += [
-    'autoconf.mk',
     'doxygen.cfg',
-    'emptyvars.mk',
     'makefiles/test/Makefile',
     'tests/makefiles/autodeps/Makefile',
     'tests/src-simple/Makefile',
 ]
 
 if CONFIG['HOST_OS_ARCH'] != 'WINNT':
     HOST_SOURCES += [
         'nsinstall.c',
--- a/config/rules.mk
+++ b/config/rules.mk
@@ -359,16 +359,20 @@ endif
 
 ifdef MOZ_UPDATE_XTERM
 # Its good not to have a newline at the end of the titlebar string because it
 # makes the make -s output easier to read.  Echo -n does not work on all
 # platforms, but we can trick printf into doing it.
 UPDATE_TITLE = printf '\033]0;%s in %s\007' $(1) $(relativesrcdir)/$(2) ;
 endif
 
+ifdef BUILDING_JS
+NO_BUILDSTATUS_MESSAGES=1
+endif
+
 ifdef MACH
 ifndef NO_BUILDSTATUS_MESSAGES
 define BUILDSTATUS
 @echo 'BUILDSTATUS $1'
 
 endef
 endif
 endif
@@ -1448,19 +1452,19 @@ endif
 # which the files and executables are installed. Default is "libs".
 #
 # Finally, a FOO_KEEP_PATH variable may be set to 1 to indicate the paths given
 # in FOO_FILES/FOO_EXECUTABLES are to be kept at the destination. That is,
 # if FOO_FILES is bar/baz/qux.h, and FOO_DEST is $(DIST)/include, the installed
 # file would be $(DIST)/include/bar/baz/qux.h instead of $(DIST)/include/qux.h
 
 # If we're using binary nsinstall and it's not built yet, fallback to python nsinstall.
-ifneq (,$(filter $(CONFIG_TOOLS)/nsinstall$(HOST_BIN_SUFFIX),$(install_cmd)))
-ifeq (,$(wildcard $(CONFIG_TOOLS)/nsinstall$(HOST_BIN_SUFFIX)))
-nsinstall_is_usable = $(if $(wildcard $(CONFIG_TOOLS)/nsinstall$(HOST_BIN_SUFFIX)),yes)
+ifneq (,$(filter $(DIST)/bin/nsinstall$(HOST_BIN_SUFFIX),$(install_cmd)))
+ifeq (,$(wildcard $(DIST)/bin/nsinstall$(HOST_BIN_SUFFIX)))
+nsinstall_is_usable = $(if $(wildcard $(DIST)/bin/nsinstall$(HOST_BIN_SUFFIX)),yes)
 
 define install_cmd_override
 $(1): install_cmd = $$(if $$(nsinstall_is_usable),$$(INSTALL),$$(NSINSTALL_PY)) $$(1)
 endef
 endif
 endif
 
 install_target_tier = $(or $($(1)_TARGET),libs)
--- a/config/static-checking-config.mk
+++ b/config/static-checking-config.mk
@@ -2,28 +2,33 @@
 # 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/.
 
 # The entire tree should be subject to static analysis using the XPCOM
 # script. Additional scripts may be added by specific subdirectories.
 
 DEHYDRA_SCRIPT = $(topsrcdir)/config/static-checking.js
 
+ifndef BUILDING_JS
 DEHYDRA_MODULES = \
   $(topsrcdir)/xpcom/analysis/final.js \
   $(topsrcdir)/xpcom/analysis/must-override.js \
   $(NULL)
 
 TREEHYDRA_MODULES = \
   $(topsrcdir)/xpcom/analysis/outparams.js \
   $(topsrcdir)/xpcom/analysis/stack.js \
   $(topsrcdir)/xpcom/analysis/flow.js \
   $(topsrcdir)/xpcom/analysis/static-init.js \
+  $(topsrcdir)/layout/generic/frame-verify.js \
+  $(NULL)
+endif
+
+TREEHYDRA_MODULES += \
   $(topsrcdir)/js/src/jsstack.js \
-  $(topsrcdir)/layout/generic/frame-verify.js \
   $(NULL)
 
 DEHYDRA_ARG_PREFIX=-fplugin-arg-gcc_treehydra-
 
 DEHYDRA_ARGS = \
   $(DEHYDRA_ARG_PREFIX)script=$(DEHYDRA_SCRIPT) \
   $(DEHYDRA_ARG_PREFIX)topsrcdir=$(topsrcdir) \
   $(DEHYDRA_ARG_PREFIX)objdir=$(DEPTH) \
@@ -33,12 +38,16 @@ DEHYDRA_ARGS = \
 
 DEHYDRA_FLAGS = -fplugin=$(DEHYDRA_PATH) $(DEHYDRA_ARGS)
 
 ifdef DEHYDRA_PATH
 OS_CXXFLAGS += $(DEHYDRA_FLAGS)
 endif
 
 ifdef ENABLE_CLANG_PLUGIN
+ifndef BUILDING_JS
 CLANG_PLUGIN := $(DEPTH)/build/clang-plugin/$(DLL_PREFIX)clang-plugin$(DLL_SUFFIX)
+else
+CLANG_PLUGIN := $(DEPTH)/../../build/clang-plugin/$(DLL_PREFIX)clang-plugin$(DLL_SUFFIX)
+endif
 OS_CXXFLAGS += -Xclang -load -Xclang $(CLANG_PLUGIN) -Xclang -add-plugin -Xclang moz-check
 OS_CFLAGS += -Xclang -load -Xclang $(CLANG_PLUGIN) -Xclang -add-plugin -Xclang moz-check
 endif
--- a/js/src/Makefile.in
+++ b/js/src/Makefile.in
@@ -67,41 +67,16 @@ USE_HOST_CXX = 1
 
 ifdef HAVE_DTRACE
 ifneq ($(OS_ARCH),Darwin)
 DTRACE_PROBE_OBJ = $(LIBRARY_NAME)-dtrace.$(OBJ_SUFFIX)
 endif
 MOZILLA_DTRACE_SRC = $(srcdir)/devtools/javascript-trace.d
 endif
 
-backend.RecursiveMakeBackend:
-	@echo 'Build configuration changed. Regenerating backend.'
-	$(PYTHON) config.status
-
-Makefile: backend.RecursiveMakeBackend
-	@$(TOUCH) $@
-
-include backend.RecursiveMakeBackend.pp
-
-default:: backend.RecursiveMakeBackend
-
-default::
-	$(call py_action,process_install_manifest,--no-remove $(DIST)/include _build_manifests/install/dist_include)
-
-ifneq (,$(CROSS_COMPILE)$(filter-out WINNT OS2,$(OS_ARCH)))
-# nsinstall doesn't get built until we enter config/ in the exports phase,
-# so we'll have to manually ensure it gets built here if we want to use
-# $(EXPORTS)
-export:: config/nsinstall$(HOST_BIN_SUFFIX)
-$(PUBLIC) $(SDK_PUBLIC): config/nsinstall$(HOST_BIN_SUFFIX)
-
-config/nsinstall$(HOST_BIN_SUFFIX): $(srcdir)/config/nsinstall.c $(srcdir)/config/pathsub.c
-	$(MAKE) -C config/ nsinstall$(HOST_BIN_SUFFIX)
-endif
-
 # Ensure symbol versions of shared library on Linux do not conflict
 # with those in libxul.
 ifeq (Linux,$(OS_TARGET))
 EXTRA_DSO_LDOPTS += -Wl,-version-script,symverscript
 
 symverscript: symverscript.in
 	$(call py_action,preprocessor, \
 		-DVERSION='$(subst -,_,$(LIBRARY_NAME))' $< -o $@)
@@ -130,39 +105,39 @@ ifdef ENABLE_INTL_API
     ifeq ($(OS_ARCH),WINNT)
       ifdef MOZ_DEBUG
         ICU_LIB_SUFFIX=d
       endif
     endif # WINNT
     ifdef MOZ_SHARED_ICU
       ifeq ($(OS_ARCH),WINNT)
         ifdef JS_SHARED_LIBRARY
-          ICU_FILES := $(foreach libname,$(ICU_LIB_NAMES),intl/icu/target/lib/$(libname)$(ICU_LIB_SUFFIX)$(MOZ_ICU_VERSION).dll)
+          ICU_FILES := $(foreach libname,$(ICU_LIB_NAMES),$(DEPTH)/intl/icu/target/lib/$(libname)$(ICU_LIB_SUFFIX)$(MOZ_ICU_VERSION).dll)
         endif
       else # ! WINNT
         ifeq ($(OS_ARCH),Darwin)
           ifdef JS_SHARED_LIBRARY
-            ICU_FILES := $(foreach libname,$(ICU_LIB_NAMES),intl/icu/target/lib/$(DLL_PREFIX)$(libname).$(MOZ_ICU_VERSION)$(DLL_SUFFIX))
+            ICU_FILES := $(foreach libname,$(ICU_LIB_NAMES),$(DEPTH)/intl/icu/target/lib/$(DLL_PREFIX)$(libname).$(MOZ_ICU_VERSION)$(DLL_SUFFIX))
           endif
         else # ! Darwin
           ifdef JS_SHARED_LIBRARY
-            ICU_FILES := $(foreach libname,$(ICU_LIB_NAMES),intl/icu/target/lib/$(DLL_PREFIX)$(libname)$(DLL_SUFFIX).$(MOZ_ICU_VERSION))
+            ICU_FILES := $(foreach libname,$(ICU_LIB_NAMES),$(DEPTH)/intl/icu/target/lib/$(DLL_PREFIX)$(libname)$(DLL_SUFFIX).$(MOZ_ICU_VERSION))
           endif
         endif
       endif # WINNT
       ifdef ICU_FILES
         ICU_DEST := $(DIST)/bin
         INSTALL_TARGETS += ICU
         $(ICU_FILES): buildicu
         ICU_TARGET := $(if $(MOZ_PSEUDO_DERECURSE),compile,export)
       endif
     else # !MOZ_SHARED_ICU
       ifeq ($(OS_ARCH),WINNT)
         ICU_LIB_RENAME = $(foreach libname,$(ICU_LIB_NAMES),\
-                             cp -p intl/icu/target/lib/s$(libname)$(ICU_LIB_SUFFIX).lib intl/icu/target/lib/$(libname).lib;)
+                             cp -p $(DEPTH)/intl/icu/target/lib/s$(libname)$(ICU_LIB_SUFFIX).lib $(DEPTH)/intl/icu/target/lib/$(libname).lib;)
       endif
     endif # MOZ_SHARED_ICU
   endif # !MOZ_NATIVE_ICU
 endif # ENABLE_INTL_API
 
 include $(topsrcdir)/config/rules.mk
 
 .PHONY: buildffi buildicu
@@ -186,18 +161,18 @@ endif
 
 # ICU headers need to be available whether we build with the complete
 # Internationalization API or not - ICU stubs rely on them.
 
 ifdef MOZ_NATIVE_ICU
 LOCAL_INCLUDES += $(MOZ_ICU_CFLAGS)
 else
 LOCAL_INCLUDES += \
-  -I$(topsrcdir)/../../intl/icu/source/common \
-  -I$(topsrcdir)/../../intl/icu/source/i18n \
+  -I$(topsrcdir)/intl/icu/source/common \
+  -I$(topsrcdir)/intl/icu/source/i18n \
   $(NULL)
 endif
 
 ifdef ENABLE_INTL_API
 ifndef MOZ_NATIVE_ICU
 
 ifdef _MSC_VER
 ifdef MOZ_SHARED_ICU
@@ -227,54 +202,54 @@ endif
 # - ICU requires GNU make according to its readme.html. pymake can't be used
 #   because it doesn't support order only dependencies.
 # - Force ICU to use the standard suffix for object files because expandlibs
 #   will discard all files with a non-standard suffix (bug 857450).
 # - Options for genrb: -k strict parsing; -R omit collation tailoring rules.
 buildicu:
 # ICU's build system is full of races, so force non-parallel build.
 ifdef CROSS_COMPILE
-	+$(ICU_MAKE) -j1 -C intl/icu/host STATIC_O=$(OBJ_SUFFIX) GENRBOPTS='-k -R -C'
+	+$(ICU_MAKE) -j1 -C $(DEPTH)/intl/icu/host STATIC_O=$(OBJ_SUFFIX) GENRBOPTS='-k -R -C'
 endif
-	+$(ICU_MAKE) -j1 -C intl/icu/target STATIC_O=$(OBJ_SUFFIX) GENRBOPTS='-k -R'
+	+$(ICU_MAKE) -j1 -C $(DEPTH)/intl/icu/target STATIC_O=$(OBJ_SUFFIX) GENRBOPTS='-k -R'
 	$(ICU_LIB_RENAME)
 
 distclean clean::
 ifdef CROSS_COMPILE
-	$(call SUBMAKE,$@,intl/icu/host)
+	$(call SUBMAKE,$@,$(DEPTH)/intl/icu/host)
 endif
-	$(call SUBMAKE,$@,intl/icu/target)
+	$(call SUBMAKE,$@,$(DEPTH)/intl/icu/target)
 
 endif
 endif
 
 #
 # END ECMAScript Internationalization API
 #############################################
 
 
 # check_vanilla_allocations.py is tailored to Linux, so only run it there.
 # That should be enough to catch any problems.
 check-vanilla-allocations:
-	$(PYTHON) $(srcdir)/config/check_vanilla_allocations.py $(REAL_LIBRARY)
+	$(PYTHON) $(topsrcdir)/config/check_vanilla_allocations.py $(REAL_LIBRARY)
 
 # The "aggressive" variant will likely fail on some compiler/platform
 # combinations, but is worth running by hand every once in a while.
 check-vanilla-allocations-aggressive:
-	$(PYTHON) $(srcdir)/config/check_vanilla_allocations.py --aggressive $(REAL_LIBRARY)
+	$(PYTHON) $(topsrcdir)/config/check_vanilla_allocations.py --aggressive $(REAL_LIBRARY)
 
 ifeq ($(OS_ARCH),Linux)
 check:: check-vanilla-allocations
 endif
 
 # Help ensure that the number of OOM errors in SpiderMonkey doesn't increase.
 # If the number of OOM errors changes, update the number below. We intend this
 # number to go down over time, by fixing OOMs.
 check-ooms:
-	$(wildcard $(RUN_TEST_PROGRAM)) $(PYTHON) -u $(srcdir)/config/find_OOM_errors.py --regression 125
+	$(wildcard $(RUN_TEST_PROGRAM)) $(PYTHON) -u $(topsrcdir)/config/find_OOM_errors.py --regression 125
 
 ifeq ($(MOZ_DEBUG),1)
 #check:: check-ooms
 endif
 
 ifdef MOZ_VALGRIND
 ifndef MOZ_ASAN
 JITTEST_VALGRIND_FLAG = --valgrind
@@ -284,17 +259,17 @@ endif
 ifdef MOZ_ASAN
 ifneq ($(LLVM_SYMBOLIZER),)
 # Use the LLVM symbolizer when running jit-tests under ASan, if available
 JITTEST_ASAN_ENV=ASAN_SYMBOLIZER_PATH='$(LLVM_SYMBOLIZER)'
 endif
 endif
 
 check-style::
-	(cd $(srcdir) && $(PYTHON) config/check_spidermonkey_style.py);
+	(cd $(srcdir) && $(PYTHON) $(topsrcdir)/config/check_spidermonkey_style.py);
 
 check-jit-test::
 	$(JITTEST_ASAN_ENV) $(wildcard $(RUN_TEST_PROGRAM)) $(PYTHON) -u $(srcdir)/jit-test/jit_test.py \
 	        --no-slow --no-progress --tinderbox --tbpl $(JITTEST_VALGRIND_FLAG) \
 	        $(DIST)/bin/$(JS_SHELL_NAME)$(BIN_SUFFIX)
 
 check:: check-style check-jit-test
 
--- a/js/src/aclocal.m4
+++ b/js/src/aclocal.m4
@@ -26,9 +26,18 @@ builtin(include, ../../build/autoconf/ex
 builtin(include, ../../build/autoconf/arch.m4)dnl
 builtin(include, ../../build/autoconf/android.m4)dnl
 builtin(include, ../../build/autoconf/zlib.m4)dnl
 builtin(include, ../../build/autoconf/linux.m4)dnl
 builtin(include, ../../build/autoconf/python-virtualenv.m4)dnl
 builtin(include, ../../build/autoconf/winsdk.m4)dnl
 builtin(include, ../../build/autoconf/icu.m4)dnl
 
+define([__MOZ_AC_INIT_PREPARE], defn([AC_INIT_PREPARE]))
+define([AC_INIT_PREPARE],
+[if test -z "$srcdir"; then
+  srcdir=`dirname "[$]0"`
+fi
+srcdir="$srcdir/../.."
+__MOZ_AC_INIT_PREPARE($1)
+])
+
 MOZ_PROG_CHECKMSYS()
deleted file mode 100644
--- a/js/src/build/check-sync-exceptions
+++ /dev/null
@@ -1,1 +0,0 @@
-*.pyc
deleted file mode 100644
--- a/js/src/build/msys-perl-wrapper
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh
-# 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/.
-
-
-args=""
-
-for i in "${@}"
-do
-    case "$i" in
-    -I?:/*)
-        i="$(echo "${i}" | sed -e 's|^-I\(.\):/|-I/\1/|')"
-	;;
-    esac
-
-    args="${args} '${i}'"
-done
-
-eval "exec perl $args"
deleted file mode 100755
--- a/js/src/build/qemu-wrap
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/bash
-# this script creates a wrapper shell script for an executable.  The idea is the actual executable cannot be
-# executed natively (it was cross compiled), but we want to run tests natively.  Running this script
-# as part of the compilation process will move the non-native executable to a new location, and replace it
-# with a script that will run it under qemu.
-while [[ -n $1 ]]; do
-    case $1 in
-        --qemu) QEMU="$2"; shift 2;;
-        --libdir) LIBDIR="$2"; shift 2;;
-        --ld) LD="$2"; shift 2;;
-        *) exe="$1"; shift;;
-    esac
-done
-if [[ -z $LIBDIR ]]; then
-    echo "You need to specify a directory for the cross libraries when you configure the shell"
-    echo "You can do this with --with-cross-lib="
-    exit 1
-fi
-LD=${LD:-$LIBDIR/ld-linux.so.3}
-mv $exe $exe.target
-# Just hardcode the path to the executable.  It'll be pretty obvious if it is doing the wrong thing.
-
-echo $'#!/bin/bash\n' $QEMU -E LD_LIBRARY_PATH="${LIBDIR}" "$LD" "$(readlink -f "$exe.target")" '"$@"' >"$exe"
-chmod +x $exe
\ No newline at end of file
deleted file mode 100644
--- a/js/src/build/subconfigure.py
+++ /dev/null
@@ -1,124 +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 script is used to capture the content of config.status-generated
-# files and subsequently restore their timestamp if they haven't changed.
-
-import os
-import re
-import subprocess
-import sys
-import pickle
-
-class File(object):
-    def __init__(self, path):
-        self._path = path
-        self._content = open(path, 'rb').read()
-        stat = os.stat(path)
-        self._times = (stat.st_atime, stat.st_mtime)
-
-    def update_time(self):
-        '''If the file hasn't changed since the instance was created,
-           restore its old modification time.'''
-        if not os.path.exists(self._path):
-            return
-        if open(self._path, 'rb').read() == self._content:
-            os.utime(self._path, self._times)
-
-
-# As defined in the various sub-configures in the tree
-PRECIOUS_VARS = set([
-    'build_alias',
-    'host_alias',
-    'target_alias',
-    'CC',
-    'CFLAGS',
-    'LDFLAGS',
-    'LIBS',
-    'CPPFLAGS',
-    'CPP',
-    'CCC',
-    'CXXFLAGS',
-    'CXX',
-    'CCASFLAGS',
-    'CCAS',
-])
-
-
-# Autoconf, in some of the sub-configures used in the tree, likes to error
-# out when "precious" variables change in value. The solution it gives to
-# straighten things is to either run make distclean or remove config.cache.
-# There's no reason not to do the latter automatically instead of failing,
-# doing the cleanup (which, on buildbots means a full clobber), and
-# restarting from scratch.
-def maybe_clear_cache():
-    comment = re.compile(r'^\s+#')
-    cache = {}
-    with open('config.cache') as f:
-        for line in f.readlines():
-            if not comment.match(line) and '=' in line:
-                key, value = line.split('=', 1)
-                cache[key] = value
-    for precious in PRECIOUS_VARS:
-        entry = 'ac_cv_env_%s_value' % precious
-        if entry in cache and (not precious in os.environ or os.environ[precious] != cache[entry]):
-            os.remove('config.cache')
-            return
-
-
-def dump(dump_file, shell):
-    if os.path.exists('config.cache'):
-        maybe_clear_cache()
-    if not os.path.exists('config.status'):
-        if os.path.exists(dump_file):
-            os.remove(dump_file)
-        return
-
-    config_files = [File('config.status')]
-
-    # Scan the config.status output for information about configuration files
-    # it generates.
-    config_status_output = subprocess.check_output(
-        [shell, '-c', './config.status --help'],
-        stderr=subprocess.STDOUT).splitlines()
-    state = None
-    for line in config_status_output:
-        if line.startswith('Configuration') and line.endswith(':'):
-            state = 'config'
-        elif not line.startswith(' '):
-            state = None
-        elif state == 'config':
-            for f in (couple.split(':')[0] for couple in line.split()):
-                if os.path.isfile(f):
-                    config_files.append(File(f))
-
-    with open(dump_file, 'wb') as f:
-        pickle.dump(config_files, f)
-
-
-def adjust(dump_file):
-    if not os.path.exists(dump_file):
-        return
-
-    config_files = []
-
-    try:
-        with open(dump_file, 'rb') as f:
-            config_files = pickle.load(f)
-    except Exception:
-        pass
-
-    for f in config_files:
-        f.update_time()
-
-    os.remove(dump_file)
-
-
-CONFIG_DUMP = 'config_files.pkl'
-
-if __name__ == '__main__':
-    if sys.argv[1] == 'dump':
-        dump(CONFIG_DUMP, sys.argv[2])
-    elif sys.argv[1] == 'adjust':
-        adjust(CONFIG_DUMP)
deleted file mode 100644
--- a/js/src/build/unix/add_phony_targets.py
+++ /dev/null
@@ -1,33 +0,0 @@
-import pymake.data
-import pymake.parser
-import pymake.parserdata
-import sys
-
-'''
-Modifies the output of Sun Studio's -xM to look more like the output
-of gcc's -MD -MP, adding phony targets for dependencies.
-'''
-
-
-def add_phony_targets(path):
-    print path
-    deps = set()
-    targets = set()
-    for stmt in pymake.parser.parsefile(path):
-        if isinstance(stmt, pymake.parserdata.Rule):
-            assert isinstance(stmt.depexp, pymake.data.StringExpansion)
-            assert isinstance(stmt.targetexp, pymake.data.StringExpansion)
-            for d in stmt.depexp.s.split():
-                deps.add(d)
-            for t in stmt.targetexp.s.split():
-                targets.add(t)
-    phony_targets = deps - targets
-    if not phony_targets:
-        return
-    with open(path, 'a') as f:
-        f.writelines('%s:\n' % d for d in phony_targets)
-
-
-if __name__ == '__main__':
-    for f in sys.argv[1:]:
-        add_phony_targets(f)
deleted file mode 100644
--- a/js/src/build/unix/headers/bits/c++config.h
+++ /dev/null
@@ -1,2 +0,0 @@
-#include_next <bits/c++config.h>
-#undef _GLIBCXX_USE_FLOAT128
deleted file mode 100755
--- a/js/src/build/unix/print-failed-commands.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/sh
-# 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/.
-
-#
-# Usage from makefile:
-#   ELOG = . $(topdir)/build/autoconf/print-failed-commands.sh
-#   $(ELOG) $(CC) $CFLAGS -o $@ $<
-#
-# This shell script is used by the build system to print out commands that fail
-# to execute properly.  It is designed to make the "make -s" command more
-# useful.
-#
-# Note that in the example we are sourcing rather than execing the script.
-# Since make already started a shell for us, we might as well use it rather
-# than starting a new one.
-
-( exec "$@" ) || {
-    echo
-    echo "In the directory " `pwd`
-    echo "The following command failed to execute properly:"
-    echo "$@"
-    exit 1;
-}
deleted file mode 100644
--- a/js/src/build/unix/uniq.pl
+++ /dev/null
@@ -1,91 +0,0 @@
-#!/usr/bin/env perl
-
-# 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/.
-
-##----------------------------##
-##---] CORE/CPAN INCLUDES [---##
-##----------------------------##
-use strict;
-use warnings;
-use Getopt::Long;
-
-##-------------------##
-##---]  EXPORTS  [---##
-##-------------------##
-our $VERSION = qw(1.1);
-
-##-------------------##
-##---]  GLOBALS  [---##
-##-------------------##
-my %argv;
-my $modver = $Getopt::Long::VERSION || 0;
-my $isOldGetopt = ($modver eq '2.25') ? 1 : 0;
-
-###########################################################################
-## Intent: Script init function
-###########################################################################
-sub init
-{
-    if ($isOldGetopt)
-    {
-	# mozilla.build/mingw perl in need of an upgrade
-	# emulate Getopt::Long switch|short:init
-	foreach (qw(debug regex sort))
-	{
-	    if (defined($argv{$_}))
-	    {
-		$argv{$_} ||= 1;
-	    }
-	}
-    }
-} # init
-
-##----------------##
-##---]  MAIN  [---##
-##----------------##
-my @args = ($isOldGetopt)
-    ? qw(debug|d regex|r sort|s)
-    : qw(debug|d:1 regex|r:1 sort|s:1)
-    ;
-
-unless(GetOptions(\%argv, @args))
-{
-    print "Usage: $0\n";
-    print "  --sort   Sort list elements early\n";
-    print "  --regex  Exclude subdirs by pattern\n";
-}
-
-init();
-my $debug = $argv{debug} || 0;
-
-my %seen;
-my @out;
-my @in = ($argv{sort}) ? sort @ARGV : @ARGV;
-
-foreach my $d (@in)
-{
-    next if ($seen{$d}++);
-
-    print "   arg is $d\n" if ($debug);
-
-    if ($argv{regex})
-    {
-        my $found = 0;
-        foreach my $dir (@out)
-	{
-	    my $dirM = quotemeta($dir);
-            $found++, last if ($d eq $dir || $d =~ m!^${dirM}\/!);
-        }
-	print "Adding $d\n" if ($debug && !$found);
-        push @out, $d if (!$found);
-    } else {
-	print "Adding: $d\n" if ($debug);
-        push(@out, $d);
-    }
-}
-
-print "@out\n"
-
-# EOF
deleted file mode 100644
--- a/js/src/build/win32/pgomerge.py
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/usr/bin/python
-# 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/.
-
-# Usage: pgomerge.py <binary basename> <dist/bin>
-# Gathers .pgc files from dist/bin and merges them into
-# $PWD/$basename.pgd using pgomgr, then deletes them.
-# No errors if any of these files don't exist.
-
-import sys, os, os.path, subprocess
-if not sys.platform == "win32":
-    raise Exception("This script was only meant for Windows.")
-
-def MergePGOFiles(basename, pgddir, pgcdir):
-  """Merge pgc files produced from an instrumented binary
-     into the pgd file for the second pass of profile-guided optimization
-     with MSVC.  |basename| is the name of the DLL or EXE without the
-     extension.  |pgddir| is the path that contains <basename>.pgd
-     (should be the objdir it was built in).  |pgcdir| is the path
-     containing basename!N.pgc files, which is probably dist/bin.
-     Calls pgomgr to merge each pgc file into the pgd, then deletes
-     the pgc files."""
-  if not os.path.isdir(pgddir) or not os.path.isdir(pgcdir):
-    return
-  pgdfile = os.path.abspath(os.path.join(pgddir, basename + ".pgd"))
-  if not os.path.isfile(pgdfile):
-    return
-  for file in os.listdir(pgcdir):
-    if file.startswith(basename+"!") and file.endswith(".pgc"):
-      try:
-        pgcfile = os.path.normpath(os.path.join(pgcdir, file))
-        subprocess.call(['pgomgr', '-merge',
-                         pgcfile,
-                         pgdfile])
-        os.remove(pgcfile)
-      except OSError:
-        pass
-
-if __name__ == '__main__':
-  if len(sys.argv) != 3:
-      print >>sys.stderr, "Usage: pgomerge.py <binary basename> <dist/bin>"
-      sys.exit(1)
-  MergePGOFiles(sys.argv[1], os.getcwd(), sys.argv[2])
deleted file mode 100644
--- a/js/src/config/Makefile.in
+++ /dev/null
@@ -1,47 +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/.
-
-# IMPORTANT: Disable NSBUILDROOT for this directory only, otherwise we have
-# a recursive rule for finding nsinstall and the Perl scripts.
-ifdef NSBUILDROOT
-override NSBUILDROOT :=
-endif
-
-ifdef GNU_CC
-MODULE_OPTIMIZE_FLAGS = -O3
-endif
-
-include $(topsrcdir)/config/config.mk
-
-ifneq (WINNT,$(HOST_OS_ARCH))
-# Ensure nsinstall is atomically created
-nsinstall$(HOST_BIN_SUFFIX): $(HOST_PROGRAM)
-	cp $^ $@.tmp
-	mv $@.tmp $@
-
-NSINSTALL_FILES := nsinstall$(HOST_BIN_SUFFIX)
-NSINSTALL_DEST := $(DIST)/bin
-NSINSTALL_TARGET := export
-INSTALL_TARGETS += NSINSTALL
-endif
-
-include $(topsrcdir)/config/rules.mk
-
-HOST_CFLAGS += -DUNICODE -D_UNICODE
-
-ifdef WRAP_SYSTEM_INCLUDES
-export:: \
-  $(call mkdir_deps,system_wrappers_js) \
-  $(NULL)
-	$(PYTHON) -m mozbuild.action.preprocessor $(DEFINES) $(ACDEFINES) \
-		$(srcdir)/system-headers | $(PERL) $(srcdir)/make-system-wrappers.pl system_wrappers_js
-	$(INSTALL) system_wrappers_js $(DIST)
-
-GARBAGE_DIRS += system_wrappers_js
-endif
-
-GARBAGE += $(srcdir)/*.pyc *.pyc
-
-FORCE:
deleted file mode 100644
--- a/js/src/config/Moz/Milestone.pm
+++ /dev/null
@@ -1,220 +0,0 @@
-#!/usr/bin/perl -w
-# 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/.
-
-package Moz::Milestone;
-use strict;
-
-use vars qw($officialMilestone
-            $milestone);
-
-local $Moz::Milestone::milestone;
-local $Moz::Milestone::officialMilestone;
-
-#
-# Usage:  getOfficialMilestone($milestoneFile)
-# Returns full milestone (x.x.x.x[ab12pre+])
-#
-sub getOfficialMilestone($) {
-  my $mfile = $_[0];
-  open(FILE,"$mfile") ||
-    die ("Can't open $mfile for reading!");
-
-  my $num = <FILE>;
-  while($num =~ /^\s*#/ || $num !~ /^\d/) {
-      $num = <FILE>;
-  }
-
-  close(FILE);
-  if ($num !~ /^\d/) { return; }
-  chomp($num);
-  # Remove extra ^M caused by using dos-mode line-endings
-  chop $num if (substr($num, -1, 1) eq "\r");
-  $Moz::Milestone::officialMilestone = $num;
-  $Moz::Milestone::milestone = &getMilestoneNum;
-  return $num;
-}
-
-#
-# Usage: getMilestoneNum($num)
-# Returns: milestone without a + if it exists.
-#
-sub getMilestoneNum {
-  if (defined($Moz::Milestone::milestone)) {
-    return $Moz::Milestone::milestone;
-  }
-
-  if (defined($Moz::Milestone::officialMilestone)) {
-    $Moz::Milestone::milestone = $Moz::Milestone::officialMilestone;
-  } else {
-    $Moz::Milestone::milestone = $_[0];
-  }
-
-  if ($Moz::Milestone::milestone =~ /\+$/) {    # for x.x.x+, strip off the +
-    $Moz::Milestone::milestone =~ s/\+$//;
-  }
-
-  return $Moz::Milestone::milestone;
-}
-
-#
-# Usage: getMilestoneQualifier($num)
-# Returns: + if it exists.
-#
-sub getMilestoneQualifier {
-  my $milestoneQualifier;
-  if (defined($Moz::Milestone::officialMilestone)) {
-    $milestoneQualifier = $Moz::Milestone::officialMilestone;
-  } else {
-    $milestoneQualifier = $_[0];
-  }
-
-  if ($milestoneQualifier =~ /\+$/) {
-    return "+";
-  }
-}
-
-sub getMilestoneMajor {
-  my $milestoneMajor;
-  if (defined($Moz::Milestone::milestone)) {
-    $milestoneMajor = $Moz::Milestone::milestone;
-  } else {
-    $milestoneMajor = $_[0];
-  }
-  my @parts = split(/\./,$milestoneMajor);
-  return $parts[0];
-}
-
-sub getMilestoneMinor {
-  my $milestoneMinor;
-  if (defined($Moz::Milestone::milestone)) {
-    $milestoneMinor = $Moz::Milestone::milestone;
-  } else {
-    $milestoneMinor = $_[0];
-  }
-  my @parts = split(/\./,$milestoneMinor);
-
-  if ($#parts < 1 ) { return 0; }
-  return $parts[1];
-}
-
-sub getMilestoneMini {
-  my $milestoneMini;
-  if (defined($Moz::Milestone::milestone)) {
-    $milestoneMini = $Moz::Milestone::milestone;
-  } else {
-    $milestoneMini = $_[0];
-  }
-  my @parts = split(/\./,$milestoneMini);
-
-  if ($#parts < 2 ) { return 0; }
-  return $parts[2];
-}
-
-sub getMilestoneMicro {
-  my $milestoneMicro;
-  if (defined($Moz::Milestone::milestone)) {
-    $milestoneMicro = $Moz::Milestone::milestone;
-  } else {
-    $milestoneMicro = $_[0];
-  }
-  my @parts = split(/\./,$milestoneMicro);
-
-  if ($#parts < 3 ) { return 0; }
-  return $parts[3];
-}
-
-sub getMilestoneAB {
-  my $milestoneAB;
-  if (defined($Moz::Milestone::milestone)) {
-    $milestoneAB = $Moz::Milestone::milestone;
-  } else {
-    $milestoneAB = $_[0];
-  }
-  
-  if ($milestoneAB =~ /a/) { return "alpha"; }
-  if ($milestoneAB =~ /b/) { return "beta"; }
-  return "final";
-}
-
-#
-# Usage:  getMilestoneABWithNum($milestoneFile)
-# Returns the alpha and beta tag with its number (a1, a2, b3, ...)
-#
-sub getMilestoneABWithNum {
-  my $milestoneABNum;
-  if (defined($Moz::Milestone::milestone)) {
-    $milestoneABNum = $Moz::Milestone::milestone;
-  } else {
-    $milestoneABNum = $_[0];
-  }
-
-  if ($milestoneABNum =~ /([ab]\d+)/) {
-    return $1;
-  } else {
-    return "";
-  }
-}
-
-#
-# build_file($template_file,$output_file)
-#
-sub build_file($$) {
-  my @FILE;
-  my @MILESTONE_PARTS;
-  my $MINI_VERSION = 0;
-  my $MICRO_VERSION = 0;
-  my $OFFICIAL = 0;
-  my $QUALIFIER = "";
-
-  if (!defined($Moz::Milestone::milestone)) { die("$0: no milestone file set!\n"); }
-  @MILESTONE_PARTS = split(/\./, &getMilestoneNum);
-  if ($#MILESTONE_PARTS >= 2) {
-    $MINI_VERSION = 1;
-  } else {
-    $MILESTONE_PARTS[2] = 0;
-  }
-  if ($#MILESTONE_PARTS >= 3) {
-    $MICRO_VERSION = 1;
-  } else {
-    $MILESTONE_PARTS[3] = 0;
-  }
-  if (! &getMilestoneQualifier) {
-    $OFFICIAL = 1;
-  } else {
-    $QUALIFIER = "+";
-  }
-
-  if (-e $_[0]) {
-    open(FILE, "$_[0]") || die("$0: Can't open $_[0] for reading!\n");
-    @FILE = <FILE>;
-    close(FILE);
-
-    open(FILE, ">$_[1]") || die("$0: Can't open $_[1] for writing!\n");
-
-    #
-    # There will be more of these based on what we need for files.
-    #
-    foreach(@FILE) {
-      s/__MOZ_MAJOR_VERSION__/$MILESTONE_PARTS[0]/g;
-      s/__MOZ_MINOR_VERSION__/$MILESTONE_PARTS[1]/g;
-      s/__MOZ_MINI_VERSION__/$MILESTONE_PARTS[2]/g;
-      s/__MOZ_MICRO_VERSION__/$MILESTONE_PARTS[3]/g;
-      if ($MINI_VERSION) {
-        s/__MOZ_OPTIONAL_MINI_VERSION__/.$MILESTONE_PARTS[2]/g;
-      }
-      if ($MICRO_VERSION) {
-        s/__MOZ_OPTIONAL_MICRO_VERSION__/.$MILESTONE_PARTS[3]/g;
-      }
-
-      print FILE $_;
-    }
-    close(FILE);
-  } else {
-    die("$0: $_[0] doesn't exist for autoversioning!\n");
-  }
-
-}
-
-1;
deleted file mode 100644
--- a/js/src/config/autoconf.mk.in
+++ /dev/null
@@ -1,6 +0,0 @@
-ifndef INCLUDED_AUTOCONF_MK
-INCLUDED_AUTOCONF_MK = 1
-include $(DEPTH)/config/emptyvars.mk
-@ALLSUBSTS@
-include $(topsrcdir)/config/baseconfig.mk
-endif
deleted file mode 100644
--- a/js/src/config/baseconfig.mk
+++ /dev/null
@@ -1,42 +0,0 @@
-installdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
-sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION)
-
-ifneq (,$(filter /%,$(TOP_DIST)))
-DIST = $(TOP_DIST)
-else
-ifeq (.,$(DEPTH))
-DIST = $(TOP_DIST)
-else
-DIST = $(DEPTH)/$(TOP_DIST)
-endif
-endif
-
-# We do magic with OBJ_SUFFIX in config.mk, the following ensures we don't
-# manually use it before config.mk inclusion
-_OBJ_SUFFIX := $(OBJ_SUFFIX)
-OBJ_SUFFIX = $(error config/config.mk needs to be included before using OBJ_SUFFIX)
-
-ifeq ($(HOST_OS_ARCH),WINNT)
-# We only support building with pymake or a non-msys gnu make version
-# strictly above 4.0.
-ifndef .PYMAKE
-ifeq (a,$(firstword a$(subst /, ,$(abspath .))))
-$(error MSYS make is not supported)
-endif
-# 4.0- happens to be greater than 4.0, lower than the mozmake version,
-# and lower than 4.0.1 or 4.1, whatever next version of gnu make will
-# be released.
-ifneq (4.0-,$(firstword $(sort 4.0- $(MAKE_VERSION))))
-$(error Make version too old. Only versions strictly greater than 4.0 are supported.)
-endif
-endif
-ifeq (a,$(firstword a$(subst /, ,$(srcdir))))
-$(error MSYS-style srcdir are not supported for Windows builds.)
-endif
-endif # WINNT
-
-ifdef .PYMAKE
-include_deps = $(eval -includedeps $(1))
-else
-include_deps = $(eval -include $(1))
-endif
deleted file mode 100644
--- a/js/src/config/check-sync-dirs.py
+++ /dev/null
@@ -1,108 +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/.
-
-# check-sync-dirs.py --- check that one directory is an exact subset of another
-#
-# Usage: python check-sync-dirs.py COPY ORIGINAL
-#
-# Check that the files present in the directory tree COPY are exact
-# copies of their counterparts in the directory tree ORIGINAL.  COPY
-# need not have all the files in ORIGINAL, but COPY may not have files
-# absent from ORIGINAL.
-# 
-# Each directory in COPY may have a file named
-# 'check-sync-exceptions', which lists files in COPY that need not be
-# the same as the corresponding file in ORIGINAL, or exist at all in
-# ORIGINAL.  (The 'check-sync-exceptions' file itself is always
-# treated as exceptional.)  Blank lines and '#' comments in the file
-# are ignored.
-
-import sys
-import os
-from os.path import join
-import filecmp
-import textwrap
-import fnmatch
-
-if len(sys.argv) != 3:
-    print >> sys.stderr, 'TEST-UNEXPECTED-FAIL | check-sync-dirs.py | Usage: %s COPY ORIGINAL' % sys.argv[0]
-    sys.exit(1)
-
-copy = os.path.abspath(sys.argv[1])
-original = os.path.abspath(sys.argv[2])
-
-# Return the contents of FILENAME, a 'check-sync-exceptions' file, as
-# a dictionary whose keys are exactly the list of filenames, along
-# with the basename of FILENAME itself.  If FILENAME does not exist,
-# return the empty dictionary.
-def read_exceptions(filename):
-    if (os.path.exists(filename)):
-        f = file(filename)
-        exceptions = {}
-        for line in f:
-            line = line.strip()
-            if line != '' and line[0] != '#':
-                exceptions[line] = None
-        exceptions[os.path.basename (filename)] = None
-        f.close()
-        return exceptions
-    else:
-        return {}
-
-# Return true if FILENAME matches any pattern in the list of filename
-# patterns PATTERNS.
-def fnmatch_any(filename, patterns):
-    for pattern in patterns:
-        if fnmatch.fnmatch(filename, pattern):
-            return True
-    return False
-
-# Check the contents of the directory tree COPY against ORIGINAL.  For each
-# file that differs, apply REPORT to COPY, ORIGINAL, and the file's
-# relative path.  COPY and ORIGINAL should be absolute.  Ignore files 
-# that match patterns given in the list IGNORE.
-def check(copy, original):
-    os.chdir(copy)
-    for (dirpath, dirnames, filenames) in os.walk('.'):
-        exceptions = read_exceptions(join(dirpath, 'check-sync-exceptions'))
-        for dirname in dirnames:
-            if fnmatch_any(dirname, exceptions):
-                dirnames.remove(dirname)
-                break
-        for filename in filenames:
-            if fnmatch_any(filename, exceptions):
-                continue
-            relative_name = join(dirpath, filename)
-            original_name = join(original, relative_name)
-            if (os.path.exists(original_name)
-                and filecmp.cmp(relative_name, original_name, False)):
-                continue
-            report(copy, original, relative_name)
-
-differences_found = False
-
-# Print an error message for DIFFERING, which was found to differ
-# between COPY and ORIGINAL.  Set the global variable differences_found.
-def report(copy, original, differing):
-    global differences_found
-    if not differences_found:
-        print >> sys.stderr, 'TEST-UNEXPECTED-FAIL | check-sync-dirs.py | build file copies are not in sync\n' \
-                             'TEST-INFO | check-sync-dirs.py | file(s) found in:               %s\n' \
-                             'TEST-INFO | check-sync-dirs.py | differ from their originals in: %s' \
-                             % (copy, original)
-    print >> sys.stderr, 'TEST-INFO | check-sync-dirs.py | differing file:                 %s' % differing
-    differences_found = True
-
-check(copy, original)
-
-if differences_found:
-    msg = '''In general, the files in '%s' should always be exact copies of
-originals in '%s'.  A change made to one should also be made to the
-other.  See 'check-sync-dirs.py' for more details.''' \
-         % (copy, original)
-    print >> sys.stderr, textwrap.fill(msg, 75)
-    sys.exit(1)
-
-print >> sys.stderr, 'TEST-PASS | check-sync-dirs.py | %s <= %s' % (copy, original)
-sys.exit(0)
deleted file mode 100644
--- a/js/src/config/check-sync-exceptions
+++ /dev/null
@@ -1,27 +0,0 @@
-Makefile.in
-Makefile
-autoconf.mk.in
-autoconf.mk
-baseconfig.mk
-check-sync-dirs.py
-static-checking-config.mk
-nsinstall
-nsinstall.exe
-host_nsinstall.o
-host_pathsub.o
-moz.build
-
-# This is a copy of nspr's config/make-system-wrappers.pl.
-make-system-wrappers.pl
-system_wrappers_js
-
-# Ignore detritus left lying around by editing tools.
-*~
-.#*
-#*#
-*.orig
-*.rej
-
-# Ignore "compiled" python files
-*.pyc
-*.pyo
deleted file mode 100755
--- a/js/src/config/check_source_count.py
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/usr/bin/env python
-# 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/.
-
-
-# Usage: check_source_count.py SEARCH_TERM COUNT ERROR_LOCATION REPLACEMENT [FILES...]
-#   Checks that FILES contains exactly COUNT matches of SEARCH_TERM. If it does
-#   not, an error message is printed, quoting ERROR_LOCATION, which should
-#   probably be the filename and line number of the erroneous call to
-#   check_source_count.py.
-from __future__ import print_function
-import sys
-import os
-import re
-
-search_string = sys.argv[1]
-expected_count = int(sys.argv[2])
-error_location = sys.argv[3]
-replacement = sys.argv[4]
-files = sys.argv[5:]
-
-details = {}
-
-count = 0
-for f in files:
-    text = file(f).read()
-    match = re.findall(search_string, text)
-    if match:
-        num = len(match)
-        count += num
-        details[f] = num
-
-if count == expected_count:
-    print("TEST-PASS | check_source_count.py {0} | {1}"
-          .format(search_string, expected_count))
-
-else:
-    print("TEST-UNEXPECTED-FAIL | check_source_count.py {0} | "
-          .format(search_string),
-          end='')
-    if count < expected_count:
-        print("There are fewer occurrences of /{0}/ than expected. "
-              "This may mean that you have removed some, but forgotten to "
-              "account for it {1}.".format(search_string, error_location))
-    else:
-        print("There are more occurrences of /{0}/ than expected. We're trying "
-              "to prevent an increase in the number of {1}'s, using {2} if "
-              "possible. If it is unavoidable, you should update the expected "
-              "count {3}.".format(search_string, search_string, replacement, 
-                                 error_location))
-
-    print("Expected: {0}; found: {1}".format(expected_count, count))
-    for k in sorted(details):
-        print("Found {0} occurences in {1}".format(details[k],k))
-    sys.exit(-1)
-
deleted file mode 100644
--- a/js/src/config/check_spidermonkey_style.py
+++ /dev/null
@@ -1,588 +0,0 @@
-# vim: set ts=8 sts=4 et sw=4 tw=99:
-# 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 script checks various aspects of SpiderMonkey code style.  The current checks are as
-# follows.
-#
-# We check the following things in headers.
-#
-# - No cyclic dependencies.
-#
-# - No normal header should #include a inlines.h/-inl.h file.
-#
-# - #ifndef wrappers should have the right form. (XXX: not yet implemented)
-#   - Every header file should have one.
-#   - The guard name used should be appropriate for the filename.
-#
-# We check the following things in all files.
-#
-# - #includes should have full paths, e.g. "jit/Ion.h", not "Ion.h".
-#
-# - #includes should use the appropriate form for system headers (<...>) and
-#   local headers ("...").
-#
-# - #includes should be ordered correctly.
-#   - Each one should be in the correct section.
-#   - Alphabetical order should be used within sections.
-#   - Sections should be in the right order.
-#   Note that the presence of #if/#endif blocks complicates things, to the
-#   point that it's not always clear where a conditionally-compiled #include
-#   statement should go, even to a human.  Therefore, we check the #include
-#   statements within each #if/#endif block (including nested ones) in
-#   isolation, but don't try to do any order checking between such blocks.
-#----------------------------------------------------------------------------
-
-from __future__ import print_function
-
-import difflib
-import os
-import re
-import subprocess
-import sys
-import traceback
-
-# We don't bother checking files in these directories, because they're (a) auxiliary or (b)
-# imported code that doesn't follow our coding style.
-ignored_js_src_dirs = [
-   'js/src/config/',            # auxiliary stuff
-   'js/src/ctypes/libffi/',     # imported code
-   'js/src/devtools/',          # auxiliary stuff
-   'js/src/editline/',          # imported code
-   'js/src/gdb/',               # auxiliary stuff
-   'js/src/vtune/'              # imported code
-]
-
-# We ignore #includes of these files, because they don't follow the usual rules.
-included_inclnames_to_ignore = set([
-    'ffi.h',                    # generated in ctypes/libffi/
-    'devtools/sharkctl.h',      # we ignore devtools/ in general
-    'devtools/Instruments.h',   # we ignore devtools/ in general
-    'double-conversion.h',      # strange MFBT case
-    'javascript-trace.h',       # generated in $OBJDIR if HAVE_DTRACE is defined
-    'jsautokw.h',               # generated in $OBJDIR
-    'jsautooplen.h',            # generated in $OBJDIR
-    'jscustomallocator.h',      # provided by embedders;  allowed to be missing
-    'js-config.h',              # generated in $OBJDIR
-    'pratom.h',                 # NSPR
-    'prcvar.h',                 # NSPR
-    'prinit.h',                 # NSPR
-    'prlink.h',                 # NSPR
-    'prlock.h',                 # NSPR
-    'prprf.h',                  # NSPR
-    'prthread.h',               # NSPR
-    'prtypes.h',                # NSPR
-    'selfhosted.out.h',         # generated in $OBJDIR
-    'unicode/locid.h',          # ICU
-    'unicode/numsys.h',         # ICU
-    'unicode/ucal.h',           # ICU
-    'unicode/uclean.h',         # ICU
-    'unicode/ucol.h',           # ICU
-    'unicode/udat.h',           # ICU
-    'unicode/udatpg.h',         # ICU
-    'unicode/uenum.h',          # ICU
-    'unicode/unum.h',           # ICU
-    'unicode/ustring.h',        # ICU
-    'unicode/utypes.h',         # ICU
-    'vtune/VTuneWrapper.h'      # VTune
-])
-
-# These files have additional constraints on where they are #included, so we
-# ignore #includes of them when checking #include ordering.
-oddly_ordered_inclnames = set([
-    'ctypes/typedefs.h',        # Included multiple times in the body of ctypes/CTypes.h
-    'jsautokw.h',               # Included in the body of frontend/TokenStream.h
-    'jswin.h',                  # Must be #included before <psapi.h>
-    'machine/endian.h',         # Must be included after <sys/types.h> on BSD
-    'winbase.h',                # Must precede other system headers(?)
-    'windef.h'                  # Must precede other system headers(?)
-])
-
-# The files in tests/style/ contain code that fails this checking in various
-# ways.  Here is the output we expect.  If the actual output differs from
-# this, one of the following must have happened.
-# - New SpiderMonkey code violates one of the checked rules.
-# - The tests/style/ files have changed without expected_output being changed
-#   accordingly.
-# - This script has been broken somehow.
-#
-expected_output = '''\
-js/src/tests/style/BadIncludes2.h:1: error:
-    vanilla header includes an inline-header file "tests/style/BadIncludes2-inl.h"
-
-js/src/tests/style/BadIncludes.h:3: error:
-    the file includes itself
-
-js/src/tests/style/BadIncludes.h:6: error:
-    "BadIncludes2.h" is included using the wrong path;
-    did you forget a prefix, or is the file not yet committed?
-
-js/src/tests/style/BadIncludes.h:8: error:
-    <tests/style/BadIncludes2.h> should be included using
-    the #include "..." form
-
-js/src/tests/style/BadIncludes.h:10: error:
-    "stdio.h" is included using the wrong path;
-    did you forget a prefix, or is the file not yet committed?
-
-js/src/tests/style/BadIncludesOrder-inl.h:5:6: error:
-    "vm/Interpreter-inl.h" should be included after "jsscriptinlines.h"
-
-js/src/tests/style/BadIncludesOrder-inl.h:6:7: error:
-    "jsscriptinlines.h" should be included after "js/Value.h"
-
-js/src/tests/style/BadIncludesOrder-inl.h:7:8: error:
-    "js/Value.h" should be included after "ds/LifoAlloc.h"
-
-js/src/tests/style/BadIncludesOrder-inl.h:8:9: error:
-    "ds/LifoAlloc.h" should be included after "jsapi.h"
-
-js/src/tests/style/BadIncludesOrder-inl.h:9:10: error:
-    "jsapi.h" should be included after <stdio.h>
-
-js/src/tests/style/BadIncludesOrder-inl.h:10:11: error:
-    <stdio.h> should be included after "mozilla/HashFunctions.h"
-
-js/src/tests/style/BadIncludesOrder-inl.h:27:28: error:
-    "jsobj.h" should be included after "jsfun.h"
-
-(multiple files): error:
-    header files form one or more cycles
-
-   tests/style/HeaderCycleA1.h
-   -> tests/style/HeaderCycleA2.h
-      -> tests/style/HeaderCycleA3.h
-         -> tests/style/HeaderCycleA1.h
-
-   tests/style/HeaderCycleB1-inl.h
-   -> tests/style/HeaderCycleB2-inl.h
-      -> tests/style/HeaderCycleB3-inl.h
-         -> tests/style/HeaderCycleB4-inl.h
-            -> tests/style/HeaderCycleB1-inl.h
-            -> tests/style/jsheadercycleB5inlines.h
-               -> tests/style/HeaderCycleB1-inl.h
-      -> tests/style/HeaderCycleB4-inl.h
-
-'''.splitlines(True)
-
-actual_output = []
-
-
-def out(*lines):
-    for line in lines:
-        actual_output.append(line + '\n')
-
-
-def error(filename, linenum, *lines):
-    location = filename
-    if linenum is not None:
-        location += ':' + str(linenum)
-    out(location + ': error:')
-    for line in (lines):
-        out('    ' + line)
-    out('')
-
-
-class FileKind(object):
-    C = 1
-    CPP = 2
-    INL_H = 3
-    H = 4
-    TBL = 5
-    MSG = 6
-
-    @staticmethod
-    def get(filename):
-        if filename.endswith('.c'):
-            return FileKind.C
-
-        if filename.endswith('.cpp'):
-            return FileKind.CPP
-
-        if filename.endswith(('inlines.h', '-inl.h', 'Inlines.h')):
-            return FileKind.INL_H
-
-        if filename.endswith('.h'):
-            return FileKind.H
-
-        if filename.endswith('.tbl'):
-            return FileKind.TBL
-
-        if filename.endswith('.msg'):
-            return FileKind.MSG
-
-        error(filename, None, 'unknown file kind')
-
-
-def get_all_filenames():
-    '''Get a list of all the files in the (Mercurial or Git) repository.'''
-    cmds = [['hg', 'manifest', '-q'], ['git', 'ls-files', '--full-name', '../..']]
-    for cmd in cmds:
-        try:
-            all_filenames = subprocess.check_output(cmd, universal_newlines=True,
-                                                    stderr=subprocess.PIPE).split('\n')
-            return all_filenames
-        except:
-            continue
-    else:
-        raise Exception('failed to run any of the repo manifest commands', cmds)
-
-
-def check_style():
-    # We deal with two kinds of name.
-    # - A "filename" is a full path to a file from the repository root.
-    # - An "inclname" is how a file is referred to in a #include statement.
-    #
-    # Examples (filename -> inclname)
-    # - "mfbt/Attributes.h"  -> "mozilla/Attributes.h"
-    # - "js/public/Vector.h" -> "js/Vector.h"
-    # - "js/src/vm/String.h" -> "vm/String.h"
-
-    mfbt_inclnames = set()      # type: set(inclname)
-    js_names = dict()           # type: dict(filename, inclname)
-
-    # Select the appropriate files.
-    for filename in get_all_filenames():
-        if filename.startswith('mfbt/') and filename.endswith('.h'):
-            inclname = 'mozilla/' + filename[len('mfbt/'):]
-            mfbt_inclnames.add(inclname)
-
-        if filename.startswith('js/public/') and filename.endswith('.h'):
-            inclname = 'js/' + filename[len('js/public/'):]
-            js_names[filename] = inclname
-
-        if filename.startswith('js/src/') and \
-           not filename.startswith(tuple(ignored_js_src_dirs)) and \
-           filename.endswith(('.c', '.cpp', '.h', '.tbl', '.msg')):
-            inclname = filename[len('js/src/'):]
-            js_names[filename] = inclname
-
-    all_inclnames = mfbt_inclnames | set(js_names.values())
-
-    edges = dict()      # type: dict(inclname, set(inclname))
-
-    # We don't care what's inside the MFBT files, but because they are
-    # #included from JS files we have to add them to the inclusion graph.
-    for inclname in mfbt_inclnames:
-        edges[inclname] = set()
-
-    # Process all the JS files.
-    for filename in js_names.keys():
-        inclname = js_names[filename]
-        file_kind = FileKind.get(filename)
-        if file_kind == FileKind.C or file_kind == FileKind.CPP or \
-           file_kind == FileKind.H or file_kind == FileKind.INL_H:
-            included_h_inclnames = set()    # type: set(inclname)
-
-            # This script is run in js/src/, so prepend '../../' to get to the root of the Mozilla
-            # source tree.
-            with open(os.path.join('../..', filename)) as f:
-                do_file(filename, inclname, file_kind, f, all_inclnames, included_h_inclnames)
-
-        edges[inclname] = included_h_inclnames
-
-    find_cycles(all_inclnames, edges)
-
-    # Compare expected and actual output.
-    difflines = difflib.unified_diff(expected_output, actual_output,
-                                     fromfile='check_spider_monkey_style.py expected output',
-                                       tofile='check_spider_monkey_style.py actual output')
-    ok = True
-    for diffline in difflines:
-        ok = False
-        print(diffline, end='')
-
-    return ok
-
-
-def module_name(name):
-    '''Strip the trailing .cpp, .h, inlines.h or -inl.h from a filename.'''
-
-    return name.replace('inlines.h', '').replace('-inl.h', '').replace('.h', '').replace('.cpp', '')
-
-
-def is_module_header(enclosing_inclname, header_inclname):
-    '''Determine if an included name is the "module header", i.e. should be
-    first in the file.'''
-
-    module = module_name(enclosing_inclname)
-
-    # Normal case, e.g. module == "foo/Bar", header_inclname == "foo/Bar.h".
-    if module == module_name(header_inclname):
-        return True
-
-    # A public header, e.g. module == "foo/Bar", header_inclname == "js/Bar.h".
-    m = re.match(r'js\/(.*)\.h', header_inclname)
-    if m is not None and module.endswith('/' + m.group(1)):
-        return True
-
-    return False
-
-
-class Include(object):
-    '''Important information for a single #include statement.'''
-
-    def __init__(self, inclname, linenum, is_system):
-        self.inclname = inclname
-        self.linenum = linenum
-        self.is_system = is_system
-
-    def isLeaf(self):
-        return True
-
-    def section(self, enclosing_inclname):
-        '''Identify which section inclname belongs to.
-
-        The section numbers are as follows.
-          0. Module header (e.g. jsfoo.h or jsfooinlines.h within jsfoo.cpp)
-          1. mozilla/Foo.h
-          2. <foo.h> or <foo>
-          3. jsfoo.h, prmjtime.h, etc
-          4. foo/Bar.h
-          5. jsfooinlines.h
-          6. foo/Bar-inl.h
-          7. non-.h, e.g. *.tbl, *.msg
-        '''
-
-        if self.is_system:
-            return 2
-
-        if not self.inclname.endswith('.h'):
-            return 7
-
-        # A couple of modules have the .h file in js/ and the .cpp file elsewhere and so need
-        # special handling.
-        if is_module_header(enclosing_inclname, self.inclname):
-            return 0
-
-        if '/' in self.inclname:
-            if self.inclname.startswith('mozilla/'):
-                return 1
-
-            if self.inclname.endswith('-inl.h'):
-                return 6
-
-            return 4
-
-        if self.inclname.endswith('inlines.h'):
-            return 5
-
-        return 3
-
-    def quote(self):
-        if self.is_system:
-            return '<' + self.inclname + '>'
-        else:
-            return '"' + self.inclname + '"'
-
-
-class HashIfBlock(object):
-    '''Important information about a #if/#endif block.
-
-    A #if/#endif block is the contents of a #if/#endif (or similar) section.
-    The top-level block, which is not within a #if/#endif pair, is also
-    considered a block.
-
-    Each leaf is either an Include (representing a #include), or another
-    nested HashIfBlock.'''
-    def __init__(self):
-        self.kids = []
-
-    def isLeaf(self):
-        return False
-
-
-def do_file(filename, inclname, file_kind, f, all_inclnames, included_h_inclnames):
-    block_stack = [HashIfBlock()]
-
-    # Extract the #include statements as a tree of IBlocks and IIncludes.
-    for linenum, line in enumerate(f, start=1):
-        # Look for a |#include "..."| line.
-        m = re.match(r'\s*#\s*include\s+"([^"]*)"', line)
-        if m is not None:
-            block_stack[-1].kids.append(Include(m.group(1), linenum, False))
-
-        # Look for a |#include <...>| line.
-        m = re.match(r'\s*#\s*include\s+<([^>]*)>', line)
-        if m is not None:
-            block_stack[-1].kids.append(Include(m.group(1), linenum, True))
-
-        # Look for a |#{if,ifdef,ifndef}| line.
-        m = re.match(r'\s*#\s*(if|ifdef|ifndef)\b', line)
-        if m is not None:
-            # Open a new block.
-            new_block = HashIfBlock()
-            block_stack[-1].kids.append(new_block)
-            block_stack.append(new_block)
-
-        # Look for a |#{elif,else}| line.
-        m = re.match(r'\s*#\s*(elif|else)\b', line)
-        if m is not None:
-            # Close the current block, and open an adjacent one.
-            block_stack.pop()
-            new_block = HashIfBlock()
-            block_stack[-1].kids.append(new_block)
-            block_stack.append(new_block)
-
-        # Look for a |#endif| line.
-        m = re.match(r'\s*#\s*endif\b', line)
-        if m is not None:
-            # Close the current block.
-            block_stack.pop()
-
-    def check_include_statement(include):
-        '''Check the style of a single #include statement.'''
-
-        if include.is_system:
-            # Check it is not a known local file (in which case it's probably a system header).
-            if include.inclname in included_inclnames_to_ignore or \
-               include.inclname in all_inclnames:
-                error(filename, include.linenum,
-                      include.quote() + ' should be included using',
-                      'the #include "..." form')
-
-        else:
-            if include.inclname not in included_inclnames_to_ignore:
-                included_kind = FileKind.get(include.inclname)
-
-                # Check the #include path has the correct form.
-                if include.inclname not in all_inclnames:
-                    error(filename, include.linenum,
-                          include.quote() + ' is included ' + 'using the wrong path;',
-                          'did you forget a prefix, or is the file not yet committed?')
-
-                # Record inclusions of .h files for cycle detection later.
-                # (Exclude .tbl and .msg files.)
-                elif included_kind == FileKind.H or included_kind == FileKind.INL_H:
-                    included_h_inclnames.add(include.inclname)
-
-                # Check a H file doesn't #include an INL_H file.
-                if file_kind == FileKind.H and included_kind == FileKind.INL_H:
-                    error(filename, include.linenum,
-                          'vanilla header includes an inline-header file ' + include.quote())
-
-                # Check a file doesn't #include itself.  (We do this here because the cycle
-                # detection below doesn't detect this case.)
-                if inclname == include.inclname:
-                    error(filename, include.linenum, 'the file includes itself')
-
-    def check_includes_order(include1, include2):
-        '''Check the ordering of two #include statements.'''
-
-        if include1.inclname in oddly_ordered_inclnames or \
-           include2.inclname in oddly_ordered_inclnames:
-            return
-
-        section1 = include1.section(inclname)
-        section2 = include2.section(inclname)
-        if (section1 > section2) or \
-           ((section1 == section2) and (include1.inclname.lower() > include2.inclname.lower())):
-            error(filename, str(include1.linenum) + ':' + str(include2.linenum),
-                  include1.quote() + ' should be included after ' + include2.quote())
-
-    # The #include statements in the files in assembler/ and yarr/ have all manner of implicit
-    # ordering requirements.  Boo.  Ignore them.
-    skip_order_checking = inclname.startswith(('assembler/', 'yarr/'))
-
-    # Check the extracted #include statements, both individually, and the ordering of
-    # adjacent pairs that live in the same block.
-    def pair_traverse(prev, this):
-        if this.isLeaf():
-            check_include_statement(this)
-            if prev is not None and prev.isLeaf() and not skip_order_checking:
-                check_includes_order(prev, this)
-        else:
-            for prev2, this2 in zip([None] + this.kids[0:-1], this.kids):
-                pair_traverse(prev2, this2)
-
-    pair_traverse(None, block_stack[-1])
-
-
-def find_cycles(all_inclnames, edges):
-    '''Find and draw any cycles.'''
-
-    SCCs = tarjan(all_inclnames, edges)
-
-    # The various sorted() calls below ensure the output is deterministic.
-
-    def draw_SCC(c):
-        cset = set(c)
-        drawn = set()
-        def draw(v, indent):
-            out('   ' * indent + ('-> ' if indent else '   ') + v)
-            if v in drawn:
-                return
-            drawn.add(v)
-            for succ in sorted(edges[v]):
-                if succ in cset:
-                    draw(succ, indent + 1)
-        draw(sorted(c)[0], 0)
-        out('')
-
-    have_drawn_an_SCC = False
-    for scc in sorted(SCCs):
-        if len(scc) != 1:
-            if not have_drawn_an_SCC:
-                error('(multiple files)', None, 'header files form one or more cycles')
-                have_drawn_an_SCC = True
-
-            draw_SCC(scc)
-
-
-# Tarjan's algorithm for finding the strongly connected components (SCCs) of a graph.
-# https://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm
-def tarjan(V, E):
-    vertex_index = {}
-    vertex_lowlink = {}
-    index = 0
-    S = []
-    all_SCCs = []
-
-    def strongconnect(v, index):
-        # Set the depth index for v to the smallest unused index
-        vertex_index[v] = index
-        vertex_lowlink[v] = index
-        index += 1
-        S.append(v)
-
-        # Consider successors of v
-        for w in E[v]:
-            if w not in vertex_index:
-                # Successor w has not yet been visited; recurse on it
-                index = strongconnect(w, index)
-                vertex_lowlink[v] = min(vertex_lowlink[v], vertex_lowlink[w])
-            elif w in S:
-                # Successor w is in stack S and hence in the current SCC
-                vertex_lowlink[v] = min(vertex_lowlink[v], vertex_index[w])
-
-        # If v is a root node, pop the stack and generate an SCC
-        if vertex_lowlink[v] == vertex_index[v]:
-            i = S.index(v)
-            scc = S[i:]
-            del S[i:]
-            all_SCCs.append(scc)
-
-        return index
-
-    for v in V:
-        if v not in vertex_index:
-            index = strongconnect(v, index)
-
-    return all_SCCs
-
-
-def main():
-    ok = check_style()
-
-    if ok:
-        print('TEST-PASS | check_spidermonkey_style.py | ok')
-    else:
-        print('TEST-UNEXPECTED-FAIL | check_spidermonkey_style.py | actual output does not match expected output;  diff is above')
-
-    sys.exit(0 if ok else 1)
-
-
-if __name__ == '__main__':
-    main()
deleted file mode 100644
--- a/js/src/config/check_vanilla_allocations.py
+++ /dev/null
@@ -1,159 +0,0 @@
-# vim: set ts=8 sts=4 et sw=4 tw=79:
-# 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/.
-
-#----------------------------------------------------------------------------
-# All heap allocations in SpiderMonkey must go through js_malloc, js_calloc,
-# js_realloc, and js_free.  This is so that any embedder who uses a custom
-# allocator (by defining JS_USE_CUSTOM_ALLOCATOR) will see all heap allocation
-# go through that custom allocator.
-#
-# Therefore, the presence of any calls to "vanilla" allocation/free functions
-# (e.g. malloc(), free()) is a bug.
-#
-# This script checks for the presence of such disallowed vanilla
-# allocation/free function in SpiderMonkey when it's built as a library.  It
-# relies on |nm| from the GNU binutils, and so only works on Linux, but one
-# platform is good enough to catch almost all violations.
-#
-# This checking is only 100% reliable in a JS_USE_CUSTOM_ALLOCATOR build in
-# which the default definitions of js_malloc et al (in Utility.h) -- which call
-# malloc et al -- are replaced with empty definitions.  This is because the
-# presence and possible inlining of the default js_malloc et al can cause
-# malloc/calloc/realloc/free calls show up in unpredictable places.
-#
-# Unfortunately, that configuration cannot be tested on Mozilla's standard
-# testing infrastructure.  Instead, by default this script only tests that none
-# of the other vanilla allocation/free functions (operator new, memalign, etc)
-# are present.  If given the --aggressive flag, it will also check for
-# malloc/calloc/realloc/free.
-#
-# Note:  We don't check for |operator delete| and |operator delete[]|.  These
-# can be present somehow due to virtual destructors, but this is not too
-# because vanilla delete/delete[] calls don't make sense without corresponding
-# vanilla new/new[] calls, and any explicit calls will be caught by Valgrind's
-# mismatched alloc/free checking.
-#----------------------------------------------------------------------------
-
-from __future__ import print_function
-
-import argparse
-import re
-import subprocess
-import sys
-
-# The obvious way to implement this script is to search for occurrences of
-# malloc et al, succeed if none are found, and fail is some are found.
-# However, "none are found" does not necessarily mean "none are present" --
-# this script could be buggy.  (Or the output format of |nm| might change in
-# the future.)
-#
-# So jsutil.cpp deliberately contains a (never-called) function that contains a
-# single use of all the vanilla allocation/free functions.  And this script
-# fails if it (a) finds uses of those functions in files other than jsutil.cpp,
-# *or* (b) fails to find them in jsutil.cpp.
-
-# Tracks overall success of the test.
-has_failed = False
-
-
-def fail(msg):
-    print('TEST-UNEXPECTED-FAIL | check_vanilla_allocations.py |', msg)
-    global has_failed
-    has_failed = True
-
-
-def main():
-    parser = argparse.ArgumentParser()
-    parser.add_argument('--aggressive', action='store_true',
-                        help='also check for malloc, calloc, realloc and free')
-    parser.add_argument('file', type=str,
-                        help='name of the file to check')
-    args = parser.parse_args()
-
-    # Run |nm|.  Options:
-    # -u: show only undefined symbols
-    # -C: demangle symbol names
-    # -l: show a filename and line number for each undefined symbol
-    cmd = ['nm', '-u', '-C', '-l', args.file]
-    lines = subprocess.check_output(cmd, universal_newlines=True,
-                                    stderr=subprocess.PIPE).split('\n')
-
-    # alloc_fns contains all the vanilla allocation/free functions that we look
-    # for. Regexp chars are escaped appropriately.
-
-    alloc_fns = [
-        # Matches |operator new(unsigned T)|, where |T| is |int| or |long|.
-        r'operator new\(unsigned',
-
-        # Matches |operator new[](unsigned T)|, where |T| is |int| or |long|.
-        r'operator new\[\]\(unsigned',
-
-        r'memalign',
-        # These two aren't available on all Linux configurations.
-        #r'posix_memalign',
-        #r'aligned_alloc',
-        r'valloc',
-        r'strdup'
-    ]
-
-    if args.aggressive:
-        alloc_fns += [
-            r'malloc',
-            r'calloc',
-            r'realloc',
-            r'free'
-        ]
-
-    # This is like alloc_fns, but regexp chars are not escaped.
-    alloc_fns_unescaped = [fn.translate(None, r'\\') for fn in alloc_fns]
-
-    # This regexp matches the relevant lines in the output of |nm|, which look
-    # like the following.
-    #
-    #   U malloc  /path/to/objdir/dist/include/js/Utility.h:142
-    #
-    alloc_fns_re = r'U (' + r'|'.join(alloc_fns) + r').*\/([\w\.]+):(\d+)$'
-
-    # This tracks which allocation/free functions have been seen in jsutil.cpp.
-    jsutil_cpp = set([])
-
-    for line in lines:
-        m = re.search(alloc_fns_re, line)
-        if m is None:
-            continue
-
-        fn = m.group(1)
-        filename = m.group(2)
-        linenum = m.group(3)
-        if filename == 'jsutil.cpp':
-            jsutil_cpp.add(fn)
-        else:
-            # An allocation is present in a non-special file.  Fail!
-            fail("'" + fn + "' present at " + filename + ':' + linenum)
-
-
-    # Check that all functions we expect are used in jsutil.cpp.  (This will
-    # fail if the function-detection code breaks at any point.)
-    for fn in alloc_fns_unescaped:
-        if fn not in jsutil_cpp:
-            fail("'" + fn + "' isn't used as expected in jsutil.cpp")
-        else:
-            jsutil_cpp.remove(fn)
-
-    # This should never happen, but check just in case.
-    if jsutil_cpp:
-        fail('unexpected allocation fns used in jsutil.cpp: ' +
-             ', '.join(jsutil_cpp))
-
-    if has_failed:
-        sys.exit(1)
-
-    print('TEST-PASS | check_vanilla_allocations.py | ok')
-    sys.exit(0)
-
-
-if __name__ == '__main__':
-    main()
-
deleted file mode 100644
--- a/js/src/config/config.mk
+++ /dev/null
@@ -1,910 +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/.
-
-#
-# config.mk
-#
-# Determines the platform and builds the macros needed to load the
-# appropriate platform-specific .mk file, then defines all (most?)
-# of the generic macros.
-#
-
-# Define an include-at-most-once flag
-ifdef INCLUDED_CONFIG_MK
-$(error Do not include config.mk twice!)
-endif
-INCLUDED_CONFIG_MK = 1
-
-EXIT_ON_ERROR = set -e; # Shell loops continue past errors without this.
-
-ifndef topsrcdir
-topsrcdir	= $(DEPTH)
-endif
-
-ifndef INCLUDED_AUTOCONF_MK
-include $(DEPTH)/config/autoconf.mk
-endif
-
--include $(DEPTH)/.mozconfig.mk
-
-# Integrate with mozbuild-generated make files. We first verify that no
-# variables provided by the automatically generated .mk files are
-# present. If they are, this is a violation of the separation of
-# responsibility between Makefile.in and mozbuild files.
-_MOZBUILD_EXTERNAL_VARIABLES := \
-  ANDROID_GENERATED_RESFILES \
-  ANDROID_RES_DIRS \
-  CMSRCS \
-  CMMSRCS \
-  CPP_UNIT_TESTS \
-  DIRS \
-  EXTRA_PP_COMPONENTS \
-  EXTRA_PP_JS_MODULES \
-  FORCE_SHARED_LIB \
-  FORCE_STATIC_LIB \
-  FINAL_LIBRARY \
-  HOST_CSRCS \
-  HOST_CMMSRCS \
-  HOST_LIBRARY_NAME \
-  HOST_PROGRAM \
-  HOST_SIMPLE_PROGRAMS \
-  IS_COMPONENT \
-  JAR_MANIFEST \
-  JAVA_JAR_TARGETS \
-  JS_MODULES_PATH \
-  LIBRARY_NAME \
-  LIBXUL_LIBRARY \
-  MODULE \
-  MSVC_ENABLE_PGO \
-  NO_DIST_INSTALL \
-  PARALLEL_DIRS \
-  PROGRAM \
-  SDK_HEADERS \
-  SIMPLE_PROGRAMS \
-  TEST_DIRS \
-  TIERS \
-  TOOL_DIRS \
-  XPCSHELL_TESTS \
-  XPIDL_MODULE \
-  $(NULL)
-
-_DEPRECATED_VARIABLES := \
-  ANDROID_RESFILES \
-  MOCHITEST_FILES_PARTS \
-  MOCHITEST_BROWSER_FILES_PARTS \
-  SHORT_LIBNAME \
-  $(NULL)
-
-ifndef EXTERNALLY_MANAGED_MAKE_FILE
-# Using $(firstword) may not be perfect. But it should be good enough for most
-# scenarios.
-_current_makefile = $(CURDIR)/$(firstword $(MAKEFILE_LIST))
-
-$(foreach var,$(_MOZBUILD_EXTERNAL_VARIABLES),$(if $(filter file override,$(subst $(NULL) ,_,$(origin $(var)))),\
-    $(error Variable $(var) is defined in $(_current_makefile). It should only be defined in moz.build files),\
-    ))
-
-$(foreach var,$(_DEPRECATED_VARIABLES),$(if $(filter file override,$(subst $(NULL) ,_,$(origin $(var)))),\
-    $(error Variable $(var) is defined in $(_current_makefile). This variable has been deprecated. It does nothing. It must be removed in order to build)\
-    ))
-
-# Import the automatically generated backend file. If this file doesn't exist,
-# the backend hasn't been properly configured. We want this to be a fatal
-# error, hence not using "-include".
-ifndef STANDALONE_MAKEFILE
-GLOBAL_DEPS += backend.mk
-include backend.mk
-endif
-
-# Freeze the values specified by moz.build to catch them if they fail.
-
-$(foreach var,$(_MOZBUILD_EXTERNAL_VARIABLES),$(eval $(var)_FROZEN := '$($(var))'))
-$(foreach var,$(_DEPRECATED_VARIABLES),$(eval $(var)_FROZEN := '$($(var))'))
-
-CHECK_MOZBUILD_VARIABLES = $(foreach var,$(_MOZBUILD_EXTERNAL_VARIABLES), \
-  $(if $(subst $($(var)_FROZEN),,'$($(var))'), \
-	  $(error Variable $(var) is defined in $(_current_makefile). It should only be defined in moz.build files),\
-  )) $(foreach var,$(_DEPRECATED_VARIABLES), \
-	$(if $(subst $($(var)_FROZEN),,'$($(var))'), \
-    $(error Variable $(var) is defined in $(_current_makefile). This variable has been deprecated. It does nothing. It must be removed in order to build),\
-    ))
-
-endif
-
-space = $(NULL) $(NULL)
-
-# Include defs.mk files that can be found in $(srcdir)/$(DEPTH),
-# $(srcdir)/$(DEPTH-1), $(srcdir)/$(DEPTH-2), etc., and $(srcdir)
-# where $(DEPTH-1) is one level less of depth, $(DEPTH-2), two, etc.
-# i.e. for DEPTH=../../.., DEPTH-1 is ../.. and DEPTH-2 is ..
-# These defs.mk files are used to define variables in a directory
-# and all its subdirectories, recursively.
-__depth := $(subst /, ,$(DEPTH))
-ifeq (.,$(__depth))
-__depth :=
-endif
-$(foreach __d,$(__depth) .,$(eval __depth = $(wordlist 2,$(words $(__depth)),$(__depth))$(eval -include $(subst $(space),/,$(strip $(srcdir) $(__depth) defs.mk)))))
-
-COMMA = ,
-
-# Sanity check some variables
-CHECK_VARS := \
- XPI_NAME \
- LIBRARY_NAME \
- MODULE \
- DEPTH \
- XPI_PKGNAME \
- INSTALL_EXTENSION_ID \
- SHARED_LIBRARY_NAME \
- STATIC_LIBRARY_NAME \
- $(NULL)
-
-# checks for internal spaces or trailing spaces in the variable
-# named by $x
-check-variable = $(if $(filter-out 0 1,$(words $($(x))z)),$(error Spaces are not allowed in $(x)))
-
-$(foreach x,$(CHECK_VARS),$(check-variable))
-
-ifndef INCLUDED_FUNCTIONS_MK
-include $(topsrcdir)/config/makefiles/functions.mk
-endif
-
-RM = rm -f
-
-# LIBXUL_DIST is not defined under js/src, thus we make it mean DIST there.
-LIBXUL_DIST ?= $(DIST)
-
-# FINAL_TARGET specifies the location into which we copy end-user-shipped
-# build products (typelibs, components, chrome). It may already be specified by
-# a moz.build file.
-#
-# If XPI_NAME is set, the files will be shipped to $(DIST)/xpi-stage/$(XPI_NAME)
-# instead of $(DIST)/bin. In both cases, if DIST_SUBDIR is set, the files will be
-# shipped to a $(DIST_SUBDIR) subdirectory.
-FINAL_TARGET ?= $(if $(XPI_NAME),$(DIST)/xpi-stage/$(XPI_NAME),$(DIST)/bin)$(DIST_SUBDIR:%=/%)
-# Override the stored value for the check to make sure that the variable is not
-# redefined in the Makefile.in value.
-FINAL_TARGET_FROZEN := '$(FINAL_TARGET)'
-
-ifdef XPI_NAME
-DEFINES += -DXPI_NAME=$(XPI_NAME)
-endif
-
-# The VERSION_NUMBER is suffixed onto the end of the DLLs we ship.
-VERSION_NUMBER		= 50
-
-ifeq ($(HOST_OS_ARCH),WINNT)
-win_srcdir	:= $(subst $(topsrcdir),$(WIN_TOP_SRC),$(srcdir))
-BUILD_TOOLS	= $(WIN_TOP_SRC)/build/unix
-else
-win_srcdir	:= $(srcdir)
-BUILD_TOOLS	= $(topsrcdir)/build/unix
-endif
-
-CONFIG_TOOLS	= $(MOZ_BUILD_ROOT)/config
-AUTOCONF_TOOLS	= $(topsrcdir)/build/autoconf
-
-# Disable MOZ_PSEUDO_DERECURSE when it contains no-pymake and we're running
-# pymake. This can be removed when no-pymake is removed from the default in
-# build/autoconf/compiler-opts.m4.
-ifdef .PYMAKE
-comma = ,
-ifneq (,$(filter no-pymake,$(subst $(comma), ,$(MOZ_PSEUDO_DERECURSE))))
-MOZ_PSEUDO_DERECURSE :=
-endif
-endif
-
-# Disable MOZ_PSEUDO_DERECURSE on PGO builds until it's fixed.
-ifneq (,$(MOZ_PROFILE_USE)$(MOZ_PROFILE_GENERATE))
-MOZ_PSEUDO_DERECURSE :=
-endif
-
-#
-# Strip off the excessively long version numbers on these platforms,
-# but save the version to allow multiple versions of the same base
-# platform to be built in the same tree.
-#
-ifneq (,$(filter FreeBSD HP-UX Linux NetBSD OpenBSD SunOS,$(OS_ARCH)))
-OS_RELEASE	:= $(basename $(OS_RELEASE))
-
-# Allow the user to ignore the OS_VERSION, which is usually irrelevant.
-ifdef WANT_MOZILLA_CONFIG_OS_VERSION
-OS_VERS		:= $(suffix $(OS_RELEASE))
-OS_VERSION	:= $(shell echo $(OS_VERS) | sed 's/-.*//')
-endif
-
-endif
-
-OS_CONFIG	:= $(OS_ARCH)$(OS_RELEASE)
-
-ifdef _MSC_VER
-CC_WRAPPER ?= $(call py_action,cl)
-CXX_WRAPPER ?= $(call py_action,cl)
-endif # _MSC_VER
-
-CC := $(CC_WRAPPER) $(CC)
-CXX := $(CXX_WRAPPER) $(CXX)
-MKDIR ?= mkdir
-SLEEP ?= sleep
-TOUCH ?= touch
-
-ifdef .PYMAKE
-PYCOMMANDPATH += $(PYTHON_SITE_PACKAGES)
-endif
-
-PYTHON_PATH = $(PYTHON) $(topsrcdir)/config/pythonpath.py
-
-# determine debug-related options
-_DEBUG_ASFLAGS :=
-_DEBUG_CFLAGS :=
-_DEBUG_LDFLAGS :=
-
-ifdef MOZ_DEBUG
-  _DEBUG_CFLAGS += $(MOZ_DEBUG_ENABLE_DEFS)
-  XULPPFLAGS += $(MOZ_DEBUG_ENABLE_DEFS)
-else
-  _DEBUG_CFLAGS += $(MOZ_DEBUG_DISABLE_DEFS)
-  XULPPFLAGS += $(MOZ_DEBUG_DISABLE_DEFS)
-endif
-
-ifneq (,$(MOZ_DEBUG)$(MOZ_DEBUG_SYMBOLS))
-  ifeq ($(AS),yasm)
-    ifeq ($(OS_ARCH)_$(GNU_CC),WINNT_)
-      _DEBUG_ASFLAGS += -g cv8
-    else
-      ifneq ($(OS_ARCH),Darwin)
-        _DEBUG_ASFLAGS += -g dwarf2
-      endif
-    endif
-  else
-    _DEBUG_ASFLAGS += $(MOZ_DEBUG_FLAGS)
-  endif
-  _DEBUG_CFLAGS += $(MOZ_DEBUG_FLAGS)
-  _DEBUG_LDFLAGS += $(MOZ_DEBUG_LDFLAGS)
-endif
-
-MOZALLOC_LIB = $(call EXPAND_LIBNAME_PATH,mozalloc,$(DIST)/lib)
-
-ASFLAGS += $(_DEBUG_ASFLAGS)
-OS_CFLAGS += $(_DEBUG_CFLAGS)
-OS_CXXFLAGS += $(_DEBUG_CFLAGS)
-OS_LDFLAGS += $(_DEBUG_LDFLAGS)
-
-# XXX: What does this? Bug 482434 filed for better explanation.
-ifeq ($(OS_ARCH)_$(GNU_CC),WINNT_)
-ifdef MOZ_DEBUG
-ifneq (,$(MOZ_BROWSE_INFO)$(MOZ_BSCFILE))
-OS_CFLAGS += -FR
-OS_CXXFLAGS += -FR
-endif
-else # ! MOZ_DEBUG
-
-# MOZ_DEBUG_SYMBOLS generates debug symbols in separate PDB files.
-# Used for generating an optimized build with debugging symbols.
-# Used in the Windows nightlies to generate symbols for crash reporting.
-ifdef MOZ_DEBUG_SYMBOLS
-OS_CXXFLAGS += -UDEBUG -DNDEBUG
-OS_CFLAGS += -UDEBUG -DNDEBUG
-ifdef HAVE_64BIT_OS
-OS_LDFLAGS += -DEBUG -OPT:REF,ICF
-else
-OS_LDFLAGS += -DEBUG -OPT:REF
-endif
-endif
-
-#
-# Handle trace-malloc and DMD in optimized builds.
-# No opt to give sane callstacks.
-#
-ifneq (,$(NS_TRACE_MALLOC)$(MOZ_DMD))
-MOZ_OPTIMIZE_FLAGS=-Zi -Od -UDEBUG -DNDEBUG
-ifdef HAVE_64BIT_OS
-OS_LDFLAGS = -DEBUG -OPT:REF,ICF
-else
-OS_LDFLAGS = -DEBUG -OPT:REF
-endif
-endif # NS_TRACE_MALLOC || MOZ_DMD
-
-endif # MOZ_DEBUG
-
-# We don't build a static CRT when building a custom CRT,
-# it appears to be broken. So don't link to jemalloc if
-# the Makefile wants static CRT linking.
-ifeq ($(MOZ_MEMORY)_$(USE_STATIC_LIBS),1_1)
-# Disable default CRT libs and add the right lib path for the linker
-MOZ_GLUE_LDFLAGS=
-endif
-
-endif # WINNT && !GNU_CC
-
-ifdef MOZ_GLUE_PROGRAM_LDFLAGS
-DEFINES += -DMOZ_GLUE_IN_PROGRAM
-else
-MOZ_GLUE_PROGRAM_LDFLAGS=$(MOZ_GLUE_LDFLAGS)
-endif
-
-#
-# Build using PIC by default
-#
-_ENABLE_PIC=1
-
-# Determine if module being compiled is destined
-# to be merged into libxul
-
-ifeq ($(FINAL_LIBRARY),xul)
-  ifdef LIBXUL_LIBRARY
-    $(error FINAL_LIBRARY is "xul", LIBXUL_LIBRARY is implied)
-  endif
-  LIBXUL_LIBRARY := 1
-endif
-
-ifdef LIBXUL_LIBRARY
-ifdef IS_COMPONENT
-$(error IS_COMPONENT is set, but is not compatible with LIBXUL_LIBRARY)
-endif
-FORCE_STATIC_LIB=1
-endif
-
-# If we are building this component into an extension/xulapp, it cannot be
-# statically linked. In the future we may want to add a xulapp meta-component
-# build option.
-
-ifdef XPI_NAME
-ifdef IS_COMPONENT
-EXPORT_LIBRARY=
-FORCE_STATIC_LIB=
-FORCE_SHARED_LIB=1
-endif
-endif
-
-ifndef SHARED_LIBRARY_NAME
-ifdef LIBRARY_NAME
-SHARED_LIBRARY_NAME=$(LIBRARY_NAME)
-endif
-endif
-
-ifndef STATIC_LIBRARY_NAME
-ifdef LIBRARY_NAME
-STATIC_LIBRARY_NAME=$(LIBRARY_NAME)
-endif
-endif
-
-# PGO on MSVC is opt-in
-ifdef _MSC_VER
-ifndef MSVC_ENABLE_PGO
-NO_PROFILE_GUIDED_OPTIMIZE = 1
-endif
-endif
-
-# No sense in profiling tools
-ifdef INTERNAL_TOOLS
-NO_PROFILE_GUIDED_OPTIMIZE = 1
-endif
-
-# Don't build SIMPLE_PROGRAMS with PGO, since they don't need it anyway,
-# and we don't have the same build logic to re-link them in the second pass.
-ifdef SIMPLE_PROGRAMS
-NO_PROFILE_GUIDED_OPTIMIZE = 1
-endif
-
-# No sense in profiling unit tests
-ifdef CPP_UNIT_TESTS
-NO_PROFILE_GUIDED_OPTIMIZE = 1
-endif
-
-# Enable profile-based feedback
-ifneq (1,$(NO_PROFILE_GUIDED_OPTIMIZE))
-ifdef MOZ_PROFILE_GENERATE
-OS_CFLAGS += $(if $(filter $(notdir $<),$(notdir $(NO_PROFILE_GUIDED_OPTIMIZE))),,$(PROFILE_GEN_CFLAGS))
-OS_CXXFLAGS += $(if $(filter $(notdir $<),$(notdir $(NO_PROFILE_GUIDED_OPTIMIZE))),,$(PROFILE_GEN_CFLAGS))
-OS_LDFLAGS += $(PROFILE_GEN_LDFLAGS)
-ifeq (WINNT,$(OS_ARCH))
-AR_FLAGS += -LTCG
-endif
-endif # MOZ_PROFILE_GENERATE
-
-ifdef MOZ_PROFILE_USE
-OS_CFLAGS += $(if $(filter $(notdir $<),$(notdir $(NO_PROFILE_GUIDED_OPTIMIZE))),,$(PROFILE_USE_CFLAGS))
-OS_CXXFLAGS += $(if $(filter $(notdir $<),$(notdir $(NO_PROFILE_GUIDED_OPTIMIZE))),,$(PROFILE_USE_CFLAGS))
-OS_LDFLAGS += $(PROFILE_USE_LDFLAGS)
-ifeq (WINNT,$(OS_ARCH))
-AR_FLAGS += -LTCG
-endif
-endif # MOZ_PROFILE_USE
-endif # NO_PROFILE_GUIDED_OPTIMIZE
-
-
-# Does the makefile specifies the internal XPCOM API linkage?
-ifneq (,$(MOZILLA_INTERNAL_API)$(LIBXUL_LIBRARY))
-DEFINES += -DMOZILLA_INTERNAL_API
-endif
-
-# Force XPCOM/widget/gfx methods to be _declspec(dllexport) when we're
-# building libxul libraries
-ifdef LIBXUL_LIBRARY
-DEFINES += \
-	  -DIMPL_LIBXUL \
-		$(NULL)
-
-ifndef JS_SHARED_LIBRARY
-DEFINES += -DSTATIC_EXPORTABLE_JS_API
-endif
-endif
-
-MAKE_JARS_FLAGS = \
-	-t $(topsrcdir) \
-	-f $(MOZ_CHROME_FILE_FORMAT) \
-	$(NULL)
-
-ifdef USE_EXTENSION_MANIFEST
-MAKE_JARS_FLAGS += -e
-endif
-
-TAR_CREATE_FLAGS = -chf
-
-ifeq ($(OS_ARCH),OS2)
-TAR_CREATE_FLAGS = -cf
-endif
-
-#
-# Personal makefile customizations go in these optional make include files.
-#
-MY_CONFIG	:= $(DEPTH)/config/myconfig.mk
-MY_RULES	:= $(DEPTH)/config/myrules.mk
-
-#
-# Default command macros; can be overridden in <arch>.mk.
-#
-CCC = $(CXX)
-
-# Java macros
-JAVA_GEN_DIR  = _javagen
-JAVA_DIST_DIR = $(DEPTH)/$(JAVA_GEN_DIR)
-JAVA_IFACES_PKG_NAME = org/mozilla/interfaces
-
-OS_INCLUDES += $(MOZ_JPEG_CFLAGS) $(MOZ_PNG_CFLAGS) $(MOZ_ZLIB_CFLAGS) $(MOZ_PIXMAN_CFLAGS)
-
-# NSPR_CFLAGS and NSS_CFLAGS must appear ahead of OS_INCLUDES to avoid Linux
-# builds wrongly picking up system NSPR/NSS header files.
-INCLUDES = \
-  -I$(srcdir) \
-  -I. \
-  $(LOCAL_INCLUDES) \
-  -I$(DIST)/include \
-  $(if $(LIBXUL_SDK),-I$(LIBXUL_SDK)/include) \
-  $(NSPR_CFLAGS) $(NSS_CFLAGS) \
-  $(OS_INCLUDES) \
-  $(NULL)
-
-include $(topsrcdir)/config/static-checking-config.mk
-
-CFLAGS		= $(OS_CPPFLAGS) $(OS_CFLAGS)
-CXXFLAGS	= $(OS_CPPFLAGS) $(OS_CXXFLAGS)
-LDFLAGS		= $(OS_LDFLAGS) $(MOZ_FIX_LINK_PATHS)
-
-# Allow each module to override the *default* optimization settings
-# by setting MODULE_OPTIMIZE_FLAGS if the developer has not given
-# arguments to --enable-optimize
-ifdef MOZ_OPTIMIZE
-ifeq (1,$(MOZ_OPTIMIZE))
-ifdef MODULE_OPTIMIZE_FLAGS
-CFLAGS		+= $(MODULE_OPTIMIZE_FLAGS)
-CXXFLAGS	+= $(MODULE_OPTIMIZE_FLAGS)
-else
-ifneq (,$(if $(MOZ_PROFILE_GENERATE)$(MOZ_PROFILE_USE),$(MOZ_PGO_OPTIMIZE_FLAGS)))
-CFLAGS		+= $(MOZ_PGO_OPTIMIZE_FLAGS)
-CXXFLAGS	+= $(MOZ_PGO_OPTIMIZE_FLAGS)
-else
-CFLAGS		+= $(MOZ_OPTIMIZE_FLAGS)
-CXXFLAGS	+= $(MOZ_OPTIMIZE_FLAGS)
-endif # neq (,$(MOZ_PROFILE_GENERATE)$(MOZ_PROFILE_USE))
-endif # MODULE_OPTIMIZE_FLAGS
-else
-CFLAGS		+= $(MOZ_OPTIMIZE_FLAGS)
-CXXFLAGS	+= $(MOZ_OPTIMIZE_FLAGS)
-endif # MOZ_OPTIMIZE == 1
-LDFLAGS		+= $(MOZ_OPTIMIZE_LDFLAGS)
-endif # MOZ_OPTIMIZE
-
-ifdef CROSS_COMPILE
-HOST_CFLAGS	+= $(HOST_OPTIMIZE_FLAGS)
-else
-ifdef MOZ_OPTIMIZE
-ifeq (1,$(MOZ_OPTIMIZE))
-ifdef MODULE_OPTIMIZE_FLAGS
-HOST_CFLAGS	+= $(MODULE_OPTIMIZE_FLAGS)
-else
-HOST_CFLAGS	+= $(MOZ_OPTIMIZE_FLAGS)
-endif # MODULE_OPTIMIZE_FLAGS
-else
-HOST_CFLAGS	+= $(MOZ_OPTIMIZE_FLAGS)
-endif # MOZ_OPTIMIZE == 1
-endif # MOZ_OPTIMIZE
-endif # CROSS_COMPILE
-
-CFLAGS += $(MOZ_FRAMEPTR_FLAGS)
-CXXFLAGS += $(MOZ_FRAMEPTR_FLAGS)
-
-# Check for FAIL_ON_WARNINGS & FAIL_ON_WARNINGS_DEBUG (Shorthand for Makefiles
-# to request that we use the 'warnings as errors' compile flags)
-
-# NOTE: First, we clear FAIL_ON_WARNINGS[_DEBUG] if we're doing a Windows PGO
-# build, since WARNINGS_AS_ERRORS has been suspected of causing isuses in that
-# situation. (See bug 437002.)
-ifeq (WINNT_1,$(OS_ARCH)_$(MOZ_PROFILE_GENERATE)$(MOZ_PROFILE_USE))
-FAIL_ON_WARNINGS_DEBUG=
-FAIL_ON_WARNINGS=
-endif # WINNT && (MOS_PROFILE_GENERATE ^ MOZ_PROFILE_USE)
-
-# Now, check for debug version of flag; it turns on normal flag in debug builds.
-ifdef FAIL_ON_WARNINGS_DEBUG
-ifdef MOZ_DEBUG
-FAIL_ON_WARNINGS = 1
-endif # MOZ_DEBUG
-endif # FAIL_ON_WARNINGS_DEBUG
-
-# Check for normal version of flag, and add WARNINGS_AS_ERRORS if it's set to 1.
-ifdef FAIL_ON_WARNINGS
-CXXFLAGS += $(WARNINGS_AS_ERRORS)
-CFLAGS   += $(WARNINGS_AS_ERRORS)
-endif # FAIL_ON_WARNINGS
-
-ifeq ($(OS_ARCH)_$(GNU_CC),WINNT_)
-#// Currently, unless USE_STATIC_LIBS is defined, the multithreaded
-#// DLL version of the RTL is used...
-#//
-#//------------------------------------------------------------------------
-ifdef USE_STATIC_LIBS
-RTL_FLAGS=-MT          # Statically linked multithreaded RTL
-ifneq (,$(MOZ_DEBUG)$(NS_TRACE_MALLOC))
-ifndef MOZ_NO_DEBUG_RTL
-RTL_FLAGS=-MTd         # Statically linked multithreaded MSVC4.0 debug RTL
-endif
-endif # MOZ_DEBUG || NS_TRACE_MALLOC
-
-else # !USE_STATIC_LIBS
-
-RTL_FLAGS=-MD          # Dynamically linked, multithreaded RTL
-ifneq (,$(MOZ_DEBUG)$(NS_TRACE_MALLOC))
-ifndef MOZ_NO_DEBUG_RTL
-RTL_FLAGS=-MDd         # Dynamically linked, multithreaded MSVC4.0 debug RTL
-endif
-endif # MOZ_DEBUG || NS_TRACE_MALLOC
-endif # USE_STATIC_LIBS
-endif # WINNT && !GNU_CC
-
-ifeq ($(OS_ARCH),Darwin)
-# Compiling ObjC requires an Apple compiler anyway, so it's ok to set
-# host CMFLAGS here.
-HOST_CMFLAGS += -fobjc-exceptions
-HOST_CMMFLAGS += -fobjc-exceptions
-OS_COMPILE_CMFLAGS += -fobjc-exceptions
-OS_COMPILE_CMMFLAGS += -fobjc-exceptions
-ifeq ($(MOZ_WIDGET_TOOLKIT),uikit)
-OS_COMPILE_CMFLAGS += -fobjc-abi-version=2 -fobjc-legacy-dispatch
-OS_COMPILE_CMMFLAGS += -fobjc-abi-version=2 -fobjc-legacy-dispatch
-endif
-endif
-
-COMPILE_CFLAGS	= $(VISIBILITY_FLAGS) $(DEFINES) $(INCLUDES) $(DSO_CFLAGS) $(DSO_PIC_CFLAGS) $(RTL_FLAGS) $(OS_CPPFLAGS) $(OS_COMPILE_CFLAGS) $(CFLAGS) $(EXTRA_COMPILE_FLAGS)
-COMPILE_CXXFLAGS = $(STL_FLAGS) $(VISIBILITY_FLAGS) $(DEFINES) $(INCLUDES) $(DSO_CFLAGS) $(DSO_PIC_CFLAGS) $(RTL_FLAGS) $(OS_CPPFLAGS) $(OS_COMPILE_CXXFLAGS) $(CXXFLAGS) $(EXTRA_COMPILE_FLAGS)
-COMPILE_CMFLAGS = $(OS_COMPILE_CMFLAGS) $(EXTRA_COMPILE_FLAGS)
-COMPILE_CMMFLAGS = $(OS_COMPILE_CMMFLAGS) $(EXTRA_COMPILE_FLAGS)
-ASFLAGS += $(EXTRA_ASSEMBLER_FLAGS)
-
-ifndef CROSS_COMPILE
-HOST_CFLAGS += $(RTL_FLAGS)
-endif
-
-#
-# Name of the binary code directories
-#
-# Override defaults
-
-# We need to know where to find the libraries we
-# put on the link line for binaries, and should
-# we link statically or dynamic?  Assuming dynamic for now.
-
-ifneq (WINNT_,$(OS_ARCH)_$(GNU_CC))
-LIBS_DIR	= -L$(DIST)/bin -L$(DIST)/lib
-ifdef LIBXUL_SDK
-LIBS_DIR	+= -L$(LIBXUL_SDK)/bin -L$(LIBXUL_SDK)/lib
-endif
-endif
-
-# Default location of include files
-ifndef LIBXUL_SDK
-IDL_PARSER_DIR = $(topsrcdir)/xpcom/idl-parser
-IDL_PARSER_CACHE_DIR = $(DEPTH)/xpcom/idl-parser
-else
-IDL_PARSER_DIR = $(LIBXUL_SDK)/sdk/bin
-IDL_PARSER_CACHE_DIR = $(LIBXUL_SDK)/sdk/bin
-endif
-
-SDK_LIB_DIR = $(DIST)/sdk/lib
-SDK_BIN_DIR = $(DIST)/sdk/bin
-
-DEPENDENCIES	= .md
-
-MOZ_COMPONENT_LIBS=$(XPCOM_LIBS) $(MOZ_COMPONENT_NSPR_LIBS)
-
-ifdef MACOSX_DEPLOYMENT_TARGET
-export MACOSX_DEPLOYMENT_TARGET
-endif # MACOSX_DEPLOYMENT_TARGET
-
-ifdef MOZ_USING_CCACHE
-ifdef CLANG_CXX
-export CCACHE_CPP2=1
-endif
-endif
-
-# Set link flags according to whether we want a console.
-ifdef MOZ_WINCONSOLE
-ifeq ($(MOZ_WINCONSOLE),1)
-ifeq ($(OS_ARCH),OS2)
-BIN_FLAGS	+= -Zlinker -PM:VIO
-endif
-ifeq ($(OS_ARCH),WINNT)
-ifdef GNU_CC
-WIN32_EXE_LDFLAGS	+= -mconsole
-else
-WIN32_EXE_LDFLAGS	+= -SUBSYSTEM:CONSOLE
-endif
-endif
-else # MOZ_WINCONSOLE
-ifeq ($(OS_ARCH),OS2)
-BIN_FLAGS	+= -Zlinker -PM:PM
-endif
-ifeq ($(OS_ARCH),WINNT)
-ifdef GNU_CC
-WIN32_EXE_LDFLAGS	+= -mwindows
-else
-WIN32_EXE_LDFLAGS	+= -SUBSYSTEM:WINDOWS
-endif
-endif
-endif
-endif
-
-ifdef _MSC_VER
-ifeq ($(CPU_ARCH),x86_64)
-# set stack to 2MB on x64 build.  See bug 582910
-WIN32_EXE_LDFLAGS	+= -STACK:2097152
-endif
-endif
-
-# If we're building a component on MSVC, we don't want to generate an
-# import lib, because that import lib will collide with the name of a
-# static version of the same library.
-ifeq ($(GNU_LD)$(OS_ARCH),WINNT)
-ifdef IS_COMPONENT
-LDFLAGS += -IMPLIB:fake.lib
-DELETE_AFTER_LINK = fake.lib fake.exp
-endif
-endif
-
-#
-# Include any personal overrides the user might think are needed.
-#
--include $(topsrcdir)/$(MOZ_BUILD_APP)/app-config.mk
--include $(MY_CONFIG)
-
-######################################################################
-
-GARBAGE		+= $(DEPENDENCIES) core $(wildcard core.[0-9]*) $(wildcard *.err) $(wildcard *.pure) $(wildcard *_pure_*.o) Templates.DB
-
-ifeq ($(OS_ARCH),Darwin)
-ifndef NSDISTMODE
-NSDISTMODE=absolute_symlink
-endif
-PWD := $(CURDIR)
-endif
-
-NSINSTALL_PY := $(PYTHON) $(abspath $(topsrcdir)/config/nsinstall.py)
-# For Pymake, wherever we use nsinstall.py we're also going to try to make it
-# a native command where possible. Since native commands can't be used outside
-# of single-line commands, we continue to provide INSTALL for general use.
-# Single-line commands should be switched over to install_cmd.
-NSINSTALL_NATIVECMD := %nsinstall nsinstall
-
-ifdef NSINSTALL_BIN
-NSINSTALL = $(NSINSTALL_BIN)
-else
-ifeq (OS2,$(CROSS_COMPILE)$(OS_ARCH))
-NSINSTALL = $(MOZ_TOOLS_DIR)/nsinstall
-else
-ifeq ($(HOST_OS_ARCH),WINNT)
-NSINSTALL = $(NSINSTALL_PY)
-else
-NSINSTALL = $(CONFIG_TOOLS)/nsinstall$(HOST_BIN_SUFFIX)
-endif # WINNT
-endif # OS2
-endif # NSINSTALL_BIN
-
-
-ifeq (,$(CROSS_COMPILE)$(filter-out WINNT OS2, $(OS_ARCH)))
-INSTALL = $(NSINSTALL) -t
-ifdef .PYMAKE
-install_cmd = $(NSINSTALL_NATIVECMD) -t $(1)
-endif # .PYMAKE
-
-else
-
-# This isn't laid out as conditional directives so that NSDISTMODE can be
-# target-specific.
-INSTALL         = $(if $(filter copy, $(NSDISTMODE)), $(NSINSTALL) -t, $(if $(filter absolute_symlink, $(NSDISTMODE)), $(NSINSTALL) -L $(PWD), $(NSINSTALL) -R))
-
-endif # WINNT/OS2
-
-# The default for install_cmd is simply INSTALL
-install_cmd ?= $(INSTALL) $(1)
-
-# Use nsinstall in copy mode to install files on the system
-SYSINSTALL	= $(NSINSTALL) -t
-# This isn't necessarily true, just here
-sysinstall_cmd = install_cmd
-
-#
-# Localization build automation
-#
-
-# Because you might wish to "make locales AB_CD=ab-CD", we don't hardcode
-# MOZ_UI_LOCALE directly, but use an intermediate variable that can be
-# overridden by the command line. (Besides, AB_CD is prettier).
-AB_CD = $(MOZ_UI_LOCALE)
-
-ifndef L10NBASEDIR
-  L10NBASEDIR = $(error L10NBASEDIR not defined by configure)
-else
-  IS_LANGUAGE_REPACK = 1
-endif
-
-EXPAND_LOCALE_SRCDIR = $(if $(filter en-US,$(AB_CD)),$(topsrcdir)/$(1)/en-US,$(or $(realpath $(L10NBASEDIR)),$(abspath $(L10NBASEDIR)))/$(AB_CD)/$(subst /locales,,$(1)))
-
-ifdef relativesrcdir
-LOCALE_SRCDIR ?= $(call EXPAND_LOCALE_SRCDIR,$(relativesrcdir))
-endif
-
-ifdef relativesrcdir
-MAKE_JARS_FLAGS += --relativesrcdir=$(relativesrcdir)
-ifneq (en-US,$(AB_CD))
-ifdef LOCALE_MERGEDIR
-MAKE_JARS_FLAGS += --locale-mergedir=$(LOCALE_MERGEDIR)
-endif
-ifdef IS_LANGUAGE_REPACK
-MAKE_JARS_FLAGS += --l10n-base=$(L10NBASEDIR)/$(AB_CD)
-endif
-else
-MAKE_JARS_FLAGS += -c $(LOCALE_SRCDIR)
-endif # en-US
-else
-MAKE_JARS_FLAGS += -c $(LOCALE_SRCDIR)
-endif # ! relativesrcdir
-
-ifdef LOCALE_MERGEDIR
-MERGE_FILE = $(firstword \
-  $(wildcard $(LOCALE_MERGEDIR)/$(subst /locales,,$(relativesrcdir))/$(1)) \
-  $(wildcard $(LOCALE_SRCDIR)/$(1)) \
-  $(srcdir)/en-US/$(1) )
-else
-MERGE_FILE = $(LOCALE_SRCDIR)/$(1)
-endif
-MERGE_FILES = $(foreach f,$(1),$(call MERGE_FILE,$(f)))
-
-ifeq (OS2,$(OS_ARCH))
-RUN_TEST_PROGRAM = $(topsrcdir)/build/os2/test_os2.cmd '$(LIBXUL_DIST)'
-else
-ifneq (WINNT,$(OS_ARCH))
-RUN_TEST_PROGRAM = $(LIBXUL_DIST)/bin/run-mozilla.sh
-endif # ! WINNT
-endif # ! OS2
-
-#
-# Java macros
-#
-
-# Make sure any compiled classes work with at least JVM 1.4
-JAVAC_FLAGS += -source 1.4
-
-ifdef MOZ_DEBUG
-JAVAC_FLAGS += -g
-endif
-
-CREATE_PRECOMPLETE_CMD = $(PYTHON) $(abspath $(topsrcdir)/config/createprecomplete.py)
-
-# MDDEPDIR is the subdirectory where dependency files are stored
-MDDEPDIR := .deps
-
-EXPAND_LIBS_EXEC = $(PYTHON) $(topsrcdir)/config/expandlibs_exec.py $(if $@,--depend $(MDDEPDIR)/$@.pp --target $@)
-EXPAND_LIBS_GEN = $(PYTHON) $(topsrcdir)/config/expandlibs_gen.py $(if $@,--depend $(MDDEPDIR)/$@.pp)
-EXPAND_AR = $(EXPAND_LIBS_EXEC) --extract -- $(AR)
-EXPAND_CC = $(EXPAND_LIBS_EXEC) --uselist -- $(CC)
-EXPAND_CCC = $(EXPAND_LIBS_EXEC) --uselist -- $(CCC)
-EXPAND_LD = $(EXPAND_LIBS_EXEC) --uselist -- $(LD)
-EXPAND_MKSHLIB_ARGS = --uselist
-ifdef SYMBOL_ORDER
-EXPAND_MKSHLIB_ARGS += --symbol-order $(SYMBOL_ORDER)
-endif
-EXPAND_MKSHLIB = $(EXPAND_LIBS_EXEC) $(EXPAND_MKSHLIB_ARGS) -- $(MKSHLIB)
-
-ifneq (,$(MOZ_LIBSTDCXX_TARGET_VERSION)$(MOZ_LIBSTDCXX_HOST_VERSION))
-ifneq ($(OS_ARCH),Darwin)
-CHECK_STDCXX = objdump -p $(1) | grep -e 'GLIBCXX_3\.4\.\(9\|[1-9][0-9]\)' > /dev/null && echo 'TEST-UNEXPECTED-FAIL | | We do not want these libstdc++ symbols to be used:' && objdump -T $(1) | grep -e 'GLIBCXX_3\.4\.\(9\|[1-9][0-9]\)' && exit 1 || exit 0
-endif
-
-ifdef MOZ_LIBSTDCXX_TARGET_VERSION
-EXTRA_LIBS += $(call EXPAND_LIBNAME_PATH,stdc++compat,$(DEPTH)/build/unix/stdc++compat)
-endif
-ifdef MOZ_LIBSTDCXX_HOST_VERSION
-HOST_EXTRA_LIBS += $(call EXPAND_LIBNAME_PATH,host_stdc++compat,$(DEPTH)/build/unix/stdc++compat)
-endif
-endif
-
-# autoconf.mk sets OBJ_SUFFIX to an error to avoid use before including
-# this file
-OBJ_SUFFIX := $(_OBJ_SUFFIX)
-
-# PGO builds with GCC build objects with instrumentation in a first pass,
-# then objects optimized, without instrumentation, in a second pass. If
-# we overwrite the ojects from the first pass with those from the second,
-# we end up not getting instrumentation data for better optimization on
-# incremental builds. As a consequence, we use a different object suffix
-# for the first pass.
-ifndef NO_PROFILE_GUIDED_OPTIMIZE
-ifdef MOZ_PROFILE_GENERATE
-ifdef GNU_CC
-OBJ_SUFFIX := i_o
-endif
-endif
-endif
-
-# EXPAND_LIBNAME - $(call EXPAND_LIBNAME,foo)
-# expands to $(LIB_PREFIX)foo.$(LIB_SUFFIX) or -lfoo, depending on linker
-# arguments syntax. Should only be used for system libraries
-
-# EXPAND_LIBNAME_PATH - $(call EXPAND_LIBNAME_PATH,foo,dir)
-# expands to dir/$(LIB_PREFIX)foo.$(LIB_SUFFIX)
-
-# EXPAND_MOZLIBNAME - $(call EXPAND_MOZLIBNAME,foo)
-# expands to $(DIST)/lib/$(LIB_PREFIX)foo.$(LIB_SUFFIX)
-
-ifdef GNU_CC
-EXPAND_LIBNAME = $(addprefix -l,$(1))
-else
-EXPAND_LIBNAME = $(foreach lib,$(1),$(LIB_PREFIX)$(lib).$(LIB_SUFFIX))
-endif
-EXPAND_LIBNAME_PATH = $(foreach lib,$(1),$(2)/$(LIB_PREFIX)$(lib).$(LIB_SUFFIX))
-EXPAND_MOZLIBNAME = $(foreach lib,$(1),$(DIST)/lib/$(LIB_PREFIX)$(lib).$(LIB_SUFFIX))
-
-PLY_INCLUDE = -I$(topsrcdir)/other-licenses/ply
-
-export CL_INCLUDES_PREFIX
-# Make sure that the build system can handle non-ASCII characters
-# in environment variables to prevent it from breking silently on
-# non-English systems.
-export NONASCII
-
-ifdef MOZ_GTK2_CFLAGS
-MOZ_GTK2_CFLAGS := -I$(topsrcdir)/widget/gtk/compat $(MOZ_GTK2_CFLAGS)
-endif
-
-DEFINES += -DNO_NSPR_10_SUPPORT
-
-ifdef IS_GYP_DIR
-LOCAL_INCLUDES += \
-  -I$(topsrcdir)/ipc/chromium/src \
-  -I$(topsrcdir)/ipc/glue \
-  -I$(DEPTH)/ipc/ipdl/_ipdlheaders \
-  $(NULL)
-
-ifeq (WINNT,$(OS_TARGET))
-# These get set via VC project file settings for normal GYP builds.
-DEFINES += -DUNICODE -D_UNICODE
-LOCAL_INCLUDES += -I'$(MOZ_DIRECTX_SDK_PATH)/include'
-endif
-
-STL_FLAGS=
-# Skip most Mozilla-specific include locations.
-INCLUDES = -I. $(LOCAL_INCLUDES) -I$(DEPTH)/dist/include
-endif
deleted file mode 100644
--- a/js/src/config/emptyvars.mk.in
+++ /dev/null
@@ -1,1 +0,0 @@
-@ALLEMPTYSUBSTS@
deleted file mode 100644
--- a/js/src/config/expandlibs.py
+++ /dev/null
@@ -1,145 +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/.
-
-'''Expandlibs is a system that allows to replace some libraries with a
-descriptor file containing some linking information about them.
-
-The descriptor file format is as follows:
----8<-----
-OBJS = a.o b.o ...
-LIBS = libfoo.a libbar.a ...
---->8-----
-
-(In the example above, OBJ_SUFFIX is o and LIB_SUFFIX is a).
-
-Expandlibs also canonicalizes how to pass libraries to the linker, such
-that only the ${LIB_PREFIX}${ROOT}.${LIB_SUFFIX} form needs to be used:
-given a list of files, expandlibs will replace items with the form
-${LIB_PREFIX}${ROOT}.${LIB_SUFFIX} following these rules:
-
-- If a ${DLL_PREFIX}${ROOT}.${DLL_SUFFIX} or
-  ${DLL_PREFIX}${ROOT}.${IMPORT_LIB_SUFFIX} file exists, use that instead
-- If the ${LIB_PREFIX}${ROOT}.${LIB_SUFFIX} file exists, use it
-- If a ${LIB_PREFIX}${ROOT}.${LIB_SUFFIX}.${LIB_DESC_SUFFIX} file exists,
-  replace ${LIB_PREFIX}${ROOT}.${LIB_SUFFIX} with the OBJS and LIBS the
-  descriptor contains. And for each of these LIBS, also apply the same
-  rules.
-'''
-from __future__ import with_statement
-import sys, os, errno
-import expandlibs_config as conf
-
-def ensureParentDir(file):
-    '''Ensures the directory parent to the given file exists'''
-    dir = os.path.dirname(file)
-    if dir and not os.path.exists(dir):
-        try:
-            os.makedirs(dir)
-        except OSError, error:
-            if error.errno != errno.EEXIST:
-                raise
-
-def relativize(path):
-    '''Returns a path relative to the current working directory, if it is
-    shorter than the given path'''
-    def splitpath(path):
-        dir, file = os.path.split(path)
-        if os.path.splitdrive(dir)[1] == os.sep:
-            return [file]
-        return splitpath(dir) + [file]
-
-    if not os.path.exists(path):
-        return path
-    curdir = splitpath(os.path.abspath(os.curdir))
-    abspath = splitpath(os.path.abspath(path))
-    while curdir and abspath and curdir[0] == abspath[0]:
-        del curdir[0]
-        del abspath[0]
-    if not curdir and not abspath:
-        return '.'
-    relpath = os.path.join(*[os.pardir for i in curdir] + abspath)
-    if len(path) > len(relpath):
-        return relpath
-    return path
-
-def isObject(path):
-    '''Returns whether the given path points to an object file, that is,
-    ends with OBJ_SUFFIX or .i_o'''
-    return os.path.splitext(path)[1] in [conf.OBJ_SUFFIX, '.i_o']
-
-def isDynamicLib(path):
-    '''Returns whether the given path points to a dynamic library, that is,
-    ends with DLL_SUFFIX.'''
-    # On mac, the xul library is named XUL, instead of libxul.dylib. Assume any
-    # file by that name is a dynamic library.
-    return os.path.splitext(path)[1] == conf.DLL_SUFFIX or os.path.basename(path) == 'XUL'
-
-class LibDescriptor(dict):
-    KEYS = ['OBJS', 'LIBS']
-
-    def __init__(self, content=None):
-        '''Creates an instance of a lib descriptor, initialized with contents
-        from a list of strings when given. This is intended for use with
-        file.readlines()'''
-        if isinstance(content, list) and all([isinstance(item, str) for item in content]):
-            pass
-        elif content is not None:
-            raise TypeError("LibDescriptor() arg 1 must be None or a list of strings")
-        super(LibDescriptor, self).__init__()
-        for key in self.KEYS:
-            self[key] = []
-        if not content:
-            return
-        for key, value in [(s.strip() for s in item.split('=', 2)) for item in content if item.find('=') >= 0]:
-            if key in self.KEYS:
-                self[key] = value.split()
-
-    def __str__(self):
-        '''Serializes the lib descriptor'''
-        return '\n'.join('%s = %s' % (k, ' '.join(self[k])) for k in self.KEYS if len(self[k]))
-
-class ExpandArgs(list):
-    def __init__(self, args):
-        '''Creates a clone of the |args| list and performs file expansion on
-        each item it contains'''
-        super(ExpandArgs, self).__init__()
-        for arg in args:
-            self += self._expand(arg)
-
-    def _expand(self, arg):
-        '''Internal function doing the actual work'''
-        (root, ext) = os.path.splitext(arg)
-        if ext != conf.LIB_SUFFIX or not os.path.basename(root).startswith(conf.LIB_PREFIX):
-            return [relativize(arg)]
-        if len(conf.IMPORT_LIB_SUFFIX):
-            dll = root + conf.IMPORT_LIB_SUFFIX
-        else:
-            dll = root.replace(conf.LIB_PREFIX, conf.DLL_PREFIX, 1) + conf.DLL_SUFFIX
-        if os.path.exists(dll):
-            return [relativize(dll)]
-        if os.path.exists(arg):
-            return [relativize(arg)]
-        return self._expand_desc(arg)
-
-    def _expand_desc(self, arg):
-        '''Internal function taking care of lib descriptor expansion only'''
-        if os.path.exists(arg + conf.LIBS_DESC_SUFFIX):
-            with open(arg + conf.LIBS_DESC_SUFFIX, 'r') as f:
-                desc = LibDescriptor(f.readlines())
-            objs = [relativize(o) for o in desc['OBJS']]
-            for lib in desc['LIBS']:
-                objs += self._expand(lib)
-            return objs
-        return [arg]
-
-class ExpandLibsDeps(ExpandArgs):
-    '''Same as ExpandArgs, but also adds the library descriptor to the list'''
-    def _expand_desc(self, arg):
-        objs = super(ExpandLibsDeps, self)._expand_desc(arg)
-        if os.path.exists(arg + conf.LIBS_DESC_SUFFIX):
-            objs += [relativize(arg + conf.LIBS_DESC_SUFFIX)]
-        return objs
-
-if __name__ == '__main__':
-    print " ".join(ExpandArgs(sys.argv[1:]))
deleted file mode 100644
--- a/js/src/config/expandlibs_config.py
+++ /dev/null
@@ -1,27 +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/.
-
-from buildconfig import substs
-
-def normalize_suffix(suffix):
-    '''Returns a normalized suffix, i.e. ensures it starts with a dot and
-    doesn't starts or ends with whitespace characters'''
-    value = suffix.strip()
-    if len(value) and not value.startswith('.'):
-        value = '.' + value
-    return value
-
-# Variables from the build system
-AR = substs['AR']
-AR_EXTRACT = substs['AR_EXTRACT'].replace('$(AR)', AR)
-DLL_PREFIX = substs['DLL_PREFIX']
-LIB_PREFIX = substs['LIB_PREFIX']
-OBJ_SUFFIX = normalize_suffix(substs['OBJ_SUFFIX'])
-LIB_SUFFIX = normalize_suffix(substs['LIB_SUFFIX'])
-DLL_SUFFIX = normalize_suffix(substs['DLL_SUFFIX'])
-IMPORT_LIB_SUFFIX = normalize_suffix(substs['IMPORT_LIB_SUFFIX'])
-LIBS_DESC_SUFFIX = normalize_suffix(substs['LIBS_DESC_SUFFIX'])
-EXPAND_LIBS_LIST_STYLE = substs['EXPAND_LIBS_LIST_STYLE']
-EXPAND_LIBS_ORDER_STYLE = substs['EXPAND_LIBS_ORDER_STYLE']
-LD_PRINT_ICF_SECTIONS = substs['LD_PRINT_ICF_SECTIONS']
deleted file mode 100644
--- a/js/src/config/expandlibs_exec.py
+++ /dev/null
@@ -1,361 +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/.
-
-'''expandlibs-exec.py applies expandlibs rules, and some more (see below) to
-a given command line, and executes that command line with the expanded
-arguments.
-
-With the --extract argument (useful for e.g. $(AR)), it extracts object files
-from static libraries (or use those listed in library descriptors directly).
-
-With the --uselist argument (useful for e.g. $(CC)), it replaces all object
-files with a list file. This can be used to avoid limitations in the length
-of a command line. The kind of list file format used depends on the
-EXPAND_LIBS_LIST_STYLE variable: 'list' for MSVC style lists (@file.list)
-or 'linkerscript' for GNU ld linker scripts.
-See https://bugzilla.mozilla.org/show_bug.cgi?id=584474#c59 for more details.
-
-With the --symbol-order argument, followed by a file name, it will add the
-relevant linker options to change the order in which the linker puts the
-symbols appear in the resulting binary. Only works for ELF targets.
-'''
-from __future__ import with_statement
-import sys
-import os
-from expandlibs import (
-    ExpandArgs,
-    relativize,
-    isDynamicLib,
-    isObject,
-    ensureParentDir,
-    ExpandLibsDeps,
-)
-import expandlibs_config as conf
-from optparse import OptionParser
-import subprocess
-import tempfile
-import shutil
-import subprocess
-import re
-from mozbuild.makeutil import Makefile
-
-# The are the insert points for a GNU ld linker script, assuming a more
-# or less "standard" default linker script. This is not a dict because
-# order is important.
-SECTION_INSERT_BEFORE = [
-  ('.text', '.fini'),
-  ('.rodata', '.rodata1'),
-  ('.data.rel.ro', '.dynamic'),
-  ('.data', '.data1'),
-]
-
-class ExpandArgsMore(ExpandArgs):
-    ''' Meant to be used as 'with ExpandArgsMore(args) as ...: '''
-    def __enter__(self):
-        self.tmp = []
-        return self
-        
-    def __exit__(self, type, value, tb):
-        '''Automatically remove temporary files'''
-        for tmp in self.tmp:
-            if os.path.isdir(tmp):
-                shutil.rmtree(tmp, True)
-            else:
-                os.remove(tmp)
-
-    def extract(self):
-        self[0:] = self._extract(self)
-
-    def _extract(self, args):
-        '''When a static library name is found, either extract its contents
-        in a temporary directory or use the information found in the
-        corresponding lib descriptor.
-        '''
-        ar_extract = conf.AR_EXTRACT.split()
-        newlist = []
-        for arg in args:
-            if os.path.splitext(arg)[1] == conf.LIB_SUFFIX:
-                if os.path.exists(arg + conf.LIBS_DESC_SUFFIX):
-                    newlist += self._extract(self._expand_desc(arg))
-                    continue
-                elif os.path.exists(arg) and (len(ar_extract) or conf.AR == 'lib'):
-                    tmp = tempfile.mkdtemp(dir=os.curdir)
-                    self.tmp.append(tmp)
-                    if conf.AR == 'lib':
-                        out = subprocess.check_output([conf.AR, '-NOLOGO', '-LIST', arg])
-                        files = out.splitlines()
-                        # If lib -list returns a list full of dlls, it's an
-                        # import lib.
-                        if all(isDynamicLib(f) for f in files):
-                            newlist += [arg]
-                            continue
-                        for f in files:
-                            subprocess.call([conf.AR, '-NOLOGO', '-EXTRACT:%s' % f, os.path.abspath(arg)], cwd=tmp)
-                    else:
-                        subprocess.call(ar_extract + [os.path.abspath(arg)], cwd=tmp)
-                    objs = []
-                    for root, dirs, files in os.walk(tmp):
-                        objs += [relativize(os.path.join(root, f)) for f in files if isObject(f)]
-                    newlist += sorted(objs)
-                    continue
-            newlist += [arg]
-        return newlist
-
-    def makelist(self):
-        '''Replaces object file names with a temporary list file, using a
-        list format depending on the EXPAND_LIBS_LIST_STYLE variable
-        '''
-        objs = [o for o in self if isObject(o)]
-        if not len(objs): return
-        fd, tmp = tempfile.mkstemp(suffix=".list",dir=os.curdir)
-        if conf.EXPAND_LIBS_LIST_STYLE == "linkerscript":
-            content = ['INPUT("%s")\n' % obj for obj in objs]
-            ref = tmp
-        elif conf.EXPAND_LIBS_LIST_STYLE == "filelist":
-            content = ["%s\n" % obj for obj in objs]
-            ref = "-Wl,-filelist," + tmp
-        elif conf.EXPAND_LIBS_LIST_STYLE == "list":
-            content = ["%s\n" % obj for obj in objs]
-            ref = "@" + tmp
-        else:
-            os.close(fd)
-            os.remove(tmp)
-            return
-        self.tmp.append(tmp)
-        f = os.fdopen(fd, "w")
-        f.writelines(content)
-        f.close()
-        idx = self.index(objs[0])
-        newlist = self[0:idx] + [ref] + [item for item in self[idx:] if item not in objs]
-        self[0:] = newlist
-
-    def _getFoldedSections(self):
-        '''Returns a dict about folded sections.
-        When section A and B are folded into section C, the dict contains:
-        { 'A': 'C',
-          'B': 'C',
-          'C': ['A', 'B'] }'''
-        if not conf.LD_PRINT_ICF_SECTIONS:
-            return {}
-
-        proc = subprocess.Popen(self + [conf.LD_PRINT_ICF_SECTIONS], stdout = subprocess.PIPE, stderr = subprocess.PIPE)
-        (stdout, stderr) = proc.communicate()
-        result = {}
-        # gold's --print-icf-sections output looks like the following:
-        # ld: ICF folding section '.section' in file 'file.o'into '.section' in file 'file.o'
-        # In terms of words, chances are this will change in the future,
-        # especially considering "into" is misplaced. Splitting on quotes
-        # seems safer.
-        for l in stderr.split('\n'):
-            quoted = l.split("'")
-            if len(quoted) > 5 and quoted[1] != quoted[5]:
-                result[quoted[1]] = [quoted[5]]
-                if quoted[5] in result:
-                    result[quoted[5]].append(quoted[1])
-                else:
-                    result[quoted[5]] = [quoted[1]]
-        return result
-
-    def _getOrderedSections(self, ordered_symbols):
-        '''Given an ordered list of symbols, returns the corresponding list
-        of sections following the order.'''
-        if not conf.EXPAND_LIBS_ORDER_STYLE in ['linkerscript', 'section-ordering-file']:
-            raise Exception('EXPAND_LIBS_ORDER_STYLE "%s" is not supported' % conf.EXPAND_LIBS_ORDER_STYLE)
-        finder = SectionFinder([arg for arg in self if isObject(arg) or os.path.splitext(arg)[1] == conf.LIB_SUFFIX])
-        folded = self._getFoldedSections()
-        sections = set()
-        ordered_sections = []
-        for symbol in ordered_symbols:
-            symbol_sections = finder.getSections(symbol)
-            all_symbol_sections = []
-            for section in symbol_sections:
-                if section in folded:
-                    if isinstance(folded[section], str):
-                        section = folded[section]
-                    all_symbol_sections.append(section)
-                    all_symbol_sections.extend(folded[section])
-                else:
-                    all_symbol_sections.append(section)
-            for section in all_symbol_sections:
-                if not section in sections:
-                    ordered_sections.append(section)
-                    sections.add(section)
-        return ordered_sections
-
-    def orderSymbols(self, order):
-        '''Given a file containing a list of symbols, adds the appropriate
-        argument to make the linker put the symbols in that order.'''
-        with open(order) as file:
-            sections = self._getOrderedSections([l.strip() for l in file.readlines() if l.strip()])
-        split_sections = {}
-        linked_sections = [s[0] for s in SECTION_INSERT_BEFORE]
-        for s in sections:
-            for linked_section in linked_sections:
-                if s.startswith(linked_section):
-                    if linked_section in split_sections:
-                        split_sections[linked_section].append(s)
-                    else:
-                        split_sections[linked_section] = [s]
-                    break
-        content = []
-        # Order is important
-        linked_sections = [s for s in linked_sections if s in split_sections]
-
-        if conf.EXPAND_LIBS_ORDER_STYLE == 'section-ordering-file':
-            option = '-Wl,--section-ordering-file,%s'
-            content = sections
-            for linked_section in linked_sections:
-                content.extend(split_sections[linked_section])
-                content.append('%s.*' % linked_section)
-                content.append(linked_section)
-
-        elif conf.EXPAND_LIBS_ORDER_STYLE == 'linkerscript':
-            option = '-Wl,-T,%s'
-            section_insert_before = dict(SECTION_INSERT_BEFORE)
-            for linked_section in linked_sections:
-                content.append('SECTIONS {')
-                content.append('  %s : {' % linked_section)
-                content.extend('    *(%s)' % s for s in split_sections[linked_section])
-                content.append('  }')
-                content.append('}')
-                content.append('INSERT BEFORE %s' % section_insert_before[linked_section])
-        else:
-            raise Exception('EXPAND_LIBS_ORDER_STYLE "%s" is not supported' % conf.EXPAND_LIBS_ORDER_STYLE)
-
-        fd, tmp = tempfile.mkstemp(dir=os.curdir)
-        f = os.fdopen(fd, "w")
-        f.write('\n'.join(content)+'\n')
-        f.close()
-        self.tmp.append(tmp)
-        self.append(option % tmp)
-
-class SectionFinder(object):
-    '''Instances of this class allow to map symbol names to sections in
-    object files.'''
-
-    def __init__(self, objs):
-        '''Creates an instance, given a list of object files.'''
-        if not conf.EXPAND_LIBS_ORDER_STYLE in ['linkerscript', 'section-ordering-file']:
-            raise Exception('EXPAND_LIBS_ORDER_STYLE "%s" is not supported' % conf.EXPAND_LIBS_ORDER_STYLE)
-        self.mapping = {}
-        for obj in objs:
-            if not isObject(obj) and os.path.splitext(obj)[1] != conf.LIB_SUFFIX:
-                raise Exception('%s is not an object nor a static library' % obj)
-            for symbol, section in SectionFinder._getSymbols(obj):
-                sym = SectionFinder._normalize(symbol)
-                if sym in self.mapping:
-                    if not section in self.mapping[sym]:
-                        self.mapping[sym].append(section)
-                else:
-                    self.mapping[sym] = [section]
-
-    def getSections(self, symbol):
-        '''Given a symbol, returns a list of sections containing it or the
-        corresponding thunks. When the given symbol is a thunk, returns the
-        list of sections containing its corresponding normal symbol and the
-        other thunks for that symbol.'''
-        sym = SectionFinder._normalize(symbol)
-        if sym in self.mapping:
-            return self.mapping[sym]
-        return []
-
-    @staticmethod
-    def _normalize(symbol):
-        '''For normal symbols, return the given symbol. For thunks, return
-        the corresponding normal symbol.'''
-        if re.match('^_ZThn[0-9]+_', symbol):
-            return re.sub('^_ZThn[0-9]+_', '_Z', symbol)
-        return symbol
-
-    @staticmethod
-    def _getSymbols(obj):
-        '''Returns a list of (symbol, section) contained in the given object
-        file.'''
-        proc = subprocess.Popen(['objdump', '-t', obj], stdout = subprocess.PIPE, stderr = subprocess.PIPE)
-        (stdout, stderr) = proc.communicate()
-        syms = []
-        for line in stdout.splitlines():
-            # Each line has the following format:
-            # <addr> [lgu!][w ][C ][W ][Ii ][dD ][FfO ] <section>\t<length> <symbol>
-            tmp = line.split(' ',1)
-            # This gives us ["<addr>", "[lgu!][w ][C ][W ][Ii ][dD ][FfO ] <section>\t<length> <symbol>"]
-            # We only need to consider cases where "<section>\t<length> <symbol>" is present,
-            # and where the [FfO] flag is either F (function) or O (object).
-            if len(tmp) > 1 and len(tmp[1]) > 6 and tmp[1][6] in ['O', 'F']:
-                tmp = tmp[1][8:].split()
-                # That gives us ["<section>","<length>", "<symbol>"]
-                syms.append((tmp[-1], tmp[0]))
-        return syms
-
-def print_command(out, args):
-    print >>out, "Executing: " + " ".join(args)
-    for tmp in [f for f in args.tmp if os.path.isfile(f)]:
-        print >>out, tmp + ":"
-        with open(tmp) as file:
-            print >>out, "".join(["    " + l for l in file.readlines()])
-    out.flush()
-
-def main():
-    parser = OptionParser()
-    parser.add_option("--depend", dest="depend", metavar="FILE",
-        help="generate dependencies for the given execution and store it in the given file")
-    parser.add_option("--target", dest="target", metavar="FILE",
-        help="designate the target for dependencies")
-    parser.add_option("--extract", action="store_true", dest="extract",
-        help="when a library has no descriptor file, extract it first, when possible")
-    parser.add_option("--uselist", action="store_true", dest="uselist",
-        help="use a list file for objects when executing a command")
-    parser.add_option("--verbose", action="store_true", dest="verbose",
-        help="display executed command and temporary files content")
-    parser.add_option("--symbol-order", dest="symbol_order", metavar="FILE",
-        help="use the given list of symbols to order symbols in the resulting binary when using with a linker")
-
-    (options, args) = parser.parse_args()
-
-    if not options.target:
-        options.depend = False
-    if options.depend:
-        deps = ExpandLibsDeps(args)
-        # Filter out common command wrappers
-        while os.path.basename(deps[0]) in ['ccache', 'distcc']:
-            deps.pop(0)
-        # Remove command
-        deps.pop(0)
-    with ExpandArgsMore(args) as args:
-        if options.extract:
-            args.extract()
-        if options.symbol_order:
-            args.orderSymbols(options.symbol_order)
-        if options.uselist:
-            args.makelist()
-
-        if options.verbose:
-            print_command(sys.stderr, args)
-        try:
-            proc = subprocess.Popen(args, stdout = subprocess.PIPE, stderr = subprocess.STDOUT)
-        except Exception, e:
-            print >>sys.stderr, 'error: Launching', args, ':', e
-            raise e
-        (stdout, stderr) = proc.communicate()
-        if proc.returncode and not options.verbose:
-            print_command(sys.stderr, args)
-        sys.stderr.write(stdout)
-        sys.stderr.flush()
-        if proc.returncode:
-            exit(proc.returncode)
-    if not options.depend:
-        return
-    ensureParentDir(options.depend)
-    mk = Makefile()
-    deps = [dep for dep in deps if os.path.isfile(dep) and dep != options.target]
-    no_dynamic_lib = [dep for dep in deps if not isDynamicLib(dep)]
-    mk.create_rule([options.target]).add_dependencies(no_dynamic_lib)
-    if len(deps) != len(no_dynamic_lib):
-        mk.create_rule(['%s_order_only' % options.target]).add_dependencies(dep for dep in deps if isDynamicLib(dep))
-
-    with open(options.depend, 'w') as depfile:
-        mk.dump(depfile, removal_guard=True)
-
-if __name__ == '__main__':
-    main()
deleted file mode 100644
--- a/js/src/config/expandlibs_gen.py
+++ /dev/null
@@ -1,50 +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/.
-
-'''Given a list of object files and library names, prints a library
-descriptor to standard output'''
-
-from __future__ import with_statement
-import sys
-import os
-import expandlibs_config as conf
-from expandlibs import LibDescriptor, isObject, ensureParentDir, ExpandLibsDeps
-from optparse import OptionParser
-
-def generate(args):
-    desc = LibDescriptor()
-    for arg in args:
-        if isObject(arg):
-            if os.path.exists(arg):
-                desc['OBJS'].append(os.path.abspath(arg))
-            else:
-                raise Exception("File not found: %s" % arg)
-        elif os.path.splitext(arg)[1] == conf.LIB_SUFFIX:
-            if os.path.exists(arg) or os.path.exists(arg + conf.LIBS_DESC_SUFFIX):
-                desc['LIBS'].append(os.path.abspath(arg))
-            else:
-                raise Exception("File not found: %s" % arg)
-    return desc
-
-if __name__ == '__main__':
-    parser = OptionParser()
-    parser.add_option("--depend", dest="depend", metavar="FILE",
-        help="generate dependencies for the given execution and store it in the given file")
-    parser.add_option("-o", dest="output", metavar="FILE",
-        help="send output to the given file")
-
-    (options, args) = parser.parse_args()
-    if not options.output:
-        raise Exception("Missing option: -o")
-
-    ensureParentDir(options.output)
-    with open(options.output, 'w') as outfile:
-        print >>outfile, generate(args)
-    if options.depend:
-        ensureParentDir(options.depend)
-        with open(options.depend, 'w') as depfile:
-            deps = ExpandLibsDeps(args)
-            depfile.write("%s : %s\n" % (options.output, ' '.join(deps)))
-            for dep in deps:
-                depfile.write("%s :\n" % dep)
deleted file mode 100644
--- a/js/src/config/find_OOM_errors.py
+++ /dev/null
@@ -1,352 +0,0 @@
-#!/usr/bin/env python
-# 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/.
-from __future__ import print_function
-
-usage = """%prog: A test for OOM conditions in the shell.
-
-%prog finds segfaults and other errors caused by incorrect handling of
-allocation during OOM (out-of-memory) conditions.
-"""
-
-help = """Check for regressions only. This runs a set of files with a known
-number of OOM errors (specified by REGRESSION_COUNT), and exits with a non-zero
-result if more or less errors are found. See js/src/Makefile.in for invocation.
-"""
-
-
-import hashlib
-import re
-import shlex
-import subprocess
-import sys
-import threading
-import time
-
-from optparse import OptionParser
-
-#####################################################################
-# Utility functions
-#####################################################################
-def run(args, stdin=None):
-  class ThreadWorker(threading.Thread):
-    def __init__(self, pipe):
-      super(ThreadWorker, self).__init__()
-      self.all = ""
-      self.pipe = pipe
-      self.setDaemon(True)
-
-    def run(self):
-      while True:
-        line = self.pipe.readline()
-        if line == '': break
-        else:
-          self.all += line
-
-  try:
-    if type(args) == str:
-      args = shlex.split(args)
-
-    args = [str(a) for a in args] # convert to strs
-
-    stdin_pipe = subprocess.PIPE if stdin else None
-    proc = subprocess.Popen(args, stdin=stdin_pipe, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-    if stdin_pipe:
-      proc.stdin.write(stdin)
-      proc.stdin.close()
-
-    stdout_worker = ThreadWorker(proc.stdout)
-    stderr_worker = ThreadWorker(proc.stderr)
-    stdout_worker.start()
-    stderr_worker.start()
-
-    proc.wait()
-    stdout_worker.join()
-    stderr_worker.join()
-
-  except KeyboardInterrupt as e:
-    sys.exit(-1)
-
-  stdout, stderr = stdout_worker.all, stderr_worker.all
-  result = (stdout, stderr, proc.returncode)
-  return result
-
-def get_js_files():
-  (out, err, exit) = run('find ../jit-test/tests -name "*.js"')
-  if (err, exit) != ("", 0):
-    sys.exit("Wrong directory, run from an objdir")
-  return out.split()
-
-
-
-#####################################################################
-# Blacklisting
-#####################################################################
-def in_blacklist(sig):
-  return sig in blacklist
-
-def add_to_blacklist(sig):
-  blacklist[sig] = blacklist.get(sig, 0)
-  blacklist[sig] += 1
-
-# How often is a particular lines important for this.
-def count_lines():
-  """Keep track of the amount of times individual lines occur, in order to
-     prioritize the errors which occur most frequently."""
-  counts = {}
-  for string,count in blacklist.items():
-    for line in string.split("\n"):
-      counts[line] = counts.get(line, 0) + count
-
-  lines = []
-  for k,v in counts.items():
-    lines.append("{0:6}: {1}".format(v, k))
-
-  lines.sort()
-
-  countlog = file("../OOM_count_log", "w")
-  countlog.write("\n".join(lines))
-  countlog.flush()
-  countlog.close()
-
-
-#####################################################################
-# Output cleaning
-#####################################################################
-def clean_voutput(err):
-  # Skip what we can't reproduce
-  err = re.sub(r"^--\d+-- run: /usr/bin/dsymutil \"shell/js\"$", "", err, flags=re.MULTILINE)
-  err = re.sub(r"^==\d+==", "", err, flags=re.MULTILINE)
-  err = re.sub(r"^\*\*\d+\*\*", "", err, flags=re.MULTILINE)
-  err = re.sub(r"^\s+by 0x[0-9A-Fa-f]+: ", "by: ", err, flags=re.MULTILINE)
-  err = re.sub(r"^\s+at 0x[0-9A-Fa-f]+: ", "at: ", err, flags=re.MULTILINE)
-  err = re.sub(r"(^\s+Address 0x)[0-9A-Fa-f]+( is not stack'd)", r"\1\2", err, flags=re.MULTILINE)
-  err = re.sub(r"(^\s+Invalid write of size )\d+", r"\1x", err, flags=re.MULTILINE)
-  err = re.sub(r"(^\s+Invalid read of size )\d+", r"\1x", err, flags=re.MULTILINE)
-  err = re.sub(r"(^\s+Address 0x)[0-9A-Fa-f]+( is )\d+( bytes inside a block of size )[0-9,]+( free'd)", r"\1\2\3\4", err, flags=re.MULTILINE)
-
-  # Skip the repeating bit due to the segfault
-  lines = []
-  for l in err.split('\n'):
-    if l == " Process terminating with default action of signal 11 (SIGSEGV)":
-      break
-    lines.append(l)
-  err = '\n'.join(lines)
-
-  return err
-
-def remove_failed_allocation_backtraces(err):
-  lines = []
-
-  add = True
-  for l in err.split('\n'):
-
-    # Set start and end conditions for including text
-    if l == " The site of the failed allocation is:":
-      add = False
-    elif l[:2] not in ['by: ', 'at:']:
-      add = True
-
-    if add:
-      lines.append(l)
-
-
-  err = '\n'.join(lines)
-
-  return err
-
-
-def clean_output(err):
-  err = re.sub(r"^js\(\d+,0x[0-9a-f]+\) malloc: \*\*\* error for object 0x[0-9a-f]+: pointer being freed was not allocated\n\*\*\* set a breakppoint in malloc_error_break to debug\n$", "pointer being freed was not allocated", err, flags=re.MULTILINE)
-
-  return err
-
-
-#####################################################################
-# Consts, etc
-#####################################################################
-
-command_template = 'shell/js' \
-                 + ' -m -j -p' \
-                 + ' -e "const platform=\'darwin\'; const libdir=\'../jit-test/lib/\';"' \
-                 + ' -f ../jit-test/lib/prolog.js' \
-                 + ' -f {0}'
-
-
-# Blacklists are things we don't want to see in our logs again (though we do
-# want to count them when they happen). Whitelists we do want to see in our
-# logs again, principally because the information we have isn't enough.
-
-blacklist = {}
-add_to_blacklist(r"('', '', 1)") # 1 means OOM if the shell hasn't launched yet.
-add_to_blacklist(r"('', 'out of memory\n', 1)")
-
-whitelist = set()
-whitelist.add(r"('', 'out of memory\n', -11)") # -11 means OOM
-whitelist.add(r"('', 'out of memory\nout of memory\n', -11)")
-
-
-
-#####################################################################
-# Program
-#####################################################################
-
-# Options
-parser = OptionParser(usage=usage)
-parser.add_option("-r", "--regression", action="store", metavar="REGRESSION_COUNT", help=help,
-                  type="int", dest="regression", default=None)
-                  
-(OPTIONS, args) = parser.parse_args()
-
-
-if OPTIONS.regression != None:
-  # TODO: This should be expanded as we get a better hang of the OOM problems.
-  # For now, we'll just check that the number of OOMs in one short file does not
-  # increase.
-  files = ["../jit-test/tests/arguments/args-createontrace.js"]
-else:
-  files = get_js_files()
-
-  # Use a command-line arg to reduce the set of files
-  if len (args):
-    files = [f for f in files if f.find(args[0]) != -1]
-
-
-if OPTIONS.regression == None:
-  # Don't use a logfile, this is automated for tinderbox.
-  log = file("../OOM_log", "w")
-
-
-num_failures = 0
-for f in files:
-
-  # Run it once to establish boundaries
-  command = (command_template + ' -O').format(f)
-  out, err, exit = run(command)
-  max = re.match(".*OOM max count: (\d+).*", out, flags=re.DOTALL).groups()[0]
-  max = int(max)
-  
-  # OOMs don't recover well for the first 20 allocations or so.
-  # TODO: revisit this.
-  for i in range(20, max): 
-
-    if OPTIONS.regression == None:
-      print("Testing allocation {0}/{1} in {2}".format(i,max,f))
-    else:
-      sys.stdout.write('.') # something short for tinderbox, no space or \n
-
-    command = (command_template + ' -A {0}').format(f, i)
-    out, err, exit = run(command)
-
-    # Success (5 is SM's exit code for controlled errors)
-    if exit == 5 and err.find("out of memory") != -1:
-      continue
-
-    # Failure
-    else:
-
-      if OPTIONS.regression != None:
-        # Just count them
-        num_failures += 1
-        continue
-
-      #########################################################################
-      # The regression tests ends above. The rest of this is for running  the
-      # script manually.
-      #########################################################################
-
-      problem = str((out, err, exit))
-      if in_blacklist(problem) and problem not in whitelist:
-        add_to_blacklist(problem)
-        continue
-
-      add_to_blacklist(problem)
-
-
-      # Get valgrind output for a good stack trace
-      vcommand = "valgrind --dsymutil=yes -q --log-file=OOM_valgrind_log_file " + command
-      run(vcommand)
-      vout = file("OOM_valgrind_log_file").read()
-      vout = clean_voutput(vout)
-      sans_alloc_sites = remove_failed_allocation_backtraces(vout)
-
-      # Don't print duplicate information
-      if in_blacklist(sans_alloc_sites):
-        add_to_blacklist(sans_alloc_sites)
-        continue
-
-      add_to_blacklist(sans_alloc_sites)
-
-      log.write ("\n")
-      log.write ("\n")
-      log.write ("=========================================================================")
-      log.write ("\n")
-      log.write ("An allocation failure at\n\tallocation {0}/{1} in {2}\n\t"
-                 "causes problems (detected using bug 624094)"
-                 .format(i, max, f))
-      log.write ("\n")
-      log.write ("\n")
-
-      log.write ("Command (from obj directory, using patch from bug 624094):\n  " + command)
-      log.write ("\n")
-      log.write ("\n")
-      log.write ("stdout, stderr, exitcode:\n  " + problem)
-      log.write ("\n")
-      log.write ("\n")
-
-      double_free = err.find("pointer being freed was not allocated") != -1
-      oom_detected = err.find("out of memory") != -1
-      multiple_oom_detected = err.find("out of memory\nout of memory") != -1
-      segfault_detected = exit == -11
-
-      log.write ("Diagnosis: ")
-      log.write ("\n")
-      if multiple_oom_detected:
-        log.write ("  - Multiple OOMs reported")
-        log.write ("\n")
-      if segfault_detected:
-        log.write ("  - segfault")
-        log.write ("\n")
-      if not oom_detected:
-        log.write ("  - No OOM checking")
-        log.write ("\n")
-      if double_free:
-        log.write ("  - Double free")
-        log.write ("\n")
-
-      log.write ("\n")
-
-      log.write ("Valgrind info:\n" + vout)
-      log.write ("\n")
-      log.write ("\n")
-      log.flush()
-
-  if OPTIONS.regression == None:
-    count_lines()
-
-print()
-
-# Do the actual regression check
-if OPTIONS.regression != None:
-  expected_num_failures = OPTIONS.regression
-
-  if num_failures != expected_num_failures:
-
-    print("TEST-UNEXPECTED-FAIL |", end='')
-    if num_failures > expected_num_failures:
-      print("More out-of-memory errors were found ({0}) than expected ({1}). "
-            "This probably means an allocation site has been added without a "
-            "NULL-check. If this is unavoidable, you can account for it by "
-            "updating Makefile.in.".format(num_failures, expected_num_failures),
-            end='')
-    else:
-      print("Congratulations, you have removed {0} out-of-memory error(s) "
-            "({1} remain)! Please account for it by updating Makefile.in." 
-            .format(expected_num_failures - num_failures, num_failures),
-            end='')
-    sys.exit(-1)
-  else:
-    print('TEST-PASS | find_OOM_errors | Found the expected number of OOM '
-          'errors ({0})'.format(expected_num_failures))
-
deleted file mode 100644
--- a/js/src/config/gcc_hidden.h
+++ /dev/null
@@ -1,6 +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/. */
-
-/* Begin all files as hidden visibility */
-#pragma GCC visibility push(hidden)
deleted file mode 100644
--- a/js/src/config/make-system-wrappers.pl
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/perl
-#
-# 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/.
-
-$output_dir = shift;
-
-while (<STDIN>) {
-    chomp;
-    if (-e "$output_dir/$_") {
-	next;
-    }
-
-    if (/(.*)\/[^\/*]/) {
-	mkdir "$output_dir/$1";
-    }
-
-    open OUT, ">$output_dir/$_";
-    print OUT "#pragma GCC system_header\n";  # suppress include_next warning
-    print OUT "#pragma GCC visibility push(default)\n";
-    print OUT "#include_next \<$_\>\n";
-    print OUT "#pragma GCC visibility pop\n";
-    close OUT;
-}
-
deleted file mode 100644
--- a/js/src/config/makefiles/autotargets.mk
+++ /dev/null
@@ -1,94 +0,0 @@
-# -*- makefile -*-
-# vim:set ts=8 sw=8 sts=8 noet:
-#
-# 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/.
-#
-
-ifndef INCLUDED_AUTOTARGETS_MK #{
-
-# Conditional does not wrap the entire file so multiple
-# includes will be able to accumulate dependencies.
-
-###########################################################################
-#      AUTO_DEPS - A list of deps/targets drived from other macros.
-###########################################################################
-
-MKDIR ?= mkdir -p
-TOUCH ?= touch
-
-# declare for local use, rules.mk may not have been loaded
-space = $(NULL) $(NULL)
-
-# Deps will be considered intermediate when used as a pre-requisite for
-# wildcard targets.  Inhibit their removal, mkdir -p is a standalone op.
-.PRECIOUS: %/.mkdir.done
-
-#########################
-##---]  FUNCTIONS  [---##
-#########################
-
-# Squeeze can be overzealous, restore root for abspath
-getPathPrefix =$(if $(filter /%,$(1)),/)
-
-# Squeeze '//' from the path, easily created by string functions
-_slashSqueeze =$(foreach val,$(getargv),$(call getPathPrefix,$(val))$(subst $(space),/,$(strip $(subst /,$(space),$(val)))))
-
-# Squeeze extraneous directory slashes from the path
-#  o protect embedded spaces within the path
-#  o replace //+ sequences with /
-slash_strip = \
-  $(strip \
-    $(subst <--[**]-->,$(space),\
-	$(call _slashSqueeze,\
-    $(subst $(space),<--[**]-->,$(1))\
-  )))
-
-# Extract directory path from a dependency file.
-mkdir_stem =$(foreach val,$(getargv),$(subst /.mkdir.done,$(NULL),$(val)))
-
-## Generate timestamp file for threadsafe directory creation
-mkdir_deps =$(foreach dir,$(getargv),$(call slash_strip,$(dir)/.mkdir.done))
-
-#######################
-##---]  TARGETS  [---##
-#######################
-
-%/.mkdir.done: # mkdir -p -p => mkdir -p
-	$(subst $(space)-p,$(null),$(MKDIR)) -p '$(dir $@)'
-# Make the timestamp old enough for not being a problem with symbolic links
-# targets depending on it. Use Jan 3, 1980 to accomodate any timezone where
-# 198001010000 would translate to something older than FAT epoch.
-	@$(TOUCH) -t 198001030000 '$@'
-
-# A handful of makefiles are attempting "mkdir dot".
-# tbpl/valgrind builds are using this target
-# https://bugzilla.mozilla.org/show_bug.cgi?id=837754
-.mkdir.done:
-	@echo 'WARNING: $(MKDIR) -dot- requested by $(MAKE) -C $(CURDIR) $(MAKECMDGOALS)'
-	@$(TOUCH) -t 198001030000 '$@'
-
-INCLUDED_AUTOTARGETS_MK = 1
-endif #}
-
-
-## Accumulate deps and cleanup
-ifneq (,$(GENERATED_DIRS))
-  GENERATED_DIRS := $(strip $(sort $(GENERATED_DIRS)))
-  tmpauto :=$(call mkdir_deps,GENERATED_DIRS)
-  GENERATED_DIRS_DEPS +=$(tmpauto)
-  GARBAGE_DIRS        +=$(GENERATED_DIRS)
-endif
-
-#################################################################
-# One ring/dep to rule them all:
-#   config/rules.mk::all target is available by default
-#   Add $(AUTO_DEPS) as an explicit target dependency when needed.
-#################################################################
-
-AUTO_DEPS +=$(GENERATED_DIRS_DEPS)
-AUTO_DEPS := $(strip $(sort $(AUTO_DEPS)))
-
-# Complain loudly if deps have not loaded so getargv != $(NULL)
-$(call requiredfunction,getargv)
deleted file mode 100644
--- a/js/src/config/makefiles/debugmake.mk
+++ /dev/null
@@ -1,121 +0,0 @@
-# -*- makefile -*-
-# vim:set ts=8 sw=8 sts=8 noet:
-#
-# 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/.
-#
-
-###########################################################################
-## Intent: Helper targets for displaying variables and state information
-###########################################################################
-
-# Support usage outside of config/rules.mk
-ifndef INCLUDED_DEBUGMAKE_MK #{
-
-define shell_quote
-'$(subst ','\'',$(1))'
-endef
-
-echo-variable-%:
-	@echo $(call shell_quote,$($*))
-
-echo-tiers:
-	@echo $(TIERS)
-
-echo-tier-dirs:
-	@$(foreach tier,$(TIERS),echo '$(tier):'; echo '  dirs: $(tier_$(tier)_dirs)'; $(if $(tier_$(tier)_staticdirs),echo '  staticdirs: $(tier_$(tier)_staticdirs)';) )
-
-echo-dirs:
-	@echo $(call shell_quote,$(DIRS))
-
-define print_var
-@printf '%20s = %s\n' $1 $(call shell_quote,$($1))
-
-endef
-
-define print_vars
-$(foreach var,$1,$(call print_var,$(var)))
-endef
-
-showtargs:
-ifneq (,$(filter $(PROGRAM) $(HOST_PROGRAM) $(SIMPLE_PROGRAMS) $(HOST_LIBRARY) $(LIBRARY) $(SHARED_LIBRARY),$(TARGETS)))
-	@echo --------------------------------------------------------------------------------
-	$(call print_vars,\
-		PROGRAM \
-		SIMPLE_PROGRAMS \
-		LIBRARY \
-		SHARED_LIBRARY \
-		SHARED_LIBRARY_LIBS \
-		LIBS \
-		DEF_FILE \
-		IMPORT_LIBRARY \
-		STATIC_LIBS \
-		EXTRA_DSO_LDOPTS \
-		DEPENDENT_LIBS \
-	)
-	@echo --------------------------------------------------------------------------------
-endif
-	$(LOOP_OVER_PARALLEL_DIRS)
-	$(LOOP_OVER_DIRS)
-	$(LOOP_OVER_TOOL_DIRS)
-
-showbuild:
-	$(call print_vars,\
-		MOZ_BUILD_ROOT \
-		MOZ_WIDGET_TOOLKIT \
-		CC \
-		CXX \
-		CCC \
-		CPP \
-		LD \
-		AR \
-		IMPLIB \
-		FILTER \
-		MKSHLIB \
-		MKCSHLIB \
-		RC \
-		MC \
-		CFLAGS \
-		OS_CFLAGS \
-		COMPILE_CFLAGS \
-		CXXFLAGS \
-		OS_CXXFLAGS \
-		COMPILE_CXXFLAGS \
-		COMPILE_CMFLAGS \
-		COMPILE_CMMFLAGS \
-		LDFLAGS \
-		OS_LDFLAGS \
-		DSO_LDOPTS \
-		OS_INCLUDES \
-		OS_LIBS \
-		EXTRA_LIBS \
-		BIN_FLAGS \
-		INCLUDES \
-		DEFINES \
-		ACDEFINES \
-		BIN_SUFFIX \
-		LIB_SUFFIX \
-		DLL_SUFFIX \
-		IMPORT_LIB_SUFFIX \
-		INSTALL \
-		VPATH \
-	)
-
-showhost:
-	$(call print_vars,\
-		HOST_CC \
-		HOST_CXX \
-		HOST_CFLAGS \
-		HOST_LDFLAGS \
-		HOST_LIBS \
-		HOST_EXTRA_LIBS \
-		HOST_EXTRA_DEPS \
-		HOST_PROGRAM \
-		HOST_OBJS \
-		HOST_PROGOBJS \
-		HOST_LIBRARY \
-	)
-
-INCLUDED_DEBUGMAKE_MK = 1
-endif #}
deleted file mode 100644
--- a/js/src/config/makefiles/functions.mk
+++ /dev/null
@@ -1,34 +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/.
-
-#
-# functions.mk
-#
-# Defines functions that are needed by various Makefiles throughout the build
-# system, which are needed before config.mk can be included.
-#
-
-# Define an include-at-most-once flag
-ifdef INCLUDED_FUNCTIONS_MK
-$(error Do not include functions.mk twice!)
-endif
-INCLUDED_FUNCTIONS_MK = 1
-
-core_abspath = $(error core_abspath is unsupported, use $$(abspath) instead)
-core_realpath = $(error core_realpath is unsupported)
-
-core_winabspath = $(error core_winabspath is unsupported)
-
-# Run a named Python build action. The first argument is the name of the build
-# action. The second argument are the arguments to pass to the action (space
-# delimited arguments). e.g.
-#
-#   libs::
-#       $(call py_action,purge_manifests,_build_manifests/purge/foo.manifest)
-ifdef .PYMAKE
-py_action = %mozbuild.action.$(1) main $(2)
-else
-py_action = $(PYTHON) -m mozbuild.action.$(1) $(2)
-endif
deleted file mode 100644
--- a/js/src/config/makefiles/java-build.mk
+++ /dev/null
@@ -1,113 +0,0 @@
-# -*- makefile -*-
-# vim:set ts=8 sw=8 sts=8 noet:
-#
-# 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/.
-
-ifndef INCLUDED_JAVA_BUILD_MK #{
-
-ifdef JAVAFILES #{
-GENERATED_DIRS += classes
-
-export:: classes
-classes: $(call mkdir_deps,classes)
-endif #} JAVAFILES
-
-
-ifdef ANDROID_APK_NAME #{
-android_res_dirs := $(addprefix $(srcdir)/,$(or $(ANDROID_RES_DIRS),res))
-_ANDROID_RES_FLAG := $(addprefix -S ,$(android_res_dirs))
-_ANDROID_ASSETS_FLAG := $(addprefix -A ,$(ANDROID_ASSETS_DIR))
-
-GENERATED_DIRS += classes
-
-classes.dex: $(call mkdir_deps,classes)
-classes.dex: R.java
-classes.dex: $(ANDROID_APK_NAME).ap_
-classes.dex: $(JAVAFILES)
-	$(JAVAC) $(JAVAC_FLAGS) -d classes $(filter %.java,$^)
-	$(DX) --dex --output=$@ classes $(ANDROID_EXTRA_JARS)
-
-# R.java and $(ANDROID_APK_NAME).ap_ are both produced by aapt.  To
-# save an aapt invocation, we produce them both at the same time.
-
-R.java: .aapt.deps
-$(ANDROID_APK_NAME).ap_: .aapt.deps
-
-# This uses the fact that Android resource directories list all
-# resource files one subdirectory below the parent resource directory.
-android_res_files := $(wildcard $(addsuffix /*,$(wildcard $(addsuffix /*,$(android_res_dirs)))))
-
-.aapt.deps: AndroidManifest.xml $(android_res_files) $(wildcard $(ANDROID_ASSETS_DIR))
-	$(AAPT) package -f -M $< -I $(ANDROID_SDK)/android.jar $(_ANDROID_RES_FLAG) $(_ANDROID_ASSETS_FLAG) \
-		-J ${@D} \
-		-F $(ANDROID_APK_NAME).ap_
-	@$(TOUCH) $@
-
-$(ANDROID_APK_NAME)-unsigned-unaligned.apk: $(ANDROID_APK_NAME).ap_ classes.dex
-	cp $< $@
-	$(ZIP) -0 $@ classes.dex
-
-$(ANDROID_APK_NAME)-unaligned.apk: $(ANDROID_APK_NAME)-unsigned-unaligned.apk
-	cp $< $@
-	$(DEBUG_JARSIGNER) $@
-
-$(ANDROID_APK_NAME).apk: $(ANDROID_APK_NAME)-unaligned.apk
-	$(ZIPALIGN) -f -v 4 $< $@
-
-GARBAGE += \
-  R.java \
-  classes.dex  \
-  $(ANDROID_APK_NAME).ap_ \
-  $(ANDROID_APK_NAME)-unsigned-unaligned.apk \
-  $(ANDROID_APK_NAME)-unaligned.apk \
-  $(ANDROID_APK_NAME).apk \
-  $(NULL)
-
-JAVA_CLASSPATH := $(ANDROID_SDK)/android.jar
-ifdef ANDROID_EXTRA_JARS #{
-JAVA_CLASSPATH := $(JAVA_CLASSPATH):$(subst $(NULL) ,:,$(strip $(ANDROID_EXTRA_JARS)))
-endif #} ANDROID_EXTRA_JARS
-
-# Include Android specific java flags, instead of what's in rules.mk.
-include $(topsrcdir)/config/android-common.mk
-endif #} ANDROID_APK_NAME
-
-
-ifdef JAVA_JAR_TARGETS #{
-# Arg 1: Output target name with .jar suffix, like jars/jarfile.jar.
-#        Intermediate class files are generated in jars/jarfile-classes.
-# Arg 2: Java sources list.  We use VPATH and $^ so sources can be
-#        relative to $(srcdir) or $(CURDIR).
-# Arg 3: List of extra jars to link against.  We do not use VPATH so
-#        jars must be relative to $(CURDIR).
-# Arg 4: Additional JAVAC_FLAGS.
-define java_jar_template
-$(1): $(2) $(3)
-	$$(REPORT_BUILD)
-	@$$(NSINSTALL) -D $(1:.jar=)-classes
-	@$$(if $$(filter-out .,$$(@D)),$$(NSINSTALL) -D $$(@D))
-	$$(JAVAC) $$(JAVAC_FLAGS)\
-    $(4)\
-		-d $(1:.jar=)-classes\
-		$(if $(strip $(3)),-classpath $(subst $(NULL) ,:,$(strip $(3))))\
-		$$(filter %.java,$$^)
-	$$(JAR) cMf $$@ -C $(1:.jar=)-classes .
-
-GARBAGE += $(1)
-
-GARBAGE_DIRS += $(1:.jar=)-classes
-endef
-
-$(foreach jar,$(JAVA_JAR_TARGETS),\
-  $(if $($(jar)_DEST),,$(error Missing $(jar)_DEST))\
-  $(if $($(jar)_JAVAFILES),,$(error Missing $(jar)_JAVAFILES))\
-  $(eval $(call java_jar_template,$($(jar)_DEST),$($(jar)_JAVAFILES) $($(jar)_PP_JAVAFILES),$($(jar)_EXTRA_JARS),$($(jar)_JAVAC_FLAGS)))\
-)
-endif #} JAVA_JAR_TARGETS
-
-
-INCLUDED_JAVA_BUILD_MK := 1
-
-endif #} INCLUDED_JAVA_BUILD_MK
deleted file mode 100644
--- a/js/src/config/makefiles/makeutils.mk
+++ /dev/null
@@ -1,121 +0,0 @@
-# -*- makefile -*-
-# vim:set ts=8 sw=8 sts=8 noet:
-#
-# 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/.
-
-## Identify function argument types
-istype =$(if $(value ${1}),list,scalar)
-isval  =$(if $(filter-out list,$(call istype,${1})),true)
-isvar  =$(if $(filter-out scalar,$(call istype,${1})),true)
-
-# Access up to 9 arguments passed, option needed to emulate $*
-# Inline for function expansion, do not use $(call )
-argv  =$(strip
-argv +=$(if $(1), $(1))$(if $(2), $(2))$(if $(3), $(3))$(if $(4), $(4))
-argv +=$(if $(5), $(5))$(if $(6), $(6))$(if $(7), $(7))$(if $(8), $(8))
-argv +=$(if $(9), $(9))
-argv +=$(if $(10), $(error makeutils.mk::argv can only handle 9 arguments))
-argv +=)
-
-###########################################################################
-## Access function args as a simple list, inline within user functions.
-## Usage: $(info ** $(call banner,$(getargv)))
-##    $(call banner,scalar)
-##    $(call banner,list0 list1 list2)
-##    $(call banner,ref) ; ref=foo bar tans
-## getarglist() would be a more accurate name but is longer to type
-getargv = $(if $(call isvar,$(1)),$($(1)),$(argv))
-
-###########################################################################
-# Strip [n] leading options from an argument list.  This will allow passing
-# extra args to user functions that will not propogate to sub-$(call )'s
-# Usage: $(call subargv,2)
-subargv =$(wordlist $(1),$(words $(getargv)),$(getargv))
-
-###########################################################################
-# Intent: Display a distinct banner heading in the output stream
-# Usage: $(call banner,BUILDING: foo bar tans)
-# Debug:
-#   target-preqs = \
-#     $(call banner,target-preqs-BEGIN) \
-#     foo bar tans \
-#     $(call banner,target-preqs-END) \
-#     $(NULL)
-#   target: $(target-preqs)
-
-banner = \
-$(info ) \
-$(info ***************************************************************************) \
-$(info ** $(getargv)) \
-$(info ***************************************************************************) \
-$(NULL)
-
-#####################################################################
-# Intent: Determine if a string or pattern is contained in a list
-# Usage: strcmp  - $(call if_XinY,clean,$(MAKECMDGOALS))
-#      : pattern - $(call if_XinY,clean%,$(MAKECMDGOALS))
-is_XinY =$(filter $(1),$(call subargv,3,$(getargv)))
-
-#####################################################################
-# Provide an alternate var to support testing
-ifdef MAKEUTILS_UNIT_TEST
-  mcg_goals=TEST_MAKECMDGOALS
-else
-  mcg_goals=MAKECMDGOALS
-endif
-
-# Intent: Conditionals for detecting common/tier target use
-isTargetStem       = $(sort \
-  $(foreach var,$(getargv),\
-    $(foreach pat,$(var)% %$(var),\
-      $(call is_XinY,$(pat),${$(mcg_goals)})\
-  )))
-isTargetStemClean  = $(call isTargetStem,clean)
-isTargetStemExport = $(call isTargetStem,export)
-isTargetStemLibs   = $(call isTargetStem,libs)
-isTargetStemTools  = $(call isTargetStem,tools)
-
-##################################################
-# Intent: Validation functions / unit test helpers
-
-errorifneq =$(if $(subst $(strip $(1)),$(NULL),$(strip $(2))),$(error expected [$(1)] but found [$(2)]))
-
-# Intent: verify function declaration exists
-requiredfunction =$(foreach func,$(1) $(2) $(3) $(4) $(5) $(6) $(7) $(8) $(9),$(if $(value $(func)),$(NULL),$(error required function [$(func)] is unavailable)))
-
-
-
-## http://www.gnu.org/software/make/manual/make.html#Call-Function
-## Usage: o = $(call map,origin,o map $(MAKE))
-map = $(foreach val,$(2),$(call $(1),$(val)))
-
-
-## Disable checking for clean targets
-ifeq (,$(filter %clean clean%,$(MAKECMDGOALS))) #{
-
-# Usage: $(call checkIfEmpty,[error|warning] foo NULL bar)
-checkIfEmpty =$(foreach var,$(wordlist 2,100,$(argv)),$(if $(strip $($(var))),$(NOP),$(call $(1),Variable $(var) does not contain a value)))
-
-# Usage: $(call errorIfEmpty,foo NULL bar)
-errorIfEmpty =$(call checkIfEmpty,error $(argv))
-warnIfEmpty  =$(call checkIfEmpty,warning $(argv))
-
-endif #}
-
-###########################################################################
-## Common makefile library loader
-###########################################################################
-topORerr =$(if $(topsrcdir),$(topsrcdir),$(error topsrcdir is not defined))
-
-ifdef USE_AUTOTARGETS_MK # mkdir_deps
-  include $(topORerr)/config/makefiles/autotargets.mk
-endif
-
-ifdef USE_RCS_MK
-  include $(topORerr)/config/makefiles/rcs.mk
-endif
-
-## copy(src, dst): recursive copy
-copy_dir = (cd $(1)/. && $(TAR) $(TAR_CREATE_FLAGS) - .) | (cd $(2)/. && tar -xf -)
deleted file mode 100644
--- a/js/src/config/makefiles/mochitest.mk
+++ /dev/null
@@ -1,52 +0,0 @@
-# -*- makefile -*-
-# vim:set ts=8 sw=8 sts=8 noet:
-#
-# 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/.
-
-ifndef INCLUDED_TESTS_MOCHITEST_MK #{
-
-#   $1- test directory name
-#   $2- optional: if passed dot used to flatten directory hierarchy copy
-# else- relativesrcdir
-mochitestdir = \
-    $(strip \
-      $(if $(2),$(DEPTH)/_tests/testing/mochitest/$1/. \
-        ,$(DEPTH)/_tests/testing/mochitest/$1/$(relativesrcdir) \
-    ))
-
-
-ifdef MOCHITEST_FILES
-MOCHITEST_DEST := $(call mochitestdir,tests)
-INSTALL_TARGETS += MOCHITEST
-endif
-
-ifdef MOCHITEST_CHROME_FILES
-MOCHITEST_CHROME_DEST := $(call mochitestdir,chrome)
-INSTALL_TARGETS += MOCHITEST_CHROME
-endif
-
-ifdef MOCHITEST_BROWSER_FILES
-MOCHITEST_BROWSER_DEST := $(call mochitestdir,browser)
-INSTALL_TARGETS += MOCHITEST_BROWSER
-endif
-
-ifdef MOCHITEST_A11Y_FILES
-MOCHITEST_A11Y_DEST := $(call mochitestdir,a11y)
-INSTALL_TARGETS += MOCHITEST_A11Y
-endif
-
-ifdef MOCHITEST_METRO_FILES
-MOCHITEST_METRO_DEST := $(call mochitestdir,metro)
-INSTALL_TARGETS += MOCHITEST_METRO
-endif
-
-ifdef MOCHITEST_ROBOCOP_FILES
-MOCHITEST_ROBOCOP_DEST := $(call mochitestdir,tests/robocop,flat_hierarchy)
-INSTALL_TARGETS += MOCHITEST_ROBOCOP
-endif
-
-INCLUDED_TESTS_MOCHITEST_MK := 1
-
-endif #} INCLUDED_TESTS_MOCHITEST_MK
deleted file mode 100644
--- a/js/src/config/makefiles/nonrecursive.mk
+++ /dev/null
@@ -1,68 +0,0 @@
-# -*- makefile -*-
-# vim:set ts=8 sw=8 sts=8 noet:
-#
-# 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/.
-
-# The purpose of this file is to pull in non-recursive targets when performing
-# a partial tree (not top-level) build. This will allow people to continue to
-# build individual directories while some of the targets may not be normally
-# defined in that make file.
-#
-# Non-recursive targets are attached to existing make targets. The
-# NONRECURSIVE_TARGETS variable lists the make targets that modified. For
-# each target in this list, the NONRECURSIVE_TARGET_<target> variable will
-# contain a list of partial variable names. We will then look in variables
-# named NONRECURSIVE_TARGETS_<target>_<fragment>_* for information describing
-# how to evaluate non-recursive make targets.
-#
-# Targets are defined by the following variables:
-#
-#   FILE - The make file to evaluate. This is equivalent to
-#      |make -f <FILE>|
-#   DIRECTORY - The directory whose Makefile to evaluate. This is
-#      equivalent to |make -C <DIRECTORY>|.
-#   TARGETS - Targets to evaluate in that make file.
-#
-# Only 1 of FILE or DIRECTORY may be defined.
-#
-# For example:
-#
-# NONRECURSIVE_TARGETS = export libs
-# NONRECURSIVE_TARGETS_export = headers
-# NONRECURSIVE_TARGETS_export_headers_FILE = /path/to/exports.mk
-# NONRECURSIVE_TARGETS_export_headers_TARGETS = $(DIST)/include/foo.h $(DIST)/include/bar.h
-# NONRECURSIVE_TARGETS_libs = cppsrcs
-# NONRECURSIVE_TARGETS_libs_cppsrcs_DIRECTORY = $(DEPTH)/foo
-# NONRECURSIVE_TARGETS_libs_cppsrcs_TARGETS = /path/to/foo.o /path/to/bar.o
-#
-# Will get turned into the following:
-#
-# exports::
-#     $(MAKE) -C $(DEPTH) -f /path/to/exports.mk $(DIST)/include/foo.h $(DIST)/include/bar.h
-#
-# libs::
-#     $(MAKE) -C $(DEPTH)/foo /path/to/foo.o /path/to/bar.o
-
-ifndef INCLUDED_NONRECURSIVE_MK
-
-define define_nonrecursive_target
-$(1)::
-	$$(MAKE) -C $(or $(4),$$(DEPTH)) $(addprefix -f ,$(3)) $(2)
-endef
-
-$(foreach target,$(NONRECURSIVE_TARGETS), \
-    $(foreach entry,$(NONRECURSIVE_TARGETS_$(target)), \
-        $(eval $(call define_nonrecursive_target, \
-            $(target), \
-            $(NONRECURSIVE_TARGETS_$(target)_$(entry)_TARGETS), \
-            $(NONRECURSIVE_TARGETS_$(target)_$(entry)_FILE), \
-            $(NONRECURSIVE_TARGETS_$(target)_$(entry)_DIRECTORY), \
-        )) \
-    ) \
-)
-
-INCLUDED_NONRECURSIVE_MK := 1
-endif
-
deleted file mode 100644
--- a/js/src/config/makefiles/rcs.mk
+++ /dev/null
@@ -1,54 +0,0 @@
-# -*- makefile -*-
-# vim:set ts=8 sw=8 sts=8 noet:
-#
-# 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/.
-#
-
-ifdef USE_RCS_MK #{
-
-ifndef INCLUDED_RCS_MK #{
-
-MOZ_RCS_TYPE_HG ?= $(notdir $(wildcard $(topsrcdir)/.hg))
-MOZ_RCS_TYPE_GIT ?= $(notdir $(wildcard $(topsrcdir)/.git))
-
-
-###########################################################################
-# HAVE_MERCURIAL_RCS
-###########################################################################
-ifeq (.hg,$(MOZ_RCS_TYPE_HG)) #{
-
-# Intent: Retrieve the http:// repository path for a directory.
-# Usage: $(call getSourceRepo[,repo_dir|args])
-# Args:
-#   path (optional): repository to query.  Defaults to $(topsrcdir)
-getSourceRepo = \
-  $(call FUNC_getSourceRepo,$(if $(1),cd $(1) && hg,hg --repository $(topsrcdir)))
-
-# return: http://hg.mozilla.org/mozilla-central
-FUNC_getSourceRepo = \
-  $(strip \
-    $(patsubst %/,%,\
-    $(patsubst ssh://%,http://%,\
-    $(firstword $(shell $(getargv) showconfig paths.default))\
-    )))
-
-#} HAVE_MERCURIAL_RCS
-
-###########################################################################
-# HAVE_GIT_RCS
-###########################################################################
-else ifeq (.git,$(MOZ_RCS_TYPE_GIT)) #{
-
-GIT ?= git
-getSourceRepo = \
-  $(shell cd $(topsrcdir) && $(GIT) rev-parse --verify HEAD)
-
-endif #} HAVE_GIT_RCS
-
-
-INCLUDED_RCS_MK := 1
-endif #}
-
-endif #}
deleted file mode 100644
--- a/js/src/config/makefiles/target_binaries.mk
+++ /dev/null
@@ -1,122 +0,0 @@
-# -*- makefile -*-
-# vim:set ts=8 sw=8 sts=8 noet:
-#
-# 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/.
-
-ifdef EXPORT_LIBRARY
-ifeq ($(EXPORT_LIBRARY),1)
-ifdef IS_COMPONENT
-EXPORT_LIBRARY = $(DEPTH)/staticlib/components
-else
-EXPORT_LIBRARY = $(DEPTH)/staticlib
-endif
-else
-# If EXPORT_LIBRARY has a value, we'll be installing there. We also need to cleanup there
-GARBAGE += $(foreach lib,$(LIBRARY),$(EXPORT_LIBRARY)/$(lib))
-endif
-endif # EXPORT_LIBRARY
-
-binaries libs:: $(SUBMAKEFILES) $(TARGETS)
-ifndef NO_DIST_INSTALL
-ifdef SHARED_LIBRARY
-ifdef IS_COMPONENT
-	$(INSTALL) $(IFLAGS2) $(SHARED_LIBRARY) $(FINAL_TARGET)/components
-ifndef NO_COMPONENTS_MANIFEST
-	$(call py_action,buildlist,$(FINAL_TARGET)/chrome.manifest 'manifest components/components.manifest')
-	$(call py_action,buildlist,$(FINAL_TARGET)/components/components.manifest 'binary-component $(SHARED_LIBRARY)')
-endif
-endif # IS_COMPONENT
-endif # SHARED_LIBRARY
-endif # !NO_DIST_INSTALL
-
-ifndef NO_DIST_INSTALL
-
-ifneq (,$(strip $(PROGRAM)$(SIMPLE_PROGRAMS)))
-PROGRAMS_EXECUTABLES = $(SIMPLE_PROGRAMS) $(PROGRAM)
-PROGRAMS_DEST ?= $(FINAL_TARGET)
-PROGRAMS_TARGET := binaries libs
-INSTALL_TARGETS += PROGRAMS
-endif
-
-ifdef LIBRARY
-ifdef EXPORT_LIBRARY
-LIBRARY_FILES = $(LIBRARY)
-LIBRARY_DEST ?= $(EXPORT_LIBRARY)
-LIBRARY_TARGET = binaries libs
-INSTALL_TARGETS += LIBRARY
-endif
-ifdef DIST_INSTALL
-ifdef IS_COMPONENT
-$(error Shipping static component libs makes no sense.)
-else
-DIST_LIBRARY_FILES = $(LIBRARY)
-DIST_LIBRARY_DEST ?= $(DIST)/lib
-DIST_LIBRARY_TARGET = binaries libs
-INSTALL_TARGETS += DIST_LIBRARY
-endif
-endif # DIST_INSTALL
-endif # LIBRARY
-
-
-ifdef SHARED_LIBRARY
-ifndef IS_COMPONENT
-SHARED_LIBRARY_FILES = $(SHARED_LIBRARY)
-SHARED_LIBRARY_DEST ?= $(FINAL_TARGET)
-SHARED_LIBRARY_TARGET = binaries libs
-INSTALL_TARGETS += SHARED_LIBRARY
-
-ifneq (,$(filter OS2 WINNT,$(OS_ARCH)))
-ifndef NO_INSTALL_IMPORT_LIBRARY
-IMPORT_LIB_FILES = $(IMPORT_LIBRARY)
-endif # NO_INSTALL_IMPORT_LIBRARY
-else
-IMPORT_LIB_FILES = $(SHARED_LIBRARY)
-endif
-
-IMPORT_LIB_DEST ?= $(DIST)/lib
-IMPORT_LIB_TARGET = binaries libs
-ifdef IMPORT_LIB_FILES
-INSTALL_TARGETS += IMPORT_LIB
-endif
-
-endif # ! IS_COMPONENT
-endif # SHARED_LIBRARY
-
-ifneq (,$(strip $(HOST_SIMPLE_PROGRAMS)$(HOST_PROGRAM)))
-HOST_PROGRAMS_EXECUTABLES = $(HOST_SIMPLE_PROGRAMS) $(HOST_PROGRAM)
-HOST_PROGRAMS_DEST ?= $(DIST)/host/bin
-HOST_PROGRAMS_TARGET = binaries libs
-INSTALL_TARGETS += HOST_PROGRAMS
-endif
-
-ifdef HOST_LIBRARY
-HOST_LIBRARY_FILES = $(HOST_LIBRARY)
-HOST_LIBRARY_DEST ?= $(DIST)/host/lib
-HOST_LIBRARY_TARGET = binaries libs
-INSTALL_TARGETS += HOST_LIBRARY
-endif
-
-endif # !NO_DIST_INSTALL
-
-ifdef MOZ_PSEUDO_DERECURSE
-BINARIES_INSTALL_TARGETS := $(foreach category,$(INSTALL_TARGETS),$(if $(filter binaries,$($(category)_TARGET)),$(category)))
-
-# Fill a dependency file with all the binaries installed somewhere in $(DIST)
-# and with dependencies on the relevant backend files.
-BINARIES_PP := $(MDDEPDIR)/binaries.pp
-
-$(BINARIES_PP): Makefile $(wildcard backend.mk) $(call mkdir_deps,$(MDDEPDIR))
-	@echo '$(strip $(foreach category,$(BINARIES_INSTALL_TARGETS),\
-		$(foreach file,$($(category)_FILES) $($(category)_EXECUTABLES),\
-			$($(category)_DEST)/$(notdir $(file)): $(file)%\
-		)\
-	))binaries: Makefile $(wildcard backend.mk)' | tr % '\n' > $@
-
-else
-binaries::
-	$(error The binaries target is not supported without MOZ_PSEUDO_DERECURSE)
-endif
-
-# EOF
deleted file mode 100644
--- a/js/src/config/milestone.pl
+++ /dev/null
@@ -1,94 +0,0 @@
-#!/usr/bin/perl -w
-# 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/.
-
-use Getopt::Long;
-
-use strict;
-use vars qw(
-            $OBJDIR
-            $SRCDIR
-            $TOPSRCDIR
-            $SCRIPTDIR
-            @TEMPLATE_FILE
-            $MILESTONE_FILE
-            $MILESTONE
-            $MILESTONE_NUM
-            @MILESTONE_PARTS
-            $MINI_VERSION
-            $MICRO_VERSION
-            $opt_debug
-            $opt_template
-            $opt_uaversion
-            $opt_symbolversion
-            $opt_help
-            );
-
-$SCRIPTDIR = $0;
-$SCRIPTDIR =~ s/[^\/]*$//;
-push(@INC,$SCRIPTDIR);
-
-require "Moz/Milestone.pm";
-
-&GetOptions('topsrcdir=s' => \$TOPSRCDIR, 'srcdir=s' => \$SRCDIR, 'objdir=s' => \$OBJDIR, 'debug', 'help', 'template', 'uaversion', 'symbolversion');
-
-if (defined($opt_help)) {
-    &usage();
-    exit;
-}
-
-if (defined($opt_template)) {
-    @TEMPLATE_FILE = @ARGV;
-    if ($opt_debug) {
-        print("TEMPLATE_FILE = --@TEMPLATE_FILE--\n");
-    }
-}
-
-if (!defined($SRCDIR)) { $SRCDIR = '.'; }
-if (!defined($OBJDIR)) { $OBJDIR = '.'; }
-
-$MILESTONE_FILE  = "$TOPSRCDIR/config/milestone.txt";
-@MILESTONE_PARTS = (0, 0, 0, 0);
-
-#
-# Grab milestone (top line of $MILESTONE_FILE that starts with a digit)
-#
-my $milestone = Moz::Milestone::getOfficialMilestone($MILESTONE_FILE);
-
-if (@TEMPLATE_FILE) {
-  my $TFILE;
-
-  foreach $TFILE (@TEMPLATE_FILE) {
-    my $BUILT_FILE = "$OBJDIR/$TFILE";
-    $TFILE = "$SRCDIR/$TFILE.tmpl";
-
-    if (-e $TFILE) {
-
-      Moz::Milestone::build_file($TFILE,$BUILT_FILE);
-
-    } else {
-      warn("$0:  No such file $TFILE!\n");
-    }
-  }
-} elsif(defined($opt_uaversion)) {
-  # Only expose the major milestone in the UA string, hide the patch level
-  # (bugs 572659 and 870868).
-  my $uaversion = Moz::Milestone::getMilestoneMajor($milestone) . ".0";
-  print "$uaversion\n";
-} elsif(defined($opt_symbolversion)) {
-  # Only expose major milestone and alpha version. Used for symbol versioning
-  # on Linux.
-  my $symbolversion = Moz::Milestone::getMilestoneMajor($milestone) .
-                      Moz::Milestone::getMilestoneABWithNum($milestone);
-  print "$symbolversion\n";
-} else {
-  print "$milestone\n";
-}
-
-sub usage() {
-  print <<END
-`milestone.pl [--topsrcdir TOPSRCDIR] [--objdir OBJDIR] [--srcdir SRCDIR] --template [file list] --uaversion --symbolversion`  # will build file list from .tmpl files
-END
-    ;
-}
deleted file mode 100644
--- a/js/src/config/milestone.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-# Holds the current milestone.
-# Should be in the format of
-#
-#    x.x.x
-#    x.x.x.x
-#    x.x.x+
-#
-# Referenced by milestone.pl.
-# Hopefully I'll be able to automate replacement of *all*
-# hardcoded milestones in the tree from these two files.
-#--------------------------------------------------------
-
-29.0a1
deleted file mode 100644
--- a/js/src/config/moz.build
+++ /dev/null
@@ -1,29 +0,0 @@
-# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# 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/.
-
-CONFIGURE_SUBST_FILES += [
-    'autoconf.mk',
-    'emptyvars.mk',
-]
-
-NO_DIST_INSTALL = True
-# For sanity's sake, we compile nsinstall without the wrapped system
-# headers, so that we can use it to set up the wrapped system headers.
-NO_VISIBILITY_FLAGS = True
-
-if CONFIG['HOST_OS_ARCH'] != 'WINNT':
-    HOST_SOURCES += [
-        'nsinstall.c',
-        'pathsub.c',
-    ]
-    HOST_PROGRAM = 'nsinstall_real'
-
-# Force wrap zlib system header if building js as a shared library.
-if CONFIG['JS_SHARED_LIBRARY'] or CONFIG['MOZ_NATIVE_ZLIB']:
-    DEFINES['MOZ_NATIVE_ZLIB'] = 1
-
-if CONFIG['MOZ_SHARED_ICU']:
-    DEFINES['MOZ_SHARED_ICU'] = True
deleted file mode 100644
--- a/js/src/config/nsinstall.c
+++ /dev/null
@@ -1,452 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* 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/. */
-/*
-** Netscape portable install command.
-**
-** Brendan Eich, 7/20/95
-*/
-#include <stdio.h>  /* OSF/1 requires this before grp.h, so put it first */
-#include <assert.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <dirent.h>
-#include <limits.h>
-#include <grp.h>
-#include <pwd.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <utime.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include "pathsub.h"
-
-#ifdef HAVE_GETOPT_H
-#include <getopt.h>
-#endif
-
-#ifdef SUNOS4
-#include "sunos4.h"
-#endif
-
-#ifdef NEXTSTEP
-#include <bsd/libc.h>
-#endif
-
-#ifdef __QNX__
-#include <unix.h>
-#endif
-
-#ifdef NEED_S_ISLNK
-#if !defined(S_ISLNK) && defined(S_IFLNK)
-#define S_ISLNK(a)	(((a) & S_IFMT) == S_IFLNK)
-#endif
-#endif
-
-#ifndef _DIRECTORY_SEPARATOR
-#define _DIRECTORY_SEPARATOR "/"
-#endif /* _DIRECTORY_SEPARATOR */
-
-#ifdef NEED_FCHMOD_PROTO
-extern int fchmod(int fildes, mode_t mode);
-#endif
-
-static void
-usage(void)
-{
-    fprintf(stderr,
-	"usage: %s [-C cwd] [-L linkprefix] [-m mode] [-o owner] [-g group]\n"
-	"       %*s [-DdltR] file [file ...] directory\n",
-	program, (int) strlen(program), "");
-    exit(2);
-}
-
-static int
-mkdirs(char *path, mode_t mode)
-{
-    char *cp;
-    struct stat sb;
-    int res;
-    int l;
-
-    /* strip trailing "/." */
-    l = strlen(path);
-    if(l > 1 && path[l - 1] == '.' && path[l - 2] == '/')
-        path[l - 2] = 0;
-
-    while (*path == '/' && path[1] == '/')
-	path++;
-    for (cp = strrchr(path, '/'); cp && cp != path && *(cp - 1) == '/'; cp--);
-    if (cp && cp != path) {
-	*cp = '\0';
-	if ((lstat(path, &sb) < 0 || !S_ISDIR(sb.st_mode)) &&
-	    mkdirs(path, mode) < 0) {
-	    return -1;
-	}
-	*cp = '/';
-    }
-    
-    res = mkdir(path, mode);
-    if ((res != 0) && (errno == EEXIST))
-      return 0;
-    else
-      return res;
-}
-
-static uid_t
-touid(char *owner)
-{
-    struct passwd *pw;
-    uid_t uid;
-    char *cp;
-
-    pw = getpwnam(owner);
-    if (pw)
-	return pw->pw_uid;
-    uid = strtol(owner, &cp, 0);
-    if (uid == 0 && cp == owner)
-	fail("cannot find uid for %s", owner);
-    return uid;
-}
-
-static gid_t
-togid(char *group)
-{
-    struct group *gr;
-    gid_t gid;
-    char *cp;
-
-    gr = getgrnam(group);
-    if (gr)
-	return gr->gr_gid;
-    gid = strtol(group, &cp, 0);
-    if (gid == 0 && cp == group)
-	fail("cannot find gid for %s", group);
-    return gid;
-}
-
-static void
-copyfile( char *name, char *toname, mode_t mode, char *group, char *owner,
-          int dotimes, uid_t uid, gid_t gid )
-{
-  int fromfd, tofd = -1, cc, wc, exists;
-  char buf[BUFSIZ], *bp;
-  struct stat sb, tosb;
-  struct utimbuf utb;
-
-  exists = (lstat(toname, &tosb) == 0);
-
-  fromfd = open(name, O_RDONLY);
-  if (fromfd < 0 || fstat(fromfd, &sb) < 0)
-    fail("cannot access %s", name);
-  if (exists) {
-    if (S_ISREG(tosb.st_mode)) {
-      /* See if we can open it. This is more reliable than 'access'. */
-      tofd = open(toname, O_CREAT | O_WRONLY, 0666);
-    }
-    if (tofd < 0) {
-      (void) (S_ISDIR(tosb.st_mode) ? rmdir : unlink)(toname);
-    }
-  }
-  if (tofd < 0) {
-    tofd = open(toname, O_CREAT | O_WRONLY, 0666);
-    if (tofd < 0)
-      fail("cannot create %s", toname);
-  }
-
-  bp = buf;
-  while ((cc = read(fromfd, bp, sizeof buf)) > 0)
-  {
-    while ((wc = write(tofd, bp, (unsigned int)cc)) > 0)
-    {
-      if ((cc -= wc) == 0)
-        break;
-      bp += wc;
-    }
-    if (wc < 0)
-      fail("cannot write to %s", toname);
-  }
-  if (cc < 0)
-    fail("cannot read from %s", name);
-
-  if (ftruncate(tofd, sb.st_size) < 0)
-    fail("cannot truncate %s", toname);
-#if !defined(VMS)
-  if (dotimes)
-  {
-    utb.actime = sb.st_atime;
-    utb.modtime = sb.st_mtime;
-    if (utime(toname, &utb) < 0)
-      fail("cannot set times of %s", toname);
-  }
-#ifdef HAVE_FCHMOD
-  if (fchmod(tofd, mode) < 0)
-#else
-  if (chmod(toname, mode) < 0)
-#endif
-    fail("cannot change mode of %s", toname);
-#endif
-  if ((owner || group) && fchown(tofd, uid, gid) < 0)
-    fail("cannot change owner of %s", toname);
-
-  /* Must check for delayed (NFS) write errors on close. */
-  if (close(tofd) < 0)
-    fail("cannot write to %s", toname);
-  close(fromfd);
-#if defined(VMS)
-  if (chmod(toname, (mode & (S_IREAD | S_IWRITE))) < 0)
-    fail("cannot change mode of %s", toname);
-  if (dotimes)
-  {
-    utb.actime = sb.st_atime;
-    utb.modtime = sb.st_mtime;
-    if (utime(toname, &utb) < 0)
-      fail("cannot set times of %s", toname);
-  }
-#endif
-}
-
-static void
-copydir( char *from, char *to, mode_t mode, char *group, char *owner,
-         int dotimes, uid_t uid, gid_t gid)
-{
-  int i;
-  DIR *dir;
-  struct dirent *ep;
-  struct stat sb;
-  char *base, *destdir, *direntry, *destentry;
-
-  base = xbasename(from);
-
-  /* create destination directory */
-  destdir = xmalloc((unsigned int)(strlen(to) + 1 + strlen(base) + 1));
-  sprintf(destdir, "%s%s%s", to, _DIRECTORY_SEPARATOR, base);
-  if (mkdirs(destdir, mode) != 0) {
-    fail("cannot make directory %s\n", destdir);
-    free(destdir);
-    return;
-  }
-
-  if (!(dir = opendir(from))) {
-    fail("cannot open directory %s\n", from);
-    free(destdir);
-    return;
-  }
-
-  direntry = xmalloc((unsigned int)PATH_MAX);
-  destentry = xmalloc((unsigned int)PATH_MAX);
-
-  while ((ep = readdir(dir)))
-  {
-    if (strcmp(ep->d_name, ".") == 0 || strcmp(ep->d_name, "..") == 0)
-      continue;
-
-    sprintf(direntry, "%s/%s", from, ep->d_name);
-    sprintf(destentry, "%s%s%s", destdir, _DIRECTORY_SEPARATOR, ep->d_name);
-
-    if (stat(direntry, &sb) == 0 && S_ISDIR(sb.st_mode))
-      copydir( direntry, destdir, mode, group, owner, dotimes, uid, gid );
-    else
-      copyfile( direntry, destentry, mode, group, owner, dotimes, uid, gid );
-  }
-
-  free(destdir);
-  free(direntry);
-  free(destentry);
-  closedir(dir);
-}
-
-int
-main(int argc, char **argv)
-{
-    int onlydir, dodir, dolink, dorelsymlink, dotimes, opt, len, lplen, tdlen, bnlen, exists, fromfd, tofd, cc, wc;
-    mode_t mode = 0755;
-    char *linkprefix, *owner, *group, *cp, *cwd, *todir, *toname, *name, *base, *linkname, *bp, buf[BUFSIZ];
-    uid_t uid;
-    gid_t gid;
-    struct stat sb, tosb, fromsb;
-    struct utimbuf utb;
-
-    program = argv[0];
-    cwd = linkname = linkprefix = owner = group = 0;
-    onlydir = dodir = dolink = dorelsymlink = dotimes = lplen = 0;
-
-    while ((opt = getopt(argc, argv, "C:DdlL:Rm:o:g:t")) != EOF) {
-	switch (opt) {
-	  case 'C':
-	    cwd = optarg;
-	    break;
-	  case 'D':
-	    onlydir = 1;
-	    break;
-	  case 'd':
-	    dodir = 1;
-	    break;
-	  case 'L':
-	    linkprefix = optarg;
-	    lplen = strlen(linkprefix);
-	    dolink = 1;
-	    break;
-	  case 'R':
-	    dolink = dorelsymlink = 1;
-	    break;
-	  case 'm':
-	    mode = strtoul(optarg, &cp, 8);
-	    if (mode == 0 && cp == optarg)
-		usage();
-	    break;
-	  case 'o':
-	    owner = optarg;
-	    break;
-	  case 'g':
-	    group = optarg;
-	    break;
-	  case 't':
-	    dotimes = 1;
-	    break;
-	  default:
-	    usage();
-	}
-    }
-
-    argc -= optind;
-    argv += optind;
-    if (argc < 2 - onlydir)
-	usage();
-
-    todir = argv[argc-1];
-    if ((stat(todir, &sb) < 0 || !S_ISDIR(sb.st_mode)) &&
-	mkdirs(todir, 0777) < 0) {
-	fail("cannot make directory %s", todir);
-    }
-    if (onlydir)
-	return 0;
-
-    if (!cwd) {
-#ifndef NEEDS_GETCWD
-#ifndef GETCWD_CANT_MALLOC
-	cwd = getcwd(0, PATH_MAX);
-#else
-	cwd = malloc(PATH_MAX + 1);
-	cwd = getcwd(cwd, PATH_MAX);
-#endif
-#else
-	cwd = malloc(PATH_MAX + 1);
-	cwd = getwd(cwd);
-#endif
-    }
-
-    xchdir(todir);
-#ifndef NEEDS_GETCWD
-#ifndef GETCWD_CANT_MALLOC
-    todir = getcwd(0, PATH_MAX);
-#else
-    todir = malloc(PATH_MAX + 1);
-    todir = getcwd(todir, PATH_MAX);
-#endif
-#else
-    todir = malloc(PATH_MAX + 1);
-    todir = getwd(todir);
-#endif
-    tdlen = strlen(todir);
-    xchdir(cwd);
-    tdlen = strlen(todir);
-
-    uid = owner ? touid(owner) : (uid_t)(-1);
-    gid = group ? togid(group) : (gid_t)(-1);
-
-    while (--argc > 0) {
-	name = *argv++;
-	len = strlen(name);
-	base = xbasename(name);
-	bnlen = strlen(base);
-	toname = xmalloc((unsigned int)(tdlen + 1 + bnlen + 1));
-	sprintf(toname, "%s%s%s", todir, _DIRECTORY_SEPARATOR, base);
-	exists = (lstat(toname, &tosb) == 0);
-
-	if (dodir) {
-	    /* -d means create a directory, always */
-	    if (exists && !S_ISDIR(tosb.st_mode)) {
-		(void) unlink(toname);
-		exists = 0;
-	    }
-	    if (!exists && mkdir(toname, mode) < 0)
-		fail("cannot make directory %s", toname);
-	    if ((owner || group) && chown(toname, uid, gid) < 0)
-		fail("cannot change owner of %s", toname);
-	} else if (dolink) {
-            if (access(name, R_OK) != 0) {
-                fail("cannot access %s", name);
-            }
-	    if (*name == '/') {
-		/* source is absolute pathname, link to it directly */
-		linkname = 0;
-	    } else {
-		if (linkprefix) {
-		    /* -L prefixes names with a $cwd arg. */
-		    len += lplen + 1;
-		    linkname = xmalloc((unsigned int)(len + 1));
-		    sprintf(linkname, "%s/%s", linkprefix, name);
-		} else if (dorelsymlink) {
-		    /* Symlink the relative path from todir to source name. */
-		    linkname = xmalloc(PATH_MAX);
-
-		    if (*todir == '/') {
-			/* todir is absolute: skip over common prefix. */
-			lplen = relatepaths(todir, cwd, linkname);
-			strcpy(linkname + lplen, name);
-		    } else {
-			/* todir is named by a relative path: reverse it. */
-			reversepath(todir, name, len, linkname);
-			xchdir(cwd);
-		    }
-
-		    len = strlen(linkname);
-		}
-		name = linkname;
-	    }
-
-	    /* Check for a pre-existing symlink with identical content. */
-	    if ((exists && (!S_ISLNK(tosb.st_mode) ||
-						readlink(toname, buf, sizeof buf) != len ||
-						strncmp(buf, name, (unsigned int)len) != 0)) || 
-			((stat(name, &fromsb) == 0) && 
-			 (fromsb.st_mtime > tosb.st_mtime))) {
-		(void) (S_ISDIR(tosb.st_mode) ? rmdir : unlink)(toname);
-		exists = 0;
-	    }
-	    if (!exists && symlink(name, toname) < 0)
-		fail("cannot make symbolic link %s", toname);
-#ifdef HAVE_LCHOWN
-	    if ((owner || group) && lchown(toname, uid, gid) < 0)
-		fail("cannot change owner of %s", toname);
-#endif
-
-	    if (linkname) {
-		free(linkname);
-		linkname = 0;
-	    }
-	} else {
-	    /* Copy from name to toname, which might be the same file. */
-      if( stat(name, &sb) == 0 && S_IFDIR & sb.st_mode )
-      {
-        /* then is directory: must explicitly create destination dir  */
-        /*  and manually copy files over                              */
-        copydir( name, todir, mode, group, owner, dotimes, uid, gid );
-      } 
-      else
-      {
-        copyfile(name, toname, mode, group, owner, dotimes, uid, gid);
-      }
-    }
-
-	free(toname);
-    }
-
-    free(cwd);
-    free(todir);
-    return 0;
-}
deleted file mode 100644
--- a/js/src/config/nsinstall.py
+++ /dev/null
@@ -1,180 +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 is a partial python port of nsinstall.
-# It's intended to be used when there's no natively compile nsinstall
-# available, and doesn't intend to be fully equivalent.
-# Its major use is for l10n repackaging on systems that don't have
-# a full build environment set up.
-# The basic limitation is, it doesn't even try to link and ignores
-# all related options.
-from __future__ import print_function
-from optparse import OptionParser
-import os
-import os.path
-import sys
-import shutil
-import stat
-
-def _nsinstall_internal(argv):
-  usage = "usage: %prog [options] arg1 [arg2 ...] target-directory"
-  p = OptionParser(usage=usage)
-
-  p.add_option('-D', action="store_true",
-               help="Create a single directory only")
-  p.add_option('-t', action="store_true",
-               help="Preserve time stamp")
-  p.add_option('-m', action="store",
-               help="Set mode", metavar="mode")
-  p.add_option('-d', action="store_true",
-               help="Create directories in target")
-  p.add_option('-R', action="store_true",
-               help="Use relative symbolic links (ignored)")
-  p.add_option('-L', action="store", metavar="linkprefix",
-               help="Link prefix (ignored)")
-  p.add_option('-X', action="append", metavar="file",
-               help="Ignore a file when installing a directory recursively.")
-
-  # The remaining arguments are not used in our tree, thus they're not
-  # implented.
-  def BadArg(option, opt, value, parser):
-    parser.error('option not supported: {0}'.format(opt))
-    
-  p.add_option('-C', action="callback", metavar="CWD",
-               callback=BadArg,
-               help="NOT SUPPORTED")
-  p.add_option('-o', action="callback", callback=BadArg,
-               help="Set owner (NOT SUPPORTED)", metavar="owner")
-  p.add_option('-g', action="callback", callback=BadArg,
-               help="Set group (NOT SUPPORTED)", metavar="group")
-
-  (options, args) = p.parse_args(argv)
-
-  if options.m:
-    # mode is specified
-    try:
-      options.m = int(options.m, 8)
-    except:
-      sys.stderr.write('nsinstall: {0} is not a valid mode\n'
-                       .format(options.m))
-      return 1
-
-  # just create one directory?
-  def maybe_create_dir(dir, mode, try_again):
-    dir = os.path.abspath(dir)
-    if os.path.exists(dir):
-      if not os.path.isdir(dir):
-        print('nsinstall: {0} is not a directory'.format(dir), file=sys.stderr)
-        return 1
-      if mode:
-        os.chmod(dir, mode)
-      return 0
-
-    try:
-      if mode:
-        os.makedirs(dir, mode)
-      else:
-        os.makedirs(dir)
-    except Exception as e:
-      # We might have hit EEXIST due to a race condition (see bug 463411) -- try again once
-      if try_again:
-        return maybe_create_dir(dir, mode, False)
-      print("nsinstall: failed to create directory {0}: {1}".format(dir, e))
-      return 1
-    else:
-      return 0
-
-  if options.X:
-    options.X = [os.path.abspath(p) for p in options.X]
-
-  if options.D:
-    return maybe_create_dir(args[0], options.m, True)
-
-  # nsinstall arg1 [...] directory
-  if len(args) < 2:
-    p.error('not enough arguments')
-
-  def copy_all_entries(entries, target):
-    for e in entries:
-      e = os.path.abspath(e)
-      if options.X and e in options.X:
-        continue
-
-      dest = os.path.join(target, os.path.basename(e))
-      dest = os.path.abspath(dest)
-      handleTarget(e, dest)
-      if options.m:
-        os.chmod(dest, options.m)
-
-  # set up handler
-  if options.d:
-    # we're supposed to create directories
-    def handleTarget(srcpath, targetpath):
-      # target directory was already created, just use mkdir
-      os.mkdir(targetpath)
-  else:
-    # we're supposed to copy files
-    def handleTarget(srcpath, targetpath):
-      if os.path.isdir(srcpath):
-        if not os.path.exists(targetpath):
-          os.mkdir(targetpath)
-        entries = [os.path.join(srcpath, e) for e in os.listdir(srcpath)]
-        copy_all_entries(entries, targetpath)
-        # options.t is not relevant for directories
-        if options.m:
-          os.chmod(targetpath, options.m)
-      else:
-        if os.path.exists(targetpath):
-          # On Windows, read-only files can't be deleted
-          os.chmod(targetpath, stat.S_IWUSR)
-          os.remove(targetpath)
-        if options.t:
-          shutil.copy2(srcpath, targetpath)
-        else:
-          shutil.copy(srcpath, targetpath)
-
-  # the last argument is the target directory
-  target = args.pop()
-  # ensure target directory (importantly, we do not apply a mode to the directory
-  # because we want to copy files into it and the mode might be read-only)
-  rv = maybe_create_dir(target, None, True)
-  if rv != 0:
-    return rv
-
-  copy_all_entries(args, target)
-  return 0
-
-# nsinstall as a native command is always UTF-8
-def nsinstall(argv):
-  return _nsinstall_internal([unicode(arg, "utf-8") for arg in argv])
-
-if __name__ == '__main__':
-  # sys.argv corrupts characters outside the system code page on Windows
-  # <http://bugs.python.org/issue2128>. Use ctypes instead. This is also
-  # useful because switching to Unicode strings makes python use the wide
-  # Windows APIs, which is what we want here since the wide APIs normally do a
-  # better job at handling long paths and such.
-  if sys.platform == "win32":
-    import ctypes
-    from ctypes import wintypes
-    GetCommandLine = ctypes.windll.kernel32.GetCommandLineW
-    GetCommandLine.argtypes = []
-    GetCommandLine.restype = wintypes.LPWSTR
-
-    CommandLineToArgv = ctypes.windll.shell32.CommandLineToArgvW
-    CommandLineToArgv.argtypes = [wintypes.LPWSTR, ctypes.POINTER(ctypes.c_int)]
-    CommandLineToArgv.restype = ctypes.POINTER(wintypes.LPWSTR)
-
-    argc = ctypes.c_int(0)
-    argv_arr = CommandLineToArgv(GetCommandLine(), ctypes.byref(argc))
-    # The first argv will be "python", the second will be the .py file
-    argv = argv_arr[1:argc.value]
-  else:
-    # For consistency, do it on Unix as well
-    if sys.stdin.encoding is not None:
-      argv = [unicode(arg, sys.stdin.encoding) for arg in sys.argv]
-    else:
-      argv = [unicode(arg) for arg in sys.argv]
-
-  sys.exit(_nsinstall_internal(argv[1:]))
deleted file mode 100644
--- a/js/src/config/pathsub.c
+++ /dev/null
@@ -1,215 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* 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/. */
-/*
-** Pathname subroutines.
-**
-** Brendan Eich, 8/29/95
-*/
-#include <assert.h>
-#include <sys/types.h>
-#include <dirent.h>
-#include <errno.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/stat.h>
-#include "pathsub.h"
-
-#ifdef USE_REENTRANT_LIBC
-#include <libc_r.h>
-#endif
-
-#ifdef SUNOS4
-#include "sunos4.h"
-#endif
-
-#ifndef D_INO
-#define D_INO	d_ino
-#endif
-
-char *program;
-
-void
-fail(char *format, ...)
-{
-    int error;
-    va_list ap;
-
-#ifdef USE_REENTRANT_LIBC
-    R_STRERROR_INIT_R();
-#endif
-
-    error = errno;
-    fprintf(stderr, "%s: ", program);
-    va_start(ap, format);
-    vfprintf(stderr, format, ap);
-    va_end(ap);
-    if (error) {
-
-#ifdef USE_REENTRANT_LIBC
-    R_STRERROR_R(errno);
-	fprintf(stderr, ": %s", r_strerror_r);
-#else
-	fprintf(stderr, ": %s", strerror(errno));
-#endif
-    }
-
-    putc('\n', stderr);
-    exit(1);
-}
-
-char *
-getcomponent(char *path, char *name)
-{
-    if (*path == '\0')
-	return 0;
-    if (*path == '/') {
-	*name++ = '/';
-    } else {
-	do {
-	    *name++ = *path++;
-	} while (*path != '/' && *path != '\0');
-    }
-    *name = '\0';
-    while (*path == '/')
-	path++;
-    return path;
-}
-
-#ifdef LAME_READDIR
-#include <sys/param.h>
-/*
-** The static buffer in Unixware's readdir is too small.
-*/
-struct dirent *readdir(DIR *d)
-{
-        static struct dirent *buf = NULL;
-
-        if(buf == NULL)
-                buf = (struct dirent *) malloc(sizeof(struct dirent) + MAXPATHLEN);
-        return(readdir_r(d, buf));
-}
-#endif
-
-char *
-ino2name(ino_t ino)
-{
-    DIR *dp;
-    struct dirent *ep;
-    char *name;
-
-    dp = opendir("..");
-    if (!dp)
-	fail("cannot read parent directory");
-    for (;;) {
-	if (!(ep = readdir(dp)))
-	    fail("cannot find current directory");
-	if (ep->D_INO == ino)
-	    break;
-    }
-    name = xstrdup(ep->d_name);
-    closedir(dp);
-    return name;
-}
-
-void *
-xmalloc(size_t size)
-{
-    void *p = malloc(size);
-    if (!p)
-	fail("cannot allocate %u bytes", size);
-    return p;
-}
-
-char *
-xstrdup(char *s)
-{
-    return strcpy(xmalloc(strlen(s) + 1), s);
-}
-
-char *
-xbasename(char *path)
-{
-    char *cp;
-
-    while ((cp = strrchr(path, '/')) && cp[1] == '\0')
-	*cp = '\0';
-    if (!cp) return path;
-    return cp + 1;
-}
-
-void
-xchdir(char *dir)
-{
-    if (chdir(dir) < 0)
-	fail("cannot change directory to %s", dir);
-}
-
-int
-relatepaths(char *from, char *to, char *outpath)
-{
-    char *cp, *cp2;
-    int len;
-    char buf[NAME_MAX];
-
-    assert(*from == '/' && *to == '/');
-    for (cp = to, cp2 = from; *cp == *cp2; cp++, cp2++)
-	if (*cp == '\0')
-	    break;
-    while (cp[-1] != '/')
-	cp--, cp2--;
-    if (cp - 1 == to) {
-	/* closest common ancestor is /, so use full pathname */
-	len = strlen(strcpy(outpath, to));
-	if (outpath[len] != '/') {
-	    outpath[len++] = '/';
-	    outpath[len] = '\0';
-	}
-    } else {
-	len = 0;
-	while ((cp2 = getcomponent(cp2, buf)) != 0) {
-	    strcpy(outpath + len, "../");
-	    len += 3;
-	}
-	while ((cp = getcomponent(cp, buf)) != 0) {
-	    sprintf(outpath + len, "%s/", buf);
-	    len += strlen(outpath + len);
-	}
-    }
-    return len;
-}
-
-void
-reversepath(char *inpath, char *name, int len, char *outpath)
-{
-    char *cp, *cp2;
-    char buf[NAME_MAX];
-    struct stat sb;
-
-    cp = strcpy(outpath + PATH_MAX - (len + 1), name);
-    cp2 = inpath;
-    while ((cp2 = getcomponent(cp2, buf)) != 0) {
-	if (strcmp(buf, ".") == 0)
-	    continue;
-	if (strcmp(buf, "..") == 0) {
-	    if (stat(".", &sb) < 0)
-		fail("cannot stat current directory");
-	    name = ino2name(sb.st_ino);
-	    len = strlen(name);
-	    cp -= len + 1;
-	    strcpy(cp, name);
-	    cp[len] = '/';
-	    free(name);
-	    xchdir("..");
-	} else {
-	    cp -= 3;
-	    strncpy(cp, "../", 3);
-	    xchdir(buf);
-	}
-    }
-    strcpy(outpath, cp);
-}
deleted file mode 100644
--- a/js/src/config/pathsub.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* 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/. */
-
-#ifndef pathsub_h___
-#define pathsub_h___
-/*
-** Pathname subroutines.
-**
-** Brendan Eich, 8/29/95
-*/
-#include <limits.h>
-#include <sys/types.h>
-
-#ifndef PATH_MAX
-#define PATH_MAX 1024
-#endif
-
-/*
- * Just prevent stupidity
- */
-#undef NAME_MAX
-#define NAME_MAX 256
-
-extern char *program;
-
-extern void fail(char *format, ...);
-extern char *getcomponent(char *path, char *name);
-extern char *ino2name(ino_t ino);
-extern void *xmalloc(size_t size);
-extern char *xstrdup(char *s);
-extern char *xbasename(char *path);
-extern void xchdir(char *dir);
-
-/* Relate absolute pathnames from and to returning the result in outpath. */
-extern int relatepaths(char *from, char *to, char *outpath);
-
-/* XXX changes current working directory -- caveat emptor */
-extern void reversepath(char *inpath, char *name, int len, char *outpath);
-
-#endif /* pathsub_h___ */
deleted file mode 100644
--- a/js/src/config/pythonpath.py
+++ /dev/null
@@ -1,56 +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/.
-
-"""
-Run a python script, adding extra directories to the python path.
-"""
-
-
-def main(args):
-    def usage():
-        print >>sys.stderr, "pythonpath.py -I directory script.py [args...]"
-        sys.exit(150)
-
-    paths = []
-
-    while True:
-        try:
-            arg = args[0]
-        except IndexError:
-            usage()
-
-        if arg == '-I':
-            args.pop(0)
-            try:
-                path = args.pop(0)
-            except IndexError:
-                usage()
-
-            paths.append(os.path.abspath(path))
-            continue
-
-        if arg.startswith('-I'):
-            paths.append(os.path.abspath(args.pop(0)[2:]))
-            continue
-
-        break
-
-    script = args[0]
-
-    sys.path[0:0] = [os.path.abspath(os.path.dirname(script))] + paths
-    sys.argv = args
-    sys.argc = len(args)
-
-    frozenglobals['__name__'] = '__main__'
-    frozenglobals['__file__'] = script
-
-    execfile(script, frozenglobals)
-
-# Freeze scope here ... why this makes things work I have no idea ...
-frozenglobals = globals()
-
-import sys, os
-
-if __name__ == '__main__':
-    main(sys.argv[1:])
deleted file mode 100644
--- a/js/src/config/rebuild_check.py
+++ /dev/null
@@ -1,44 +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/.
-
-import os
-import errno
-
-def mtime(path):
-    try:
-        return os.stat(path).st_mtime
-    except OSError as e:
-        if e.errno == errno.ENOENT:
-            return -1
-        raise
-
-def rebuild_check(args):
-    target = args[0]
-    deps = args[1:]
-    t = mtime(target)
-    if t < 0:
-        print target
-        return
-
-    newer = []
-    removed = []
-    for dep in deps:
-        deptime = mtime(dep)
-        if deptime < 0:
-            removed.append(dep)
-        elif mtime(dep) > t:
-            newer.append(dep)
-
-    if newer and removed:
-        print 'Rebuilding %s because %s changed and %s was removed' % (target, ', '.join(newer), ', '.join(removed))
-    elif newer:
-        print 'Rebuilding %s because %s changed' % (target, ', '.join(newer))
-    elif removed:
-        print 'Rebuilding %s because %s was removed' % (target, ', '.join(removed))
-    else:
-        print 'Rebuilding %s for an unknown reason' % target
-
-if __name__ == '__main__':
-    import sys
-    rebuild_check(sys.argv[1:])
deleted file mode 100644
--- a/js/src/config/recurse.mk
+++ /dev/null
@@ -1,243 +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/.
-
-ifndef INCLUDED_RULES_MK
-include $(topsrcdir)/config/rules.mk
-endif
-
-# The traditional model of directory traversal with make is as follows:
-#   make -C foo
-#     Entering foo
-#     make -C bar
-#       Entering foo/bar
-#     make -C baz
-#       Entering foo/baz
-#   make -C qux
-#     Entering qux
-#
-# Pseudo derecurse transforms the above into:
-#   make -C foo
-#   make -C foo/bar
-#   make -C foo/baz
-#   make -C qux
-
-# MOZ_PSEUDO_DERECURSE can have values other than 1.
-ifeq (1_.,$(if $(MOZ_PSEUDO_DERECURSE),1)_$(DEPTH))
-
-include root.mk
-
-# Disable build status for mach in top directories without TIERS.
-# In practice this disables it when recursing under js/src, which confuses mach.
-ifndef TIERS
-BUILDSTATUS =
-endif
-
-# Main rules (export, compile, binaries, libs and tools) call recurse_* rules.
-# This wrapping is only really useful for build status.
-compile binaries libs export tools::
-	$(call BUILDSTATUS,TIER_START $@ $($@_subtiers))
-	+$(MAKE) recurse_$@
-	$(call BUILDSTATUS,TIER_FINISH $@)
-
-# Carefully avoid $(eval) type of rule generation, which makes pymake slower
-# than necessary.
-# Get current tier and corresponding subtiers from the data in root.mk.
-CURRENT_TIER := $(filter $(foreach tier,compile binaries libs export tools,recurse_$(tier) $(tier)-deps),$(MAKECMDGOALS))
-ifneq (,$(filter-out 0 1,$(words $(CURRENT_TIER))))
-$(error $(CURRENT_TIER) not supported on the same make command line)
-endif
-CURRENT_TIER := $(subst recurse_,,$(CURRENT_TIER:-deps=))
-CURRENT_SUBTIERS := $($(CURRENT_TIER)_subtiers)
-
-# The rules here are doing directory traversal, so we don't want further
-# recursion to happen when running make -C subdir $tier. But some make files
-# further call make -C something else, and sometimes expect recursion to
-# happen in that case (see browser/metro/locales/Makefile.in for example).
-# Conveniently, every invocation of make increases MAKELEVEL, so only stop
-# recursion from happening at current MAKELEVEL + 1.
-ifdef CURRENT_TIER
-ifeq (0,$(MAKELEVEL))
-export NO_RECURSE_MAKELEVEL=1
-else
-export NO_RECURSE_MAKELEVEL=$(word $(MAKELEVEL),2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20)
-endif
-endif
-
-# Get all directories traversed for all subtiers in the current tier, or use
-# directly the $(*_dirs) variables available in root.mk when there is no
-# TIERS (like for js/src).
-CURRENT_DIRS := $(or $($(CURRENT_TIER)_dirs),$(foreach subtier,$(CURRENT_SUBTIERS),$($(CURRENT_TIER)_subtier_$(subtier))))
-
-ifneq (,$(filter binaries libs,$(CURRENT_TIER)))
-WANT_STAMPS = 1
-STAMP_TOUCH = $(TOUCH) $(@D)/binaries
-endif
-
-# Subtier delimiter rules
-$(addprefix subtiers/,$(addsuffix _start/$(CURRENT_TIER),$(CURRENT_SUBTIERS))): subtiers/%_start/$(CURRENT_TIER): $(if $(WANT_STAMPS),$(call mkdir_deps,subtiers/%_start))
-	$(call BUILDSTATUS,SUBTIER_START $(CURRENT_TIER) $* $(if $(BUG_915535_FIXED),$($(CURRENT_TIER)_subtier_$*)))
-	@$(STAMP_TOUCH)
-
-$(addprefix subtiers/,$(addsuffix _finish/$(CURRENT_TIER),$(CURRENT_SUBTIERS))): subtiers/%_finish/$(CURRENT_TIER): $(if $(WANT_STAMPS),$(call mkdir_deps,subtiers/%_finish))
-	$(call BUILDSTATUS,SUBTIER_FINISH $(CURRENT_TIER) $*)
-	@$(STAMP_TOUCH)
-
-$(addprefix subtiers/,$(addsuffix /$(CURRENT_TIER),$(CURRENT_SUBTIERS))): %/$(CURRENT_TIER): $(if $(WANT_STAMPS),$(call mkdir_deps,%))
-	@$(STAMP_TOUCH)
-
-GARBAGE_DIRS += subtiers
-
-# Recursion rule for all directories traversed for all subtiers in the
-# current tier.
-# root.mk defines subtier_of_* variables, that map a normalized subdir path to
-# a subtier name (e.g. subtier_of_memory_jemalloc = base)
-$(addsuffix /$(CURRENT_TIER),$(CURRENT_DIRS)): %/$(CURRENT_TIER):
-ifdef BUG_915535_FIXED
-	$(call BUILDSTATUS,TIERDIR_START $(CURRENT_TIER) $(subtier_of_$(subst /,_,$*)) $*)
-endif
-	+@$(MAKE) -C $* $(if $(filter $*,$(tier_$(subtier_of_$(subst /,_,$*))_staticdirs)),,$(CURRENT_TIER))
-# Ensure existing stamps are up-to-date, but don't create one if submake didn't create one.
-	$(if $(wildcard $@),@$(STAMP_TOUCH))
-ifdef BUG_915535_FIXED
-	$(call BUILDSTATUS,TIERDIR_FINISH $(CURRENT_TIER) $(subtier_of_$(subst /,_,$*)) $*)
-endif
-
-# Dummy rules for possibly inexisting dependencies for the above tier targets
-$(addsuffix /Makefile,$(CURRENT_DIRS)) $(addsuffix /backend.mk,$(CURRENT_DIRS)):
-
-# The export tier requires nsinstall, which is built from config. So every
-# subdirectory traversal needs to happen after traversing config.
-ifeq ($(CURRENT_TIER),export)
-$(addsuffix /$(CURRENT_TIER),$(filter-out config,$(CURRENT_DIRS))): config/$(CURRENT_TIER)
-endif
-
-ifdef COMPILE_ENVIRONMENT
-ifneq (,$(filter libs binaries,$(CURRENT_TIER)))
-# When doing a "libs" build, target_libs.mk ensures the interesting dependency data
-# is available in the "binaries" stamp. Once recursion is done, aggregate all that
-# dependency info so that stamps depend on relevant files and relevant other stamps.
-# When doing a "binaries" build, the aggregate dependency file and those stamps are
-# used and allow to skip recursing directories where changes are not going to require
-# rebuild. A few directories, however, are still traversed all the time, mostly, the
-# gyp managed ones and js/src.
-# A few things that are not traversed by a "binaries" build, but should, in an ideal
-# world, are nspr, nss, icu and ffi.
-recurse_$(CURRENT_TIER):
-	@$(MAKE) binaries-deps
-
-# Creating binaries-deps.mk directly would make us build it twice: once when beginning
-# the build because of the include, and once at the end because of the stamps.
-binaries-deps: $(addsuffix /binaries,$(CURRENT_DIRS))
-	@$(call py_action,link_deps,-o $@.mk --group-by-depfile --topsrcdir $(topsrcdir) --topobjdir $(DEPTH) --dist $(DIST) --guard $(addprefix ',$(addsuffix ',$^)))
-	@$(TOUCH) $@
-
-ifeq (recurse_binaries,$(MAKECMDGOALS))
-$(call include_deps,binaries-deps.mk)
-endif
-
-endif
-
-DIST_GARBAGE += binaries-deps.mk binaries-deps
-
-endif
-
-else
-
-# Don't recurse if MAKELEVEL is NO_RECURSE_MAKELEVEL as defined above, but
-# still recurse for externally managed make files (gyp-generated ones).
-ifeq ($(EXTERNALLY_MANAGED_MAKE_FILE)_$(NO_RECURSE_MAKELEVEL),_$(MAKELEVEL))
-
-compile binaries libs export tools::
-
-else
-#########################
-# Tier traversal handling
-#########################
-
-ifdef TIERS
-
-libs export tools::
-	$(call BUILDSTATUS,TIER_START $@ $(filter-out $(if $(filter export,$@),,precompile),$(TIERS)))
-	$(foreach tier,$(TIERS), $(if $(filter-out libs_precompile tools_precompile,$@_$(tier)), \
-		$(call BUILDSTATUS,SUBTIER_START $@ $(tier) $(if $(filter libs,$@),$(tier_$(tier)_staticdirs)) $(tier_$(tier)_dirs)) \
-		$(if $(filter libs,$@),$(foreach dir, $(tier_$(tier)_staticdirs), $(call TIER_DIR_SUBMAKE,$@,$(tier),$(dir),,1))) \
-		$(foreach dir, $(tier_$(tier)_dirs), $(call TIER_DIR_SUBMAKE,$@,$(tier),$(dir),$@)) \
-		$(call BUILDSTATUS,SUBTIER_FINISH $@ $(tier))))
-	$(call BUILDSTATUS,TIER_FINISH $@)
-
-else
-
-define CREATE_SUBTIER_TRAVERSAL_RULE
-PARALLEL_DIRS_$(1) = $$(addsuffix _$(1),$$(PARALLEL_DIRS))
-
-.PHONY: $(1) $$(PARALLEL_DIRS_$(1))
-
-ifdef PARALLEL_DIRS
-$$(PARALLEL_DIRS_$(1)): %_$(1): %/Makefile
-	+@$$(call SUBMAKE,$(1),$$*)
-endif
-
-$(1):: $$(SUBMAKEFILES)
-ifdef PARALLEL_DIRS
-	+@$(MAKE) $$(PARALLEL_DIRS_$(1))
-endif
-	$$(LOOP_OVER_DIRS)
-
-endef
-
-$(foreach subtier,export compile binaries libs tools,$(eval $(call CREATE_SUBTIER_TRAVERSAL_RULE,$(subtier))))
-
-tools export:: $(SUBMAKEFILES)
-	$(LOOP_OVER_TOOL_DIRS)
-
-endif # ifdef TIERS
-
-endif # ifeq ($(EXTERNALLY_MANAGED_MAKE_FILE)_$(NO_RECURSE_MAKELEVEL),_$(MAKELEVEL))
-
-endif # ifeq (1_.,$(MOZ_PSEUDO_DERECURSE)_$(DEPTH))
-
-ifdef MOZ_PSEUDO_DERECURSE
-ifdef EXTERNALLY_MANAGED_MAKE_FILE
-# gyp-managed directories
-recurse_targets := $(addsuffix /binaries,$(DIRS) $(PARALLEL_DIRS))
-else
-ifeq (.,$(DEPTH))
-# top-level directories
-recurse_targets := $(addsuffix /binaries,$(binaries_dirs))
-ifdef recurse_targets
-# only js/src has binaries_dirs, and we want to adjust paths for it.
-want_abspaths = 1
-endif
-endif
-endif
-
-ifdef COMPILE_ENVIRONMENT
-
-# Aggregate all dependency files relevant to a binaries build except in
-# the mozilla top-level directory.
-ifneq (_.,$(recurse_targets)_$(DEPTH))
-ALL_DEP_FILES := \
-  $(BINARIES_PP) \
-  $(addsuffix .pp,$(addprefix $(MDDEPDIR)/,$(sort \
-    $(TARGETS) \
-    $(filter-out $(SOBJS) $(ASOBJS) $(EXCLUDED_OBJS),$(OBJ_TARGETS)) \
-  ))) \
-  $(recurse_targets) \
-  $(NULL)
-endif
-
-binaries libs:: $(TARGETS) $(BINARIES_PP)
-ifneq (_.,$(recurse_targets)_$(DEPTH))
-	@$(if $(or $(recurse_targets),$^),$(call py_action,link_deps,-o binaries --group-all $(if $(want_abspaths),--abspaths )--topsrcdir $(topsrcdir) --topobjdir $(DEPTH) --dist $(DIST) $(ALL_DEP_FILES)))
-endif
-
-endif
-
-endif # ifdef MOZ_PSEUDO_DERECURSE
-
-recurse:
-	@$(RECURSED_COMMAND)
-	$(LOOP_OVER_PARALLEL_DIRS)
-	$(LOOP_OVER_DIRS)
-	$(LOOP_OVER_TOOL_DIRS)
deleted file mode 100644
--- a/js/src/config/rules.mk
+++ /dev/null
@@ -1,1703 +0,0 @@
-# -*- makefile -*-
-# vim:set ts=8 sw=8 sts=8 noet:
-#
-# 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/.
-#
-
-ifndef topsrcdir
-$(error topsrcdir was not set))
-endif
-
-# Define an include-at-most-once flag
-ifdef INCLUDED_RULES_MK
-$(error Do not include rules.mk twice!)
-endif
-INCLUDED_RULES_MK = 1
-
-# Make sure that anything that needs to be defined in moz.build wasn't
-# overwritten.
-_eval_for_side_effects := $(CHECK_MOZBUILD_VARIABLES)
-
-ifndef MOZILLA_DIR
-MOZILLA_DIR = $(topsrcdir)
-endif
-
-ifndef INCLUDED_CONFIG_MK
-include $(topsrcdir)/config/config.mk
-endif
-
-ifndef INCLUDED_VERSION_MK
-include $(topsrcdir)/config/version.mk
-endif
-
-USE_AUTOTARGETS_MK = 1
-include $(topsrcdir)/config/makefiles/makeutils.mk
-
-# Only build with Pymake (not GNU make) on Windows.
-ifeq ($(HOST_OS_ARCH),WINNT)
-ifndef L10NBASEDIR
-ifndef .PYMAKE
-$(error Pymake is required to build on Windows. Run |./mach build| to \
-automatically use pymake or invoke pymake directly via \
-|python build/pymake/make.py|.)
-endif
-endif
-endif
-
-ifdef REBUILD_CHECK
-ifdef .PYMAKE
-REPORT_BUILD = @%rebuild_check rebuild_check $@ $^
-else
-REPORT_BUILD = $(info $(shell $(PYTHON) $(MOZILLA_DIR)/config/rebuild_check.py $@ $^))
-endif
-else
-REPORT_BUILD = $(info $(notdir $@))
-endif
-
-ifeq ($(OS_ARCH),OS2)
-EXEC			=
-else
-EXEC			= exec
-endif
-
-# Don't copy xulrunner files at install time, when using system xulrunner
-ifdef SYSTEM_LIBXUL
-  SKIP_COPY_XULRUNNER=1
-endif
-
-# ELOG prints out failed command when building silently (gmake -s). Pymake
-# prints out failed commands anyway, so ELOG just makes things worse by
-# forcing shell invocations.
-ifndef .PYMAKE
-ifneq (,$(findstring s, $(filter-out --%, $(MAKEFLAGS))))
-  ELOG := $(EXEC) sh $(BUILD_TOOLS)/print-failed-commands.sh
-else
-  ELOG :=
-endif # -s
-else
-  ELOG :=
-endif # ifndef .PYMAKE
-
-_VPATH_SRCS = $(abspath $<)
-
-################################################################################
-# Testing frameworks support
-################################################################################
-
-testxpcobjdir = $(DEPTH)/_tests/xpcshell
-
-ifdef ENABLE_TESTS
-
-# Add test directories to the regular directories list. TEST_DIRS should
-# arguably have the same status as TOOL_DIRS and other *_DIRS variables. It is
-# coded this way until Makefiles stop using the "ifdef ENABLE_TESTS; DIRS +="
-# convention.
-#
-# The current developer workflow expects tests to be updated when processing
-# the default target. If we ever change this implementation, the behavior
-# should be preserved or the change should be widely communicated. A
-# consequence of not processing test dir targets during the default target is
-# that changes to tests may not be updated and code could assume to pass
-# locally against non-current test code.
-DIRS += $(TEST_DIRS)
-
-ifndef INCLUDED_TESTS_MOCHITEST_MK #{
-  include $(topsrcdir)/config/makefiles/mochitest.mk
-endif #}
-
-ifdef CPP_UNIT_TESTS
-ifdef COMPILE_ENVIRONMENT
-
-# Compile the tests to $(DIST)/bin.  Make lots of niceties available by default
-# through TestHarness.h, by modifying the list of includes and the libs against
-# which stuff links.
-CPPSRCS += $(CPP_UNIT_TESTS)
-CPP_UNIT_TEST_BINS := $(CPP_UNIT_TESTS:.cpp=$(BIN_SUFFIX))
-SIMPLE_PROGRAMS += $(CPP_UNIT_TEST_BINS)
-INCLUDES += -I$(DIST)/include/testing
-LIBS += $(XPCOM_GLUE_LDOPTS) $(NSPR_LIBS)
-
-ifndef MOZ_PROFILE_GENERATE
-libs:: $(CPP_UNIT_TEST_BINS) $(call mkdir_deps,$(DIST)/cppunittests)
-	$(NSINSTALL) $(CPP_UNIT_TEST_BINS) $(DIST)/cppunittests
-endif
-
-cppunittests-remote: DM_TRANS?=adb
-cppunittests-remote:
-	@if [ '${TEST_DEVICE}' != '' -o '$(DM_TRANS)' = 'adb' ]; then \
-		$(PYTHON) -u $(topsrcdir)/testing/remotecppunittests.py \
-			--xre-path=$(DEPTH)/dist/bin \
-			--localLib=$(DEPTH)/dist/$(MOZ_APP_NAME) \
-			--dm_trans=$(DM_TRANS) \
-			--deviceIP=${TEST_DEVICE} \
-			$(subst .cpp,$(BIN_SUFFIX),$(CPP_UNIT_TESTS)) $(EXTRA_TEST_ARGS); \
-	else \
-		echo 'please prepare your host with environment variables for TEST_DEVICE'; \
-	fi
-
-endif # COMPILE_ENVIRONMENT
-endif # CPP_UNIT_TESTS
-
-.PHONY: check
-
-ifdef PYTHON_UNIT_TESTS
-
-RUN_PYTHON_UNIT_TESTS := $(addsuffix -run,$(PYTHON_UNIT_TESTS))
-
-.PHONY: $(RUN_PYTHON_UNIT_TESTS)
-
-check:: $(RUN_PYTHON_UNIT_TESTS)
-
-$(RUN_PYTHON_UNIT_TESTS): %-run: %
-	@PYTHONDONTWRITEBYTECODE=1 $(PYTHON) $<
-
-endif # PYTHON_UNIT_TESTS
-
-endif # ENABLE_TESTS
-
-
-#
-# Library rules
-#
-# If FORCE_STATIC_LIB is set, build a static library.
-# Otherwise, build a shared library.
-#
-
-ifndef LIBRARY
-ifdef STATIC_LIBRARY_NAME
-REAL_LIBRARY		:= $(LIB_PREFIX)$(STATIC_LIBRARY_NAME).$(LIB_SUFFIX)
-# Only build actual library if it is installed in DIST/lib or SDK
-ifeq (,$(SDK_LIBRARY)$(DIST_INSTALL)$(NO_EXPAND_LIBS))
-LIBRARY			:= $(REAL_LIBRARY).$(LIBS_DESC_SUFFIX)
-else
-LIBRARY			:= $(REAL_LIBRARY) $(REAL_LIBRARY).$(LIBS_DESC_SUFFIX)
-endif
-endif # STATIC_LIBRARY_NAME
-endif # LIBRARY
-
-ifndef HOST_LIBRARY
-ifdef HOST_LIBRARY_NAME
-HOST_LIBRARY		:= $(LIB_PREFIX)$(HOST_LIBRARY_NAME).$(LIB_SUFFIX)
-endif
-endif
-
-ifdef LIBRARY
-ifdef FORCE_SHARED_LIB
-ifdef MKSHLIB
-
-ifdef LIB_IS_C_ONLY
-MKSHLIB			= $(MKCSHLIB)
-endif
-
-ifneq (,$(filter OS2 WINNT,$(OS_ARCH)))
-IMPORT_LIBRARY		:= $(LIB_PREFIX)$(SHARED_LIBRARY_NAME).$(IMPORT_LIB_SUFFIX)
-endif
-
-ifdef MAKE_FRAMEWORK
-SHARED_LIBRARY		:= $(SHARED_LIBRARY_NAME)
-else
-SHARED_LIBRARY		:= $(DLL_PREFIX)$(SHARED_LIBRARY_NAME)$(DLL_SUFFIX)
-endif
-
-ifeq ($(OS_ARCH),OS2)
-DEF_FILE		:= $(SHARED_LIBRARY:.dll=.def)
-endif
-
-EMBED_MANIFEST_AT=2
-
-endif # MKSHLIB
-endif # FORCE_SHARED_LIB
-endif # LIBRARY
-
-ifdef FORCE_STATIC_LIB
-ifndef FORCE_SHARED_LIB
-SHARED_LIBRARY		:= $(NULL)
-DEF_FILE		:= $(NULL)
-IMPORT_LIBRARY		:= $(NULL)
-endif
-endif
-
-ifdef FORCE_SHARED_LIB
-ifndef FORCE_STATIC_LIB
-LIBRARY := $(NULL)
-endif
-endif
-
-ifeq ($(OS_ARCH),WINNT)
-ifndef GNU_CC
-
-#
-# Unless we're building SIMPLE_PROGRAMS, all C++ files share a PDB file per
-# directory. For parallel builds, this PDB file is shared and locked by
-# MSPDBSRV.EXE, starting with MSVC8 SP1. If you're using MSVC 7.1 or MSVC8
-# without SP1, don't do parallel builds.
-#
-# The final PDB for libraries and programs is created by the linker and uses
-# a different name from the single PDB file created by the compiler. See
-# bug 462740.
-#
-
-ifdef SIMPLE_PROGRAMS
-COMPILE_PDBFILE = $(basename $(@F)).pdb
-else
-COMPILE_PDBFILE = generated.pdb
-endif
-
-LINK_PDBFILE = $(basename $(@F)).pdb
-ifdef MOZ_DEBUG
-CODFILE=$(basename $(@F)).cod
-endif
-
-ifdef DEFFILE
-OS_LDFLAGS += -DEF:$(call normalizepath,$(DEFFILE))
-EXTRA_DEPS += $(DEFFILE)
-endif
-
-else #!GNU_CC
-
-ifdef DEFFILE
-OS_LDFLAGS += $(call normalizepath,$(DEFFILE))
-EXTRA_DEPS += $(DEFFILE)
-endif
-
-endif # !GNU_CC
-
-endif # WINNT
-
-ifeq ($(SOLARIS_SUNPRO_CXX),1)
-ifeq (86,$(findstring 86,$(OS_TEST)))
-OS_LDFLAGS += -M $(topsrcdir)/config/solaris_ia32.map
-endif # x86
-endif # Solaris Sun Studio C++
-
-ifeq ($(HOST_OS_ARCH),WINNT)
-HOST_PDBFILE=$(basename $(@F)).pdb
-endif
-
-# Don't build SIMPLE_PROGRAMS during the MOZ_PROFILE_GENERATE pass
-ifdef MOZ_PROFILE_GENERATE
-EXCLUDED_OBJS := $(SIMPLE_PROGRAMS:$(BIN_SUFFIX)=.$(OBJ_SUFFIX))
-SIMPLE_PROGRAMS :=
-endif
-
-ifdef COMPILE_ENVIRONMENT
-ifndef TARGETS
-TARGETS			= $(LIBRARY) $(SHARED_LIBRARY) $(PROGRAM) $(SIMPLE_PROGRAMS) $(HOST_LIBRARY) $(HOST_PROGRAM) $(HOST_SIMPLE_PROGRAMS)
-endif
-
-COBJS = $(notdir $(CSRCS:.c=.$(OBJ_SUFFIX)))
-SOBJS = $(notdir $(SSRCS:.S=.$(OBJ_SUFFIX)))
-# CPPSRCS can have different extensions (eg: .cpp, .cc)
-CPPOBJS = $(notdir $(addsuffix .$(OBJ_SUFFIX),$(basename $(CPPSRCS))))
-CMOBJS = $(notdir $(CMSRCS:.m=.$(OBJ_SUFFIX)))
-CMMOBJS = $(notdir $(CMMSRCS:.mm=.$(OBJ_SUFFIX)))
-ASOBJS = $(notdir $(ASFILES:.$(ASM_SUFFIX)=.$(OBJ_SUFFIX)))
-ifndef OBJS
-_OBJS = $(COBJS) $(SOBJS) $(CPPOBJS) $(CMOBJS) $(CMMOBJS) $(ASOBJS)
-OBJS = $(strip $(_OBJS))
-endif
-
-HOST_COBJS = $(addprefix host_,$(notdir $(HOST_CSRCS:.c=.$(OBJ_SUFFIX))))
-# HOST_CPPOBJS can have different extensions (eg: .cpp, .cc)
-HOST_CPPOBJS = $(addprefix host_,$(notdir $(addsuffix .$(OBJ_SUFFIX),$(basename $(HOST_CPPSRCS)))))
-HOST_CMOBJS = $(addprefix host_,$(notdir $(HOST_CMSRCS:.m=.$(OBJ_SUFFIX))))
-HOST_CMMOBJS = $(addprefix host_,$(notdir $(HOST_CMMSRCS:.mm=.$(OBJ_SUFFIX))))
-ifndef HOST_OBJS
-_HOST_OBJS = $(HOST_COBJS) $(HOST_CPPOBJS) $(HOST_CMOBJS) $(HOST_CMMOBJS)
-HOST_OBJS = $(strip $(_HOST_OBJS))
-endif
-else
-LIBRARY :=
-SHARED_LIBRARY :=
-IMPORT_LIBRARY :=
-REAL_LIBRARY :=
-PROGRAM :=
-SIMPLE_PROGRAMS :=
-HOST_LIBRARY :=
-HOST_PROGRAM :=
-HOST_SIMPLE_PROGRAMS :=
-SDK_BINARY := $(filter %.py,$(SDK_BINARY))
-SDK_LIBRARY :=
-endif
-
-ALL_TRASH = \
-	$(GARBAGE) $(TARGETS) $(OBJS) $(PROGOBJS) LOGS TAGS a.out \
-	$(filter-out $(ASFILES),$(OBJS:.$(OBJ_SUFFIX)=.s)) $(OBJS:.$(OBJ_SUFFIX)=.ii) \
-	$(OBJS:.$(OBJ_SUFFIX)=.i) $(OBJS:.$(OBJ_SUFFIX)=.i_o) \
-	$(HOST_PROGOBJS) $(HOST_OBJS) $(IMPORT_LIBRARY) $(DEF_FILE)\
-	$(EXE_DEF_FILE) so_locations _gen _stubs $(wildcard *.res) $(wildcard *.RES) \
-	$(wildcard *.pdb) $(CODFILE) $(IMPORT_LIBRARY) \
-	$(SHARED_LIBRARY:$(DLL_SUFFIX)=.exp) $(wildcard *.ilk) \
-	$(PROGRAM:$(BIN_SUFFIX)=.exp) $(SIMPLE_PROGRAMS:$(BIN_SUFFIX)=.exp) \
-	$(PROGRAM:$(BIN_SUFFIX)=.lib) $(SIMPLE_PROGRAMS:$(BIN_SUFFIX)=.lib) \
-	$(SIMPLE_PROGRAMS:$(BIN_SUFFIX)=.$(OBJ_SUFFIX)) \
-	$(wildcard gts_tmp_*) $(LIBRARY:%.a=.%.timestamp)
-ALL_TRASH_DIRS = \
-	$(GARBAGE_DIRS) /no-such-file
-
-ifdef QTDIR
-GARBAGE                 += $(MOCSRCS)
-endif
-
-ifdef SIMPLE_PROGRAMS
-GARBAGE			+= $(SIMPLE_PROGRAMS:%=%.$(OBJ_SUFFIX))
-endif
-
-ifdef HOST_SIMPLE_PROGRAMS
-GARBAGE			+= $(HOST_SIMPLE_PROGRAMS:%=%.$(OBJ_SUFFIX))
-endif
-
-#
-# the Solaris WorkShop template repository cache.  it occasionally can get
-# out of sync, so targets like clobber should kill it.
-#
-ifeq ($(SOLARIS_SUNPRO_CXX),1)
-GARBAGE_DIRS += SunWS_cache
-endif
-
-ifdef MOZ_UPDATE_XTERM
-# Its good not to have a newline at the end of the titlebar string because it
-# makes the make -s output easier to read.  Echo -n does not work on all
-# platforms, but we can trick printf into doing it.
-UPDATE_TITLE = printf '\033]0;%s in %s\007' $(1) $(relativesrcdir)/$(2) ;
-endif
-
-ifdef MACH
-ifndef NO_BUILDSTATUS_MESSAGES
-define BUILDSTATUS
-@echo 'BUILDSTATUS $1'
-
-endef
-endif
-endif
-
-define SUBMAKE # $(call SUBMAKE,target,directory,static)
-+@$(UPDATE_TITLE)
-+$(MAKE) $(if $(2),-C $(2)) $(1)
-
-endef # The extra line is important here! don't delete it
-
-define TIER_DIR_SUBMAKE
-$(call BUILDSTATUS,TIERDIR_START  $(1) $(2) $(3))
-$(call SUBMAKE,$(4),$(3),$(5))
-$(call BUILDSTATUS,TIERDIR_FINISH $(1) $(2) $(3))
-
-endef # Ths empty line is important.
-
-ifneq (,$(strip $(DIRS)))
-LOOP_OVER_DIRS = \
-  $(foreach dir,$(DIRS),$(call SUBMAKE,$@,$(dir)))
-endif
-
-# we only use this for the makefiles target and other stuff that doesn't matter
-ifneq (,$(strip $(PARALLEL_DIRS)))
-LOOP_OVER_PARALLEL_DIRS = \
-  $(foreach dir,$(PARALLEL_DIRS),$(call SUBMAKE,$@,$(dir)))
-endif
-
-ifneq (,$(strip $(TOOL_DIRS)))
-LOOP_OVER_TOOL_DIRS = \
-  $(foreach dir,$(TOOL_DIRS),$(call SUBMAKE,$@,$(dir)))
-endif
-
-#
-# Now we can differentiate between objects used to build a library, and
-# objects used to build an executable in the same directory.
-#
-ifndef PROGOBJS
-PROGOBJS		= $(OBJS)
-endif
-
-ifndef HOST_PROGOBJS
-HOST_PROGOBJS		= $(HOST_OBJS)
-endif
-
-GARBAGE_DIRS    += $(wildcard $(CURDIR)/$(MDDEPDIR))
-
-#
-# Tags: emacs (etags), vi (ctags)
-# TAG_PROGRAM := ctags -L -
-#
-TAG_PROGRAM		= xargs etags -a
-
-#
-# Turn on C++ linking if we have any .cpp or .mm files
-# (moved this from config.mk so that config.mk can be included
-#  before the CPPSRCS are defined)
-#
-ifneq ($(HOST_CPPSRCS)$(HOST_CMMSRCS),)
-HOST_CPP_PROG_LINK	= 1
-endif
-
-#
-# This will strip out symbols that the component should not be
-# exporting from the .dynsym section.
-#
-ifdef IS_COMPONENT
-EXTRA_DSO_LDOPTS += $(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
-endif # IS_COMPONENT
-
-#
-# MacOS X specific stuff
-#
-
-ifeq ($(OS_ARCH),Darwin)
-ifdef SHARED_LIBRARY
-ifdef IS_COMPONENT
-EXTRA_DSO_LDOPTS	+= -bundle
-else
-EXTRA_DSO_LDOPTS	+= -dynamiclib -install_name @executable_path/$(SHARED_LIBRARY) -compatibility_version 1 -current_version 1 -single_module
-endif
-endif
-endif
-
-#
-# On NetBSD a.out systems, use -Bsymbolic.  This fixes what would otherwise be
-# fatal symbol name clashes between components.
-#
-ifeq ($(OS_ARCH),NetBSD)
-ifeq ($(DLL_SUFFIX),.so.1.0)
-ifdef IS_COMPONENT
-EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic
-endif
-endif
-endif
-
-ifeq ($(OS_ARCH),FreeBSD)
-ifdef IS_COMPONENT
-EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic
-endif
-endif
-
-ifeq ($(OS_ARCH),NetBSD)
-ifneq (,$(filter arc cobalt hpcmips mipsco newsmips pmax sgimips,$(OS_TEST)))
-ifneq (,$(filter layout/%,$(relativesrcdir)))
-OS_CFLAGS += -Wa,-xgot
-OS_CXXFLAGS += -Wa,-xgot
-endif
-endif
-endif
-
-#
-# HP-UXBeOS specific section: for COMPONENTS only, add -Bsymbolic flag
-# which uses internal symbols first
-#
-ifeq ($(OS_ARCH),HP-UX)
-ifdef IS_COMPONENT
-ifeq ($(GNU_CC)$(GNU_CXX),)
-EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic
-ifneq ($(HAS_EXTRAEXPORTS),1)
-MKSHLIB  += -Wl,+eNSGetModule -Wl,+eerrno
-MKCSHLIB += +eNSGetModule +eerrno
-ifneq ($(OS_TEST),ia64)
-MKSHLIB  += -Wl,+e_shlInit
-MKCSHLIB += +e_shlInit
-endif # !ia64
-endif # !HAS_EXTRAEXPORTS
-endif # non-gnu compilers
-endif # IS_COMPONENT
-endif # HP-UX
-
-ifeq ($(OS_ARCH),AIX)
-ifdef IS_COMPONENT
-ifneq ($(HAS_EXTRAEXPORTS),1)
-MKSHLIB += -bE:$(MOZILLA_DIR)/build/unix/aix.exp -bnoexpall
-MKCSHLIB += -bE:$(MOZILLA_DIR)/build/unix/aix.exp -bnoexpall
-endif # HAS_EXTRAEXPORTS
-endif # IS_COMPONENT
-endif # AIX
-
-#
-# Linux: add -Bsymbolic flag for components
-#
-ifeq ($(OS_ARCH),Linux)
-ifdef IS_COMPONENT
-EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic
-endif
-endif
-
-#
-# GNU doesn't have path length limitation
-#
-
-ifeq ($(OS_ARCH),GNU)
-OS_CPPFLAGS += -DPATH_MAX=1024 -DMAXPATHLEN=1024
-endif
-
-#
-# MINGW32
-#
-ifeq ($(OS_ARCH),WINNT)
-ifdef GNU_CC
-ifndef IS_COMPONENT
-DSO_LDOPTS += -Wl,--out-implib -Wl,$(IMPORT_LIBRARY)
-endif
-endif
-endif
-
-ifeq ($(USE_TVFS),1)
-IFLAGS1 = -rb
-IFLAGS2 = -rb
-else
-IFLAGS1 = -m 644
-IFLAGS2 = -m 755
-endif
-
-ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
-OUTOPTION = -Fo# eol
-PREPROCESS_OPTION = -P -Fi# eol
-else
-OUTOPTION = -o # eol
-PREPROCESS_OPTION = -E -o #eol
-endif # WINNT && !GNU_CC
-
-ifneq (,$(filter ml%,$(AS)))
-ASOUTOPTION = -Fo# eol
-else
-ASOUTOPTION = -o # eol
-endif
-
-ifeq (,$(CROSS_COMPILE))
-HOST_OUTOPTION = $(OUTOPTION)
-else
-HOST_OUTOPTION = -o # eol
-endif
-################################################################################
-
-# Ensure the build config is up to date. This is done automatically when builds
-# are performed through |mach build|. The check here is to catch people not
-# using mach. If we ever enforce builds through mach, this code can be removed.
-ifndef MOZBUILD_BACKEND_CHECKED
-ifndef MACH
-ifndef TOPLEVEL_BUILD
-$(DEPTH)/backend.RecursiveMakeBackend:
-	$(error Build configuration changed. Build with |mach build| or run |mach build-backend| to regenerate build config)
-
-include $(DEPTH)/backend.RecursiveMakeBackend.pp
-
-default:: $(DEPTH)/backend.RecursiveMakeBackend
-
-export MOZBUILD_BACKEND_CHECKED=1
-endif
-endif
-endif
-
-# The root makefile doesn't want to do a plain export/libs, because
-# of the tiers and because of libxul. Suppress the default rules in favor
-# of something else. Makefiles which use this var *must* provide a sensible
-# default rule before including rules.mk
-ifndef SUPPRESS_DEFAULT_RULES
-default all::
-	$(MAKE) export
-ifdef MOZ_PSEUDO_DERECURSE
-ifdef COMPILE_ENVIRONMENT
-	$(MAKE) compile
-endif
-endif
-	$(MAKE) libs
-	$(MAKE) tools
-endif # SUPPRESS_DEFAULT_RULES
-
-ifeq ($(findstring s,$(filter-out --%, $(MAKEFLAGS))),)
-ECHO := echo
-QUIET :=
-else
-ECHO := true
-QUIET := -q
-endif
-
-# Do everything from scratch
-everything::
-	$(MAKE) clean
-	$(MAKE) all
-
-ifneq (,$(filter-out %.$(LIB_SUFFIX),$(SHARED_LIBRARY_LIBS)))
-$(error SHARED_LIBRARY_LIBS must contain .$(LIB_SUFFIX) files only)
-endif
-
-HOST_LIBS_DEPS = $(filter %.$(LIB_SUFFIX),$(HOST_LIBS))
-
-# Dependencies which, if modified, should cause everything to rebuild
-GLOBAL_DEPS += Makefile $(DEPTH)/config/autoconf.mk $(topsrcdir)/config/config.mk
-
-##############################################
-ifdef COMPILE_ENVIRONMENT
-OBJ_TARGETS = $(OBJS) $(PROGOBJS) $(HOST_OBJS) $(HOST_PROGOBJS)
-
-compile:: $(OBJ_TARGETS)
-
-include $(topsrcdir)/config/makefiles/target_binaries.mk
-endif
-
-ifdef IS_TOOL_DIR
-# One would think "tools:: libs" would work, but it turns out that combined with
-# bug 907365, this makes make forget to run some rules sometimes.
-tools::
-	@$(MAKE) libs
-endif
-
-##############################################
-ifneq (1,$(NO_PROFILE_GUIDED_OPTIMIZE))
-ifdef MOZ_PROFILE_USE
-ifeq ($(OS_ARCH)_$(GNU_CC), WINNT_)
-# When building with PGO, we have to make sure to re-link
-# in the MOZ_PROFILE_USE phase if we linked in the
-# MOZ_PROFILE_GENERATE phase. We'll touch this pgo.relink
-# file in the link rule in the GENERATE phase to indicate
-# that we need a relink.
-ifdef SHARED_LIBRARY
-$(SHARED_LIBRARY): pgo.relink
-endif
-ifdef PROGRAM
-$(PROGRAM): pgo.relink
-endif
-
-# In the second pass, we need to merge the pgc files into the pgd file.
-# The compiler would do this for us automatically if they were in the right
-# place, but they're in dist/bin.
-ifneq (,$(SHARED_LIBRARY)$(PROGRAM))
-export::
-ifdef PROGRAM
-	$(PYTHON) $(topsrcdir)/build/win32/pgomerge.py \
-	  $(PROGRAM:$(BIN_SUFFIX)=) $(DIST)/bin
-endif
-ifdef SHARED_LIBRARY
-	$(PYTHON) $(topsrcdir)/build/win32/pgomerge.py \
-	  $(SHARED_LIBRARY_NAME) $(DIST)/bin
-endif
-endif # SHARED_LIBRARY || PROGRAM
-endif # WINNT_
-endif # MOZ_PROFILE_USE
-ifdef MOZ_PROFILE_GENERATE
-# Clean up profiling data during PROFILE_GENERATE phase
-export::
-ifeq ($(OS_ARCH)_$(GNU_CC), WINNT_)
-	$(foreach pgd,$(wildcard *.pgd),pgomgr -clear $(pgd);)
-else
-ifdef GNU_CC
-	-$(RM) *.gcda
-endif
-endif
-endif
-
-ifneq (,$(MOZ_PROFILE_GENERATE)$(MOZ_PROFILE_USE))
-ifdef GNU_CC
-# Force rebuilding libraries and programs in both passes because each
-# pass uses different object files.
-$(PROGRAM) $(SHARED_LIBRARY) $(LIBRARY): FORCE
-endif
-endif
-
-endif # NO_PROFILE_GUIDED_OPTIMIZE
-
-##############################################
-
-checkout:
-	$(MAKE) -C $(topsrcdir) -f client.mk checkout
-
-clean clobber realclean clobber_all::
-	-$(RM) $(ALL_TRASH)
-	-$(RM) -r $(ALL_TRASH_DIRS)
-
-ifdef TIERS
-clean clobber realclean clobber_all distclean::
-	$(foreach dir, \
-		$(foreach tier, $(TIERS), $(tier_$(tier)_staticdirs) $(tier_$(tier)_dirs)), \
-		-$(call SUBMAKE,$@,$(dir)))
-else
-clean clobber realclean clobber_all distclean::
-	$(foreach dir,$(PARALLEL_DIRS) $(DIRS) $(TOOL_DIRS),-$(call SUBMAKE,$@,$(dir)))
-
-distclean::
-	$(foreach dir,$(PARALLEL_DIRS) $(DIRS) $(TOOL_DIRS),-$(call SUBMAKE,$@,$(dir)))
-endif
-
-distclean::
-	-$(RM) -r $(ALL_TRASH_DIRS)
-	-$(RM) $(ALL_TRASH)  \
-	Makefile .HSancillary \
-	$(wildcard *.$(OBJ_SUFFIX)) $(wildcard *.ho) $(wildcard host_*.o*) \
-	$(wildcard *.$(LIB_SUFFIX)) $(wildcard *$(DLL_SUFFIX)) \
-	$(wildcard *.$(IMPORT_LIB_SUFFIX))
-ifeq ($(OS_ARCH),OS2)
-	-$(RM) $(PROGRAM:.exe=.map)
-endif
-
-alltags:
-	$(RM) TAGS
-	find $(topsrcdir) -name dist -prune -o \( -name '*.[hc]' -o -name '*.cp' -o -name '*.cpp' -o -name '*.idl' \) -print | $(TAG_PROGRAM)
-
-#
-# PROGRAM = Foo
-# creates OBJS, links with LIBS to create Foo
-#
-$(PROGRAM): $(PROGOBJS) $(EXTRA_DEPS) $(EXE_DEF_FILE) $(RESFILE) $(GLOBAL_DEPS)
-	$(REPORT_BUILD)
-	@$(RM) $@.manifest
-ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
-	$(EXPAND_LD) -NOLOGO -OUT:$@ -PDB:$(LINK_PDBFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(MOZ_GLUE_PROGRAM_LDFLAGS) $(PROGOBJS) $(RESFILE) $(LIBS) $(EXTRA_LIBS) $(OS_LIBS)
-ifdef MSMANIFEST_TOOL
-	@if test -f $@.manifest; then \
-		if test -f '$(srcdir)/$@.manifest'; then \
-			echo 'Embedding manifest from $(srcdir)/$@.manifest and $@.manifest'; \
-			mt.exe -NOLOGO -MANIFEST '$(win_srcdir)/$@.manifest' $@.manifest -OUTPUTRESOURCE:$@\;1; \
-		else \
-			echo 'Embedding manifest from $@.manifest'; \
-			mt.exe -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;1; \
-		fi; \
-	elif test -f '$(srcdir)/$@.manifest'; then \
-		echo 'Embedding manifest from $(srcdir)/$@.manifest'; \
-		mt.exe -NOLOGO -MANIFEST '$(win_srcdir)/$@.manifest' -OUTPUTRESOURCE:$@\;1; \
-	fi
-endif	# MSVC with manifest tool
-ifdef MOZ_PROFILE_GENERATE
-# touch it a few seconds into the future to work around FAT's
-# 2-second granularity
-	touch -t `date +%Y%m%d%H%M.%S -d 'now+5seconds'` pgo.relink
-endif
-else # !WINNT || GNU_CC
-	$(EXPAND_CCC) -o $@ $(CXXFLAGS) $(PROGOBJS) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(WRAP_LDFLAGS) $(LIBS_DIR) $(LIBS) $(MOZ_GLUE_PROGRAM_LDFLAGS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS) $(EXE_DEF_FILE) $(STLPORT_LIBS)
-	@$(call CHECK_STDCXX,$@)
-endif # WINNT && !GNU_CC
-
-ifdef ENABLE_STRIP
-	$(STRIP) $(STRIP_FLAGS) $@
-endif
-ifdef MOZ_POST_PROGRAM_COMMAND
-	$(MOZ_POST_PROGRAM_COMMAND) $@
-endif
-
-$(HOST_PROGRAM): $(HOST_PROGOBJS) $(HOST_LIBS_DEPS) $(HOST_EXTRA_DEPS) $(GLOBAL_DEPS)
-	$(REPORT_BUILD)
-ifeq (_WINNT,$(GNU_CC)_$(HOST_OS_ARCH))
-	$(EXPAND_LIBS_EXEC) -- $(HOST_LD) -NOLOGO -OUT:$@ -PDB:$(HOST_PDBFILE) $(HOST_OBJS) $(WIN32_EXE_LDFLAGS) $(HOST_LDFLAGS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
-ifdef MSMANIFEST_TOOL
-	@if test -f $@.manifest; then \
-		if test -f '$(srcdir)/$@.manifest'; then \
-			echo 'Embedding manifest from $(srcdir)/$@.manifest and $@.manifest'; \
-			mt.exe -NOLOGO -MANIFEST '$(win_srcdir)/$@.manifest' $@.manifest -OUTPUTRESOURCE:$@\;1; \
-		else \
-			echo 'Embedding manifest from $@.manifest'; \
-			mt.exe -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;1; \
-		fi; \
-	elif test -f '$(srcdir)/$@.manifest'; then \
-		echo 'Embedding manifest from $(srcdir)/$@.manifest'; \
-		mt.exe -NOLOGO -MANIFEST '$(win_srcdir)/$@.manifest' -OUTPUTRESOURCE:$@\;1; \
-	fi
-endif	# MSVC with manifest tool
-else
-ifeq ($(HOST_CPP_PROG_LINK),1)
-	$(EXPAND_LIBS_EXEC) -- $(HOST_CXX) -o $@ $(HOST_CXXFLAGS) $(HOST_LDFLAGS) $(HOST_PROGOBJS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
-else
-	$(EXPAND_LIBS_EXEC) -- $(HOST_CC) -o $@ $(HOST_CFLAGS) $(HOST_LDFLAGS) $(HOST_PROGOBJS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
-endif # HOST_CPP_PROG_LINK
-endif
-
-#
-# This is an attempt to support generation of multiple binaries
-# in one directory, it assumes everything to compile Foo is in
-# Foo.o (from either Foo.c or Foo.cpp).
-#
-# SIMPLE_PROGRAMS = Foo Bar
-# creates Foo.o Bar.o, links with LIBS to create Foo, Bar.
-#
-$(SIMPLE_PROGRAMS): %$(BIN_SUFFIX): %.$(OBJ_SUFFIX) $(EXTRA_DEPS) $(GLOBAL_DEPS)
-	$(REPORT_BUILD)
-ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
-	$(EXPAND_LD) -nologo -out:$@ -pdb:$(LINK_PDBFILE) $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(MOZ_GLUE_PROGRAM_LDFLAGS) $(LIBS) $(EXTRA_LIBS) $(OS_LIBS)
-ifdef MSMANIFEST_TOOL
-	@if test -f $@.manifest; then \
-		mt.exe -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;1; \
-		rm -f $@.manifest; \
-	fi
-endif	# MSVC with manifest tool
-else
-	$(EXPAND_CCC) $(CXXFLAGS) -o $@ $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(WRAP_LDFLAGS) $(LIBS_DIR) $(LIBS) $(MOZ_GLUE_PROGRAM_LDFLAGS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS) $(STLPORT_LIBS)
-	@$(call CHECK_STDCXX,$@)
-endif # WINNT && !GNU_CC
-
-ifdef ENABLE_STRIP
-	$(STRIP) $(STRIP_FLAGS) $@
-endif
-ifdef MOZ_POST_PROGRAM_COMMAND
-	$(MOZ_POST_PROGRAM_COMMAND) $@
-endif
-
-$(HOST_SIMPLE_PROGRAMS): host_%$(HOST_BIN_SUFFIX): host_%.$(OBJ_SUFFIX) $(HOST_LIBS_DEPS) $(HOST_EXTRA_DEPS) $(GLOBAL_DEPS)
-	$(REPORT_BUILD)
-ifeq (WINNT_,$(HOST_OS_ARCH)_$(GNU_CC))
-	$(EXPAND_LIBS_EXEC) -- $(HOST_LD) -NOLOGO -OUT:$@ -PDB:$(HOST_PDBFILE) $< $(WIN32_EXE_LDFLAGS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
-else
-ifneq (,$(HOST_CPPSRCS)$(USE_HOST_CXX))
-	$(EXPAND_LIBS_EXEC) -- $(HOST_CXX) $(HOST_OUTOPTION)$@ $(HOST_CXXFLAGS) $(INCLUDES) $< $(HOST_LIBS) $(HOST_EXTRA_LIBS)
-else
-	$(EXPAND_LIBS_EXEC) -- $(HOST_CC) $(HOST_OUTOPTION)$@ $(HOST_CFLAGS) $(INCLUDES) $< $(HOST_LIBS) $(HOST_EXTRA_LIBS)
-endif
-endif
-
-ifdef DTRACE_PROBE_OBJ
-EXTRA_DEPS += $(DTRACE_PROBE_OBJ)
-OBJS += $(DTRACE_PROBE_OBJ)
-endif
-
-$(filter %.$(LIB_SUFFIX),$(LIBRARY)): $(OBJS) $(EXTRA_DEPS) $(GLOBAL_DEPS)
-	$(REPORT_BUILD)
-	$(RM) $(LIBRARY)
-	$(EXPAND_AR) $(AR_FLAGS) $(OBJS) $(SHARED_LIBRARY_LIBS)
-
-$(filter-out %.$(LIB_SUFFIX),$(LIBRARY)): $(filter %.$(LIB_SUFFIX),$(LIBRARY)) $(OBJS) $(EXTRA_DEPS) $(GLOBAL_DEPS)
-# When we only build a library descriptor, blow out any existing library
-	$(REPORT_BUILD)
-	$(if $(filter %.$(LIB_SUFFIX),$(LIBRARY)),,$(RM) $(REAL_LIBRARY) $(EXPORT_LIBRARY:%=%/$(REAL_LIBRARY)))
-	$(EXPAND_LIBS_GEN) -o $@ $(OBJS) $(SHARED_LIBRARY_LIBS)
-
-ifeq ($(OS_ARCH),WINNT)
-# Import libraries are created by the rules creating shared libraries.
-# The rules to copy them to $(DIST)/lib depend on $(IMPORT_LIBRARY),
-# but make will happily consider the import library before it is refreshed
-# when rebuilding the corresponding shared library. Defining an empty recipe
-# for import libraries forces make to wait for the shared library recipe to
-# have run before considering other targets that depend on the import library.
-# See bug 795204.
-$(IMPORT_LIBRARY): $(SHARED_LIBRARY) ;
-endif
-
-ifeq ($(OS_ARCH),OS2)
-$(DEF_FILE): $(OBJS) $(SHARED_LIBRARY_LIBS)
-	$(RM) $@
-	echo LIBRARY $(SHARED_LIBRARY_NAME) INITINSTANCE TERMINSTANCE > $@
-	echo PROTMODE >> $@
-	echo CODE    LOADONCALL MOVEABLE DISCARDABLE >> $@
-	echo DATA    PRELOAD MOVEABLE MULTIPLE NONSHARED >> $@
-	echo EXPORTS >> $@
-
-	$(ADD_TO_DEF_FILE)
-
-$(IMPORT_LIBRARY): $(SHARED_LIBRARY)
-	$(REPORT_BUILD)
-	$(RM) $@
-	$(IMPLIB) $@ $^
-endif # OS/2
-
-$(HOST_LIBRARY): $(HOST_OBJS) Makefile
-	$(REPORT_BUILD)
-	$(RM) $@
-	$(EXPAND_LIBS_EXEC) --extract -- $(HOST_AR) $(HOST_AR_FLAGS) $(HOST_OBJS)
-
-ifdef HAVE_DTRACE
-ifndef XP_MACOSX
-ifdef DTRACE_PROBE_OBJ
-ifndef DTRACE_LIB_DEPENDENT
-NON_DTRACE_OBJS := $(filter-out $(DTRACE_PROBE_OBJ),$(OBJS))
-$(DTRACE_PROBE_OBJ): $(NON_DTRACE_OBJS)
-	dtrace -G -C -s $(MOZILLA_DTRACE_SRC) -o $(DTRACE_PROBE_OBJ) $(NON_DTRACE_OBJS)
-endif
-endif
-endif
-endif
-
-# On Darwin (Mac OS X), dwarf2 debugging uses debug info left in .o files,
-# so instead of deleting .o files after repacking them into a dylib, we make
-# symlinks back to the originals. The symlinks are a no-op for stabs debugging,
-# so no need to conditionalize on OS version or debugging format.
-
-$(SHARED_LIBRARY): $(OBJS) $(DEF_FILE) $(RESFILE) $(LIBRARY) $(EXTRA_DEPS) $(GLOBAL_DEPS)
-	$(REPORT_BUILD)
-ifndef INCREMENTAL_LINKER
-	$(RM) $@
-endif
-ifdef DTRACE_LIB_DEPENDENT
-ifndef XP_MACOSX
-	dtrace -G -C -s $(MOZILLA_DTRACE_SRC) -o  $(DTRACE_PROBE_OBJ) $(shell $(EXPAND_LIBS) $(MOZILLA_PROBE_LIBS))
-endif
-	$(EXPAND_MKSHLIB) $(SHLIB_LDSTARTFILE) $(OBJS) $(SUB_SHLOBJS) $(DTRACE_PROBE_OBJ) $(MOZILLA_PROBE_LIBS) $(RESFILE) $(LDFLAGS) $(WRAP_LDFLAGS) $(SHARED_LIBRARY_LIBS) $(EXTRA_DSO_LDOPTS) $(MOZ_GLUE_LDFLAGS) $(OS_LIBS) $(EXTRA_LIBS) $(DEF_FILE) $(SHLIB_LDENDFILE) $(if $(LIB_IS_C_ONLY),,$(STLPORT_LIBS))
-	@$(RM) $(DTRACE_PROBE_OBJ)
-else # ! DTRACE_LIB_DEPENDENT
-	$(EXPAND_MKSHLIB) $(SHLIB_LDSTARTFILE) $(OBJS) $(SUB_SHLOBJS) $(RESFILE) $(LDFLAGS) $(WRAP_LDFLAGS) $(SHARED_LIBRARY_LIBS) $(EXTRA_DSO_LDOPTS) $(MOZ_GLUE_LDFLAGS) $(OS_LIBS) $(EXTRA_LIBS) $(DEF_FILE) $(SHLIB_LDENDFILE) $(if $(LIB_IS_C_ONLY),,$(STLPORT_LIBS))
-endif # DTRACE_LIB_DEPENDENT
-	@$(call CHECK_STDCXX,$@)
-
-ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
-ifdef MSMANIFEST_TOOL
-ifdef EMBED_MANIFEST_AT
-	@if test -f $@.manifest; then \
-		mt.exe -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;$(EMBED_MANIFEST_AT); \
-		rm -f $@.manifest; \
-	fi
-endif   # EMBED_MANIFEST_AT
-endif	# MSVC with manifest tool
-ifdef MOZ_PROFILE_GENERATE
-	touch -t `date +%Y%m%d%H%M.%S -d 'now+5seconds'` pgo.relink
-endif
-endif	# WINNT && !GCC
-	@$(RM) foodummyfilefoo $(DELETE_AFTER_LINK)
-	chmod +x $@
-ifdef ENABLE_STRIP
-	$(STRIP) $(STRIP_FLAGS) $@
-endif
-ifdef MOZ_POST_DSO_LIB_COMMAND
-	$(MOZ_POST_DSO_LIB_COMMAND) $@
-endif
-
-ifeq ($(SOLARIS_SUNPRO_CC),1)
-_MDDEPFILE = $(MDDEPDIR)/$(@F).pp
-
-define MAKE_DEPS_AUTO_CC
-if test -d $(@D); then \
-	echo 'Building deps for $< using Sun Studio cc'; \
-	$(CC) $(COMPILE_CFLAGS) -xM  $< >$(_MDDEPFILE) ; \
-	$(PYTHON) $(topsrcdir)/build/unix/add_phony_targets.py $(_MDDEPFILE) ; \
-fi
-endef
-define MAKE_DEPS_AUTO_CXX
-if test -d $(@D); then \
-	echo 'Building deps for $< using Sun Studio CC'; \
-	$(CXX) $(COMPILE_CXXFLAGS) -xM $< >$(_MDDEPFILE) ; \
-	$(PYTHON) $(topsrcdir)/build/unix/add_phony_targets.py $(_MDDEPFILE) ; \
-fi
-endef
-endif # Sun Studio on Solaris
-
-# The object file is in the current directory, and the source file can be any
-# relative path. This macro adds the dependency obj: src for each source file.
-# This dependency must be first for the $< flag to work correctly, and the
-# rules that have commands for these targets must not list any other
-# prerequisites, or they will override the $< variable.
-define src_objdep
-$(basename $2$(notdir $1)).$(OBJ_SUFFIX): $1 $$(call mkdir_deps,$$(MDDEPDIR))
-endef
-$(foreach f,$(CSRCS) $(SSRCS) $(CPPSRCS) $(CMSRCS) $(CMMSRCS) $(ASFILES),$(eval $(call src_objdep,$(f))))
-$(foreach f,$(HOST_CSRCS) $(HOST_CPPSRCS) $(HOST_CMSRCS) $(HOST_CMMSRCS),$(eval $(call src_objdep,$(f),host_)))
-
-$(OBJS) $(HOST_OBJS) $(PROGOBJS) $(HOST_PROGOBJS): $(GLOBAL_DEPS)
-
-# Rules for building native targets must come first because of the host_ prefix
-$(HOST_COBJS):
-	$(REPORT_BUILD)
-	$(ELOG) $(HOST_CC) $(HOST_OUTOPTION)$@ -c $(HOST_CFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS)
-
-$(HOST_CPPOBJS):
-	$(REPORT_BUILD)
-	$(ELOG) $(HOST_CXX) $(HOST_OUTOPTION)$@ -c $(HOST_CXXFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS)
-
-$(HOST_CMOBJS):
-	$(REPORT_BUILD)
-	$(ELOG) $(HOST_CC) $(HOST_OUTOPTION)$@ -c $(HOST_CFLAGS) $(HOST_CMFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS)
-
-$(HOST_CMMOBJS):
-	$(REPORT_BUILD)
-	$(ELOG) $(HOST_CXX) $(HOST_OUTOPTION)$@ -c $(HOST_CXXFLAGS) $(HOST_CMMFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS)
-
-$(COBJS):
-	$(REPORT_BUILD)
-	@$(MAKE_DEPS_AUTO_CC)
-	$(ELOG) $(CC) $(OUTOPTION)$@ -c $(COMPILE_CFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
-
-# DEFINES and ACDEFINES are needed here to enable conditional compilation of Q_OBJECTs:
-# 'moc' only knows about #defines it gets on the command line (-D...), not in
-# included headers like mozilla-config.h
-$(filter moc_%.cpp,$(CPPSRCS)): moc_%.cpp: %.h
-	$(REPORT_BUILD)
-	$(ELOG) $(MOC) $(DEFINES) $(ACDEFINES) $< $(OUTOPTION)$@
-
-$(filter moc_%.cc,$(CPPSRCS)): moc_%.cc: %.cc
-	$(REPORT_BUILD)
-	$(ELOG) $(MOC) $(DEFINES) $(ACDEFINES) $(_VPATH_SRCS:.cc=.h) $(OUTOPTION)$@
-
-$(filter qrc_%.cpp,$(CPPSRCS)): qrc_%.cpp: %.qrc
-	$(REPORT_BUILD)
-	$(ELOG) $(RCC) -name $* $< $(OUTOPTION)$@
-
-ifdef ASFILES
-# The AS_DASH_C_FLAG is needed cause not all assemblers (Solaris) accept
-# a '-c' flag.
-$(ASOBJS):
-	$(REPORT_BUILD)
-	$(AS) $(ASOUTOPTION)$@ $(ASFLAGS) $(AS_DASH_C_FLAG) $(_VPATH_SRCS)
-endif
-
-$(SOBJS):
-	$(REPORT_BUILD)
-	$(AS) -o $@ $(ASFLAGS) $(LOCAL_INCLUDES) $(TARGET_LOCAL_INCLUDES) -c $<
-
-$(CPPOBJS):
-	$(REPORT_BUILD)
-	@$(MAKE_DEPS_AUTO_CXX)
-	$(ELOG) $(CCC) $(OUTOPTION)$@ -c $(COMPILE_CXXFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
-
-$(CMMOBJS):
-	$(REPORT_BUILD)
-	@$(MAKE_DEPS_AUTO_CXX)
-	$(ELOG) $(CCC) -o $@ -c $(COMPILE_CXXFLAGS) $(COMPILE_CMMFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
-
-$(CMOBJS):
-	$(REPORT_BUILD)
-	@$(MAKE_DEPS_AUTO_CC)
-	$(ELOG) $(CC) -o $@ -c $(COMPILE_CFLAGS) $(COMPILE_CMFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
-
-$(filter %.s,$(CPPSRCS:%.cpp=%.s)): %.s: %.cpp $(call mkdir_deps,$(MDDEPDIR))
-	$(REPORT_BUILD)
-	$(CCC) -S $(COMPILE_CXXFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
-
-$(filter %.s,$(CPPSRCS:%.cc=%.s)): %.s: %.cc $(call mkdir_deps,$(MDDEPDIR))
-	$(REPORT_BUILD)
-	$(CCC) -S $(COMPILE_CXXFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
-
-$(filter %.s,$(CSRCS:%.c=%.s)): %.s: %.c $(call mkdir_deps,$(MDDEPDIR))
-	$(REPORT_BUILD)
-	$(CC) -S $(COMPILE_CFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
-
-$(filter %.i,$(CPPSRCS:%.cpp=%.i)): %.i: %.cpp $(call mkdir_deps,$(MDDEPDIR))
-	$(REPORT_BUILD)
-	$(CCC) -C $(PREPROCESS_OPTION)$@ $(COMPILE_CXXFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
-
-$(filter %.i,$(CPPSRCS:%.cc=%.i)): %.i: %.cc $(call mkdir_deps,$(MDDEPDIR))
-	$(REPORT_BUILD)
-	$(CCC) -C $(PREPROCESS_OPTION)$@ $(COMPILE_CXXFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
-
-$(filter %.i,$(CSRCS:%.c=%.i)): %.i: %.c $(call mkdir_deps,$(MDDEPDIR))
-	$(REPORT_BUILD)
-	$(CC) -C $(PREPROCESS_OPTION)$@ $(COMPILE_CFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
-
-$(filter %.i,$(CMMSRCS:%.mm=%.i)): %.i: %.mm $(call mkdir_deps,$(MDDEPDIR))
-	$(REPORT_BUILD)
-	$(CCC) -C $(PREPROCESS_OPTION)$@ $(COMPILE_CXXFLAGS) $(COMPILE_CMMFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
-
-$(RESFILE): %.res: %.rc
-	$(REPORT_BUILD)
-	@echo Creating Resource file: $@
-ifeq ($(OS_ARCH),OS2)
-	$(RC) $(RCFLAGS:-D%=-d %) -i $(subst /,\,$(srcdir)) -r $< $@
-else
-ifdef GNU_CC
-	$(RC) $(RCFLAGS) $(filter-out -U%,$(DEFINES)) $(INCLUDES:-I%=--include-dir %) $(OUTOPTION)$@ $(_VPATH_SRCS)
-else
-	$(RC) $(RCFLAGS) -r $(DEFINES) $(INCLUDES) $(OUTOPTION)$@ $(_VPATH_SRCS)
-endif
-endif
-
-# Cancel GNU make built-in implicit rules
-ifndef .PYMAKE
-MAKEFLAGS += -r
-endif
-
-ifneq (,$(filter OS2 WINNT,$(OS_ARCH)))
-SEP := ;
-else
-SEP := :
-endif
-
-EMPTY :=
-SPACE := $(EMPTY) $(EMPTY)
-
-# MSYS has its own special path form, but javac expects the source and class
-# paths to be in the DOS form (i.e. e:/builds/...).  This function does the
-# appropriate conversion on Windows, but is a noop on other systems.
-ifeq ($(HOST_OS_ARCH),WINNT)
-#  We use 'pwd -W' to get DOS form of the path.  However, since the given path
-#  could be a file or a non-existent path, we cannot call 'pwd -W' directly
-#  on the path.  Instead, we extract the root path (i.e. "c:/"), call 'pwd -W'
-#  on it, then merge with the rest of the path.
-root-path = $(shell echo $(1) | sed -e 's|\(/[^/]*\)/\?\(.*\)|\1|')
-non-root-path = $(shell echo $(1) | sed -e 's|\(/[^/]*\)/\?\(.*\)|\2|')
-normalizepath = $(foreach p,$(1),$(if $(filter /%,$(1)),$(patsubst %/,%,$(shell cd $(call root-path,$(1)) && pwd -W))/$(call non-root-path,$(1)),$(1)))
-else
-normalizepath = $(1)
-endif
-
-###############################################################################
-# Java rules
-###############################################################################
-ifneq (,$(JAVAFILES)$(ANDROID_RESFILES)$(ANDROID_APKNAME)$(JAVA_JAR_TARGETS))
-  include $(topsrcdir)/config/makefiles/java-build.mk
-endif
-
-###############################################################################
-# Bunch of things that extend the 'export' rule (in order):
-###############################################################################
-
-ifneq ($(XPI_NAME),)
-$(FINAL_TARGET):
-	$(NSINSTALL) -D $@
-
-export:: $(FINAL_TARGET)
-endif
-
-################################################################################
-# Copy each element of PREF_JS_EXPORTS
-
-# The default location for PREF_JS_EXPORTS is the gre prefs directory.
-PREF_DIR = defaults/pref
-
-# If DIST_SUBDIR is defined it indicates that app and gre dirs are
-# different and that we are building app related resources. Hence,
-# PREF_DIR should point to the app prefs location.
-ifneq (,$(DIST_SUBDIR)$(XPI_NAME)$(LIBXUL_SDK))
-PREF_DIR = defaults/preferences
-endif
-
-# on win32, pref files need CRLF line endings... see bug 206029
-ifeq (WINNT,$(OS_ARCH))
-PREF_PPFLAGS += --line-endings=crlf
-endif
-
-ifneq ($(PREF_JS_EXPORTS),)
-ifndef NO_DIST_INSTALL
-PREF_JS_EXPORTS_PATH := $(FINAL_TARGET)/$(PREF_DIR)
-PREF_JS_EXPORTS_FLAGS := $(PREF_PPFLAGS)
-PP_TARGETS += PREF_JS_EXPORTS
-endif
-endif
-
-################################################################################
-# Copy each element of AUTOCFG_JS_EXPORTS to $(FINAL_TARGET)/defaults/autoconfig
-
-ifneq ($(AUTOCFG_JS_EXPORTS),)
-ifndef NO_DIST_INSTALL
-AUTOCFG_JS_EXPORTS_FILES := $(AUTOCFG_JS_EXPORTS)
-AUTOCFG_JS_EXPORTS_DEST := $(FINAL_TARGET)/defaults/autoconfig
-AUTOCFG_JS_EXPORTS_TARGET := export
-INSTALL_TARGETS += AUTOCFG_JS_EXPORTS
-endif
-endif
-
-################################################################################
-# Install a linked .xpt into the appropriate place.
-# This should ideally be performed by the non-recursive idl make file. Some day.
-ifdef XPT_NAME #{
-
-ifndef NO_DIST_INSTALL
-_XPT_NAME_FILES := $(DEPTH)/config/makefiles/xpidl/xpt/$(XPT_NAME)
-_XPT_NAME_DEST := $(FINAL_TARGET)/components
-INSTALL_TARGETS += _XPT_NAME
-
-ifndef NO_INTERFACES_MANIFEST
-libs:: $(call mkdir_deps,$(FINAL_TARGET)/components)
-	$(call py_action,buildlist,$(FINAL_TARGET)/components/interfaces.manifest 'interfaces $(XPT_NAME)')
-	$(call py_action,buildlist,$(FINAL_TARGET)/chrome.manifest 'manifest components/interfaces.manifest')
-endif
-endif
-
-endif #} XPT_NAME
-
-################################################################################
-# Copy each element of EXTRA_COMPONENTS to $(FINAL_TARGET)/components
-ifneq (,$(filter %.js,$(EXTRA_COMPONENTS) $(EXTRA_PP_COMPONENTS)))
-ifeq (,$(filter %.manifest,$(EXTRA_COMPONENTS) $(EXTRA_PP_COMPONENTS)))
-ifndef NO_JS_MANIFEST
-$(error .js component without matching .manifest. See https://developer.mozilla.org/en/XPCOM/XPCOM_changes_in_Gecko_2.0)
-endif
-endif
-endif
-
-ifdef EXTRA_COMPONENTS
-libs:: $(EXTRA_COMPONENTS)
-ifndef NO_DIST_INSTALL
-EXTRA_COMPONENTS_FILES := $(EXTRA_COMPONENTS)
-EXTRA_COMPONENTS_DEST := $(FINAL_TARGET)/components
-INSTALL_TARGETS += EXTRA_COMPONENTS
-endif
-
-endif
-
-ifdef EXTRA_PP_COMPONENTS
-ifndef NO_DIST_INSTALL
-EXTRA_PP_COMPONENTS_PATH := $(FINAL_TARGET)/components
-PP_TARGETS += EXTRA_PP_COMPONENTS
-endif
-endif
-
-EXTRA_MANIFESTS = $(filter %.manifest,$(EXTRA_COMPONENTS) $(EXTRA_PP_COMPONENTS))
-ifneq (,$(EXTRA_MANIFESTS))
-libs:: $(call mkdir_deps,$(FINAL_TARGET))
-	$(call py_action,buildlist,$(FINAL_TARGET)/chrome.manifest $(patsubst %,'manifest components/%',$(notdir $(EXTRA_MANIFESTS))))
-endif
-
-################################################################################
-# Copy each element of EXTRA_JS_MODULES to
-# $(FINAL_TARGET)/$(JS_MODULES_PATH). JS_MODULES_PATH defaults to "modules"
-# if it is undefined.
-JS_MODULES_PATH ?= modules
-FINAL_JS_MODULES_PATH := $(FINAL_TARGET)/$(JS_MODULES_PATH)
-
-ifdef EXTRA_JS_MODULES
-ifndef NO_DIST_INSTALL
-EXTRA_JS_MODULES_FILES := $(EXTRA_JS_MODULES)
-EXTRA_JS_MODULES_DEST := $(FINAL_JS_MODULES_PATH)
-INSTALL_TARGETS += EXTRA_JS_MODULES
-endif
-endif
-
-ifdef EXTRA_PP_JS_MODULES
-ifndef NO_DIST_INSTALL
-EXTRA_PP_JS_MODULES_PATH := $(FINAL_JS_MODULES_PATH)
-PP_TARGETS += EXTRA_PP_JS_MODULES
-endif
-endif
-
-################################################################################
-# Copy testing-only JS modules to appropriate destination.
-#
-# For each file defined in TESTING_JS_MODULES, copy it to
-# objdir/_tests/modules/. If TESTING_JS_MODULE_DIR is defined, that path
-# wlll be appended to the output directory.
-
-ifdef ENABLE_TESTS
-ifdef TESTING_JS_MODULES
-testmodulesdir = $(DEPTH)/_tests/modules/$(TESTING_JS_MODULE_DIR)
-
-GENERATED_DIRS += $(testmodulesdir)
-
-ifndef NO_DIST_INSTALL
-TESTING_JS_MODULES_FILES := $(TESTING_JS_MODULES)
-TESTING_JS_MODULES_DEST := $(testmodulesdir)
-INSTALL_TARGETS += TESTING_JS_MODULES
-endif
-
-endif
-endif
-
-################################################################################
-# SDK
-
-ifneq (,$(SDK_LIBRARY))
-ifndef NO_DIST_INSTALL
-SDK_LIBRARY_FILES := $(SDK_LIBRARY)
-SDK_LIBRARY_DEST := $(SDK_LIB_DIR)
-INSTALL_TARGETS += SDK_LIBRARY
-endif
-endif # SDK_LIBRARY
-
-ifneq (,$(strip $(SDK_BINARY)))
-ifndef NO_DIST_INSTALL
-SDK_BINARY_FILES := $(SDK_BINARY)
-SDK_BINARY_DEST := $(SDK_BIN_DIR)
-INSTALL_TARGETS += SDK_BINARY
-endif
-endif # SDK_BINARY
-
-################################################################################
-# CHROME PACKAGING
-
-chrome::
-	$(MAKE) realchrome
-	$(LOOP_OVER_PARALLEL_DIRS)
-	$(LOOP_OVER_DIRS)
-	$(LOOP_OVER_TOOL_DIRS)
-
-$(FINAL_TARGET)/chrome: $(call mkdir_deps,$(FINAL_TARGET)/chrome)
-
-ifneq (,$(JAR_MANIFEST))
-ifndef NO_DIST_INSTALL
-
-ifdef XPI_NAME
-ifdef XPI_ROOT_APPID
-# For add-on packaging we may specify that an application
-# sub-dir should be added to the root chrome manifest with
-# a specific application id.
-MAKE_JARS_FLAGS += --root-manifest-entry-appid='$(XPI_ROOT_APPID)'
-endif
-
-# if DIST_SUBDIR is defined but XPI_ROOT_APPID is not there's
-# no way langpacks will get packaged right, so error out.
-ifneq (,$(DIST_SUBDIR))
-ifndef XPI_ROOT_APPID
-$(error XPI_ROOT_APPID is not defined - langpacks will break.)
-endif
-endif
-endif
-
-libs realchrome:: $(FINAL_TARGET)/chrome
-	$(call py_action,jar_maker,\
-	  $(QUIET) -j $(FINAL_TARGET)/chrome \
-	  $(MAKE_JARS_FLAGS) $(XULPPFLAGS) $(DEFINES) $(ACDEFINES) \
-	  $(JAR_MANIFEST))
-
-endif
-
-# This is a temporary check to ensure patches relying on the old behavior
-# of silently picking up jar.mn files continue to work.
-else # No JAR_MANIFEST
-ifneq (,$(wildcard $(srcdir)/jar.mn))
-$(error $(srcdir) contains a jar.mn file but this file is not declared in a JAR_MANIFESTS variable in a moz.build file)
-endif
-endif
-
-ifneq ($(DIST_FILES),)
-DIST_FILES_PATH := $(FINAL_TARGET)
-DIST_FILES_FLAGS := $(XULAPP_DEFINES)
-PP_TARGETS += DIST_FILES
-endif
-
-ifneq ($(DIST_CHROME_FILES),)
-DIST_CHROME_FILES_PATH := $(FINAL_TARGET)/chrome
-DIST_CHROME_FILES_FLAGS := $(XULAPP_DEFINES)
-PP_TARGETS += DIST_CHROME_FILES
-endif
-
-ifneq ($(XPI_PKGNAME),)
-tools realchrome::
-ifdef STRIP_XPI
-ifndef MOZ_DEBUG
-	@echo 'Stripping $(XPI_PKGNAME) package directory...'
-	@echo $(FINAL_TARGET)
-	@cd $(FINAL_TARGET) && find . ! -type d \
-			! -name '*.js' \
-			! -name '*.xpt' \
-			! -name '*.gif' \
-			! -name '*.jpg' \
-			! -name '*.png' \
-			! -name '*.xpm' \
-			! -name '*.txt' \
-			! -name '*.rdf' \
-			! -name '*.sh' \
-			! -name '*.properties' \
-			! -name '*.dtd' \
-			! -name '*.html' \
-			! -name '*.xul' \
-			! -name '*.css' \
-			! -name '*.xml' \
-			! -name '*.jar' \
-			! -name '*.dat' \
-			! -name '*.tbl' \
-			! -name '*.src' \
-			! -name '*.reg' \
-			$(PLATFORM_EXCLUDE_LIST) \
-			-exec $(STRIP) $(STRIP_FLAGS) {} >/dev/null 2>&1 \;
-endif
-endif
-	@echo 'Packaging $(XPI_PKGNAME).xpi...'
-	cd $(FINAL_TARGET) && $(ZIP) -qr ../$(XPI_PKGNAME).xpi *
-endif
-
-ifdef INSTALL_EXTENSION_ID
-ifndef XPI_NAME
-$(error XPI_NAME must be set for INSTALL_EXTENSION_ID)
-endif
-
-tools::
-	$(RM) -r '$(DIST)/bin$(DIST_SUBDIR:%=/%)/extensions/$(INSTALL_EXTENSION_ID)'
-	$(NSINSTALL) -D '$(DIST)/bin$(DIST_SUBDIR:%=/%)/extensions/$(INSTALL_EXTENSION_ID)'
-	$(call copy_dir,$(FINAL_TARGET),$(DIST)/bin$(DIST_SUBDIR:%=/%)/extensions/$(INSTALL_EXTENSION_ID))
-
-endif
-
-#############################################################################
-# MDDEPDIR is the subdirectory where all the dependency files are placed.
-#   This uses a make rule (instead of a macro) to support parallel
-#   builds (-jN). If this were done in the LOOP_OVER_DIRS macro, two
-#   processes could simultaneously try to create the same directory.
-#
-#   We use $(CURDIR) in the rule's target to ensure that we don't find
-#   a dependency directory in the source tree via VPATH (perhaps from
-#   a previous build in the source tree) and thus neglect to create a
-#   dependency directory in the object directory, where we really need
-#   it.
-
-ifneq (,$(filter-out all chrome default export realchrome clean clobber clobber_all distclean realclean,$(MAKECMDGOALS)))
-MDDEPEND_FILES		:= $(strip $(wildcard $(addprefix $(MDDEPDIR)/,$(EXTRA_MDDEPEND_FILES) $(addsuffix .pp,$(notdir $(sort $(OBJS) $(PROGOBJS) $(HOST_OBJS) $(HOST_PROGOBJS))) $(TARGETS)))))
-
-ifneq (,$(MDDEPEND_FILES))
-$(call include_deps,$(MDDEPEND_FILES))
-endif
-
-endif
-
-
-ifneq (,$(filter export,$(MAKECMDGOALS)))
-MDDEPEND_FILES		:= $(strip $(wildcard $(addprefix $(MDDEPDIR)/,$(EXTRA_EXPORT_MDDEPEND_FILES))))
-
-ifneq (,$(MDDEPEND_FILES))
-$(call include_deps,$(MDDEPEND_FILES))
-endif
-
-endif
-
-#############################################################################
-
--include $(topsrcdir)/$(MOZ_BUILD_APP)/app-rules.mk
--include $(MY_RULES)
-
-#
-# Generate Emacs tags in a file named TAGS if ETAGS was set in $(MY_CONFIG)
-# or in $(MY_RULES)
-#
-ifdef ETAGS
-ifneq ($(CSRCS)$(CPPSRCS)$(HEADERS),)
-all:: TAGS
-TAGS:: $(CSRCS) $(CPPSRCS) $(HEADERS)
-	$(ETAGS) $(CSRCS) $(CPPSRCS) $(HEADERS)
-endif
-endif
-
-################################################################################
-# Install/copy rules
-#
-# The INSTALL_TARGETS variable contains a list of all install target
-# categories. Each category defines a list of files and executables, and an
-# install destination,
-#
-# FOO_FILES := foo bar
-# FOO_EXECUTABLES := baz
-# FOO_DEST := target_path
-# INSTALL_TARGETS += FOO
-#
-# Additionally, a FOO_TARGET variable may be added to indicate the target for
-# which the files and executables are installed. Default is "libs".
-#
-# Finally, a FOO_KEEP_PATH variable may be set to 1 to indicate the paths given
-# in FOO_FILES/FOO_EXECUTABLES are to be kept at the destination. That is,
-# if FOO_FILES is bar/baz/qux.h, and FOO_DEST is $(DIST)/include, the installed
-# file would be $(DIST)/include/bar/baz/qux.h instead of $(DIST)/include/qux.h
-
-# If we're using binary nsinstall and it's not built yet, fallback to python nsinstall.
-ifneq (,$(filter $(CONFIG_TOOLS)/nsinstall$(HOST_BIN_SUFFIX),$(install_cmd)))
-ifeq (,$(wildcard $(CONFIG_TOOLS)/nsinstall$(HOST_BIN_SUFFIX)))
-nsinstall_is_usable = $(if $(wildcard $(CONFIG_TOOLS)/nsinstall$(HOST_BIN_SUFFIX)),yes)
-
-define install_cmd_override
-$(1): install_cmd = $$(if $$(nsinstall_is_usable),$$(INSTALL),$$(NSINSTALL_PY)) $$(1)
-endef
-endif
-endif
-
-install_target_tier = $(or $($(1)_TARGET),libs)
-INSTALL_TARGETS_TIERS := $(sort $(foreach category,$(INSTALL_TARGETS),$(call install_target_tier,$(category))))
-
-install_target_result = $($(1)_DEST:%/=%)/$(if $($(1)_KEEP_PATH),$(2),$(notdir $(2)))
-install_target_files = $(foreach file,$($(1)_FILES),$(call install_target_result,$(category),$(file)))
-install_target_executables = $(foreach file,$($(1)_EXECUTABLES),$(call install_target_result,$(category),$(file)))
-
-# Work around a GNU make 3.81 bug where it gives $< the wrong value.
-# See details in bug 934864.
-define create_dependency
-$(1): $(2)
-$(1): $(2)
-endef
-
-define install_target_template
-$(call install_cmd_override,$(2))
-$(call create_dependency,$(2),$(1))
-endef
-
-$(foreach category,$(INSTALL_TARGETS),\
-  $(if $($(category)_DEST),,$(error Missing $(category)_DEST)) \
-  $(foreach tier,$(call install_target_tier,$(category)),\
-    $(eval INSTALL_TARGETS_FILES_$(tier) += $(call install_target_files,$(category))) \
-    $(eval INSTALL_TARGETS_EXECUTABLES_$(tier) += $(call install_target_executables,$(category))) \
-  ) \
-  $(foreach file,$($(category)_FILES) $($(category)_EXECUTABLES), \
-    $(eval $(call install_target_template,$(file),$(call install_target_result,$(category),$(file)))) \
-  ) \
-)
-
-$(foreach tier,$(INSTALL_TARGETS_TIERS), \
-  $(eval $(tier):: $(INSTALL_TARGETS_FILES_$(tier)) $(INSTALL_TARGETS_EXECUTABLES_$(tier))) \
-)
-
-install_targets_sanity = $(if $(filter-out $(notdir $@),$(notdir $(<))),$(error Looks like $@ has an unexpected dependency on $< which breaks INSTALL_TARGETS))
-
-$(sort $(foreach tier,$(INSTALL_TARGETS_TIERS),$(INSTALL_TARGETS_FILES_$(tier)))):
-	$(install_targets_sanity)
-	$(call install_cmd,$(IFLAGS1) '$<' '$(@D)')
-
-$(sort $(foreach tier,$(INSTALL_TARGETS_TIERS),$(INSTALL_TARGETS_EXECUTABLES_$(tier)))):
-	$(install_targets_sanity)
-	$(call install_cmd,$(IFLAGS2) '$<' '$(@D)')
-
-################################################################################
-# Preprocessing rules
-#
-# The PP_TARGETS variable contains a list of all preprocessing target
-# categories. Each category has associated variables listing input files, the
-# output directory, extra preprocessor flags, and so on. For example:
-#
-#   FOO := input-file
-#   FOO_PATH := target-directory
-#   FOO_FLAGS := -Dsome_flag
-#   PP_TARGETS += FOO
-#
-# If PP_TARGETS lists a category name <C> (like FOO, above), then we consult the
-# following make variables to see what to do:
-#
-# - <C> lists input files to be preprocessed with mozbuild.action.preprocessor.
-#   We search VPATH for the names given here. If an input file name ends in
-#   '.in', that suffix is omitted from the output file name.
-#
-# - <C>_PATH names the directory in which to place the preprocessed output
-#   files. We create this directory if it does not already exist. Setting
-#   this variable is optional; if unset, we install the files in $(CURDIR).
-#
-# - <C>_FLAGS lists flags to pass to mozbuild.action.preprocessor, in addition
-#   to the usual bunch. Setting this variable is optional.
-#
-# - <C>_TARGET names the 'make' target that should depend on creating the output
-#   files. Setting this variable is optional; if unset, we preprocess the
-#   files for the 'libs' target.
-#
-# - <C>_KEEP_PATH may be set to 1 to indicate the paths given in <C> are to be
-#   kept under <C>_PATH. That is, if <C> is bar/baz/qux.h.in and <C>_PATH is
-#   $(DIST)/include, the preprocessed file would be $(DIST)/include/bar/baz/qux.h
-#   instead of $(DIST)/include/qux.h.
-
-pp_target_tier = $(or $($(1)_TARGET),libs)
-PP_TARGETS_TIERS := $(sort $(foreach category,$(PP_TARGETS),$(call pp_target_tier,$(category))))
-
-pp_target_result = $(or $($(1)_PATH:%/=%),$(CURDIR))/$(if $($(1)_KEEP_PATH),$(2:.in=),$(notdir $(2:.in=)))
-pp_target_results = $(foreach file,$($(1)),$(call pp_target_result,$(category),$(file)))
-
-$(foreach category,$(PP_TARGETS), \
-  $(foreach tier,$(call pp_target_tier,$(category)), \
-    $(eval PP_TARGETS_RESULTS_$(tier) += $(call pp_target_results,$(category))) \
-  ) \
-  $(foreach file,$($(category)), \
-    $(eval $(call create_dependency,$(call pp_target_result,$(category),$(file)), \
-                                    $(file) $(GLOBAL_DEPS))) \
-  ) \
-  $(eval $(call pp_target_results,$(category)): PP_TARGET_FLAGS=$($(category)_FLAGS)) \
-)
-
-$(foreach tier,$(PP_TARGETS_TIERS), \
-  $(eval $(tier):: $(PP_TARGETS_RESULTS_$(tier))) \
-)
-
-PP_TARGETS_ALL_RESULTS := $(sort $(foreach tier,$(PP_TARGETS_TIERS),$(PP_TARGETS_RESULTS_$(tier))))
-$(PP_TARGETS_ALL_RESULTS):
-	$(if $(filter-out $(notdir $@),$(notdir $(<:.in=))),$(error Looks like $@ has an unexpected dependency on $< which breaks PP_TARGETS))
-	$(RM) '$@'
-	$(call py_action,preprocessor,--depend $(MDDEPDIR)/$(@F).pp $(PP_TARGET_FLAGS) $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) '$<' -o '$@')
-
-# The depfile is based on the filename, and we don't want conflicts. So check
-# there's only one occurrence of any given filename in PP_TARGETS_ALL_RESULTS.
-PP_TARGETS_ALL_RESULT_NAMES := $(notdir $(PP_TARGETS_ALL_RESULTS))
-$(foreach file,$(sort $(PP_TARGETS_ALL_RESULT_NAMES)), \
-  $(if $(filter-out 1,$(words $(filter $(file),$(PP_TARGETS_ALL_RESULT_NAMES)))), \
-    $(error Multiple preprocessing rules are creating a $(file) file) \
-  ) \
-)
-
-ifneq (,$(filter $(PP_TARGETS_TIERS) $(PP_TARGETS_ALL_RESULTS),$(MAKECMDGOALS)))
-# If the depfile for a preprocessed file doesn't exist, add a dep to force
-# re-preprocessing.
-$(foreach file,$(PP_TARGETS_ALL_RESULTS), \
-  $(if $(wildcard $(MDDEPDIR)/$(notdir $(file)).pp), \
-    , \
-    $(eval $(file): FORCE) \
-  ) \
-)
-
-MDDEPEND_FILES := $(strip $(wildcard $(addprefix $(MDDEPDIR)/,$(addsuffix .pp,$(notdir $(PP_TARGETS_ALL_RESULTS))))))
-
-ifneq (,$(MDDEPEND_FILES))
-$(call include_deps,$(MDDEPEND_FILES))
-endif
-
-endif
-
-# Pull in non-recursive targets if this is a partial tree build.
-ifndef TOPLEVEL_BUILD
-include $(topsrcdir)/config/makefiles/nonrecursive.mk
-endif
-
-################################################################################
-# Special gmake rules.
-################################################################################
-
-
-#
-# Re-define the list of default suffixes, so gmake won't have to churn through
-# hundreds of built-in suffix rules for stuff we don't need.
-#
-.SUFFIXES:
-
-#
-# Fake targets.  Always run these rules, even if a file/directory with that
-# name already exists.
-#
-.PHONY: all alltags boot checkout chrome realchrome clean clobber clobber_all export install libs makefiles realclean run_apprunner tools $(DIRS) $(TOOL_DIRS) FORCE
-
-# Used as a dependency to force targets to rebuild
-FORCE:
-
-# Delete target if error occurs when building target
-.DELETE_ON_ERROR:
-
-tags: TAGS
-
-TAGS: $(CSRCS) $(CPPSRCS) $(wildcard *.h)
-	-etags $(CSRCS) $(CPPSRCS) $(wildcard *.h)
-	$(LOOP_OVER_PARALLEL_DIRS)
-	$(LOOP_OVER_DIRS)
-
-ifndef INCLUDED_DEBUGMAKE_MK #{
-  ## Only parse when an echo* or show* target is requested
-  ifneq (,$(call isTargetStem,echo,show))
-    include $(topsrcdir)/config/makefiles/debugmake.mk
-  endif #}
-endif #}
-
-documentation:
-	@cd $(DEPTH)
-	$(DOXYGEN) $(DEPTH)/config/doxygen.cfg
-
-ifdef ENABLE_TESTS
-check::
-	$(LOOP_OVER_PARALLEL_DIRS)
-	$(LOOP_OVER_DIRS)
-	$(LOOP_OVER_TOOL_DIRS)
-endif
-
-
-FREEZE_VARIABLES = \
-  CSRCS \
-  CPPSRCS \
-  EXPORTS \
-  DIRS \
-  LIBRARY \
-  MODULE \
-  TIERS \
-  EXTRA_COMPONENTS \
-  EXTRA_PP_COMPONENTS \
-  MOCHITEST_FILES \
-  MOCHITEST_CHROME_FILES \
-  MOCHITEST_BROWSER_FILES \
-  MOCHITEST_A11Y_FILES \
-  MOCHITEST_METRO_FILES \
-  MOCHITEST_ROBOCOP_FILES \
-  $(NULL)
-
-$(foreach var,$(FREEZE_VARIABLES),$(eval $(var)_FROZEN := '$($(var))'))
-
-CHECK_FROZEN_VARIABLES = $(foreach var,$(FREEZE_VARIABLES), \
-  $(if $(subst $($(var)_FROZEN),,'$($(var))'),$(error Makefile variable '$(var)' changed value after including rules.mk. Was $($(var)_FROZEN), now $($(var)).)))
-
-libs export::
-	$(CHECK_FROZEN_VARIABLES)
-
-PURGECACHES_DIRS ?= $(DIST)/bin
-ifdef MOZ_WEBAPP_RUNTIME
-PURGECACHES_DIRS += $(DIST)/bin/webapprt
-endif
-
-PURGECACHES_FILES = $(addsuffix /.purgecaches,$(PURGECACHES_DIRS))
-
-default all:: $(PURGECACHES_FILES)
-
-$(PURGECACHES_FILES):
-	if test -d $(@D) ; then touch $@ ; fi
-
-.DEFAULT_GOAL := $(or $(OVERRIDE_DEFAULT_GOAL),default)
-
-#############################################################################
-# Derived targets and dependencies
-
-include $(topsrcdir)/config/makefiles/autotargets.mk
-ifneq ($(NULL),$(AUTO_DEPS))
-  default all libs tools export:: $(AUTO_DEPS)
-endif
-
-export:: $(GENERATED_FILES)
-
-GARBAGE += $(GENERATED_FILES)
deleted file mode 100644
--- a/js/src/config/solaris_ia32.map
+++ /dev/null
@@ -1,5 +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/.
-
-hwcap_1 = OVERRIDE;
deleted file mode 100644
--- a/js/src/config/static-checking-config.mk
+++ /dev/null
@@ -1,36 +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/.
-
-DEHYDRA_SCRIPT = $(topsrcdir)/config/static-checking.js
-
-DEHYDRA_MODULES = \
-  $(NULL)
-
-TREEHYDRA_MODULES = \
-  $(topsrcdir)/jsstack.js \
-  $(NULL)
-
-DEHYDRA_ARG_PREFIX=-fplugin-arg-gcc_treehydra-
-
-DEHYDRA_ARGS = \
-  $(DEHYDRA_ARG_PREFIX)script=$(DEHYDRA_SCRIPT) \
-  $(DEHYDRA_ARG_PREFIX)topsrcdir=$(topsrcdir) \
-  $(DEHYDRA_ARG_PREFIX)objdir=$(DEPTH) \
-  $(DEHYDRA_ARG_PREFIX)dehydra-modules=$(subst $(NULL) ,$(COMMA),$(strip $(DEHYDRA_MODULES))) \
-  $(DEHYDRA_ARG_PREFIX)treehydra-modules=$(subst $(NULL) ,$(COMMA),$(strip $(TREEHYDRA_MODULES))) \
-  $(NULL)
-
-DEHYDRA_FLAGS = -fplugin=$(DEHYDRA_PATH) $(DEHYDRA_ARGS)
-
-ifdef DEHYDRA_PATH
-OS_CXXFLAGS += $(DEHYDRA_FLAGS)
-endif
-
-ifdef ENABLE_CLANG_PLUGIN
-# Load the clang plugin from the mozilla topsrcdir. This implies that the clang
-# plugin is only usable if we're building js/src under mozilla/, though.
-CLANG_PLUGIN := $(DEPTH)/../../build/clang-plugin/$(DLL_PREFIX)clang-plugin$(DLL_SUFFIX)
-OS_CXXFLAGS += -Xclang -load -Xclang $(CLANG_PLUGIN) -Xclang -add-plugin -Xclang moz-check
-OS_CFLAGS += -Xclang -load -Xclang $(CLANG_PLUGIN) -Xclang -add-plugin -Xclang moz-check
-endif
deleted file mode 100644
--- a/js/src/config/static-checking.js
+++ /dev/null
@@ -1,147 +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/. */
-
-/**
- * A script for GCC-dehydra to analyze the Mozilla codebase and catch
- * patterns that are incorrect, but which cannot be detected by a compiler. */
-
-/**
- * Activate Treehydra outparams analysis if running in Treehydra.
- */
-
-function treehydra_enabled() {
-  return this.hasOwnProperty('TREE_CODE');
-}
-
-sys.include_path.push(options.topsrcdir);
-
-include('string-format.js');
-
-let modules = [];
-
-function LoadModules(modulelist)
-{
-  if (modulelist == "")
-    return;
-
-  let modulenames = modulelist.split(',');
-  for each (let modulename in modulenames) {
-    let module = { __proto__: this };
-    include(modulename, module);
-    modules.push(module);
-  }
-}
-
-LoadModules(options['dehydra-modules']);
-if (treehydra_enabled())
-  LoadModules(options['treehydra-modules']);
-
-function process_type(c)
-{
-  for each (let module in modules)
-    if (module.hasOwnProperty('process_type'))
-      module.process_type(c);
-}
-
-function hasAttribute(c, attrname)
-{
-  var attr;
-
-  if (c.attributes === undefined)
-    return false;
-
-  for each (attr in c.attributes)
-    if (attr.name == 'user' && attr.value[0] == attrname)
-      return true;
-
-  return false;
-}
-
-// This is useful for detecting method overrides
-function signaturesMatch(m1, m2)
-{
-  if (m1.shortName != m2.shortName)
-    return false;
-
-  if ((!!m1.isVirtual) != (!!m2.isVirtual))
-    return false;
-  
-  if (m1.isStatic != m2.isStatic)
-    return false;
-  
-  let p1 = m1.type.parameters;
-  let p2 = m2.type.parameters;
-
-  if (p1.length != p2.length)
-    return false;
-  
-  for (let i = 0; i < p1.length; ++i)
-    if (!params_match(p1[i], p2[i]))
-      return false;
-
-  return true;
-}
-
-function params_match(p1, p2)
-{
-  [p1, p2] = unwrap_types(p1, p2);
-
-  for (let i in p1)
-    if (i == "type" && !types_match(p1.type, p2.type))
-      return false;
-    else if (i != "type" && p1[i] !== p2[i])
-      return false;
-
-  for (let i in p2)
-    if (!(i in p1))
-      return false;
-
-  return true;
-}
-
-function types_match(t1, t2)
-{
-  if (!t1 || !t2)
-    return false;
-
-  [t1, t2] = unwrap_types(t1, t2);
-
-  return t1 === t2;
-}
-
-function unwrap_types(t1, t2)
-{
-  while (t1.variantOf)
-    t1 = t1.variantOf;
-
-  while (t2.variantOf)
-    t2 = t2.variantOf;
-
-  return [t1, t2];
-}
-
-const forward_functions = [
-  'process_type',
-  'process_tree_type',
-  'process_decl',
-  'process_tree_decl',
-  'process_function',
-  'process_tree',
-  'process_cp_pre_genericize',
-  'input_end'
-];
-
-function setup_forwarding(n)
-{
-  this[n] = function() {
-    for each (let module in modules) {
-      if (module.hasOwnProperty(n)) {
-        module[n].apply(this, arguments);
-      }
-    }
-  }
-}
-
-for each (let n in forward_functions)
-  setup_forwarding(n);
deleted file mode 100644
--- a/js/src/config/string-format.js
+++ /dev/null
@@ -1,65 +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/. */
-
-String.prototype.format = function string_format() {
-  // there are two modes of operation... unnamed indices are read in order;
-  // named indices using %(name)s. The two styles cannot be mixed.
-  // Unnamed indices can be passed as either a single argument to this function,
-  // multiple arguments to this function, or as a single array argument
-  let curindex = 0;
-  let d;
-
-  if (arguments.length > 1) {
-    d = arguments;
-  }
-  else
-    d = arguments[0];
-
-  function r(s, key, type) {
-    if (type == '%')
-      return '%';
-    
-    let v;
-    if (key == "") {
-      if (curindex == -1)
-        throw Error("Cannot mix named and positional indices in string formatting.");
-
-      if (curindex == 0 && (!(d instanceof Object) || !(0 in d))) {
-        v = d;
-      }
-      else if (!(curindex in d))
-        throw Error("Insufficient number of items in format, requesting item %i".format(curindex));
-      else {
-        v = d[curindex];
-      }
-
-      ++curindex;
-    }
-    else {
-      key = key.slice(1, -1);
-      if (curindex > 0)
-        throw Error("Cannot mix named and positional indices in string formatting.");
-      curindex = -1;
-
-      if (!(key in d))
-        throw Error("Key '%s' not present during string substitution.".format(key));
-      v = d[key];
-    }
-    switch (type) {
-    case "s":
-      if (v === undefined)
-        return "<undefined>";
-      return v.toString();
-    case "r":
-      return uneval(v);
-    case "i":
-      return parseInt(v);
-    case "f":
-      return Number(v);
-    default:
-      throw Error("Unexpected format character '%s'.".format(type));
-    }
-  }
-  return this.replace(/%(\([^)]+\))?(.)/g, r);
-};
deleted file mode 100644
--- a/js/src/config/system-headers
+++ /dev/null
@@ -1,1147 +0,0 @@
-nspr.h
-plarena.h
-plarenas.h
-plbase64.h
-plerror.h
-plgetopt.h
-plhash.h
-plstr.h
-pratom.h
-prbit.h
-prclist.h
-prcmon.h
-prcountr.h
-prcpucfg.h
-prcvar.h
-prdtoa.h
-prenv.h
-prerr.h
-prerror.h
-prinet.h
-prinit.h
-prinrval.h
-prio.h
-pripcsem.h
-private
-prlink.h
-prlock.h
-prlog.h
-prlong.h
-prmem.h
-prmon.h
-prmwait.h
-prnetdb.h
-prolock.h
-prpdce.h
-prprf.h
-prproces.h
-prrng.h
-prrwlock.h
-prshm.h
-prshma.h
-prsystem.h
-prthread.h
-prtime.h
-prtpool.h
-prtrace.h
-prtypes.h
-prvrsion.h
-prwin16.h
-base64.h
-blapit.h
-cert.h
-certdb.h
-certt.h
-ciferfam.h
-cmmf.h
-cmmft.h
-cms.h
-cmsreclist.h
-cmst.h
-crmf.h
-crmft.h
-cryptohi.h
-cryptoht.h
-ecl-exp.h
-hasht.h
-jar-ds.h
-jar.h
-jarfile.h
-key.h
-keyhi.h
-keyt.h
-keythi.h
-nss.h
-nssb64.h
-nssb64t.h
-nssbase.h
-nssbaset.h
-nssck.api
-nssckbi.h
-nssckepv.h
-nssckft.h
-nssckfw.h
-nssckfwc.h
-nssckfwt.h
-nssckg.h
-nssckmdt.h
-nssckt.h
-nssilckt.h
-nssilock.h
-nsslocks.h
-nssrwlk.h
-nssrwlkt.h
-nssutil.h
-ocsp.h
-ocspt.h
-p12.h
-p12plcy.h
-p12t.h
-pk11func.h
-pk11pqg.h
-pk11priv.h
-pk11pub.h
-pk11sdr.h
-pkcs11.h
-pkcs11f.h
-pkcs11n.h
-pkcs11p.h
-pkcs11t.h
-pkcs11u.h
-pkcs12.h
-pkcs12t.h
-pkcs7t.h
-portreg.h
-preenc.h
-secasn1.h
-secasn1t.h
-seccomon.h
-secder.h
-secdert.h
-secdig.h
-secdigt.h
-secerr.h
-sechash.h
-secitem.h
-secmime.h
-secmod.h
-secmodt.h
-secoid.h
-secoidt.h
-secpkcs5.h
-secpkcs7.h
-secport.h
-shsign.h
-smime.h
-ssl.h
-sslerr.h
-sslproto.h
-sslt.h
-utilmodt.h
-utilpars.h
-utilparst.h
-utilrename.h
-A4Stuff.h
-activscp.h
-AEDataModel.h
-AEObjects.h
-AEPackObject.h
-AERegistry.h
-AEUtils.h
-afxcmn.h
-afxcoll.h
-afxcview.h
-afxdisp.h
-afxdtctl.h
-afxext.h
-afxmt.h
-afxpriv.h
-afxtempl.h
-afxwin.h
-algorithm
-Aliases.h
-all.h
-alloca.h
-alloc.h
-alsa/asoundlib.h
-android/log.h
-ansi_parms.h
-a.out.h
-app/Cursor.h
-Appearance.h
-AppFileInfo.h
-AppKit.h
-AppleEvents.h
-Application.h
-app/Message.h
-app/MessageRunner.h
-arpa/inet.h
-arpa/nameser.h
-asm/sigcontext.h
-asm/signal.h
-ASRegistry.h
-assert.h
-atk/atk.h
-atlcom.h
-atlconv.h
-atlctl.cpp
-atlctl.h
-ATLCTL.H
-atlhost.h
-atlimpl.cpp
-atlwin.cpp
-ATSTypes.h
-ATSUnicode.h
-Balloons.h
-base/pblock.h
-base/PCR_Base.h
-base/session.h
-basetyps.h
-be/app/Application.h
-Beep.h
-be/kernel/image.h
-be/kernel/OS.h
-bfd.h
-Bitmap.h
-bitset
-blapi.h
-bsd/libc.h
-bsd/syscall.h
-bstring.h
-builtin.h
-Button.h
-byteswap.h
-#if MOZ_TREE_CAIRO!=1
-#define WRAP_CAIRO_HEADERS
-#endif
-#ifdef WRAP_CAIRO_HEADERS
-pixman.h
-cairo.h
-cairo-atsui.h
-cairo-beos.h
-cairo-ft.h
-cairo-glitz.h
-cairo-os2.h
-cairo-pdf.h
-cairo-ps.h
-cairo-tee.h
-cairo-quartz.h
-cairo-win32.h
-cairo-xlib.h
-cairo-xlib-xrender.h
-cairo-directfb.h
-cairo-qpainter.h
-#endif
-dfiff.h
-exception
-ffi.h
-fusion/reactor.h
-fusion/property.h
-fusion/conf.h
-fusion/build.h
-fusion/hash.h
-fusion/shm/shm.h
-fusion/shm/shm_internal.h
-fusion/shm/pool.h
-fusion/ref.h
-fusion/fusion_internal.h
-fusion/lock.h
-fusion/types.h
-fusion/vector.h
-fusion/call.h
-fusion/shmalloc.h
-fusion/protocol.h
-fusion/fusion.h
-fusion/arena.h
-fusion/object.h
-dgiff.h
-direct/util.h
-direct/memcpy.h
-direct/interface.h
-direct/conf.h
-direct/tree.h
-direct/signals.h
-direct/build.h
-direct/interface_implementation.h
-direct/utf8.h
-direct/serial.h
-direct/hash.h
-direct/direct.h
-direct/clock.h
-direct/types.h
-direct/mem.h
-direct/thread.h
-direct/debug.h
-direct/stream.h
-direct/messages.h
-direct/trace.h
-direct/modules.h
-direct/log.h
-direct/system.h
-direct/list.h
-dfb_types.h
-directfb_strings.h
-directfb_keyboard.h
-callconv.h
-Carbon/Carbon.h
-CarbonEvents.h
-Carbon.h
-cassert
-c_asm.h
-cctype
-cderr.h
-cerrno
-CFBase.h
-CFBundle.h
-CFData.h
-CFDictionary.h
-cf.h
-CFNumber.h
-CFPlugIn.h
-CFPreferences.h
-CFString.h
-CFURL.h
-CGAffineTransform.h
-CheckBox.h
-climits
-Clipboard.h
-cmplrs/stsupport.h
-Cocoa/Cocoa.h
-CodeFragments.h
-comdef.h
-commctrl.h
-COMMCTRL.H
-commdlg.h
-compat.h
-condapi.h
-ConditionalMacros.h
-config.h
-conio.h
-console.h
-ControlDefinitions.h
-Controls.h
-CoreFoundation/CoreFoundation.h
-CoreServices/CoreServices.h
-CPalmRec.cpp
-Cpalmrec.h
-CPCatgry.cpp
-CPDbBMgr.h
-CPString.cpp
-CPString.h
-crtdbg.h
-crt_externs.h
-crypt.h
-cstddef
-cstdio
-cstdlib
-cstring
-ctime
-ctype.h
-curl/curl.h
-curl/easy.h
-curses.h
-cxxabi.h
-DateTimeUtils.h
-dbus/dbus.h
-dbus/dbus-glib.h
-dbus/dbus-glib-lowlevel.h
-ddeml.h
-Debug.h
-deque
-dem.h
-descrip.h
-Devices.h
-Dialogs.h
-direct.h
-dirent.h
-DiskInit.h
-dlfcn.h
-dlgs.h
-dl.h
-docobj.h
-dos/dosextens.h
-dos.h
-Drag.h
-DriverServices.h
-DriverSynchronization.h
-DropInPanel.h
-dvidef.h
-elf.h
-endian.h
-Entry.h
-errno.h
-Errors.h
-Events.h
-exdisp.h
-ExDisp.h
-exe386.h
-execinfo.h
-extras.h
-fabdef.h
-fcntl.h
-features.h
-fibdef.h
-File.h
-filehdr.h
-files.h
-Files.h
-FindDirectory.h
-Finder.h
-FinderRegistry.h
-FixMath.h
-float.h
-fnmatch.h
-Folders.h
-fontconfig/fontconfig.h
-fontconfig/fcfreetype.h
-Font.h
-Fonts.h
-fp.h
-fpieee.h
-frame/log.h
-frame/req.h
-freetype/freetype.h
-freetype/ftcache.h
-freetype/ftglyph.h
-freetype/ftsynth.h
-freetype/ftoutln.h
-freetype/ttnameid.h
-freetype/tttables.h
-freetype/t1tables.h
-freetype/ftlcdfil.h
-freetype/ftsizes.h
-freetype/ftadvanc.h
-freetype/ftbitmap.h
-freetype/ftxf86.h
-freetype.h
-ftcache.h
-ftglyph.h
-ftsynth.h
-ftoutln.h
-ttnameid.h
-tttables.h
-t1tables.h
-ftlcdfil.h
-ftsizes.h
-ftadvanc.h
-ftbitmap.h
-ftxf86.h
-fribidi/fribidi.h
-FSp_fopen.h
-fstream
-fstream.h
-ft2build.h
-fts.h
-gconf/gconf-client.h
-Gdiplus.h
-gdk/gdk.h
-gdk/gdkkeysyms.h
-gdk/gdkprivate.h
-gdk/gdkx.h
-gdk/gdkdirectfb.h
-gdk-pixbuf/gdk-pixbuf.h
-Gestalt.h
-getopt.h
-glibconfig.h
-glib.h
-glib-object.h
-gmodule.h
-gnome.h
-gnu/libc-version.h
-grp.h
-gssapi_generic.h
-gssapi/gssapi_generic.h
-gssapi/gssapi.h
-gssapi.h
-gtk/gtk.h
-gtk/gtkx.h
-gtk/gtkprinter.h
-gtk/gtkprintjob.h
-gtk/gtkprintunixdialog.h
-HIToolbox/HIToolbox.h
-hlink.h
-ia64/sys/inline.h
-Icons.h
-iconv.h
-ieeefp.h
-ifaddrs.h
-image.h
-imagehlp.h
-imm.h
-initguid.h
-InterfaceDefs.h
-InternetConfig.h
-IntlResources.h
-ints.h
-intshcut.h
-inttypes.h
-iodef.h
-io.h
-IOKit/IOKitLib.h
-IOKit/IOMessage.h
-IOKit/pwr_mgt/IOPMLib.h
-iomanip
-ios
-iosfwd
-iostream
-iostream.h
-iterator
-JavaControl.h
-JavaEmbedding/JavaControl.h
-JavaVM/jni.h
-JManager.h
-JNIEnvTests.h
-jni.h
-#if MOZ_NATIVE_JPEG==1
-jpeglib.h
-#endif
-JVMManagerTests.h
-Kerberos/Kerberos.h
-kernel/image.h
-kernel/OS.h
-LAction.h
-langinfo.h
-LApplication.h
-LArray.h
-LArrayIterator.h
-LAttachable.h
-LAttachment.h
-LaunchServices.h
-lber.h
-LBroadcaster.h
-LButton.h
-lcache.h
-LCaption.h
-LCheckBox.h
-LCicnButton.h
-LClipboard.h
-LCommander.h
-LComparator.h
-LControl.h
-ldap.h
-ldaplog.h
-ldappr.h
-ldap_ssl.h
-LDataStream.h
-ldfcn.h
-LDialogBox.h
-ldif.h
-LDocApplication.h
-LDocument.h
-LDragAndDrop.h
-LDragTask.h
-LEditField.h
-LEditText.h
-LEventDispatcher.h
-LFile.h
-LFileStream.h
-LFileTypeList.h
-LFocusBox.h
-LGrafPortView.h
-LHandleStream.h
-libc_r.h
-libelf.h
-libelf/libelf.h
-libgen.h
-libgnome/gnome-url.h
-libgnome/libgnome.h
-libgnomeui/gnome-icon-lookup.h
-libgnomeui/gnome-icon-theme.h
-libgnomeui/gnome-ui-init.h
-libgnomevfs/gnome-vfs-file-info.h
-libgnomevfs/gnome-vfs.h
-libgnomevfs/gnome-vfs-init.h
-libgnomevfs/gnome-vfs-mime.h
-libgnomevfs/gnome-vfs-mime-handlers.h
-libgnomevfs/gnome-vfs-mime-utils.h
-libgnomevfs/gnome-vfs-ops.h
-libgnomevfs/gnome-vfs-standard-callbacks.h
-lib$routines.h
-limits
-limits.h
-link.h
-linux/kernel.h
-linux/limits.h
-linux/rtc.h
-linux/version.h
-list
-List.h
-Lists.h
-LListBox.h
-LListener.h
-LMenuBar.h
-LMenu.h
-LModelDirector.h
-LModelObject.h
-LModelProperty.h
-loader.h
-locale
-locale.h
-LOffscreenView.h
-logkeys.h
-logstrng.h
-Looper.h
-LowMem.h
-LPane.h
-LPeriodical.h
-LPicture.h
-LPlaceHolder.h
-LPrintout.h
-LProgressBar.h
-LPushButton.h
-LRadioGroup.h
-LRadioGroupView.h
-LRunArray.h
-LScroller.h
-LSharable.h
-LSingleDoc.h
-LStaticText.h
-LStdControl.h
-LStream.h
-LString.h
-LTabGroup.h
-LTabGroupView.h
-LTableArrayStorage.h
-LTableMonoGeometry.h
-LTableSingleSelector.h
-LTableView.h
-LTextEditView.h
-LTextTableView.h
-LUndoer.h
-LVariableArray.h
-LView.h
-LWindow.h
-m68881.h
-MacErrors.h
-MacHeadersCarbon.h
-machine/ansi.h
-machine/builtins.h
-machine/clock.h
-machine/endian.h
-machine/frame.h
-machine/inline.h
-machine/limits.h
-machine/signal.h
-machine/trap.h
-mach/mach_host.h
-mach/mach_init.h
-mach/mach_interface.h
-mach/mach_port.h
-mach-o/dyld.h
-MacLocales.h
-MacMemory.h
-MacTCP.h
-MacTypes.h
-MacWindows.h
-malloc.h
-malloc_np.h
-map
-mapicode.h
-mapidefs.h
-mapiguid.h
-mapi.h
-mapitags.h
-mapiutil.h
-mapix.h
-Math64.h
-math.h
-mbstring.h
-mem.h
-memory
-memory.h
-Memory.h
-MenuBar.h
-Menu.h
-Menus.h
-Message.h
-Mime.h
-MixedMode.h
-mlang.h
-mmsystem.h
-model.h
-Movies.h
-mpw/errno.h
-mshtmhst.h
-mshtml.h
-mswsock.h
-Multiprocessing.h
-mutex.h
-Navigation.h
-ncompat.h
-ncurses.h
-netCore.h
-netdb.h
-net/if.h
-netinet/in.h
-netinet/in_systm.h
-netinet/tcp.h
-new
-newexe.h
-new.h
-nl_types.h
-NodeInfo.h
-nsswitch.h
-objbase.h
-objidl.h
-Objsafe.h
-ojiapitests.h
-ole2.h
-oleidl.h
-OpenGL/OpenGL.h
-OpenTptInternet.h
-OpenTransport.h
-os2.h
-OS.h
-osreldate.h
-ostream
-OSUtils.h
-Packages.h
-Palettes.h
-PALM_CMN.H
-pango/pango-modules.h
-pango/pangocairo.h
-pango/pangofc-decoder.h
-pango/pangofc-font.h
-pango/pangofc-fontmap.h
-pango/pango-break.h
-pango/pango-fontmap.h
-pango/pango.h
-pango/pangoxft.h
-pango/pango-utils.h
-pascal.h
-Patches.h
-Path.h
-pcfs/pc_dir.h
-Pgenerr.h
-PGenErr.h
-Ph.h
-PLStringFuncs.h
-PMApplication.h
-pmddim.h
-poll.h
-Polygon.h
-portable.h
-Power.h
-PP_ClassHeaders.cp
-PP_Constants.h
-PPCToolbox.h
-PP_DebugHeaders.cp
-PP_KeyCodes.h
-PP_Macros.h
-PP_Messages.h
-PP_Prefix.h
-PP_Resources.h
-PP_Types.h
-Printing.h
-Print/PMPrintingDialogExtensions.h
-private/qucomextra_p.h
-Processes.h
-process.h
-Process.h
-proto/dos.h
-proto/exec.h
-psap.h
-Pt.h
-pthread.h
-pthread_np.h
-pulse/pulseaudio.h
-pwd.h
-Python.h
-QDOffscreen.h
-queue
-Quickdraw.h
-QuickDraw.h
-QuickTimeComponents.h
-quipu/attr.h
-rasdlg.h
-raserror.h
-ras.h
-regex.h
-Region.h
-resolv.h
-Resources.h
-Retrace.h
-rld_interface.h
-rmsdef.h
-Roster.h
-rpc.h
-rpcproxy.h
-rpc/types.h
-sane/sane.h
-sane/sanei.h
-sane/saneopts.h
-Scrap.h
-Screen.h
-Script.h
-ScrollBar.h
-sec.h
-secrng.h
-security.h
-secutil.h
-semaphore.h
-servprov.h
-set
-setjmp.h
-SFNTLayoutTypes.h
-SFNTTypes.h
-share.h
-shellapi.h
-shlguid.h
-shlobj.h
-sigcontext.h
-signal.h
-SimpleGameSound.h
-SIOUX.h
-size_t.h
-sndio.h
-someincludefile.h
-Sound.h
-soundcard.h
-sqlite3.h
-ssdef.h
-sstream
-stack
-StandardFile.h
-starlet.h
-stat.h
-statreg.cpp
-statreg.h
-stdarg.h
-stdbool.h
-stddef.h
-stdint.h
-stdio.h
-stdlib.h
-storage/FindDirectory.h
-StorageKit.h
-string
-StringCompare.h
-string.h
-String.h
-strings.h
-Strings.h
-StringView.h
-stropts.h
-strstrea.h
-structs.h
-stsdef.h
-SupportDefs.h
-support/String.h
-support/SupportDefs.h
-support/TLS.h
-svrcore.h
-symconst.h
-sym.h
-synch.h
-syncmgr.h
-sys/atomic_op.h
-sys/bitypes.h
-sys/byteorder.h
-syscall.h
-sys/cdefs.h
-sys/cfgodm.h
-sys/elf.h
-sys/endian.h
-sys/errno.h
-sys/fault.h
-sys/fcntl.h
-sys/file.h
-sys/filio.h
-sys/frame.h
-sys/immu.h
-sys/inttypes.h
-sys/ioccom.h
-sys/ioctl.h
-sys/ipc.h
-sys/ldr.h
-sys/link.h
-sys/locking.h
-syslog.h
-sys/lwp.h
-sys/machine.h
-sys/mman.h
-sys/mmu.h
-sys/mount.h
-sys/mpctl.h
-sys/param.h
-sys/pda.h
-sys/poll.h
-sys/ppc.h
-sys/prctl.h
-sys/priv.h
-sys/procfs.h
-sys/pstat.h
-sys/ptrace.h
-sys/queue.h
-sys/quota.h
-sys/reboot.h
-sys/reg.h
-sys/regset.h
-sys/resource.h
-sys/sched.h
-sys/select.h
-sys/sem.h
-sys/sendfile.h
-sys/shm.h
-sys/siginfo.h
-sys/signal.h
-sys/socket.h
-sys/sockio.h
-sys/sparc/frame.h
-sys/stack.h
-sys/statfs.h
-sys/stat.h
-sys/statvfs.h
-sys/syscall.h
-sys/sysctl.h
-sys/sysinfo.h
-sys/sysmp.h
-sys/syssgi.h
-sys/system_properties.h
-sys/systeminfo.h
-sys/timeb.h
-sys/time.h
-sys/times.h
-sys/ttycom.h
-sys/types.h
-sys/ucontext.h
-sys/uio.h
-sys/un.h
-sys/unistd.h
-sys/utsname.h
-sys/vfs.h
-sys/wait.h
-tables.h
-TArray.h
-TArrayIterator.h
-task.h
-tchar.h
-TCHAR.H
-termios.h
-TextCommon.h
-TextEdit.h
-TextEncodingConverter.h
-TextServices.h
-TextUtils.h
-TextView.h
-th/PCR_Th.h
-thread.h
-ThreadManagerTests.h
-Threads.h
-time.h
-Timer.h
-tlhelp32.h
-ToolUtils.h
-tr1/functional
-trace.h
-Traps.h
-typeinfo
-types.h
-Types.h
-UAppleEventsMgr.h
-UAttachments.h
-ucontext.h
-uconv.h
-UCursor.h
-ucx$inetdef.h
-UDebugging.h
-UDesktop.h
-UDrawingState.h
-UDrawingUtils.h
-UEnvironment.h
-UEventMgr.h
-UException.h
-UExtractFromAEDesc.h
-UGWorld.h
-UKeyFilters.h
-ulocks.h
-ulserrno.h
-UMemoryMgr.h
-UModalDialogs.h
-UNavServicesDialogs.h
-UnicodeBlockObjects.h
-UnicodeConverter.h
-UnicodeUtilities.h
-unidef.h
-unikbd.h
-unistd.h
-unix.h
-unixio.h
-unixlib.h
-unknwn.h
-UPrinting.h
-UQuickTime.h
-UReanimator.h
-URegions.h
-URegistrar.h
-UResourceMgr.h
-utility
-urlhist.h
-urlmon.h
-UScrap.h
-UScreenPort.h
-UTCUtils.h
-UTETextAction.h
-UTEViewTextAction.h
-UTextEdit.h
-UTextTraits.h
-utility
-utime.h
-UWindows.h
-values.h
-varargs.h
-vcclr.h
-vector
-View.h
-Volume.h
-wab.h
-wait.h
-wchar.h
-wctype.h
-winbase.h
-win/compobj.h
-windef.h
-Window.h
-windows.h
-Windows.h
-windowsx.h
-Wininet.h
-winnls.h
-winperf.h
-winreg.h
-Winreg.h
-winsock2.h
-winsock.h
-winspool.h
-winsvc.h
-winuser.h
-winver.h
-wmem.h
-workbench/startup.h
-wtypes.h
-wx/image.h
-wx/listctrl.h
-wx/log.h
-wx/toolbar.h
-wx/wx.h
-wx/xrc/xmlres.h
-X11/cursorfont.h
-X11/extensions/Print.h
-X11/extensions/shape.h
-X11/extensions/scrnsaver.h
-X11/extensions/XShm.h
-X11/extensions/Xrender.h
-X11/extensions/Xdamage.h
-X11/extensions/Xcomposite.h
-X11/Intrinsic.h
-X11/keysymdef.h
-X11/keysym.h
-X11/Shell.h
-X11/StringDefs.h
-X11/Xatom.h
-X11/Xft/Xft.h
-X11/Xfuncproto.h
-X11/X.h
-X11/XKBlib.h
-X11/Xlib.h
-X11/Xlibint.h
-X11/Xlocale.h
-X11/Xos.h
-X11/Xutil.h
-xpt_struct.h
-xpt_xdr.h
-zmouse.h
-speex/speex_resampler.h
-soundtouch/SoundTouch.h
-#if MOZ_NATIVE_PNG==1
-png.h
-#endif
-#if MOZ_NATIVE_ZLIB==1
-zlib.h
-#endif
-#ifdef MOZ_ENABLE_STARTUP_NOTIFICATION
-libsn/sn.h
-libsn/sn-common.h
-libsn/sn-launchee.h
-libsn/sn-launcher.h
-libsn/sn-monitor.h
-libsn/sn-util.h
-#endif
-#if MOZ_NATIVE_HUNSPELL==1
-hunspell.hxx
-#endif
-#if MOZ_NATIVE_BZ2==1
-bzlib.h
-#endif
-#ifdef MOZ_ENABLE_GIO
-gio/gio.h
-#endif
-#if MOZ_NATIVE_LIBEVENT==1
-event.h
-#else
-sys/event.h
-#endif
-#ifdef MOZ_ENABLE_LIBPROXY
-proxy.h
-#endif
-#ifdef MOZ_ENABLE_CONTENTMANAGER
-SelectSingleContentItemPage.h
-SelectMultipleContentItemsPage.h
-QtSparql/qsparqlconnection.h
-QtSparql/qsparqlquery.h
-QtSparql/qsparqlresult.h
-#endif
-
-#if MOZ_TREE_PIXMAN!=1
-pixman.h
-#endif
-#if MOZ_ENABLE_MEEGOTOUCHSHARE
-shareuiinterface.h
-#endif
-#if MOZ_NATIVE_LIBVPX==1
-vpx/vpx_codec.h
-vpx/vpx_decoder.h
-vpx/vpx_encoder.h
-vpx/vp8cx.h
-vpx/vp8dx.h
-#endif
-#ifdef GKMEDIAS_SHARED_LIBRARY
-vpx/vpx_codec.h
-vpx/vpx_decoder.h
-vpx/vpx_encoder.h
-vpx/vp8cx.h
-vpx/vp8dx.h
-vorbis/codec.h
-theora/theoradec.h
-tremor/ivorbiscodec.h
-ogg/ogg.h
-ogg/os_types.h
-nestegg/nestegg.h
-cubeb/cubeb.h
-#endif
-gst/gst.h
-gst/app/gstappsink.h
-gst/app/gstappsrc.h
-gst/video/video.h
-sys/msg.h
-sys/ipc.h
-sys/thr.h
-sys/user.h
-kvm.h
-spawn.h
-err.h
-xlocale.h
-#ifdef MOZ_SHARED_ICU
-unicode/locid.h
-unicode/numsys.h
-unicode/ucal.h
-unicode/uclean.h
-unicode/ucol.h
-unicode/udat.h
-unicode/udatpg.h
-unicode/uenum.h
-unicode/unum.h
-unicode/ustring.h
-unicode/utypes.h
-#endif
-libutil.h
deleted file mode 100644
--- a/js/src/config/version.mk
+++ /dev/null
@@ -1,51 +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/.
-
-ifndef INCLUDED_VERSION_MK
-INCLUDED_VERSION_MK=1
-
-# Windows gmake build:
-# Build default .rc file if $(RESFILE) isn't defined.
-# TODO:
-# PBI      : Private build info.  Not used currently.
-#            Guessing the best way would be to set an env var.
-# BINARY   : Binary name.  Not used currently.
-ifeq ($(MOZ_WIDGET_TOOLKIT),windows)
-ifndef RESFILE
-RCFILE=./module.rc
-RESFILE=./module.res
-_RC_STRING = -QUIET 1 -DEPTH $(DEPTH) -TOPSRCDIR $(topsrcdir) -OBJDIR . -SRCDIR $(srcdir) -DISPNAME $(MOZ_APP_DISPLAYNAME) -APPVERSION $(MOZ_APP_VERSION)
-ifdef MOZILLA_OFFICIAL
-_RC_STRING += -OFFICIAL 1
-endif
-ifdef MOZ_DEBUG
-_RC_STRING += -DEBUG 1
-endif
-ifdef PROGRAM
-_RC_STRING += -BINARY $(PROGRAM)
-else
-ifdef _PROGRAM
-_RC_STRING += -BINARY $(_PROGRAM)
-else
-ifdef SHARED_LIBRARY
-_RC_STRING += -BINARY $(SHARED_LIBRARY)
-endif
-endif
-endif
-ifdef RCINCLUDE
-_RC_STRING += -RCINCLUDE $(srcdir)/$(RCINCLUDE)
-endif
-
-GARBAGE += $(RESFILE) $(RCFILE)
-
-#dummy target so $(RCFILE) doesn't become the default =P
-all::
-
-$(RCFILE): $(RCINCLUDE) $(topsrcdir)/config/version_win.pl
-	$(PERL) $(topsrcdir)/config/version_win.pl $(_RC_STRING)
-
-endif  # RESFILE
-endif  # Windows
-
-endif
deleted file mode 100755
--- a/js/src/config/version_win.pl
+++ /dev/null
@@ -1,374 +0,0 @@
-#!/usr/bin/perl -w
-
-# 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/.
-
-#use diagnostics;
-require strict;
-my $dir = $0;
-$dir =~ s/[^\/]*$//;
-push(@INC, "$dir");
-require "Moz/Milestone.pm";
-use Getopt::Long;
-use Getopt::Std;
-use POSIX;
-
-# Calculate the number of days since Jan. 1, 2000 from a buildid string
-sub daysFromBuildID
-{
-    my ($buildid,) = @_;
-
-    my ($y, $m, $d, $h) = ($buildid =~ /^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/);
-    $d || die("Unrecognized buildid string.");
-
-    my $secondstodays = 60 * 60 * 24;
-    return sprintf("%d",
-		   (POSIX::mktime(00, 00, 00, $d, $m - 1, $y - 1900) -
-		    POSIX::mktime(00, 00, 00, 01, 00, 100)) / $secondstodays);
-}
-
-#Creates version resource file
-
-#Paramaters are passed on the command line:
-
-#Example: -MODNAME nsToolkitCompsModule -DEBUG=1
-
-# DEBUG - Mozilla's global debug variable - tells if its debug version
-# OFFICIAL - tells Mozilla is building a milestone or nightly
-# MSTONE - tells which milestone is being built;
-# OBJDIR - Holds the object directory;
-# MODNAME - tells what the name of the module is like nsBMPModule
-# DEPTH - Holds the path to the root obj dir
-# TOPSRCDIR - Holds the path to the root mozilla dir
-# SRCDIR - Holds module.ver and source
-# BINARY - Holds the name of the binary file
-# DISPNAME - Holds the display name of the built application
-# APPVERSION - Holds the version string of the built application
-# RCINCLUDE - Holds the name of the RC File to include or ""
-# QUIET - Turns off output
-
-#Description and Comment come from module.ver
-#Bug 23560
-#http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/rc_7x2d.asp
-
-#Get next .ver file entry
-sub getNextEntry
-{
-	while (<VERFILE>) 
-	{ 
-		my $mline = $_;
-		($mline) = split(/#/,$mline);
-		my ($entry, $value)=split(/=/,$mline,2);
-		if (defined($entry))
-		{
-			if (defined($value))
-			{
-				$entry =~ s/^\s*(.*?)\s*$/$1/;
-				$value =~ s/^\s*(.*?)\s*$/$1/;
-				return ($entry,$value);
-			}
-		}
-	}
-	return undef;
-}
-
-my ($quiet,$objdir,$debug,$official,$milestone,$buildid,$module,$binary,$depth,$rcinclude,$srcdir,$fileversion,$productversion);
-
-GetOptions( "QUIET" => \$quiet,
-		"DEBUG=s" => \$debug,
-		"OFFICIAL=s" => \$official,
-		"MSTONE=s" => \$milestone,
-		"MODNAME=s" => \$module,
-		"BINARY=s" => \$binary,
-		"DISPNAME=s" => \$displayname,
-		"APPVERSION=s" => \$appversion,
-		"SRCDIR=s" => \$srcdir,
-		"TOPSRCDIR=s" => \$topsrcdir,
-		"DEPTH=s" => \$depth,
-		"RCINCLUDE=s" => \$rcinclude,
-		"OBJDIR=s" => \$objdir);
-if (!defined($debug)) {$debug="";}
-if (!defined($official)) {$official="";}
-if (!defined($milestone)) {$milestone="";}
-if (!defined($module)) {$module="";}
-if (!defined($binary)) {$binary="";}
-if (!defined($displayname)) {$displayname="Mozilla";}
-if (!defined($appversion)) {$appversion=$milestone;}
-if (!defined($depth)) {$depth=".";}
-if (!defined($rcinclude)) {$rcinclude="";}
-if (!defined($objdir)) {$objdir=".";}
-if (!defined($srcdir)) {$srcdir=".";}
-if (!defined($topsrcdir)) {$topsrcdir=".";}
-my $mfversion = "Personal";
-my $mpversion = "Personal";
-my @fileflags = ("0");
-my $comment="";
-my $description="";
-if (!defined($module))
-{
-	$module = $binary;
-	($module) = split(/\./,$module);
-}
-
-my $bufferstr="    ";
-
-my $MILESTONE_FILE = "$topsrcdir/config/milestone.txt";
-my $BUILDID_FILE = "$depth/config/buildid";
-
-#Read module.ver file
-#Version file overrides for WIN32:
-#WIN32_MODULE_COMMENT
-#WIN32_MODULE_DESCRIPTION
-#WIN32_MODULE_FILEVERSION
-#WIN32_MODULE_COMPANYNAME
-#WIN32_MODULE_FILEVERSION_STRING
-#WIN32_MODULE_NAME