# -*- mode: python -*-

Import([
    "env",
    "get_option",
])

env = env.Clone()
env.CppUnitTest(
    target='platform_test',
    source=[
        'atomic_proxy_test.cpp',
        'atomic_test.cpp',
        'bits_test.cpp',
        'endian_test.cpp',
        'int128_test.cpp',
        'mutex_test.cpp',
        'process_id_test.cpp',
        'random_test.cpp',
        'source_location_test.cpp',
        'stack_locator_test.cpp',
        'decimal128_test.cpp',
        'decimal128_bson_test.cpp',
        'overflow_arithmetic_test.cpp',
        'waitable_atomic_test.cpp',
    ],
)

env.Benchmark(
    target='endian_bm',
    source=[
        'endian_bm.cpp',
    ],
    LIBDEPS=[],
)

if get_option("link-model") == "dynamic":

    env.BazelLibrary(
        target="visibility_test_libcommon",
        source=[
            "visibility_test_libcommon.cpp",
        ],
        LIBDEPS=[],
        MONGO_API_NAME="visibility_test_libcommon",
    )

    env.BazelLibrary(
        target="visibility_test_lib1",
        source=[
            "visibility_test_lib1.cpp",
        ],
        LIBDEPS=[],
        LIBDEPS_PRIVATE=[
            "visibility_test_libcommon",
        ],
        MONGO_API_NAME="visibility_test_lib1",
    )

    env.BazelLibrary(
        target="visibility_test_lib2",
        source=[
            "visibility_test_lib2.cpp",
        ],
        LIBDEPS=[
            "visibility_test_lib1",
        ],
        LIBDEPS_PRIVATE=[
            "visibility_test_libcommon",
        ],
        MONGO_API_NAME="visibility_test_lib2",
    )

    visibility_test1 = env.BazelProgram(
        target="visibility_test1",
        source=[
            "visibility_test1.cpp",
        ],
        LIBDEPS=[
            "visibility_test_lib1",
        ],
        AIB_COMPONENT="visibility-test",
        AIB_COMPONENTS_EXTRA=[
            "unittests",
            "tests",
            "first-quarter-unittests",
        ],
    )
    env.RegisterTest("$UNITTEST_LIST", visibility_test1[0])

    visibility_test2 = env.Program(
        target="visibility_test2",
        source=[
            "visibility_test2.cpp",
        ],
        LIBDEPS=[
            "visibility_test_lib2",
        ],
        AIB_COMPONENT="visibility-test",
        AIB_COMPONENTS_EXTRA=[
            "unittests",
            "tests",
            "first-quarter-unittests",
        ],
    )
    env.RegisterTest("$UNITTEST_LIST", visibility_test2[0])

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

env.Benchmark(
    target='rwmutex_bm',
    source=[
        'rwmutex_bm.cpp',
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/base',
        '$BUILD_DIR/mongo/db/concurrency/lock_manager',
        '$BUILD_DIR/mongo/db/service_context_non_d',
        '$BUILD_DIR/mongo/util/processinfo',
    ],
)
