# -*- mode: python; -*-

Import('env')

env = env.Clone()

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

env.Library(
    target='bson_column',
    source=[
        'bsoncolumn.cpp',
        'bsoncolumn_interleaved.cpp',
        'bsoncolumnbuilder.cpp',
        'simple8b_type_util.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
    ],
)

env.Program(
    target="bson_column_encoder",
    source=[
        "bson_column_encoder.cpp",
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        'bson_column',
        'bson_extract',
    ],
)

env.Benchmark(
    target='simple8b_bm',
    source=[
        'simple8b_bm.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        'bson_column',
    ],
)

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

env.Library(
    target='bsoncolumn_test_util',
    source=[
        'bsoncolumn_test_util.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/db/sbe_values',
        'bson_column',
    ],
)

env.CppUnitTest(
    target='bson_util_test',
    source=[
        'bson_check_test.cpp',
        'bson_extract_test.cpp',
        'bsoncolumn_blockbased_test.cpp',
        'bsoncolumn_test.cpp',
        'builder_test.cpp',
        'simple8b_test.cpp',
        'simple8b_type_util_test.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/util/safe_num',
        'bson_column',
        'bson_column_fuzzer_impl',
        'bson_extract',
        'bsoncolumn_test_util',
    ],
)

env.Benchmark(
    target='bsoncolumn_bm',
    source=[
        'bsoncolumn_bm.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/db/sbe_values',
        'bson_column',
    ],
)

env.CppLibfuzzerTest(
    target='simple8b_fuzzer',
    source=[
        'simple8b_fuzzer.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        'bson_column',
    ],
)

env.CppLibfuzzerTest(
    target='bsoncolumn_decompress_fuzzer',
    source=[
        'bsoncolumn_decompress_fuzzer.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/bson/bson_validate',
        'bson_column',
    ],
)

env.CppLibfuzzerTest(
    target='bsoncolumn_decompress_paths_fuzzer',
    source=[
        'bsoncolumn_decompress_paths_fuzzer.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/bson/bson_validate',
        '$BUILD_DIR/mongo/db/service_context_d_test_fixture',
        'bson_column',
        'bsoncolumn_test_util',
    ],
)

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

env.CppLibfuzzerTest(
    target='bsoncolumnbuilder_reopen_fuzzer',
    source=[
        'bsoncolumnbuilder_reopen_fuzzer.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/bson/bson_validate',
        'bson_column_fuzzer_impl',
    ],
)
