# -*- mode: python -*-

Import("env")

env = env.Clone()

env.Library(
    target='pattern_cmp',
    source=[
        'pattern_cmp.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/bson/mutable/mutable_bson',
        '$BUILD_DIR/mongo/db/common',
        '$BUILD_DIR/mongo/db/exec/document_value/document_value',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/db/bson/dotted_path_support',
    ],
)

env.Library(
    target='update_common',
    source=[
        'field_checker.cpp',
        'path_support.cpp',
        'storage_validation.cpp',
        'v2_log_builder.cpp',
        'update_oplog_entry_serialization.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/bson/mutable/mutable_bson',
        '$BUILD_DIR/mongo/db/common',
        '$BUILD_DIR/mongo/db/query_expressions',
        'pattern_cmp',
        'update_document_diff',
    ],
)

env.Library(
    target='update_nodes',
    source=[
        'addtoset_node.cpp',
        'arithmetic_node.cpp',
        'array_culling_node.cpp',
        'bit_node.cpp',
        'compare_node.cpp',
        'current_date_node.cpp',
        'modifier_node.cpp',
        'modifier_table.cpp',
        'pop_node.cpp',
        'pull_node.cpp',
        'pullall_node.cpp',
        'push_node.cpp',
        'rename_node.cpp',
        'set_node.cpp',
        'unset_node.cpp',
        'update_array_node.cpp',
        'update_internal_node.cpp',
        'update_leaf_node.cpp',
        'update_node.cpp',
        'update_object_node.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/update_index_data',
        '$BUILD_DIR/mongo/db/vector_clock_mutable',
        'update_common',
    ],
)

env.Library(
    target='update',
    source=[
        'delta_executor.cpp',
        'object_replace_executor.cpp',
        'object_transform_executor.cpp',
        'pipeline_executor.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/pipeline/pipeline',
        'update_common',
        'update_document_diff',
        'update_nodes',
    ],
)

env.Library(
    target='update_driver',
    source=[
        'update_driver.cpp',
        'update_util.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/common',
        '$BUILD_DIR/mongo/db/ops/write_ops_parsers',
        '$BUILD_DIR/mongo/db/query/canonical_query',
        '$BUILD_DIR/mongo/db/query_expressions',
        '$BUILD_DIR/mongo/db/server_base',
        'update',
    ],
)

env.Library(
    target='update_test_helpers',
    source=[
        'document_diff_test_helpers.cpp',
    ],
    LIBDEPS=[
        'update',
    ],
)

env.Library(
    target='update_document_diff',
    source=[
        'document_diff_calculator.cpp',
        'document_diff_applier.cpp',
        'document_diff_serialization.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/bson/mutable/mutable_bson',
        '$BUILD_DIR/mongo/db/common',
        '$BUILD_DIR/mongo/db/update_index_data',
    ],
)

env.CppUnitTest(
    target='db_update_test',
    source=[
        'addtoset_node_test.cpp',
        'arithmetic_node_test.cpp',
        'bit_node_test.cpp',
        'compare_node_test.cpp',
        'current_date_node_test.cpp',
        'delta_executor_test.cpp',
        'document_diff_calculator_test.cpp',
        'document_diff_serialization_test.cpp',
        'document_diff_applier_test.cpp',
        'document_diff_test.cpp',
        'field_checker_test.cpp',
        'modifier_table_test.cpp',
        'object_replace_executor_test.cpp',
        'object_transform_executor_test.cpp',
        'path_support_test.cpp',
        'pipeline_executor_test.cpp',
        'pop_node_test.cpp',
        'pull_node_test.cpp',
        'pullall_node_test.cpp',
        'push_node_test.cpp',
        'pattern_cmp_test.cpp',
        'rename_node_test.cpp',
        'set_node_test.cpp',
        'unset_node_test.cpp',
        'update_array_node_test.cpp',
        'update_driver_test.cpp',
        'update_object_node_test.cpp',
        'update_oplog_entry_serialization_test.cpp',
        'update_serialization_test.cpp',
        'v2_log_builder_test.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/bson/mutable/mutable_bson',
        '$BUILD_DIR/mongo/bson/mutable/mutable_bson_test_utils',
        '$BUILD_DIR/mongo/db/auth/authmocks',
        '$BUILD_DIR/mongo/db/exec/document_value/document_value_test_util',
        '$BUILD_DIR/mongo/db/query/collation/collator_interface_mock',
        '$BUILD_DIR/mongo/db/query/query_planner',
        '$BUILD_DIR/mongo/db/query/query_test_service_context',
        '$BUILD_DIR/mongo/db/query_expressions',
        '$BUILD_DIR/mongo/db/service_context_non_d',
        '$BUILD_DIR/mongo/db/service_context_test_fixture',
        '$BUILD_DIR/mongo/db/vector_clock_trivial',
        'update',
        'update_common',
        'update_driver',
        'update_test_helpers',
    ],
)
