Bug 903118 - set mozconfig environment variables for sub-makes; r=gps
authorMike Shal <mshal@mozilla.com>
Wed, 14 Aug 2013 09:34:18 -0400
changeset 145149 6fe5a446b7756e5b91d63a31607a1b55174520e0
parent 145133 faaee438ce6df19eeb94ff66e36038a9106d6af6
child 145150 b04073aaa2781208abb9c64dde01d4386edcd7ef
push id25198
push userryanvm@gmail.com
push dateSat, 31 Aug 2013 12:57:14 +0000
treeherdermozilla-central@e14094829697 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersgps
bugs903118
milestone26.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 903118 - set mozconfig environment variables for sub-makes; r=gps
client.mk
config/makefiles/mozconfig.mk
config/rules.mk
js/src/config/makefiles/mozconfig.mk
js/src/config/rules.mk
--- a/client.mk
+++ b/client.mk
@@ -99,28 +99,19 @@ convert it to Unix-style line endings, r
 "python mozilla/build/win32/mozilla-dos2unix.py")
 endif
 endif
 
 ####################################
 # Load mozconfig Options
 
 # See build pages, http://www.mozilla.org/build/ for how to set up mozconfig.
-
-MOZCONFIG_LOADER := build/autoconf/mozconfig2client-mk
-
-define CR
-
-
-endef
-
-# As $(shell) doesn't preserve newlines, use sed to replace them with an
-# unlikely sequence (||), which is then replaced back to newlines by make
-# before evaluation.
-$(eval $(subst ||,$(CR),$(shell _PYMAKE=$(.PYMAKE) $(TOPSRCDIR)/$(MOZCONFIG_LOADER) $(TOPSRCDIR) 2> $(TOPSRCDIR)/.mozconfig.out | sed 's/$$/||/')))
+# mozconfig.mk needs to be loaded multiple times by configure, so we don't check
+# for INCLUDED_MOZCONFIG_MK
+include $(TOPSRCDIR)/config/makefiles/mozconfig.mk
 
 ifdef AUTOCLOBBER
 export AUTOCLOBBER=1
 endif
 
 # Automatically add -jN to make flags if not defined. N defaults to number of cores.
 ifeq (,$(findstring -j,$(MOZ_MAKE_FLAGS)))
   cores=$(shell $(PYTHON) -c 'import multiprocessing; print(multiprocessing.cpu_count())')
new file mode 100644
--- /dev/null
+++ b/config/makefiles/mozconfig.mk
@@ -0,0 +1,33 @@
+# -*- 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/.
+#
+
+INCLUDED_MOZCONFIG_MK = 1
+
+# We are pulling in the mozconfig exports, so we only need to run once for the
+# whole make process tree (not for each sub-make). Export this so the sub-makes
+# don't read mozconfig multiple times.
+export INCLUDED_MOZCONFIG_MK
+
+MOZCONFIG_LOADER := build/autoconf/mozconfig2client-mk
+
+define CR
+
+
+endef
+
+# topsrcdir is used by rules.mk (set from the generated Makefile), while
+# TOPSRCDIR is used by client.mk
+ifneq (,$(topsrcdir))
+top := $(topsrcdir)
+else
+top := $(TOPSRCDIR)
+endif
+# As $(shell) doesn't preserve newlines, use sed to replace them with an
+# unlikely sequence (||), which is then replaced back to newlines by make
+# before evaluation.
+$(eval $(subst ||,$(CR),$(shell _PYMAKE=$(.PYMAKE) $(top)/$(MOZCONFIG_LOADER) $(top) 2> $(top)/.mozconfig.out | sed 's/$$/||/')))
--- a/config/rules.mk
+++ b/config/rules.mk
@@ -5,16 +5,20 @@
 # 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
 
+ifndef INCLUDED_MOZCONFIG_MK
+include $(topsrcdir)/config/makefiles/mozconfig.mk
+endif
+
 # 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 := \
   CPP_UNIT_TESTS \
   DIRS \
   EXTRA_PP_COMPONENTS \
new file mode 100644
--- /dev/null
+++ b/js/src/config/makefiles/mozconfig.mk
@@ -0,0 +1,33 @@
+# -*- 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/.
+#
+
+INCLUDED_MOZCONFIG_MK = 1
+
+# We are pulling in the mozconfig exports, so we only need to run once for the
+# whole make process tree (not for each sub-make). Export this so the sub-makes
+# don't read mozconfig multiple times.
+export INCLUDED_MOZCONFIG_MK
+
+MOZCONFIG_LOADER := build/autoconf/mozconfig2client-mk
+
+define CR
+
+
+endef
+
+# topsrcdir is used by rules.mk (set from the generated Makefile), while
+# TOPSRCDIR is used by client.mk
+ifneq (,$(topsrcdir))
+top := $(topsrcdir)
+else
+top := $(TOPSRCDIR)
+endif
+# As $(shell) doesn't preserve newlines, use sed to replace them with an
+# unlikely sequence (||), which is then replaced back to newlines by make
+# before evaluation.
+$(eval $(subst ||,$(CR),$(shell _PYMAKE=$(.PYMAKE) $(top)/$(MOZCONFIG_LOADER) $(top) 2> $(top)/.mozconfig.out | sed 's/$$/||/')))
--- a/js/src/config/rules.mk
+++ b/js/src/config/rules.mk
@@ -5,16 +5,20 @@
 # 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
 
+ifndef INCLUDED_MOZCONFIG_MK
+include $(topsrcdir)/config/makefiles/mozconfig.mk
+endif
+
 # 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 := \
   CPP_UNIT_TESTS \
   DIRS \
   EXTRA_PP_COMPONENTS \