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 idunknown
push userunknown
push dateunknown
reviewersgps
bugs903118
milestone26.0a1
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 \