summaryrefslogtreecommitdiff
path: root/src/mongo/scripting/SConscript
blob: 4d357656fdf8ebd8055ec022df467ffe5aaf1f6e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
# -*- mode: python -*-

Import(
    [
        "env",
        "get_option",
        "jsEngine",
        "serverJs",
    ]
)

env.Library(
    target="scripting_none",
    source=[
        "engine_none.cpp",
    ],
    LIBDEPS=[
        "scripting_common",
    ],
)

if jsEngine:
    scriptingEnv = env.Clone()

    scriptingEnv.Append(
        CXXFLAGS=[
            # See the /Zc:preprocessor comment in third_party/mozjs/SConscript
            "/Zc:preprocessor",
            "/wd5104",
            "/wd5105",
        ]
        if scriptingEnv.TargetOSIs("windows")
        else [
            # TODO(SERVER-59992): Remove -Wno-class-memacces where possible.
            "-Wno-unknown-warning-option",
            "-Wno-class-memaccess",
            # TODO(SERVER-77205): Review and Possibly Remove '-Wno-deprecated' After Mozjs Update
            "-Wno-deprecated",
        ],
    )
    scriptingEnv.InjectMozJS()

    if get_option("spider-monkey-dbg") == "on":
        scriptingEnv.Prepend(
            CPPDEFINES=[
                "MONGO_SPIDERMONKEY_DBG",
            ]
        )

    scriptingEnv.Library(
        target="scripting",
        source=[
            "mozjs/base.cpp",
            "mozjs/bindata.cpp",
            "mozjs/bson.cpp",
            "mozjs/code.cpp",
            "mozjs/countdownlatch.cpp",
            "mozjs/cursor.cpp",
            "mozjs/cursor_handle.cpp",
            "mozjs/db.cpp",
            "mozjs/dbcollection.cpp",
            "mozjs/dbpointer.cpp",
            "mozjs/dbquery.cpp",
            "mozjs/dbref.cpp",
            "mozjs/engine.cpp",
            "mozjs/error.cpp",
            "mozjs/exception.cpp",
            "mozjs/global.cpp",
            "mozjs/idwrapper.cpp",
            "mozjs/implscope.cpp",
            "mozjs/internedstring.cpp",
            "mozjs/jscustomallocator.cpp",
            "mozjs/jsstringwrapper.cpp",
            "mozjs/jsthread.cpp",
            "mozjs/maxkey.cpp",
            "mozjs/minkey.cpp",
            "mozjs/module_loader.cpp",
            "mozjs/mongo.cpp",
            "mozjs/mongohelpers.cpp",
            "mozjs/mongohelpers_js.cpp",
            "mozjs/nativefunction.cpp",
            "mozjs/numberdecimal.cpp",
            "mozjs/numberint.cpp",
            "mozjs/numberlong.cpp",
            "mozjs/object.cpp",
            "mozjs/objectwrapper.cpp",
            "mozjs/oid.cpp",
            "mozjs/PosixNSPR.cpp",
            "mozjs/proxyscope.cpp",
            "mozjs/regexp.cpp",
            "mozjs/session.cpp",
            "mozjs/status.cpp",
            "mozjs/timestamp.cpp",
            "mozjs/uri.cpp",
            "mozjs/valuereader.cpp",
            "mozjs/valuewriter.cpp",
            "mozjs/engine_gen.cpp",
            "mozjs/scripting_util_gen.cpp",
        ],
        LIBDEPS=[
            "scripting_common",
        ],
        LIBDEPS_PRIVATE=[
            "$BUILD_DIR/mongo/client/clientdriver_network",
            "$BUILD_DIR/mongo/db/auth/security_token_auth",
            "$BUILD_DIR/mongo/db/service_context",
            "$BUILD_DIR/mongo/util/concurrency/spin_lock",
            "$BUILD_DIR/third_party/mozjs/mozjs",
        ],
    )

    scriptingEnv.CppUnitTest(
        target="scripting_mozjs_test",
        source=[
            "mozjs/asan_handles_test.cpp",
            "mozjs/module_loader_test.cpp",
        ],
        LIBDEPS=[
            "bson_template_evaluator",
            "scripting",
        ],
    )
else:
    env.Library(
        target="scripting",
        source=[
            "scripting_none.cpp",
        ],
        LIBDEPS=[
            "scripting_common",
        ],
        LIBDEPS_PRIVATE=[
            "scripting_none",
        ],
    )

env.Library(
    target="scripting_server",
    source=[
        "scripting_server.cpp",
    ],
    LIBDEPS=[
        "scripting" if serverJs else "scripting_none",
    ],
)

env.CppUnitTest(
    target="scripting_test",
    source=[
        "bson_template_evaluator_test.cpp",
        "deadline_monitor_test.cpp",
    ],
    LIBDEPS=[
        "$BUILD_DIR/mongo/db/concurrency/lock_manager",
        "scripting_common",
    ],
)