# -*- mode: python -*-

Import("env")

env = env.Clone()

env.Library(
    target='sharding_client',
    source=[
        'shard_remote.cpp',
        'num_hosts_targeted_metrics.cpp',
         env.Idlc('shard_remote.idl')[0],
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/client/fetcher',
        '$BUILD_DIR/mongo/db/commands',
        '$BUILD_DIR/mongo/db/lasterror',
        '$BUILD_DIR/mongo/executor/task_executor_pool',
        '$BUILD_DIR/mongo/executor/hedging_metrics',
        '$BUILD_DIR/mongo/s/grid',
        'shard_interface',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/idl/server_parameter',
    ],
)

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/common_s',
        '$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_minimal',
        '$BUILD_DIR/mongo/db/dbdirectclient',
        '$BUILD_DIR/mongo/db/repl/repl_coordinator_interface',
    ],
)

env.Library(
    target='shard_local',
    source=[
        'shard_local.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/client/clientdriver_minimal',
        '$BUILD_DIR/mongo/db/repl/repl_coordinator_interface',
        'rs_local_client',
        'shard_interface',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/db/catalog/collection_catalog',
        '$BUILD_DIR/mongo/db/catalog_raii',
        '$BUILD_DIR/mongo/db/concurrency/write_conflict_exception',
        '$BUILD_DIR/mongo/db/db_raii',
        '$BUILD_DIR/mongo/db/index_builds_coordinator_interface',
        '$BUILD_DIR/mongo/db/server_options_core',
    ],
)

env.CppUnitTest(
    target='mongos_client_test',
    source=[
        'shard_registry_data_test.cpp',
        'shard_remote_test.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/s/coreshard',
        '$BUILD_DIR/mongo/s/query/async_results_merger',
        '$BUILD_DIR/mongo/s/sharding_router_test_fixture',
        'sharding_client',
    ],
)

# The shard local test globally sets server options into the config
# server state, which is incompatible with the other tests.
env.CppUnitTest(
    target='mongos_client_local_test',
    source=[
        'shard_local_test.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/auth/authmocks',
        '$BUILD_DIR/mongo/db/repl/replmocks',
        '$BUILD_DIR/mongo/db/service_context_d_test_fixture',
        '$BUILD_DIR/mongo/s/grid',
        'shard_local',
    ],
)
