# -*- mode: python -*-
Import("env")

env = env.Clone()

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

env.Library(
    target='cluster_server_parameter',
    source=[
        'cluster_server_parameter.idl',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/db/server_base',
    ],
)

env.Library(
    target='cluster_server_parameter_initializer',
    source=[
        'cluster_server_parameter_initializer.cpp',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/db/catalog/collection_catalog',
        '$BUILD_DIR/mongo/db/repl/replica_set_aware_service',
        '$BUILD_DIR/mongo/db/server_base',
        '$BUILD_DIR/mongo/db/shard_role',
        'cluster_parameter_synchronization_helpers',
    ],
)

env.Library(
    target='cluster_parameter_synchronization_helpers',
    source=[
        'cluster_parameter_synchronization_helpers.cpp',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/db/audit',
        '$BUILD_DIR/mongo/db/catalog/collection_catalog',
        '$BUILD_DIR/mongo/db/server_base',
        '$BUILD_DIR/mongo/db/shard_role',
    ],
)

env.Library(
    target='cluster_server_parameter_op_observer',
    source=[
        'cluster_server_parameter_op_observer.cpp',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/db/dbdirectclient',
        '$BUILD_DIR/mongo/db/op_observer/op_observer',
        '$BUILD_DIR/mongo/db/server_base',
        '$BUILD_DIR/mongo/db/shard_role',
        'cluster_parameter_synchronization_helpers',
        'cluster_server_parameter_initializer',
    ],
)

env.Library(
    target='cluster_server_parameter_common',
    source=[
        'cluster_server_parameter_common.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/db/commands/list_databases_for_all_tenants_command',
        '$BUILD_DIR/mongo/s/grid',
    ],
)

env.Library(
    target='cluster_server_parameter_server_status',
    source=[
        'cluster_server_parameter_server_status.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/server_base',
    ],
)

env.Library(
    target='cluster_server_parameter_refresher',
    source=[
        'cluster_server_parameter_refresher.cpp',
        'cluster_server_parameter_refresher.idl',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/db/audit',
        '$BUILD_DIR/mongo/db/server_base',
        '$BUILD_DIR/mongo/db/transaction/transaction_api',
        '$BUILD_DIR/mongo/executor/inline_executor',
        '$BUILD_DIR/mongo/s/grid',
        'cluster_server_parameter',
        'cluster_server_parameter_common',
    ],
)

env.CppUnitTest(
    target='cluster_server_parameter_test',
    source=[
        'cluster_server_parameter_common_test.cpp',
        'cluster_server_parameter_initializer_test.cpp',
        'cluster_server_parameter_op_observer_test.cpp',
        'cluster_server_parameter_refresher_test.cpp',
        'cluster_server_parameter_server_status_test.cpp',
        'cluster_server_parameter_test_util.cpp',
        'cluster_server_parameter_test.idl',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/auth/authmocks',
        '$BUILD_DIR/mongo/db/catalog/catalog_helpers',
        '$BUILD_DIR/mongo/db/change_stream_options_manager',
        '$BUILD_DIR/mongo/db/commands/create_command',
        '$BUILD_DIR/mongo/db/op_observer/op_observer',
        '$BUILD_DIR/mongo/db/query/query_settings/manager',
        '$BUILD_DIR/mongo/db/repl/oplog',
        '$BUILD_DIR/mongo/db/repl/oplog_interface_local',
        '$BUILD_DIR/mongo/db/repl/replmocks',
        '$BUILD_DIR/mongo/db/repl/storage_interface_impl',
        '$BUILD_DIR/mongo/db/s/sharding_runtime_d',
        '$BUILD_DIR/mongo/db/service_context_d_test_fixture',
        '$BUILD_DIR/mongo/util/signal_handlers',
        'cluster_parameter_synchronization_helpers',
        'cluster_server_parameter',
        'cluster_server_parameter_common',
        'cluster_server_parameter_initializer',
        'cluster_server_parameter_op_observer',
        'cluster_server_parameter_refresher',
        'cluster_server_parameter_server_status',
    ],
)

env.CppUnitTest(
    target='idl_test',
    source=[
        'command_generic_argument_test.cpp',
        'config_option_no_init_test.idl',
        'config_option_test.cpp',
        'config_option_test.idl',
        'feature_flag_test.cpp',
        'idl_test.cpp',
        'server_parameter_specialized_test.cpp',
        'server_parameter_specialized_test.idl',
        'server_parameter_with_storage_test_structs.idl',
        'server_parameter_with_storage_test.cpp',
        'server_parameter_with_storage_test.idl',
        'unittest_import.idl',
        'unittest.idl',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/client/connection_string',
        '$BUILD_DIR/mongo/db/auth/authprivilege',
        '$BUILD_DIR/mongo/db/auth/security_token_auth',
        '$BUILD_DIR/mongo/db/concurrency/lock_manager',
        '$BUILD_DIR/mongo/db/server_base',
        '$BUILD_DIR/mongo/db/server_feature_flags',
        '$BUILD_DIR/mongo/db/service_context',
        '$BUILD_DIR/mongo/rpc/message',
        '$BUILD_DIR/mongo/util/cmdline_utils/cmdline_utils',
        '$BUILD_DIR/mongo/util/options_parser/options_parser',
        'cluster_server_parameter',
    ],
)

env.Benchmark(
    target='idl_parser_bm',
    source=[
        'idl_parser_bm.cpp',
        'idl_parser_bm.idl',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/auth/authprivilege',
        '$BUILD_DIR/mongo/db/concurrency/lock_manager',
        '$BUILD_DIR/mongo/db/ops/write_ops_parsers',
        '$BUILD_DIR/mongo/db/query/query_request',
        '$BUILD_DIR/mongo/rpc/message',
        'idl_parser',
    ],
)
