# -*- mode: python -*-

Import("env")

env = env.Clone()

env.Library(
    target='sharding_client',
    source=[
        'shard_connection.cpp',
        'shard_factory.cpp',
        'shard_registry.cpp',
        'shard_remote.cpp',
        'version_manager.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/client/clientdriver',
        '$BUILD_DIR/mongo/client/fetcher',
        '$BUILD_DIR/mongo/client/remote_command_targeter',
        '$BUILD_DIR/mongo/db/auth/authcore',
        '$BUILD_DIR/mongo/db/commands',
        '$BUILD_DIR/mongo/db/lasterror',
        '$BUILD_DIR/mongo/db/logical_time_metadata_hook',
        '$BUILD_DIR/mongo/executor/connection_pool_stats',
        '$BUILD_DIR/mongo/executor/task_executor_pool',
        '$BUILD_DIR/mongo/rpc/metadata',
        '$BUILD_DIR/mongo/s/cluster_last_error_info',
        '$BUILD_DIR/mongo/s/is_mongos',
        '$BUILD_DIR/mongo/s/coreshard',
        'shard_interface',
    ],
)

env.Library(
    target='sharding_connection_hook',
    source=[
        'sharding_connection_hook.cpp',
        'sharding_network_connection_hook.cpp',
    ],
    LIBDEPS=[
        'sharding_client',
        '$BUILD_DIR/mongo/client/clientdriver',
        '$BUILD_DIR/mongo/s/coreshard',
    ],
)

env.Library(
    target='parallel',
    source=[
        'parallel.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/db/bson/dotted_path_support',
        '$BUILD_DIR/mongo/s/coreshard',
        '$BUILD_DIR/mongo/util/net/network',
        'sharding_client',
    ],
)

env.CppUnitTest(
    target='sharding_client_test',
    source=[
        'shard_connection_test.cpp',
    ],
    LIBDEPS=[
        'sharding_client',
        'sharding_connection_hook',
        '$BUILD_DIR/mongo/client/remote_command_retry_scheduler',
        '$BUILD_DIR/mongo/db/auth/authorization_manager_mock_init',
        '$BUILD_DIR/mongo/db/service_context_noop_init',
        '$BUILD_DIR/mongo/dbtests/mocklib',
        '$BUILD_DIR/mongo/s/coreshard',
        '$BUILD_DIR/mongo/util/net/network',
    ]
)

env.CppUnitTest(
    target='shard_registry_test',
    source=[
        'shard_registry_data_test.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/s/coreshard',
        '$BUILD_DIR/mongo/s/sharding_test_fixture',
    ]
)

env.Library(
    target='shard_interface',
    source=[
        'shard.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/client/remote_command_retry_scheduler',
        '$BUILD_DIR/mongo/s/shard_id',
        '$BUILD_DIR/mongo/s/write_ops/batch_write_types',
    ]
)

env.Library(
    target='rs_local_client',
    source=[
        'rs_local_client.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/client/clientdriver',
        '$BUILD_DIR/mongo/db/dbdirectclient',
        '$BUILD_DIR/mongo/db/repl/repl_coordinator_impl'
    ],
)

env.Library(
    target='shard_local',
    source=[
        'shard_local.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/client/clientdriver',
        '$BUILD_DIR/mongo/db/repl/repl_coordinator_impl',
        'rs_local_client',
        'shard_interface'
    ],
)

env.CppUnitTest(
    target='shard_local_test',
    source=[
        'shard_local_test.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/repl/replmocks',
        '$BUILD_DIR/mongo/db/service_context_d_test_fixture',
        'shard_local',
    ],
)
