26
32
[ 'util/assert_util.cpp',
27
33
'util/concurrency/mutexdebugger.cpp',
28
34
'util/debug_util.cpp',
35
'util/exception_filter_win32.cpp',
38
'util/platform_init.cpp',
30
39
'util/signal_handlers.cpp',
32
41
'util/time_support.cpp',
34
44
LIBDEPS=['stacktrace',
45
'$BUILD_DIR/mongo/base/base',
46
'$BUILD_DIR/mongo/platform/platform',
35
47
'$BUILD_DIR/third_party/shim_allocator',
36
48
'$BUILD_DIR/third_party/shim_boost'])
50
env.CppUnitTest('text_test', 'util/text_test.cpp', LIBDEPS=['foundation'])
38
52
env.StaticLibrary('stringutils', ['util/stringutils.cpp', 'util/base64.cpp',])
40
54
env.StaticLibrary('md5', [
58
env.CppUnitTest( "md5_test", ["util/md5_test.cpp", "util/md5main.cpp" ],
61
env.CppUnitTest( "stringutils_test", [ "util/stringutils_test.cpp" ],
62
LIBDEPS=["stringutils"] )
45
64
env.StaticLibrary('bson', [
65
'bson/mutable/mutable_bson.cpp',
66
'bson/mutable/mutable_bson_builder.cpp',
67
'bson/mutable/mutable_bson_heap.cpp',
68
'bson/mutable/mutable_bson_internal.cpp',
69
'bson/util/bson_extract.cpp',
71
'bson/bson_validate.cpp',
79
'$BUILD_DIR/mongo/platform/platform',
82
env.CppUnitTest('builder_test', ['bson/util/builder_test.cpp'],
85
env.CppUnitTest('mutable_bson_test', ['bson/mutable/mutable_bson_test.cpp'],
88
env.CppUnitTest('mutable_bson_heap_test', ['bson/mutable/mutable_bson_heap_test.cpp'],
91
env.CppUnitTest('mutable_bson_builder_test', ['bson/mutable/mutable_bson_builder_test.cpp'],
94
env.CppUnitTest('mutable_bson_algo_test', ['bson/mutable/mutable_bson_algo_test.cpp'],
97
env.CppUnitTest('safe_num_test', ['util/safe_num_test.cpp'],
100
env.CppUnitTest('string_map_test', ['util/string_map_test.cpp'],
101
LIBDEPS=['bson','foundation'])
104
env.CppUnitTest('bson_field_test', ['bson/bson_field_test.cpp'],
107
env.CppUnitTest('bson_validate_test', ['bson/bson_validate_test.cpp'],
110
env.CppUnitTest('namespacestring_test', ['db/namespacestring_test.cpp'],
113
env.CppUnitTest('index_set_test', ['db/index_set_test.cpp'],
114
LIBDEPS=['bson','index_set'])
117
env.CppUnitTest('bson_extract_test', ['bson/util/bson_extract_test.cpp'], LIBDEPS=['bson'])
119
env.CppUnitTest('descriptive_stats_test',
120
['util/descriptive_stats_test.cpp'],
121
LIBDEPS=['foundation', 'bson']);
123
env.CppUnitTest('sock_test', ['util/net/sock_test.cpp'],
124
LIBDEPS=['mongocommon', 'notmongodormongos'],
127
env.StaticLibrary( 'mongohasher', [ "db/hasher.cpp" ] )
55
130
commonFiles = [ "pch.cpp",
58
132
"db/lasterror.cpp",
59
133
"db/namespace.cpp",
60
134
"shell/mongo.cpp",
61
135
"util/background.cpp",
62
136
"util/intrusive_counter.cpp",
65
138
"util/file_allocator.cpp",
76
149
"util/stack_introspect.cpp",
77
150
"util/concurrency/synchronization.cpp",
78
151
"util/net/sock.cpp",
152
"util/net/ssl_manager.cpp",
79
153
"util/net/httpclient.cpp",
80
154
"util/net/message.cpp",
81
155
"util/net/message_port.cpp",
82
156
"util/net/listen.cpp",
83
157
"util/startup_test.cpp",
84
"client/authentication_table_common.cpp",
85
159
"client/connpool.cpp",
86
160
"client/dbclient.cpp",
87
161
"client/dbclient_rs.cpp",
88
162
"client/dbclientcursor.cpp",
89
163
"client/model.cpp",
164
'client/sasl_client_authenticate.cpp',
90
165
"client/syncclusterconnection.cpp",
91
"client/distlock.cpp",
169
commonSysLibdeps = []
171
if env['MONGO_BUILD_SASL_CLIENT']:
172
commonFiles.extend(['client/sasl_client_authenticate_impl.cpp',
173
'util/gsasl_session.cpp'])
174
commonSysLibdeps.append('gsasl')
176
# handle processinfo*
177
processInfoFiles = [ "util/processinfo.cpp" ]
179
processInfoPlatformFile = env.File( "util/processinfo_${PYSYSPLATFORM}.cpp" )
180
# NOTE( schwerin ): This is a very un-scons-y way to make this decision, and prevents one from using
181
# code generation to produce util/processinfo_$PYSYSPLATFORM.cpp.
182
if not os.path.exists( str( processInfoPlatformFile ) ):
183
processInfoPlatformFile = env.File( "util/processinfo_none.cpp" )
185
processInfoFiles.append( processInfoPlatformFile )
187
env.StaticLibrary("processinfo",
189
LIBDEPS=["foundation", "bson"])
191
env.CppUnitTest("processinfo_test",
192
["util/processinfo_test.cpp"],
193
LIBDEPS=["processinfo"])
195
env.StaticLibrary("server_parameters",
196
["db/server_parameters.cpp"],
197
LIBDEPS=["foundation","bson"])
199
env.CppUnitTest("server_parameters_test",
200
[ "db/server_parameters_test.cpp" ],
201
LIBDEPS=["server_parameters"] )
204
env.StaticLibrary("fail_point",
205
["util/fail_point.cpp",
206
"util/fail_point_registry.cpp",
207
"util/fail_point_service.cpp"],
208
LIBDEPS=["foundation", "bson"])
94
210
env.StaticLibrary('mongocommon', commonFiles,
100
219
'$BUILD_DIR/third_party/pcrecpp',
101
220
'$BUILD_DIR/third_party/murmurhash3/murmurhash3',
102
'$BUILD_DIR/third_party/shim_boost'],)
221
'$BUILD_DIR/third_party/shim_boost'],
222
SYSLIBDEPS=commonSysLibdeps)
104
224
env.StaticLibrary("coredb", [
105
"client/authentication_table_server.cpp",
106
225
"client/parallel.cpp",
107
226
"db/commands.cpp",
227
"db/commands/authentication_commands.cpp",
228
"db/commands/connection_status.cpp",
229
"db/commands/fail_point_cmd.cpp",
230
"db/commands/find_and_modify_common.cpp",
108
231
"db/commands/hashcmd.cpp",
109
232
"db/commands/isself.cpp",
233
"db/commands/mr_common.cpp",
234
"db/commands/rename_collection_common.cpp",
235
"db/commands/server_status.cpp",
236
"db/commands/parameters.cpp",
110
237
"db/pipeline/pipeline.cpp",
111
238
"db/dbcommands_generic.cpp",
112
239
"db/dbwebserver.cpp",
113
241
"db/matcher.cpp",
114
242
"db/pipeline/accumulator.cpp",
115
243
"db/pipeline/accumulator_add_to_set.cpp",
143
272
"db/projection.cpp",
144
273
"db/querypattern.cpp",
145
274
"db/queryutil.cpp",
146
"db/security_commands.cpp",
147
"db/security_common.cpp",
275
"db/stats/timer_stats.cpp",
148
276
"db/stats/top.cpp",
149
277
"s/shardconnection.cpp",
279
LIBDEPS=['db/auth/serverauth',
284
'$BUILD_DIR/mongo/foundation'])
152
coreServerFiles = [ "util/version.cpp",
286
coreServerFiles = [ "db/client_basic.cpp",
154
288
"util/net/miniwebserver.cpp",
156
289
"db/indexkey.cpp",
157
290
"db/stats/counters.cpp",
158
291
"db/stats/service_stats.cpp",
161
env.StaticLibrary('ntservice', ['util/ntservice.cpp'])
294
env.StaticLibrary('ntservice', ['util/ntservice.cpp'], LIBDEPS=['foundation'])
296
env.CppUnitTest('ntservice_test', 'util/ntservice_test.cpp',
297
LIBDEPS=['ntservice'],
298
LIBS=['shell32', env['LIBS']])
163
300
scripting_common_files = [ "scripting/engine.cpp",
164
301
"scripting/utils.cpp",
171
308
LIBDEPS=['bson_template_evaluator'])
174
env.StaticLibrary('scripting', scripting_common_files + ['scripting/engine_spidermonkey.cpp'],
311
env.StaticLibrary('scripting', scripting_common_files + ['scripting/engine_spidermonkey.cpp',
312
'scripting/sm_db.cpp'],
175
313
LIBDEPS=['$BUILD_DIR/third_party/js-1.7/js', 'bson_template_evaluator'])
177
315
env.StaticLibrary('scripting', scripting_common_files + ['scripting/engine_v8.cpp',
178
316
'scripting/v8_db.cpp',
179
317
'scripting/v8_utils.cpp',
180
'scripting/v8_wrapper.cpp'],
181
LIBDEPS=['bson_template_evaluator'])
318
'scripting/v8_profiler.cpp'],
319
LIBDEPS=['bson_template_evaluator', '$BUILD_DIR/third_party/shim_v8'])
183
321
env.StaticLibrary('scripting', scripting_common_files + ['scripting/engine_none.cpp'],
184
322
LIBDEPS=['bson_template_evaluator'])
186
mmapFiles = [ "util/mmap.cpp", "util/touch_pages.cpp" ]
324
mmapFiles = [ "util/mmap.cpp" ]
188
326
if has_option( "mm" ):
189
327
mmapFiles += [ "util/mmap_mm.cpp" ]
191
329
mmapFiles += [ "util/mmap_${OS_FAMILY}.cpp" ]
193
# handle processinfo*
194
processInfoFiles = [ "util/processinfo.cpp" ]
196
processInfoPlatformFile = env.File( "util/processinfo_${PYSYSPLATFORM}.cpp" )
197
# NOTE( schwerin ): This is a very un-scons-y way to make this decision, and prevents one from using
198
# code generation to produce util/processinfo_$PYSYSPLATFORM.cpp.
199
if not os.path.exists( str( processInfoPlatformFile ) ):
200
processInfoPlatformFile = env.File( "util/processinfo_none.cpp" )
202
processInfoFiles.append( processInfoPlatformFile )
204
coreServerFiles += processInfoFiles
206
331
# handle systeminfo*
207
332
systemInfoPlatformFile = env.File( "util/systeminfo_${PYSYSPLATFORM}.cpp" )
208
333
# NOTE( schwerin ): This is a very un-scons-y way to make this decision, and prevents one from using
296
434
"db/commands/distinct.cpp",
297
435
"db/commands/find_and_modify.cpp",
298
436
"db/commands/group.cpp",
437
"db/commands/index_stats.cpp",
299
438
"db/commands/mr.cpp",
300
439
"db/commands/pipeline_command.cpp",
440
"db/commands/storage_details.cpp",
301
441
"db/pipeline/pipeline_d.cpp",
302
442
"db/pipeline/document_source_cursor.cpp",
303
443
"db/driverHelpers.cpp" ]
305
env.Library( "dbcmdline", "db/cmdline.cpp" )
445
env.Library( "dbcmdline", "db/cmdline.cpp", LIBDEPS=['bson', 'server_parameters'] )
446
env.CppUnitTest('cmdline_test', 'db/cmdline_test.cpp', LIBDEPS=['dbcmdline'])
448
env.CppUnitTest('diskloc_test', 'db/diskloc_test.cpp', LIBDEPS=[])
450
env.CppUnitTest('v8_deadline_monitor_test', 'scripting/v8_deadline_monitor_test.cpp', LIBDEPS=[])
307
452
env.Library('stacktrace', 'util/stacktrace.cpp')
309
454
env.Program('lame_stacktrace_test', 'util/lame_stacktrace_test.cpp',
310
LIBDEPS=['stacktrace'])
455
LIBDEPS=['stacktrace',
456
'$BUILD_DIR/mongo/base/base'])
312
458
serverOnlyFiles += mmapFiles
314
460
serverOnlyFiles += [ "db/stats/snapshots.cpp" ]
316
env.Library( "coreshard", [ "s/config.cpp",
462
env.Library('coreshard', ['client/distlock.cpp',
322
470
mongosLibraryFiles = [
323
471
"s/interrupt_status_mongos.cpp",
324
472
"s/strategy.cpp",
330
478
"s/client_info.cpp",
332
"s/config_migrate.cpp",
336
482
"s/balancer_policy.cpp",
337
483
"s/writeback_listener.cpp",
338
"s/shard_version.cpp",
484
"s/version_manager.cpp",
342
env.Library( "mongoscore" , mongosLibraryFiles )
487
env.Library( "mongoscore",
489
LIBDEPS=['db/auth/authmongos',
344
493
env.CppUnitTest( "balancer_policy_test" , [ "s/balancer_policy_tests.cpp" ] ,
345
LIBDEPS=["mongoscore", "coreshard","mongocommon","coreserver","coredb","dbcmdline","mongodandmongos"] ,
494
LIBDEPS=["mongoscore", "coreshard", "mongocommon","coreserver","coredb","dbcmdline","mongodandmongos"] ,
497
env.CppUnitTest("dbclient_rs_test", [ "client/dbclient_rs_test.cpp" ],
509
env.CppUnitTest("scoped_db_conn_test", [ "client/scoped_db_conn_test.cpp" ],
520
env.CppUnitTest("shard_conn_test", [ "s/shard_conn_test.cpp" ],
348
532
env.CppUnitTest("shard_test", [ "s/shard_test.cpp" ],
363
553
"client/distlock_test.cpp",
364
554
"s/d_chunk_manager.cpp",
366
"db/modules/mms.cpp", ]
368
557
env.StaticLibrary("defaultversion", "s/default_version.cpp")
559
env.StaticLibrary("geometry", [ "db/geo/hash.cpp", "db/geo/shapes.cpp", ], LIBDEPS = [ "bson" ])
560
env.StaticLibrary("geoparser", [ "db/geo/geoparser.cpp", ],
563
'$BUILD_DIR/third_party/s2/s2' ])
564
env.StaticLibrary("geoquery", [ "db/geo/geoquery.cpp", ],
567
'$BUILD_DIR/third_party/s2/s2' ])
569
env.CppUnitTest("hash_test", [ "db/geo/hash_test.cpp" ], LIBDEPS = ["geometry" ])
570
env.CppUnitTest("geoparser_test", [ "db/geo/geoparser_test.cpp" ], LIBDEPS = ["geoparser"])
370
572
env.StaticLibrary("serveronly", serverOnlyFiles,
371
573
LIBDEPS=["coreshard",
574
"db/auth/authmongod",
373
578
"defaultversion",
374
582
'$BUILD_DIR/third_party/shim_snappy'])
376
584
# These files go into mongos and mongod only, not into the shell or any tools.
377
585
mongodAndMongosFiles = [
378
586
"db/connection_factory.cpp",
587
"db/initialize_server_global_state.cpp",
588
"db/server_extra_log_context.cpp",
379
589
"util/net/message_server_port.cpp",
381
591
env.StaticLibrary("mongodandmongos", mongodAndMongosFiles)
389
599
mongodOnlyFiles = [ "db/db.cpp", "db/compact.cpp", "db/commands/touch.cpp" ]
391
# create a library per module, and add it as a dependency
392
# for the mongod target; as of now, modules are only included
393
# in mongod, as though they were part of serverOnlyFiles
395
for modName, modSources in env["MONGO_MODULES"].items():
396
libName = "mod%s" % modName
397
env.StaticLibrary(libName, modSources)
398
modules.append(libName)
400
601
# ----- TARGETS ------
402
603
env.StaticLibrary("gridfs", "client/gridfs.cpp")
404
605
if has_option( 'use-cpu-profiler' ):
405
606
coreServerFiles.append( 'db/commands/cpuprofile.cpp' )
406
env.Append( LIBS=['profiler'] )
607
env.Append(LIBS=['unwind'])
408
609
env.StaticLibrary("coreserver", coreServerFiles, LIBDEPS=["mongocommon", "scripting"])
411
612
mongod = env.Install(
412
613
'#/', env.Program( "mongod", mongodOnlyFiles,
413
LIBDEPS=["coreserver", "serveronly", "coredb", "ntservice",
414
"mongodandmongos"] + modules ) )
619
] + env['MODULE_LIBDEPS_MONGOD'] ) )
415
620
Default( mongod )
441
646
mongos = env.Program(
442
647
"mongos", [ "s/server.cpp"] ,
443
648
LIBDEPS=["mongoscore", "coreserver", "coredb", "mongocommon", "coreshard", "dbcmdline", "ntservice",
649
"mongodandmongos", "s/upgrade"] + env['MODULE_LIBDEPS_MONGOS'])
445
650
env.Install( '#/', mongos )
447
env.Library("clientandshell", ["client/authentication_table_client.cpp",
448
"client/clientAndShell.cpp"],
652
env.Library("clientandshell", ["client/clientAndShell.cpp"],
449
653
LIBDEPS=["mongocommon",
450
654
"defaultversion",
458
662
# dbtests test binary
459
663
env.StaticLibrary('testframework', ['dbtests/framework.cpp'], LIBDEPS=['unittest/unittest'])
665
env.StaticLibrary('mocklib', [
666
'dbtests/mock/mock_conn_registry.cpp',
667
'dbtests/mock/mock_dbclient_connection.cpp',
668
'dbtests/mock/mock_dbclient_cursor.cpp',
669
'dbtests/mock/mock_remote_db_server.cpp',
670
'dbtests/mock/mock_replica_set.cpp'
672
LIBDEPS=['mongocommon'])
461
674
test = testEnv.Install(
463
testEnv.Program( "test", [ f for f in Glob( "dbtests/*.cpp" ) if not str( f ).endswith( 'framework.cpp' ) ],
464
LIBDEPS=["mongocommon", "serveronly", "coreserver", "coredb", "testframework", "gridfs", "notmongodormongos" ] ) )
676
testEnv.Program("test",
677
[ f for f in Glob("dbtests/*.cpp") if not str(f).endswith('framework.cpp') ],
466
689
if len(testEnv.subst('$PROGSUFFIX')):
467
690
testEnv.Alias( "test", "#/${PROGPREFIX}test${PROGSUFFIX}" )
481
704
sniffEnv.Append( LIBS=[ "wpcap" ] )
483
706
sniffEnv.Install( '#/', sniffEnv.Program( "mongosniff", "tools/sniffer.cpp",
484
LIBDEPS=["gridfs", "serveronly", "coreserver", "coredb", "notmongodormongos"] ) )
707
LIBDEPS=["gridfs", "serveronly", "coreserver", "coredb", "notmongodormongos"]))
488
711
# if you add a file here, you need to add it in scripting/engine.cpp and shell/createCPPfromJavaScriptFiles.js as well
489
env.JSHeader( "shell/mongo.cpp" ,
490
[ "shell/utils.js","shell/utils_sh.js","shell/db.js","shell/mongo.js","shell/mr.js","shell/query.js","shell/collection.js"] )
712
env.JSHeader("shell/mongo.cpp",
713
["shell/assert.js", "shell/types.js", "shell/utils.js", "shell/utils_sh.js",
714
"shell/db.js", "shell/mongo.js", "shell/mr.js", "shell/query.js",
715
"shell/collection.js"])
492
717
# if you add a file here, you need to add it in shell/shell_utils.cpp and shell/createCPPfromJavaScriptFiles.js as well
493
env.JSHeader( "shell/mongo-server.cpp" ,
494
["shell/servers.js", "shell/shardingtest.js", "shell/servers_misc.js", "shell/replsettest.js", "shell/replsetbridge.js"] )
718
env.JSHeader("shell/mongo-server.cpp",
719
["shell/servers.js", "shell/shardingtest.js",
720
"shell/servers_misc.js", "shell/replsettest.js", "shell/replsetbridge.js"])
496
722
coreShellFiles = [ "shell/dbshell.cpp",
497
723
"shell/shell_utils.cpp",
573
802
if installSetup.headers:
574
for id in [ "", "util/", "util/net/", "util/mongoutils/", "util/concurrency/", "db/", "db/stats/", "db/repl/", "db/ops/", "client/", "bson/", "bson/util/", "s/", "scripting/" ]:
803
for id in [ "", "util/", "util/net/", "util/mongoutils/", "util/concurrency/", "db/",
804
"db/stats/", "db/repl/", "db/ops/", "client/", "bson/", "bson/util/", "s/",
805
"scripting/", "base/", "platform/" ]:
575
806
env.Install( "$INSTALL_DIR/include/" + id, Glob( id + "*.h" ) )
576
807
env.Install( "$INSTALL_DIR/include/" + id, Glob( id + "*.hpp" ) )