summaryrefslogtreecommitdiff
path: root/js/src/Makefile.in
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/Makefile.in')
-rw-r--r--js/src/Makefile.in995
1 files changed, 995 insertions, 0 deletions
diff --git a/js/src/Makefile.in b/js/src/Makefile.in
new file mode 100644
index 0000000..a85e055
--- /dev/null
+++ b/js/src/Makefile.in
@@ -0,0 +1,995 @@
+# -*- Mode: makefile -*-
+#
+# ***** BEGIN LICENSE BLOCK *****
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+# http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# The Original Code is Mozilla Communicator client code, released
+# March 31, 1998.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1998
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either of the GNU General Public License Version 2 or later (the "GPL"),
+# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+# in which case the provisions of the GPL or the LGPL are applicable instead
+# of those above. If you wish to allow use of your version of this file only
+# under the terms of either the GPL or the LGPL, and not to allow others to
+# use your version of this file under the terms of the MPL, indicate your
+# decision by deleting the provisions above and replace them with the notice
+# and other provisions required by the GPL or the LGPL. If you do not delete
+# the provisions above, a recipient may use your version of this file under
+# the terms of any one of the MPL, the GPL or the LGPL.
+#
+# ***** END LICENSE BLOCK *****
+
+DEPTH = .
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+
+run_for_side_effects := $(shell echo "MAKE: $(MAKE)")
+include $(DEPTH)/config/autoconf.mk
+
+DIRS = config
+
+ifdef DEHYDRA_PATH
+DIRS += analysis-tests
+endif
+
+ifdef JS_NATIVE_EDITLINE
+DIRS += editline
+endif
+
+# editline needs to get built before the shell
+ifndef JS_DISABLE_SHELL
+DIRS += shell
+endif
+
+# FIXME: bug 515383 covers getting these working on wince
+# bug 530688 covers Android
+ifneq (,$(filter-out WINCE ANDROID,$(OS_ARCH)))
+ifdef ENABLE_TESTS
+DIRS += jsapi-tests
+endif
+endif
+
+ifdef ENABLE_TESTS
+DIRS += tests
+endif
+
+SRCREL_VERSION = 1.0.0
+SRCREL_ABI_VERSION := $(word 1,$(subst ., ,$(SRCREL_VERSION))).$(word 2,$(subst ., ,$(SRCREL_VERSION)))
+
+MODULE = js
+ifeq (,$(HOST_BIN_SUFFIX))
+LIBRARY_NAME = mozjs185
+else
+LIBRARY_NAME = mozjs185-$(SRCREL_ABI_VERSION)
+endif
+STATIC_LIBRARY_NAME = js_static
+GRE_MODULE = 1
+
+LIBS = $(NSPR_LIBS)
+
+ifdef GNU_CXX
+ifdef INTEL_CXX
+# icc gets special optimize flags
+ifdef MOZ_PROFILE_GENERATE
+MODULE_OPTIMIZE_FLAGS = -O0
+else
+MODULE_OPTIMIZE_FLAGS = -O2 -ip
+endif
+else # not INTEL_CXX
+
+MODULE_OPTIMIZE_FLAGS = -O3 -fstrict-aliasing
+
+# We normally want -fomit-frame-pointer, but we want an explicit
+# -fno-omit-frame-pointer if we're using a sampling profiler.
+ifndef MOZ_PROFILING
+MODULE_OPTIMIZE_FLAGS += -fomit-frame-pointer
+else
+MODULE_OPTIMIZE_FLAGS += -fno-omit-frame-pointer
+endif
+
+endif
+else # not GNU_CXX
+ifeq ($(OS_ARCH),SunOS)
+MODULE_OPTIMIZE_FLAGS = -xO4
+endif
+ifeq ($(OS_ARCH),WINNT)
+MODULE_OPTIMIZE_FLAGS = -O2
+endif
+endif
+
+
+# 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.
+
+ifdef JS_SHARED_LIBRARY
+FORCE_SHARED_LIB = 1
+endif
+FORCE_STATIC_LIB = 1
+DIST_INSTALL = 1
+
+VPATH = $(srcdir)
+
+CPPSRCS = \
+ jsanalyze.cpp \
+ jsapi.cpp \
+ jsarena.cpp \
+ jsarray.cpp \
+ jsatom.cpp \
+ jsbool.cpp \
+ jsclone.cpp \
+ jscntxt.cpp \
+ jscompartment.cpp \
+ jsdate.cpp \
+ jsdbgapi.cpp \
+ jsdhash.cpp \
+ jsdtoa.cpp \
+ jsemit.cpp \
+ jsexn.cpp \
+ jsfriendapi.cpp \
+ jsfun.cpp \
+ jsgc.cpp \
+ jsgcchunk.cpp \
+ jsgcstats.cpp \
+ jshash.cpp \
+ jsinterp.cpp \
+ jsinvoke.cpp \
+ jsiter.cpp \
+ jslock.cpp \
+ jslog2.cpp \
+ jsmath.cpp \
+ jsnativestack.cpp \
+ jsnum.cpp \
+ jsobj.cpp \
+ json.cpp \
+ jsopcode.cpp \
+ jsparse.cpp \
+ jsproxy.cpp \
+ jsprf.cpp \
+ jsprobes.cpp \
+ jspropertycache.cpp \
+ jspropertytree.cpp \
+ jsreflect.cpp \
+ jsregexp.cpp \
+ jsscan.cpp \
+ jsscope.cpp \
+ jsscript.cpp \
+ jsstr.cpp \
+ jstypedarray.cpp \
+ jsutil.cpp \
+ jswrapper.cpp \
+ jsxdrapi.cpp \
+ jsxml.cpp \
+ prmjtime.cpp \
+ sharkctl.cpp \
+ $(NULL)
+
+INSTALLED_HEADERS = \
+ js-config.h \
+ jsautocfg.h \
+ $(CURDIR)/jsautokw.h \
+ js.msg \
+ jsanalyze.h \
+ jsapi.h \
+ jsarray.h \
+ jsarena.h \
+ jsatom.h \
+ jsbit.h \
+ jsbool.h \
+ jsclist.h \
+ jsclone.h \
+ jscntxt.h \
+ jscompat.h \
+ jsdate.h \
+ jsdbgapi.h \
+ jsdhash.h \
+ jsdtoa.h \
+ jsemit.h \
+ jsfun.h \
+ jsfriendapi.h \
+ jsgc.h \
+ jscell.h \
+ jsgcchunk.h \
+ jsgcstats.h \
+ jscompartment.h \
+ jshash.h \
+ jsinterp.h \
+ jsinttypes.h \
+ jsiter.h \
+ jslock.h \
+ jslong.h \
+ jsmath.h \
+ jsobj.h \
+ jsobjinlines.h \
+ json.h \
+ jsopcode.tbl \
+ jsopcode.h \
+ jsopcodeinlines.h \
+ jsotypes.h \
+ jsparse.h \
+ jsproxy.h \
+ jsprf.h \
+ jsprobes.h \
+ jspropertycache.h \
+ jspropertycacheinlines.h \
+ jspropertytree.h \
+ jsproto.tbl \
+ jsprvtd.h \
+ jspubtd.h \
+ jsreflect.h \
+ jsregexp.h \
+ jsscan.h \
+ jsscope.h \
+ jsscript.h \
+ jsscriptinlines.h \
+ jsstaticcheck.h \
+ jsstdint.h \
+ jsstr.h \
+ jstracer.h \
+ jshotloop.h \
+ jstypedarray.h \
+ jstypes.h \
+ jsutil.h \
+ jsvector.h \
+ jstl.h \
+ jshashtable.h \
+ jsversion.h \
+ jswrapper.h \
+ jsxdrapi.h \
+ jsxml.h \
+ jsval.h \
+ jsvalue.h \
+ prmjtime.h \
+ $(NULL)
+
+ifdef ENABLE_TRACEJIT
+VPATH += \
+ $(srcdir)/tracejit \
+ $(srcdir)/nanojit \
+
+INSTALLED_HEADERS += \
+ jsbuiltins.h \
+ Assembler.h \
+ Allocator.h \
+ CodeAlloc.h \
+ Containers.h \
+ LIR.h \
+ LIRopcode.tbl \
+ avmplus.h \
+ Fragmento.h \
+ Native.h \
+ NativeCommon.h \
+ Native$(NANOJIT_ARCH).h \
+ njconfig.h \
+ njcpudetect.h \
+ RegAlloc.h \
+ nanojit.h \
+ VMPI.h \
+ Writer.h \
+ $(NULL)
+
+CPPSRCS += \
+ jstracer.cpp \
+ Assembler.cpp \
+ Allocator.cpp \
+ CodeAlloc.cpp \
+ Containers.cpp \
+ Fragmento.cpp \
+ LIR.cpp \
+ njconfig.cpp \
+ RegAlloc.cpp \
+ avmplus.cpp \
+ Native$(NANOJIT_ARCH).cpp \
+ jsbuiltins.cpp \
+ VMPI.cpp \
+ Writer.cpp \
+ $(NULL)
+
+ifdef WINCE
+# don't need -c
+AS_DASH_C_FLAG =
+ASFLAGS += -arch 6
+ASFILES += jswince.asm
+endif
+
+endif # ENABLE_TRACEJIT
+ifdef ENABLE_METHODJIT
+
+###############################################
+# BEGIN include sources for the method JIT
+#
+VPATH += $(srcdir)/methodjit
+
+CPPSRCS += MethodJIT.cpp \
+ StubCalls.cpp \
+ Compiler.cpp \
+ FrameState.cpp \
+ FastArithmetic.cpp \
+ FastOps.cpp \
+ StubCompiler.cpp \
+ MonoIC.cpp \
+ PolyIC.cpp \
+ ImmutableSync.cpp \
+ InvokeHelpers.cpp \
+ Retcon.cpp \
+ TrampolineCompiler.cpp \
+ $(NULL)
+# PICStubCompiler.cpp \
+
+ifeq (86, $(findstring 86,$(TARGET_CPU)))
+ifeq (x86_64, $(TARGET_CPU))
+ifdef _MSC_VER
+ASFILES += TrampolineMasmX64.asm
+endif
+ifdef SOLARIS_SUNPRO_CXX
+ASFILES += TrampolineSUNWX64.s
+endif
+#CPPSRCS += only_on_x86_64.cpp
+else
+#CPPSRCS += only_on_x86.cpp
+ifdef SOLARIS_SUNPRO_CXX
+ASFILES += TrampolineSUNWX86.s
+endif
+endif
+endif
+ifeq (arm, $(TARGET_CPU))
+#CPPSRCS += only_on_arm.cpp
+endif
+#
+# END enclude sources for the method JIT
+#############################################
+
+endif
+
+###############################################
+# BEGIN include sources for V8 dtoa
+#
+VPATH += $(srcdir)/v8-dtoa \
+ $(NONE)
+
+CPPSRCS += checks.cc \
+ conversions.cc \
+ diy-fp.cc \
+ v8-dtoa.cc \
+ fast-dtoa.cc \
+ platform.cc \
+ utils.cc \
+ $(NONE)
+
+#
+# END enclude sources for V8 dtoa
+#############################################
+
+ifeq (,$(filter-out powerpc sparc,$(TARGET_CPU)))
+
+VPATH += $(srcdir)/assembler \
+ $(srcdir)/assembler/wtf \
+ $(srcdir)/yarr/pcre \
+ $(NULL)
+
+CPPSRCS += pcre_compile.cpp \
+ pcre_exec.cpp \
+ pcre_tables.cpp \
+ pcre_xclass.cpp \
+ pcre_ucp_searchfuncs.cpp \
+ $(NULL)
+else
+
+###############################################
+# BEGIN include sources for the Nitro assembler
+#
+VPATH += $(srcdir)/assembler \
+ $(srcdir)/assembler/wtf \
+ $(srcdir)/assembler/jit \
+ $(srcdir)/assembler/assembler \
+ $(srcdir)/methodjit \
+ $(srcdir)/yarr \
+ $(srcdir)/yarr/yarr \
+ $(srcdir)/yarr/pcre \
+ $(srcdir)/yarr/wtf \
+ $(NONE)
+
+CPPSRCS += Assertions.cpp \
+ ExecutableAllocatorPosix.cpp \
+ ExecutableAllocatorWin.cpp \
+ ExecutableAllocatorOS2.cpp \
+ ExecutableAllocator.cpp \
+ ARMAssembler.cpp \
+ Logging.cpp \
+ MacroAssemblerARM.cpp \
+ MacroAssemblerX86Common.cpp \
+ RegexCompiler.cpp \
+ RegexJIT.cpp \
+ pcre_compile.cpp \
+ pcre_exec.cpp \
+ pcre_tables.cpp \
+ pcre_xclass.cpp \
+ pcre_ucp_searchfuncs.cpp \
+ $(NONE)
+
+ifeq (86, $(findstring 86,$(TARGET_CPU)))
+ifeq (x86_64, $(TARGET_CPU))
+#CPPSRCS += only_on_x86_64.cpp
+else
+#CPPSRCS += only_on_x86.cpp
+endif
+endif
+ifeq (arm, $(TARGET_CPU))
+#CPPSRCS += only_on_arm.cpp
+endif
+#
+# END enclude sources for the Nitro assembler
+#############################################
+
+endif
+
+ifdef JS_HAS_CTYPES
+VPATH += $(srcdir)/ctypes
+
+CPPSRCS += \
+ CTypes.cpp \
+ Library.cpp \
+ $(NULL)
+
+LOCAL_INCLUDES = \
+ -Ictypes/libffi/include \
+ -I. \
+ $(NULL)
+
+ifeq ($(OS_ARCH),OS2)
+SHARED_LIBRARY_LIBS += \
+ ctypes/libffi/.libs/ffi.a \
+ $(NULL)
+else
+SHARED_LIBRARY_LIBS += \
+ ctypes/libffi/.libs/libffi.$(LIB_SUFFIX) \
+ $(NULL)
+endif
+
+endif # JS_HAS_CTYPES
+
+ifdef HAVE_DTRACE
+INSTALLED_HEADERS += \
+ $(CURDIR)/javascript-trace.h \
+ $(NULL)
+endif
+
+# PerfMeasurement is available regardless of low-level support for it;
+# it just doesn't necessarily do anything useful. There is one
+# implementation source file per supported operating system, plus a stub
+# for unsupported OSes, plus the Javascript wrapper.
+VPATH += $(srcdir)/perf
+INSTALLED_HEADERS += jsperf.h
+CPPSRCS += jsperf.cpp
+ifdef HAVE_LINUX_PERF_EVENT_H
+CPPSRCS += pm_linux.cpp
+else
+CPPSRCS += pm_stub.cpp
+endif
+
+ifeq (,$(filter-out WINNT WINCE,$(OS_ARCH)))
+INSTALLED_HEADERS += jscpucfg.h
+endif
+
+EXPORTS = $(INSTALLED_HEADERS)
+
+DASH_R = -r
+
+ifneq (,$(filter OS2 WINCE WINNT,$(OS_ARCH)))
+SDK_LIBRARY = $(IMPORT_LIBRARY)
+else
+SDK_LIBRARY = $(SHARED_LIBRARY)
+endif
+
+include $(topsrcdir)/config/config.mk
+
+EXTRA_DSO_LDOPTS += $(NSPR_LIBS)
+
+ifndef BUILD_OPT
+MOCHAFILE = 1
+endif
+
+# Define keyword generator before rules.mk, see bug 323979 comment 50
+
+HOST_SIMPLE_PROGRAMS += host_jskwgen$(HOST_BIN_SUFFIX)
+GARBAGE += jsautokw.h host_jskwgen$(HOST_BIN_SUFFIX)
+
+HOST_SIMPLE_PROGRAMS += host_jsoplengen$(HOST_BIN_SUFFIX)
+GARBAGE += jsautooplen.h host_jsoplengen$(HOST_BIN_SUFFIX)
+
+USE_HOST_CXX = 1
+
+ifdef HAVE_DTRACE
+ifneq ($(OS_ARCH),Darwin)
+DTRACE_PROBE_OBJ = $(LIBRARY_NAME)-dtrace.$(OBJ_SUFFIX)
+endif
+MOZILLA_DTRACE_SRC = $(srcdir)/javascript-trace.d
+endif
+
+default::
+
+ifneq (,$(CROSS_COMPILE)$(filter-out WINNT OS2,$(OS_ARCH)))
+ifneq (,$(filter-out SYMBIAN WINCE,$(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
+endif
+
+include $(topsrcdir)/config/rules.mk
+
+ifdef JS_HAS_CTYPES
+# Build libffi proper as part of the 'exports' target, so things get built
+# in the right order.
+export::
+ $(call SUBMAKE,,ctypes/libffi)
+
+distclean clean::
+ $(call SUBMAKE,$@,ctypes/libffi)
+endif
+
+ifdef MOZ_SYNC_BUILD_FILES
+# Because the 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/config/autoconf.mk.in doesn't need most of the stuff in
+# config/autoconf.mk.in.
+check-sync-dirs = $(PYTHON) $(srcdir)/config/check-sync-dirs.py
+check::
+ $(check-sync-dirs) $(srcdir)/config $(MOZ_SYNC_BUILD_FILES)/config
+ $(check-sync-dirs) $(srcdir)/build $(MOZ_SYNC_BUILD_FILES)/build
+
+check-valgrind::
+ $(check-sync-dirs) $(srcdir)/config $(MOZ_SYNC_BUILD_FILES)/config
+ $(check-sync-dirs) $(srcdir)/build $(MOZ_SYNC_BUILD_FILES)/build
+endif
+
+# The "find any vanilla new/new[] calls" script is tailored to Linux, so
+# only run it there. That should be enough to catch any such calls that
+# creep in.
+ifeq ($(OS_ARCH),Linux)
+check::
+ $(srcdir)/config/find_vanilla_new_calls $(LIBRARY)
+endif
+
+ifdef ENABLE_TRACEJIT
+ifndef WINCE
+JITFLAGS = ,m,j,mj,mjp,am,amj,amjp,amd
+check::
+ $(wildcard $(RUN_TEST_PROGRAM)) $(PYTHON) -u $(srcdir)/jit-test/jit_test.py \
+ --no-slow --no-progress --tinderbox --jitflags=$(JITFLAGS) $(DIST)/bin/js$(BIN_SUFFIX)
+
+check-valgrind::
+ $(wildcard $(RUN_TEST_PROGRAM)) $(PYTHON) -u $(srcdir)/jit-test/jit_test.py \
+ --valgrind --no-slow --no-progress --tinderbox --jitflags=$(JITFLAGS) $(DIST)/bin/js$(BIN_SUFFIX)
+endif
+endif
+
+DIST_GARBAGE = config.cache config.log config.status \
+ config/autoconf.mk \
+ unallmakefiles js-config js-config.h js-confdefs.h
+
+distclean::
+ cat unallmakefiles | $(XARGS) rm -f
+ rm -f $(DIST_GARBAGE)
+
+# our build system doesn't handle subdir srcs very gracefully today
+export::
+ mkdir -p nanojit
+
+DEFINES += -DEXPORT_JS_API
+
+# Some platforms that have stdint.h include it in system headers. So
+# to reliably get limit macros defined, we'd always have to define the
+# one below before including any header, but that's obscure and
+# fragile, so we do it here.
+DEFINES += -D__STDC_LIMIT_MACROS
+
+INCLUDES += -I$(srcdir)
+
+GARBAGE += jscpucfg.o jsautocfg.h jsautocfg.tmp jscpucfg
+
+ifneq (,$(CROSS_COMPILE)$(filter-out WINNT,$(OS_ARCH)))
+TARGETS += jscpucfg$(HOST_BIN_SUFFIX)
+endif
+
+ifdef JS_THREADSAFE
+DEFINES += -DJS_THREADSAFE
+endif
+
+ifdef JS_HAS_CTYPES
+DEFINES += -DJS_HAS_CTYPES
+DEFINES += -DDLL_PREFIX=\"$(DLL_PREFIX)\" -DDLL_SUFFIX=\"$(DLL_SUFFIX)\"
+endif
+
+ifdef JS_NO_THIN_LOCKS
+DEFINES += -DJS_USE_ONLY_NSPR_LOCKS
+endif
+
+ifdef JS_VERSION
+DEFINES += -DJS_VERSION=$(JS_VERSION)
+endif
+
+ifneq ($(findstring -L,$(NSPR_LIBS)),)
+NSPR_STATIC_PATH = $(subst -L,,$(findstring -L,$(NSPR_LIBS)))
+else
+NSPR_STATIC_PATH = $(DIST)/lib
+endif
+
+ifdef MOZ_VTUNE
+CXXFLAGS += -IC:/Program\ Files/Intel/VTune/Analyzer/Include
+EXTRA_DSO_LDOPTS += C:/Program\ Files/Intel/VTune/Analyzer/Lib/VtuneApi.lib
+LIBS += C:/Program\ Files/Intel/VTune/Analyzer/Lib/VtuneApi.lib
+endif
+
+# BeOS and HP-UX do not require the extra linking of "-lm"
+ifeq (,$(filter BeOS HP-UX WINNT WINCE OpenVMS OS2,$(OS_ARCH)))
+EXTRA_LIBS += -lm
+endif
+
+# Prevent floating point errors caused by VC++ optimizations
+ifeq ($(OS_ARCH)_$(GNU_CC),WINNT_)
+ifeq (,$(filter-out 1200 1300 1310,$(_MSC_VER)))
+CFLAGS += -Op
+else
+CFLAGS += -fp:precise
+endif
+endif # WINNT
+
+ifeq ($(OS_ARCH),FreeBSD)
+EXTRA_LIBS += -pthread
+endif
+ifeq ($(OS_ARCH),IRIX)
+ifdef USE_N32
+DASH_R += -n32
+endif
+endif
+ifeq ($(OS_ARCH),Linux)
+EXTRA_LIBS += -ldl
+endif
+ifeq ($(OS_ARCH),OSF1)
+EXTRA_LIBS += -lc_r
+endif
+ifeq ($(OS_ARCH),SunOS)
+ifeq ($(TARGET_CPU),sparc)
+
+ifdef GNU_CC
+CFLAGS += -mcpu=v9
+CXXFLAGS += -mcpu=v9
+endif # GNU_CC
+
+endif
+ifeq ($(OS_RELEASE),4.1)
+EXTRA_LIBS += -ldl -lnsl
+else
+EXTRA_LIBS += -lposix4 -ldl -lnsl -lsocket
+endif
+endif
+
+ifdef MOZ_MEMORY
+ifeq ($(OS_ARCH),Darwin)
+LDFLAGS += -ljemalloc
+endif
+endif
+
+ifdef SOLARIS_SUNPRO_CXX
+ifeq ($(TARGET_CPU),sparc)
+# Sun Studio SPARC doesn't work well with gcc inline asm, use lock_SunOS_sparc*.il
+jslock.o: jslock.cpp Makefile.in lock_sparcv8plus.il lock_sparcv9.il
+ $(REPORT_BUILD)
+ @$(MAKE_DEPS_AUTO_CXX)
+ifeq (sparcv9,$(findstring sparcv9,$(OS_TEST)))
+ $(CXX) -o $@ -c $(COMPILE_CFLAGS) $(srcdir)/lock_sparcv9.il $<
+else
+ $(CXX) -o $@ -c $(COMPILE_CFLAGS) $(srcdir)/lock_sparcv8plus.il $<
+endif # sparcv9
+endif # sparc
+endif # SOLARIS_SUNPRO_CXX
+
+ifeq ($(OS_ARCH),IRIX)
+ifndef GNU_CC
+_COMPILE_CFLAGS = $(patsubst -O%,-O1,$(COMPILE_CFLAGS))
+jsapi.o jsxdrapi.o jsarena.o jsarray.o jsatom.o jsemit.o jsfun.o jsinterp.o jsreflect.o jsregexp.o jsparse.o jsopcode.o jsscript.o: %.o: %.cpp Makefile.in
+ $(REPORT_BUILD)
+ @$(MAKE_DEPS_AUTO_CXX)
+ $(CXX) -o $@ -c $(_COMPILE_CFLAGS) $<
+endif
+endif
+
+# An AIX Optimization bug causes PR_dtoa() & JS_dtoa to produce wrong result.
+# This suppresses optimization for this single compilation unit.
+ifeq ($(OS_ARCH),AIX)
+jsatom.o: jsatom.cpp Makefile.in
+ $(REPORT_BUILD)
+ @$(MAKE_DEPS_AUTO_CXX)
+ $(CXX) -o $@ -c $(filter-out $(MOZ_OPTIMIZE_FLAGS), $(COMPILE_CFLAGS)) $<
+jsdtoa.o: jsdtoa.cpp Makefile.in
+ $(REPORT_BUILD)
+ @$(MAKE_DEPS_AUTO_CXX)
+ $(CXX) -o $@ -c $(filter-out $(MOZ_OPTIMIZE_FLAGS), $(COMPILE_CFLAGS)) $<
+endif
+
+export:: jsautocfg.h
+
+ifeq (,$(CROSS_COMPILE)$(GNU_CC)$(filter-out WINNT,$(OS_ARCH)))
+jsautocfg.h:
+ touch $@
+else
+ifeq ($(OS_ARCH),WINCE)
+jsautocfg.h:
+ touch $@
+else
+jsautocfg.h: jscpucfg$(HOST_BIN_SUFFIX)
+ @rm -f $@ jsautocfg.tmp
+ ./jscpucfg > jsautocfg.tmp
+ mv jsautocfg.tmp $@
+endif
+endif
+
+# jscpucfg is a strange target
+# Needs to be built with the host compiler but needs to include
+# the mdcpucfg for the target so it needs the appropriate target defines
+ifdef HOST_NSPR_MDCPUCFG
+HOST_CXX := $(HOST_CXX) -DMDCPUCFG=$(TARGET_NSPR_MDCPUCFG)
+HOST_CXXFLAGS := $(patsubst -DXP_%,,$(HOST_CXXFLAGS))
+endif
+
+ifdef CROSS_COMPILE
+# jscpucfg needs to know when it's supposed to produce a config for the target
+JSCPUCFG_DEFINES = $(ACDEFINES)
+endif
+
+ifeq ($(OS_ARCH),QNX)
+ifneq ($(OS_TARGET),NTO)
+# QNX's compiler apparently can't build a binary directly from a source file.
+jscpucfg.o: jscpucfg.cpp Makefile.in
+ $(HOST_CXX) $(HOST_CXXFLAGS) -c $(JSCPUCFG_DEFINES) $(DEFINES) $(NSPR_CFLAGS) -o $@ $<
+
+jscpucfg: jscpucfg.o
+ $(HOST_CXX) $(HOST_CXXFLAGS) $(JSCPUCFG_DEFINES) $(DEFINES) -o $@ $<
+endif
+else
+ifeq ($(OS_ARCH),WINCE)
+jscpucfg$(HOST_BIN_SUFFIX):
+ echo no need to build jscpucfg $<
+else
+jscpucfg$(HOST_BIN_SUFFIX): jscpucfg.cpp Makefile.in
+ $(HOST_CXX) $(HOST_CXXFLAGS) $(JSCPUCFG_DEFINES) $(DEFINES) $(NSPR_CFLAGS) $(HOST_OUTOPTION)$@ $<
+endif
+endif
+
+# Compute the linker flags that programs linking against SpiderMonkey should
+# pass to get SpiderMonkey and its dependencies, beyond just the -L and -l
+# for the SpiderMonkey library itself.
+# - EXTRA_DSO_LDOPTS includes the NSPR -L and -l flags.
+# - OS_LIBS includes libraries selected by the configure script.
+# - EXTRA_LIBS includes libraries selected by this Makefile.
+JS_CONFIG_LIBS=$(EXTRA_DSO_LDOPTS) $(OS_LIBS) $(EXTRA_LIBS)
+JS_CONFIG_MOZ_JS_LIBS=-L$(libdir) -l$(LIBRARY_NAME)
+
+# The configure script invokes this rule explicitly at configure time!
+# It's important that js-config be ready by the time we're done
+# configuring, because we may be running other configure scripts that
+# would like to run js-config themselves, before js is built.
+#
+# This file and rules.mk go through a certain amount of work to decide
+# which libraries to build, what to name them, and what flags to pass
+# when linking them (and thus what flags its own clients must pass).
+# All this information needs to go into the js-config script. To
+# avoid trying to re-compute all that in the configure script, we just
+# have the configure script generate this Makefile, and then invoke
+# this rule.
+at=@
+js-config: js-config.in Makefile $(DEPTH)/config/autoconf.mk $(topsrcdir)/config/config.mk $(topsrcdir)/config/rules.mk
+ rm -f js-config.tmp
+ sed < $< > js-config.tmp \
+ -e 's|$(at)prefix$(at)|$(prefix)|' \
+ -e 's|$(at)exec_prefix$(at)|$(exec_prefix)|' \
+ -e 's|$(at)includedir$(at)|$(includedir)|' \
+ -e 's|$(at)libdir$(at)|$(libdir)|' \
+ -e 's|$(at)MOZILLA_VERSION$(at)|$(MOZILLA_VERSION)|' \
+ -e 's|$(at)LIBRARY_NAME$(at)|$(LIBRARY_NAME)|' \
+ -e 's|$(at)NSPR_CFLAGS$(at)|$(NSPR_CFLAGS)|' \
+ -e 's|$(at)JS_CONFIG_LIBS$(at)|$(JS_CONFIG_LIBS)|' \
+ -e 's|$(at)MOZ_JS_LIBS$(at)|$(JS_CONFIG_MOZ_JS_LIBS)|' \
+ && mv js-config.tmp $@ && chmod +x $@
+
+SCRIPTS = js-config
+SDK_BINARY = js-config
+
+pkg_config_files = \
+ mozjs185.pc \
+ $(NULL)
+
+GARBAGE += $(pkg_config_files)
+
+%.pc: $(srcdir)/%.pc.in Makefile
+ cat $< | sed \
+ -e "s|%prefix%|$(prefix)|" \
+ -e "s|%includedir%|$(includedir)|" \
+ -e "s|%libdir%|$(libdir)|" \
+ -e 's|%MOZILLA_VERSION%|$(MOZILLA_VERSION)|' \
+ > $@ && chmod 644 $@
+
+install:: $(pkg_config_files)
+ @echo pkg_config_file: $(pkg_config_files)
+ $(SYSINSTALL) $(IFLAGS1) $^ $(DESTDIR)$(libdir)/pkgconfig
+
+install:: $(INSTALLED_HEADERS)
+ $(SYSINSTALL) $^ $(DESTDIR)$(includedir)/$(MODULE)
+
+install:: $(SCRIPTS)
+ $(SYSINSTALL) $^ $(DESTDIR)$(bindir)
+
+ifeq (,$(HOST_BIN_SUFFIX))
+ifeq (.dylib,$(DLL_SUFFIX))
+# Mac OS X
+SHLIB_ANY_VER := $(DESTDIR)$(libdir)/$(SHARED_LIBRARY)
+SHLIB_ABI_VER := $(DESTDIR)$(libdir)/$(SHARED_LIBRARY:$(DLL_SUFFIX)=.$(SRCREL_ABI_VERSION)$(DLL_SUFFIX))
+SHLIB_EXACT_VER := $(DESTDIR)$(libdir)/$(SHARED_LIBRARY:$(DLL_SUFFIX)=.$(SRCREL_VERSION)$(DLL_SUFFIX))
+$(SHARED_LIBRARY): EXTRA_DSO_LDOPTS += -install_name $(SHLIB_ABI_VER)
+$(SHARED_LIBRARY): EXTRA_DSO_LDOPTS += -current_version $(SRCREL_VERSION)
+$(SHARED_LIBRARY): EXTRA_DSO_LDOPTS += -compatibility_version $(SRCREL_ABI_VERSION)
+else
+# Generic Unix / Linux
+SHLIB_ANY_VER := $(DESTDIR)$(libdir)/$(SHARED_LIBRARY)
+SHLIB_ABI_VER := $(DESTDIR)$(libdir)/$(SHARED_LIBRARY).$(SRCREL_ABI_VERSION)
+SHLIB_EXACT_VER := $(DESTDIR)$(libdir)/$(SHARED_LIBRARY).$(SRCREL_VERSION)
+$(SHARED_LIBRARY): EXTRA_DSO_LDOPTS += -Wl,-soname,$(notdir $(SHLIB_ABI_VER))
+endif
+endif
+
+install:: $(LIBRARY) $(SHARED_LIBRARY) $(IMPORT_LIBRARY)
+ifneq (,$(LIBRARY))
+ $(SYSINSTALL) $(LIBRARY) $(DESTDIR)$(libdir)
+ mv -f $(DESTDIR)$(libdir)/$(LIBRARY) $(subst $(STATIC_LIBRARY_NAME),mozjs185-$(SRCREL_ABI_VERSION),$(DESTDIR)$(libdir)/$(LIBRARY))
+endif
+ifneq (,$(SHARED_LIBRARY))
+ifeq (,$(HOST_BIN_SUFFIX))
+ @[ ! -h $(SHLIB_ANY_VER) ] || rm -f $(SHLIB_ANY_VER)
+endif
+ $(SYSINSTALL) $(SHARED_LIBRARY) $(DESTDIR)$(libdir)
+ifeq (,$(HOST_BIN_SUFFIX))
+ mv -f $(SHLIB_ANY_VER) $(SHLIB_EXACT_VER)
+ @[ ! -h $(SHLIB_ABI_VER) ] || rm -f $(SHLIB_ABI_VER)
+ ln -s $(SHLIB_EXACT_VER) $(SHLIB_ABI_VER)
+ ln -s $(SHLIB_ABI_VER) $(SHLIB_ANY_VER)
+endif
+endif
+ifneq (,$(IMPORT_LIBRARY))
+ $(SYSINSTALL) $(IMPORT_LIBRARY) $(DESTDIR)$(libdir)
+endif
+
+# Extra dependancies and rules for auto-generated headers
+host_jskwgen.$(OBJ_SUFFIX): jsversion.h jskeyword.tbl
+
+# 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) $@
+
+host_jsoplengen.$(OBJ_SUFFIX): jsopcode.tbl
+
+# Use CURDIR to avoid finding a jsautooplen.h in the source tree (from
+# a previous build?) via VPATH when we're building in a separate tree.
+$(CURDIR)/jsautooplen.h: host_jsoplengen$(HOST_BIN_SUFFIX)
+ ./host_jsoplengen$(HOST_BIN_SUFFIX) $@
+
+# Force auto-header generation before compiling any source that may use them
+$(patsubst %.cc,%.$(OBJ_SUFFIX),$(CPPSRCS:%.cpp=%.$(OBJ_SUFFIX))): $(CURDIR)/jsautokw.h $(CURDIR)/jsautooplen.h
+
+ifdef HAVE_DTRACE
+$(CURDIR)/javascript-trace.h: $(srcdir)/javascript-trace.d
+ dtrace -h -s $(srcdir)/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;
+# we have to list them explicitly.
+$(addsuffix .$(OBJ_SUFFIX),jsprobes jsinterp jsobj): $(CURDIR)/javascript-trace.h
+endif
+
+ifdef ENABLE_TRACEJIT
+# Imacro compilation.
+$(CURDIR)/imacros.c.out: $(srcdir)/imacro_asm.py $(srcdir)/imacros.jsasm jsopcode.tbl
+ $(PYTHON) $< $(srcdir)/imacros.jsasm $(CURDIR)/imacros.c.out
+$(addsuffix .$(OBJ_SUFFIX),jstracer): $(CURDIR)/imacros.c.out
+
+# Code for importing the nanojit subtree from its repository.
+NANOJIT_CENTRAL_REV=$(shell cat $(srcdir)/nanojit-import-rev)
+NANOJIT_CENTRAL_REPO=http://hg.mozilla.org/projects/nanojit-central
+NANOJIT_CENTRAL_LOCAL=$(CURDIR)/nanojit-central
+CUR_REPO=$(srcdir)/../..
+
+update-nanojit:
+ rm -Rf $(NANOJIT_CENTRAL_LOCAL) import-splicemap import-revmap
+ hg clone $(NANOJIT_CENTRAL_REPO) $(NANOJIT_CENTRAL_LOCAL)
+ python $(srcdir)/find-child.py \
+ --src=$(NANOJIT_CENTRAL_LOCAL) \
+ --dst=$(CUR_REPO) \
+ --start=$(NANOJIT_CENTRAL_REV) \
+ --filemap=$(srcdir)/nanojit-import-filemap \
+ >import-splicemap
+ hg convert --config convert.hg.saverev=True \
+ --config convert.hg.startrev=`cut -d ' ' -f 1 import-splicemap` \
+ --filemap=$(srcdir)/nanojit-import-filemap \
+ --splicemap=import-splicemap \
+ $(NANOJIT_CENTRAL_LOCAL) \
+ $(CUR_REPO) \
+ import-revmap
+ (cd $(srcdir) && hg up)
+ (cd $(NANOJIT_CENTRAL_LOCAL) && hg log -r tip --template "{node}\n") >$(srcdir)/nanojit-import-rev
+ (cd $(srcdir) && hg commit --message="Update nanojit-import-rev stamp." nanojit-import-rev)
+
+.PHONY: update-nanojit
+endif
+
+###############################################
+# BEGIN kludges for the Nitro assembler
+#
+
+# Needed to "configure" it correctly. Unfortunately these
+# flags wind up being applied to all code in js/src, not just
+# the code in js/src/assembler.
+CXXFLAGS += -DUSE_SYSTEM_MALLOC=1 -DENABLE_ASSEMBLER=1 -DENABLE_JIT=1
+
+INCLUDES += -I$(srcdir)/assembler -I$(srcdir)/yarr
+
+ifdef ENABLE_METHODJIT
+# Build a standalone test program that exercises the assembler
+# sources a bit.
+TESTMAIN_OBJS = \
+ Assertions.$(OBJ_SUFFIX) \
+ ExecutableAllocatorPosix.$(OBJ_SUFFIX) \
+ ExecutableAllocatorWin.$(OBJ_SUFFIX) \
+ ExecutableAllocator.$(OBJ_SUFFIX) \
+ ARMAssembler.$(OBJ_SUFFIX) \
+ MacroAssemblerARM.$(OBJ_SUFFIX) \
+ TestMain.$(OBJ_SUFFIX) \
+ jsutil.$(OBJ_SUFFIX) \
+ jslog2.$(OBJ_SUFFIX)
+TestMain$(HOST_BIN_SUFFIX): $(TESTMAIN_OBJS)
+ $(CXX) -o TestMain$(HOST_BIN_SUFFIX) $(TESTMAIN_OBJS)
+endif
+
+#
+# END kludges for the Nitro assembler
+###############################################
+