# -*- mode: python; -*-

Import('env')
Import("has_option")

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

env.CppUnitTest(
    target='hostandport_test',
    source=[
        'hostandport_test.cpp'
    ],
    LIBDEPS=[
        'hostandport',
    ],
)

networkEnv = env.Clone();

networkEnv.InjectThirdPartyIncludePaths(libraries=[
    'asio',
])

networkEnv.Library(
    target='network',
    source=[
        "asio_message_port.cpp",
        "asio_ssl_context.cpp",
        "hostname_canonicalization.cpp",
        "httpclient.cpp",
        "listen.cpp",
        "message.cpp",
        "message_port.cpp",
        "message_port_startup_param.cpp",
        "sock.cpp",
        "sockaddr.cpp",
        'socket_exception.cpp',
        "socket_poll.cpp",
        "ssl_expiration.cpp",
        "ssl_manager.cpp",
        "ssl_options.cpp",
        "thread_idle_callback.cpp",
    ],
    LIBDEPS=[
        '$BUILD_DIR/mongo/db/auth/auth_rolename',
        '$BUILD_DIR/mongo/db/server_options_core',
        '$BUILD_DIR/mongo/db/server_parameters',
        '$BUILD_DIR/mongo/util/background_job',
        '$BUILD_DIR/mongo/util/concurrency/ticketholder',
        '$BUILD_DIR/mongo/util/decorable',
        '$BUILD_DIR/mongo/util/fail_point',
        '$BUILD_DIR/mongo/util/options_parser/options_parser',
        '$BUILD_DIR/third_party/shim_asio',
        'hostandport',
        '$BUILD_DIR/mongo/util/winutil',
    ],
)

env.Library(
    target='ssl_manager_status',
    source=[
        "ssl_manager_status.cpp",
    ],
    LIBDEPS=[
        'network',
        '$BUILD_DIR/mongo/db/commands/core',
    ],
)

env.Library(
    target='message_port_mock',
    source=[
        "message_port_mock.cpp",
    ],
    LIBDEPS=[
        'network',
    ],
)

env.CppUnitTest(
    target='sock_test',
    source=[
        'sock_test.cpp',
    ],
    LIBDEPS=[
        'network',
    ],
)

if has_option('ssl'):
    env.CppUnitTest(
        target='ssl_manager_test',
        source=[
            'ssl_options_test.cpp',
        ],
        LIBDEPS=[
            '$BUILD_DIR/mongo/base',
            '$BUILD_DIR/mongo/db/server_options',
            'network',
        ],
    )

env.Library(
    target='miniwebserver',
    source=[
        'miniwebserver.cpp',
    ],
    LIBDEPS=[
        'network',
    ],
)
