summaryrefslogtreecommitdiffstats
path: root/js/src/build/moz.build
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/build/moz.build')
-rw-r--r--js/src/build/moz.build108
1 files changed, 108 insertions, 0 deletions
diff --git a/js/src/build/moz.build b/js/src/build/moz.build
new file mode 100644
index 0000000000..a19a65db6b
--- /dev/null
+++ b/js/src/build/moz.build
@@ -0,0 +1,108 @@
+# -*- Mode: python; 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 += [
+ "js-config",
+ "js.pc",
+]
+
+LIBRARY_DEFINES["EXPORT_JS_API"] = True
+
+# Note: The static standalone js library is currently broken due
+# to static mozglue missing, see bug 1588340 for more information.
+LIBRARY_DEFINES["MOZ_HAS_MOZGLUE"] = True
+
+# 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.
+
+if CONFIG["JS_SHARED_LIBRARY"]:
+ GeckoSharedLibrary("js", linkage=None)
+ SHARED_LIBRARY_NAME = CONFIG["JS_LIBRARY_NAME"]
+
+ # Ensure symbol versions of shared library on Linux do not conflict
+ # with those in libxul.
+ if CONFIG["OS_TARGET"] == "Linux":
+ GeneratedFile(
+ "symverscript",
+ script="/build/gen_symverscript.py",
+ inputs=["symverscript.in"],
+ flags=[CONFIG["JS_LIBRARY_NAME"].replace("-", "_")],
+ )
+ SYMBOLS_FILE = "!symverscript"
+else:
+ Library("js")
+
+FORCE_STATIC_LIB = True
+STATIC_LIBRARY_NAME = "js_static"
+
+if CONFIG["JS_HAS_INTL_API"]:
+ USE_LIBS += [
+ "icu",
+ ]
+
+if CONFIG["MOZ_ICU4X"]:
+ USE_LIBS += ["icu4xdata"]
+
+USE_LIBS += [
+ "nspr",
+ "zlib",
+]
+
+if CONFIG["OS_ARCH"] not in ("WINNT", "HP-UX"):
+ OS_LIBS += [
+ "m",
+ ]
+
+if CONFIG["OS_ARCH"] == "FreeBSD":
+ OS_LIBS += [
+ "-pthread",
+ ]
+
+if CONFIG["OS_ARCH"] == "Linux":
+ OS_LIBS += [
+ "dl",
+ ]
+
+if CONFIG["OS_ARCH"] == "SunOS":
+ OS_LIBS += [
+ "posix4",
+ "dl",
+ "nsl",
+ "socket",
+ ]
+
+if CONFIG["OS_ARCH"] == "WINNT":
+ OS_LIBS += [
+ "bcrypt",
+ "ntdll",
+ ]
+
+if CONFIG["MOZ_NEEDS_LIBATOMIC"]:
+ OS_LIBS += ["atomic"]
+
+OS_LIBS += CONFIG["REALTIME_LIBS"]
+
+NO_EXPAND_LIBS = True
+
+DIST_INSTALL = True
+
+# Run SpiderMonkey style checker after linking the static library. This avoids
+# running the script for no-op builds.
+GeneratedFile(
+ "spidermonkey_checks",
+ script="/config/run_spidermonkey_checks.py",
+ inputs=[
+ "!%sjs_static.%s" % (CONFIG["LIB_PREFIX"], CONFIG["LIB_SUFFIX"]),
+ "/config/check_spidermonkey_style.py",
+ "/config/check_macroassembler_style.py",
+ "/config/check_js_opcode.py",
+ ],
+)