# -*- mode: python -*-

Import('env')

env = env.Clone()

env.Library(
    target='sdam_configuration_parameters',
    source=[
        env.Idlc('sdam_configuration_parameters.idl')[0],
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/idl/server_parameter',
    ]
)

env.Library(
    target='sdam',
    source=[
		'sdam_configuration.cpp',
        'sdam_datatypes.cpp',
        'server_description.cpp',
        'topology_description.cpp',
		'topology_listener.cpp',
        'topology_state_machine.cpp',
        'topology_manager.cpp',
		'server_selector.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/db/repl/optime',
        '$BUILD_DIR/mongo/util/clock_sources',
		'$BUILD_DIR/mongo/client/read_preference',
        '$BUILD_DIR/mongo/executor/task_executor_interface',
        '$BUILD_DIR/mongo/db/wire_version',
        '$BUILD_DIR/mongo/rpc/metadata',
        'sdam_configuration_parameters',
    ],
)


sdam_json_test = env.Program(
    target='sdam_json_test',
    source=[
        'sdam_json_test_runner.cpp'],
    AIB_COMPONENT="sdam-json-test",
    LIBDEPS=[
        'sdam',
        'sdam_test',
        'json_test',
        'sdam_configuration_parameters',
        '$BUILD_DIR/mongo/util/clock_source_mock',
        '$BUILD_DIR/mongo/client/connection_string'],
)[0]

server_selection_json_test = env.Program(
    target='server_selection_json_test',
    source=[
        'server_selection_json_test_runner.cpp'],
    AIB_COMPONENT="server-selection-json-test",
    LIBDEPS=[
        'sdam',
        'sdam_test',
        'json_test',
        'sdam_configuration_parameters',
        '$BUILD_DIR/mongo/util/clock_source_mock',
        '$BUILD_DIR/mongo/client/connection_string'],
)[0]

env.Library(
    target='json_test',
    source=[
        'json_test_arg_parser.cpp',
        env.Idlc('json_test_runner_cli_options.idl')[0],
    ],
    LIBDEPS=[
        'sdam',
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/util/options_parser/options_parser',
    ],
)

env.Library(
    target='sdam_test',
    source=[
        'server_description_builder.cpp',
        'topology_listener_mock.cpp',
    ],
    LIBDEPS=[
        'sdam',
        '$BUILD_DIR/mongo/base',
    ],
)

env.CppUnitTest(
    target='topology_description_test',
    source=['topology_description_test.cpp'],
    LIBDEPS=['sdam', 'sdam_test'],
)

env.CppUnitTest(
    target='server_description_test',
    source=['server_description_test.cpp'],
    LIBDEPS=['sdam', 'sdam_test'],
)

env.CppUnitTest(
    target='topology_manager_test',
    source=['topology_manager_test.cpp'],
    LIBDEPS=['sdam', 'sdam_test'],
)

env.CppUnitTest(
	target='server_selector_test',
	source=['server_selector_test.cpp'],
	LIBDEPS=[
		'sdam',
		'sdam_test',
	],
)

env.CppUnitTest(
    target='topology_state_machine_test',
    source=['topology_state_machine_test.cpp'],
    LIBDEPS=['sdam', 'sdam_test'],
)
