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

env = env.Clone()

env.Library(
    target='session_catalog',
    source=[
        'session_catalog.cpp',
    ],
    LIBDEPS=[
        'kill_sessions',
        'logical_session_id',
        'logical_session_id_helpers',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/db/internal_transactions_feature_flag',
        '$BUILD_DIR/mongo/db/service_context',
    ],
)

env.Library(
    target='logical_session_id',
    source=[
        'logical_session_id.cpp',
        'logical_session_id.idl',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/crypto/sha256_block',
        '$BUILD_DIR/mongo/crypto/sha_block_${MONGO_CRYPTO}',
        '$BUILD_DIR/mongo/db/server_base',
    ],
)

env.Library(
    target='logical_session_id_helpers',
    source=[
        'internal_session_pool.cpp',
        'logical_session_id_helpers.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/auth/auth',
        '$BUILD_DIR/mongo/db/auth/authprivilege',
        'logical_session_cache',
        'logical_session_id',
    ],
)

env.Library(
    target='sessions_collection',
    source=[
        'sessions_collection.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/client/clientdriver_minimal',
        'logical_session_id',
        'logical_session_id_helpers',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/db/index_commands_idl',
    ],
)

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

env.Library(
    target='sessions_collection_rs',
    source=[
        'sessions_collection_rs.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/client/authentication',
        '$BUILD_DIR/mongo/client/remote_command_targeter',
        '$BUILD_DIR/mongo/db/concurrency/lock_manager',
        '$BUILD_DIR/mongo/db/dbdirectclient',
        '$BUILD_DIR/mongo/db/repl/repl_coordinator_interface',
        'sessions_collection',
    ],
)

env.Library(
    target='sessions_collection_standalone',
    source=[
        'sessions_collection_standalone.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/db/dbdirectclient',
        'logical_session_id',
        'sessions_collection',
    ],
)

env.Library(
    target='logical_session_cache',
    source=[
        'logical_session_cache.cpp',
        'logical_session_cache_stats.idl',
        'logical_session_cache.idl',
    ],
    LIBDEPS=[
        'logical_session_id',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/db/server_base',
        '$BUILD_DIR/mongo/db/service_context',
    ],
)

env.Library(
    target='logical_session_cache_impl',
    source=[
        'initialize_operation_session_info.cpp',
        'logical_session_cache_impl.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/service_liaison',
        'kill_sessions',
        'logical_session_cache',
        'logical_session_id_helpers',
        'sessions_collection',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/db/internal_transactions_feature_flag',
        '$BUILD_DIR/mongo/db/shard_role_api',
    ],
)

env.Library(
    target='kill_sessions',
    source=[
        'kill_sessions.cpp',
        'kill_sessions_common.cpp',
        'session_killer.cpp',
        'kill_sessions.idl',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/db/api_parameters',
        '$BUILD_DIR/mongo/db/auth/auth',
        '$BUILD_DIR/mongo/db/auth/authprivilege',
        '$BUILD_DIR/mongo/db/auth/user',
        '$BUILD_DIR/mongo/db/server_base',
        '$BUILD_DIR/mongo/rpc/client_metadata',
        'logical_session_id_helpers',
    ],
)

env.Library(
    target='kill_sessions_local',
    source=[
        'kill_sessions_local.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/query_exec',
        'kill_sessions',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/db/transaction/transaction',
        'session_catalog',
    ],
)

env.Library(
    target='session_catalog_mongod',
    source=[
        'internal_transactions_reap_service.cpp',
        'internal_transactions_reap_service.idl',
        'session_catalog_mongod.cpp',
        'session_txn_record.idl',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/db/dbdirectclient',
        '$BUILD_DIR/mongo/db/index_builds_coordinator_interface',
        '$BUILD_DIR/mongo/db/index_commands_idl',
        '$BUILD_DIR/mongo/db/internal_transactions_feature_flag',
        '$BUILD_DIR/mongo/db/repl/repl_coordinator_interface',
        '$BUILD_DIR/mongo/db/repl/repl_server_parameters',
        '$BUILD_DIR/mongo/db/repl/replica_set_aware_service',
        '$BUILD_DIR/mongo/db/repl/storage_interface',
        '$BUILD_DIR/mongo/db/server_base',
        '$BUILD_DIR/mongo/db/service_context',
        '$BUILD_DIR/mongo/db/shard_role',
        '$BUILD_DIR/mongo/util/concurrency/thread_pool',
        'kill_sessions',
        'logical_session_id',
        'logical_session_id_helpers',
        'session_catalog',
    ],
)
