# -*- mode: python; -*-

Import("env")

env = env.Clone()

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

env.CppUnitTest('collection_options_test', ['collection_options_test.cpp'],
                LIBDEPS=['collection_options'])


env.Library(
    target='document_validation',
    source=[
        "document_validation.cpp",
    ],
    LIBDEPS=[
        "$BUILD_DIR/mongo/db/service_context",
    ],
)

env.Library(
    target='index_key_validate',
    source=[
        "index_key_validate.cpp",
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/db/common',
        '$BUILD_DIR/mongo/db/index/index_descriptor',
        '$BUILD_DIR/mongo/db/index_names',
        '$BUILD_DIR/mongo/db/query/collation/collator_factory_interface',
        '$BUILD_DIR/mongo/util/fail_point',
    ],
)

env.CppUnitTest(
    target='index_key_validate_test',
    source=[
        'index_key_validate_test.cpp',
        'index_spec_validate_test.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/query/query_test_service_context',
        'index_key_validate',
    ]
)

env.Library(
    target='catalog',
    source=[
        "apply_ops.cpp",
        "capped_utils.cpp",
        "coll_mod.cpp",
        "collection.cpp",
        "collection_compact.cpp",
        "collection_info_cache.cpp",
        "create_collection.cpp",
        "cursor_manager.cpp",
        "database.cpp",
        "database_holder.cpp",
        "drop_collection.cpp",
        "drop_database.cpp",
        "drop_indexes.cpp",
        "index_catalog.cpp",
        "index_catalog_entry.cpp",
        "index_create.cpp",
        "rename_collection.cpp",
    ],
    LIBDEPS=[
        'collection_options',
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/db/concurrency/lock_manager',
        '$BUILD_DIR/mongo/db/curop',
        '$BUILD_DIR/mongo/db/query/query',
        '$BUILD_DIR/mongo/db/repl/serveronly',
        '$BUILD_DIR/mongo/db/server_options_core',
        '$BUILD_DIR/mongo/db/service_context',
        '$BUILD_DIR/mongo/db/storage/mmap_v1/storage_mmapv1',
        '$BUILD_DIR/mongo/db/storage/key_string',
        '$BUILD_DIR/mongo/db/ttl_collection_cache',
        '$BUILD_DIR/mongo/db/collection_index_usage_tracker',
        '$BUILD_DIR/mongo/db/background',
        #'$BUILD_DIR/mongo/db/db_raii', # CYCLE
        #'$BUILD_DIR/mongo/db/commands/dcommands', # CYCLE
        #'$BUILD_DIR/mongo/db/index/index_access_methods', # CYCLE
        #'$BUILD_DIR/mongo/db/views/views_mongod', # CYCLE
        #'$BUILD_DIR/mongo/db/ops/write_ops', # CYCLE
        #'$BUILD_DIR/mongo/db/clientcursor', # CYCLE
    ],
    LIBDEPS_TAGS=[
        # TODO(ADAM, 2017-01-10): See `CYCLE` tags above.
        'illegal_cyclic_or_unresolved_dependencies_whitelisted',
    ],
)
