# -*- mode: python; -*-

Import('env')

env = env.Clone()

env.SConscript(
    dirs=[
        'mutable',
        'util',
    ],
    exports=[
        'env',
    ],
)

env.CppUnitTest(
    target='bson_test',
    source=[
        'bson_field_test.cpp',
        'bson_iterator_test.cpp',
        'bson_obj_data_type_test.cpp',
        'bson_obj_test.cpp',
        'bson_validate_test.cpp',
        'bsonelement_test.cpp',
        'bsonobjbuilder_test.cpp',
        'json_test.cpp',
        'oid_test.cpp',
        'simple_bsonobj_comparator_test.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/bson/bson_validate',
        '$BUILD_DIR/mongo/bson/util/bson_column',
    ],
)

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

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

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

env.Library(
    target='bson_validate',
    source=[
        'bson_validate.cpp',
        'bson_validate.idl',
    ],
    LIBDEPS_PRIVATE=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/bson/util/bson_column',
        '$BUILD_DIR/mongo/db/server_base',
        '$BUILD_DIR/mongo/idl/idl_parser',
    ],
)

asioEnv = env.Clone()
asioEnv.InjectThirdParty('asio')

asioEnv.CppIntegrationTest(
    target='bson_integration_test',
    source=[
        'ugly_bson_integration_test.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/executor/network_interface',
        '$BUILD_DIR/mongo/executor/network_interface_fixture',
        '$BUILD_DIR/mongo/rpc/message',
        '$BUILD_DIR/mongo/transport/transport_layer_egress_init',
    ],
)
