summaryrefslogtreecommitdiff
path: root/src/mongo/scripting/SConscript
blob: c9b283bd822357ea7f4a0f0ba35ca2aec24a2d26 (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
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
# -*- mode: python -*-

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

scripting_common_env = env.Clone()
# TODO(SERVER-77205): Review and Possibly Remove '-Wno-deprecated' After Mozjs Update
scripting_common_env.Append(
    CXXFLAGS=[] if scripting_common_env.TargetOSIs('windows') else [
        '-Wno-deprecated',
    ], )

scripting_common_env.Library(
    target='scripting_common',
    source=[
        'deadline_monitor.cpp',
        'deadline_monitor.idl',
        'dbdirectclient_factory.cpp',
        'engine.cpp',
        'jsexception.cpp',
        'utils.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/client/clientdriver_minimal',
        '$BUILD_DIR/mongo/db/server_base',
        '$BUILD_DIR/mongo/shell/mongojs',
        '$BUILD_DIR/mongo/util/md5',
        'bson_template_evaluator',
    ],
)

env.Library(
    target='bson_template_evaluator',
    source=[
        'bson_template_evaluator.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
    ],
)

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

if jsEngine:
    scriptingEnv = env.Clone()

    scriptingEnv.Append(
        CXXFLAGS=[] 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()

    scriptingEnv.JSHeader(
        target='mozjs/mongohelpers_js.cpp',
        source=['mozjs/mongohelpers.js'],
    )

    env.Alias('generated-sources', 'mozjs/mongohelpers_js.cpp')

    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.idl',
            'mozjs/scripting_util.idl',
        ],
        LIBDEPS=[
            'scripting_common',
        ],
        LIBDEPS_PRIVATE=[
            '$BUILD_DIR/mongo/client/clientdriver_network',
            '$BUILD_DIR/mongo/db/service_context',
            '$BUILD_DIR/third_party/mozjs/mozjs',
        ],
    )

    scriptingEnv.CppUnitTest(
        target='scripting_mozjs_test',
        source=['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=[
        'scripting_common',
    ],
)