Blob Blame History Raw
diff --git a/SConstruct b/SConstruct
index bdafd06..9350c29 100644
--- a/SConstruct
+++ b/SConstruct
@@ -363,6 +363,11 @@ add_option('use-system-asio',
     nargs=0,
 )
 
+add_option('use-system-mozjs',
+    help="use system version of mozjs",
+    nargs=0,
+)
+
 add_option('use-system-intel_decimal128',
     help='use system version of intel decimal128',
     nargs=0,
@@ -2394,11 +2399,17 @@ def doConfigure(myenv):
     if use_system_version_of_library("intel_decimal128"):
         conf.FindSysLibDep("intel_decimal128", ["bid"])
 
+    if use_system_version_of_library("mozjs"):
+        conf.FindSysLibDep("mozjs", ["mozjs-38"])
+
     if wiredtiger and use_system_version_of_library("wiredtiger"):
         if not conf.CheckCXXHeader( "wiredtiger.h" ):
             myenv.ConfError("Cannot find wiredtiger headers")
         conf.FindSysLibDep("wiredtiger", ["wiredtiger"])
 
+    if use_system_version_of_library("asio"):
+        conf.CheckCXXHeader("asio.hpp")
+
     conf.env.Append(
         CPPDEFINES=[
             ("BOOST_THREAD_VERSION", "4"),
diff --git a/src/mongo/executor/connection_pool_asio.h b/src/mongo/executor/connection_pool_asio.h
index 2924331..54e5d53 100644
--- a/src/mongo/executor/connection_pool_asio.h
+++ b/src/mongo/executor/connection_pool_asio.h
@@ -35,6 +35,8 @@
 #include "mongo/executor/network_interface_asio.h"
 #include "mongo/stdx/mutex.h"
 
+#include <asio/steady_timer.hpp>
+
 namespace mongo {
 namespace executor {
 namespace connection_pool_asio {
diff --git a/src/third_party/SConscript b/src/third_party/SConscript
index 5ff1ace..dd3b73f 100644
--- a/src/third_party/SConscript
+++ b/src/third_party/SConscript
@@ -41,13 +41,18 @@ if not use_system_version_of_library('zlib'):
 # TODO: figure out if we want to offer system versions of mozjs.  Mozilla
 # hasn't offered a source tarball since 24, but in theory they could.
 #
-#if not use_system_version_of_library('mozjs'):
-if True:
+if not use_system_version_of_library('mozjs'):
     thirdPartyIncludePathList.append(
         ('mozjs', ['#/src/third_party/mozjs' + mozjsSuffix + '/include',
                    '#/src/third_party/mozjs' + mozjsSuffix + '/mongo_sources',
                    '#/src/third_party/mozjs' + mozjsSuffix + '/platform/' + env["TARGET_ARCH"] + "/" + env["TARGET_OS"] + "/include",
         ]))
+else:
+    thirdPartyIncludePathList.append(
+        ('mozjs', ['#/src/third_party/mozjs' + mozjsSuffix + '/mongo_sources', ]))
+    if use_system_version_of_library("mozjs"):
+        thirdPartyIncludePathList.append(
+            ('mozjs', ['/usr/include/mozjs' + mozjsSuffix, ]))
 
 if not use_system_version_of_library('stemmer'):
     thirdPartyIncludePathList.append(
@@ -198,13 +203,20 @@ zlibEnv.Library(
     ])
 
 if usemozjs:
-    mozjsEnv = env.Clone()
-    mozjsEnv.SConscript('mozjs' + mozjsSuffix + '/SConscript', exports={'env' : mozjsEnv })
-    mozjsEnv = mozjsEnv.Clone(
-        LIBDEPS=[
-            'mozjs' + mozjsSuffix + '/mozjs',
-            'shim_zlib',
-        ])
+    if use_system_version_of_library("mozjs"):
+        env.InjectThirdPartyIncludePaths(libraries=['mozjs'])
+        mozjsEnv = env.Clone(
+            SYSLIBDEPS=[
+                env['LIBDEPS_MOZJS_SYSLIBDEP'],
+            ])
+    else:
+        mozjsEnv = env.Clone()
+        mozjsEnv.SConscript('mozjs' + mozjsSuffix + '/SConscript', exports={'env' : mozjsEnv })
+        mozjsEnv = mozjsEnv.Clone(
+            LIBDEPS=[
+                'mozjs' + mozjsSuffix + '/mozjs',
+                'shim_zlib',
+            ])
 
     mozjsEnv.Library(
         target="shim_mozjs",
@@ -316,10 +328,7 @@ if wiredtiger:
         ])
 
 if use_system_version_of_library("asio"):
-    asioEnv = env.Clone(
-        SYSLIBDEPS=[
-            env['LIBDEPS_ASIO_SYSLIBDEP'],
-        ])
+    asioEnv = env.Clone()
 else:
     asioEnv = env.Clone()
     asioEnv.InjectThirdPartyIncludePaths(libraries=['asio'])