Bug 1275355 - Move host_jskwgen invocation to moz.build; r?chmanchester
MozReview-Commit-ID: 3tUzmxYbV8O
--- a/js/src/Makefile.in
+++ b/js/src/Makefile.in
@@ -11,20 +11,16 @@ make_min_ver := 3.81
ifneq ($(make_min_ver),$(firstword $(sort $(make_min_ver) $(MAKE_VERSION))))
$(error GNU Make $(make_min_ver) or higher is required)
endif
DASH_R = -r
# Define keyword generator before rules.mk, see bug 323979 comment 50
-GARBAGE += jsautokw.h host_jskwgen$(HOST_BIN_SUFFIX)
-
-GARBAGE += selfhosted.out.h
-
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
@@ -215,24 +211,16 @@ endif
ifneq (,$(SHARED_LIBRARY))
$(SYSINSTALL) $(SHARED_LIBRARY) $(DESTDIR)$(libdir)
endif
ifneq (,$(IMPORT_LIBRARY))
$(SYSINSTALL) $(IMPORT_LIBRARY) $(DESTDIR)$(libdir)
endif
$(MAKE) -C shell install
-# Use CURDIR to avoid finding a jsautokw.h in the source tree (from a
-# previous build?) via VPATH when we're building in a separate tree.
-$(CURDIR)/jsautokw.h: host_jskwgen$(HOST_BIN_SUFFIX)
- ./host_jskwgen$(HOST_BIN_SUFFIX) $@
-
-# Force auto-header generation before compiling any source that may use them
-$(OBJS): $(CURDIR)/jsautokw.h
-
ifdef HAVE_DTRACE
javascript-trace.h: $(srcdir)/devtools/javascript-trace.d
dtrace -x nolibs -h -s $(srcdir)/devtools/javascript-trace.d -o javascript-trace.h.in
sed -e 's/if _DTRACE_VERSION/ifdef INCLUDE_MOZILLA_DTRACE/' \
-e '/const/!s/char \*/const char */g' \
javascript-trace.h.in > javascript-trace.h
# We can't automatically generate dependencies on auto-generated headers;
new file mode 100644
--- /dev/null
+++ b/js/src/jsautokw.py
@@ -0,0 +1,22 @@
+# 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
+
+import os
+import sys
+import subprocess
+
+def main(output, exe):
+ # moz.build passes in the exe name without any path, so to run it we need to
+ # prepend the './'
+ run_exe = exe if os.path.isabs(exe) else './%s' % exe
+
+ # Use universal_newlines so everything is '\n', which gets converted to
+ # '\r\n' when writing out the file in Windows.
+ data = subprocess.check_output([run_exe], universal_newlines=True)
+ output.write(data)
+
+if __name__ == '__main__':
+ main(sys.stdout, *sys.argv[1:])
--- a/js/src/moz.build
+++ b/js/src/moz.build
@@ -597,16 +597,23 @@ else:
SOURCES += [
'perf/pm_stub.cpp'
]
HostSimplePrograms([
'host_jskwgen',
])
+GENERATED_FILES += ['jsautokw.h']
+jsautokw = GENERATED_FILES['jsautokw.h']
+jsautokw.script = 'jsautokw.py'
+jsautokw.inputs += [
+ '!host_jskwgen%s' % CONFIG['HOST_BIN_SUFFIX'],
+]
+
# JavaScript must be built shared, even for static builds, as it is used by
# other modules which are always built shared. Failure to do so results in
# the js code getting copied into xpinstall and jsd as well as mozilla-bin,
# and then the static data cells used for locking no longer work.
#
# In fact, we now build both a static and a shared library, as the
# JS shell would like to link to the static library.