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

env = env.Clone()

env.SConscript(
    dirs=[
        'devnull',
        'ephemeral_for_test',
        'inmemory',
        'kv',
        'mmap_v1',
        'wiredtiger',
        'mobile',
    ],
    exports=[
        'env'
    ],
)

env.Library(
    target='journal_listener',
    source=[
        'journal_listener.cpp',
        ],
    LIBDEPS=[
        ],
    )

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

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

env.Library(
    target='bson_collection_catalog_entry',
    source=[
        'bson_collection_catalog_entry.cpp',
        ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/catalog/collection_options',
        '$BUILD_DIR/mongo/db/common',
        '$BUILD_DIR/mongo/db/service_context',
        '$BUILD_DIR/mongo/db/storage/kv/kv_prefix',
        ],
    )

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

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

env.Library(
    target='encryption_hooks',
    source= [
        'encryption_hooks.cpp',
        ],
    LIBDEPS= ['$BUILD_DIR/mongo/base',
              '$BUILD_DIR/mongo/db/service_context'],
    LIBDEPS_DEPENDENTS=[
        '$BUILD_DIR/mongo/mongodmain',
    ],
    PROGDEPS_DEPENDENTS=[
        '$BUILD_DIR/mongo/mongos',
        ],
    )

env.Library(
    target='test_harness_helper',
    source=[
        'test_harness_helper.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/storage/storage_options',
        '$BUILD_DIR/mongo/db/service_context',
    ],

)

env.Library(
    target='sorted_data_interface_test_harness',
    source=[
        'sorted_data_interface_test_bulkbuilder.cpp',
        'sorted_data_interface_test_cursor.cpp',
        'sorted_data_interface_test_cursor_advanceto.cpp',
        'sorted_data_interface_test_cursor_end_position.cpp',
        'sorted_data_interface_test_cursor_locate.cpp',
        'sorted_data_interface_test_cursor_saverestore.cpp',
        'sorted_data_interface_test_cursor_seek_exact.cpp',
        'sorted_data_interface_test_dupkeycheck.cpp',
        'sorted_data_interface_test_fullvalidate.cpp',
        'sorted_data_interface_test_harness.cpp',
        'sorted_data_interface_test_insert.cpp',
        'sorted_data_interface_test_isempty.cpp',
        'sorted_data_interface_test_rand_cursor.cpp',
        'sorted_data_interface_test_rollback.cpp',
        'sorted_data_interface_test_spaceused.cpp',
        'sorted_data_interface_test_touch.cpp',
        'sorted_data_interface_test_unindex.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/storage/storage_options',
        '$BUILD_DIR/mongo/db/service_context',
        '$BUILD_DIR/mongo/unittest/unittest',
        'index_entry_comparison',
        'test_harness_helper',
    ],

)

env.Library(
    target='record_store_test_harness',
    source=[
        'record_store_test_capped_visibility.cpp',
        'record_store_test_datafor.cpp',
        'record_store_test_datasize.cpp',
        'record_store_test_deleterecord.cpp',
        'record_store_test_harness.cpp',
        'record_store_test_insertrecord.cpp',
        'record_store_test_manyiter.cpp',
        'record_store_test_randomiter.cpp',
        'record_store_test_recorditer.cpp',
        'record_store_test_recordstore.cpp',
        'record_store_test_repairiter.cpp',
        'record_store_test_storagesize.cpp',
        'record_store_test_touch.cpp',
        'record_store_test_truncate.cpp',
        'record_store_test_updaterecord.cpp',
        'record_store_test_updatewithdamages.cpp',
        'record_store_test_validate.cpp',
        ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/service_context',
        '$BUILD_DIR/mongo/db/storage/storage_options',
        '$BUILD_DIR/mongo/unittest/unittest',
        'test_harness_helper',
        ],
    )


env.Library(
    target='recovery_unit_test_harness',
    source=[
        'recovery_unit_test_harness.cpp'
        ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/unittest/unittest',
        'test_harness_helper',
        ],
    )

env.Library(
    target='storage_engine_lock_file',
    source=[
        'storage_engine_lock_file.cpp',
        'storage_engine_lock_file_${TARGET_OS_FAMILY}.cpp',
        ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/db/service_context',
        ],
    )

env.Library(
    target='storage_engine_common',
    source=[
        'storage_engine_init.cpp'
    ],
    LIBDEPS=[
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/db/service_context',
        '$BUILD_DIR/mongo/db/concurrency/lock_manager',
        'storage_engine_lock_file',
        'storage_repair_observer',
        'storage_engine_metadata',
        'storage_options',
    ],
)
env.Library(
    target="storage_init_d",
    source=[
        "storage_init.cpp",
    ],
    LIBDEPS=[
        "storage_options",
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/db/commands/server_status',
    ]
)

env.Library(
    target="write_unit_of_work",
    source=[
        "write_unit_of_work.cpp",
    ],
    LIBDEPS_PRIVATE=[
        "$BUILD_DIR/mongo/base",
        "$BUILD_DIR/mongo/db/storage/storage_options",
    ],
)

env.CppUnitTest(
    target= 'storage_engine_lock_file_test',
    source = 'storage_engine_lock_file_test.cpp',
    LIBDEPS=[
        'storage_engine_lock_file',
    ],
)

env.Library(
    target='storage_engine_metadata',
    source=[
        'storage_engine_metadata.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/db/server_options_core',
        '$BUILD_DIR/mongo/db/bson/dotted_path_support',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/db/storage/mmap_v1/paths',
    ],
)

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

env.Library(
    target='storage_repair_observer',
    source=[
        'storage_repair_observer.cpp',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/db/dbhelpers',
        '$BUILD_DIR/mongo/db/service_context',
        '$BUILD_DIR/mongo/db/repl/replica_set_messages',
        'storage_file_util',
    ],
)

env.CppUnitTest(
    target='storage_repair_observer_test',
    source=[
        'storage_repair_observer_test.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/auth/authmocks',
        '$BUILD_DIR/mongo/db/namespace_string',
        '$BUILD_DIR/mongo/db/repair_database',
        '$BUILD_DIR/mongo/db/repl/replmocks',
        '$BUILD_DIR/mongo/db/service_context_d_test_fixture',
        '$BUILD_DIR/mongo/db/storage/ephemeral_for_test/storage_ephemeral_for_test_core',
        '$BUILD_DIR/mongo/executor/network_interface_factory',
        '$BUILD_DIR/mongo/executor/network_interface_mock',
        'storage_repair_observer',
    ],
)

env.CppUnitTest(
    target= 'storage_engine_metadata_test',
    source = 'storage_engine_metadata_test.cpp',
    LIBDEPS=[
        'storage_engine_metadata',
    ],
)

env.CppUnitTest(
    target='storage_key_string_test',
    source='key_string_test.cpp',
    LIBDEPS=[
        'key_string',
        '$BUILD_DIR/mongo/base',
        ]
)
