# -*- mode: python -*-

Import("env")

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

sbeEnv = env.Clone()
sbeEnv.InjectThirdParty(libraries=['snappy'])
sbeEnv.Library(
    target='query_sbe',
    source=[
        'expressions/expression.cpp',
        'stages/branch.cpp',
        'stages/bson_scan.cpp',
        'stages/check_bounds.cpp',
        'stages/co_scan.cpp',
        'stages/exchange.cpp',
        'stages/hash_agg.cpp',
        'stages/hash_join.cpp',
        'stages/limit_skip.cpp',
        'stages/loop_join.cpp',
        'stages/makeobj.cpp',
        'stages/project.cpp',
        'stages/sort.cpp',
        'stages/spool.cpp',
        'stages/stages.cpp',
        'stages/text_match.cpp',
        'stages/traverse.cpp',
        'stages/union.cpp',
        'stages/unwind.cpp',
        'util/debug_print.cpp',
        'values/bson.cpp',
        'values/slot.cpp',
        'values/value.cpp',
        'vm/arith.cpp',
        'vm/vm.cpp',
        ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/db/exec/scoped_timer',
        '$BUILD_DIR/mongo/db/query/plan_yield_policy',
        '$BUILD_DIR/mongo/db/query/query_planner',
        '$BUILD_DIR/mongo/db/service_context',
        '$BUILD_DIR/mongo/db/storage/encryption_hooks',
        '$BUILD_DIR/mongo/db/storage/index_entry_comparison',
        '$BUILD_DIR/mongo/db/storage/key_string',
        '$BUILD_DIR/mongo/util/concurrency/thread_pool',
        '$BUILD_DIR/third_party/shim_snappy',
        'query_sbe_plan_stats'
         ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/db/sorter/sorter_idl',
         ]
    )

env.Library(
    target='query_sbe_storage',
    source=[
        'stages/ix_scan.cpp',
        'stages/scan.cpp',
        ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/db_raii',
        'query_sbe'
        ]
    )

env.Library(
    target='query_sbe_parser',
    source=[
        'parser/parser.cpp',
        ],
    LIBDEPS=[
        'query_sbe',
        'query_sbe_storage'
        ]
    )

env.CppUnitTest(
    target='db_sbe_test',
    source=[
        'expressions/sbe_bson_size_test.cpp',
        'expressions/sbe_coerce_to_string_test.cpp',
        'expressions/sbe_concat_test.cpp',
        'expressions/sbe_is_member_builtin_test.cpp',
        'expressions/sbe_to_upper_to_lower_test.cpp',
        'expressions/sbe_trigonometric_expressions_test.cpp',
        'sbe_filter_test.cpp',
        'sbe_key_string_test.cpp',
        'sbe_limit_skip_test.cpp',
        'sbe_math_builtins_test.cpp',
        'sbe_numeric_convert_test.cpp',
        'sbe_plan_stage_test.cpp',
        'sbe_sort_test.cpp',
        'sbe_test.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/concurrency/lock_manager',
        '$BUILD_DIR/mongo/db/service_context_test_fixture',
        '$BUILD_DIR/mongo/unittest/unittest',
        'query_sbe_parser',
    ],
)
