Import("env")

env = env.Clone()

AMD64 = 'x86_64'
ARM64 = 'aarch64'
ARCH = env['TARGET_ARCH']

if env['TARGET_OS'] != 'linux':
    env.FatalError(f"Unsupported OS: `{env['TARGET_OS']}`")
if ARCH not in (AMD64, ARM64):
    env.FatalError(f"Unsupported CPU architecture: `{ARCH}`")
env.Append(CPPPATH=[
    f"platform/linux_{ARCH}/crt/aws-crt-cpp/crt/aws-c-common/generated/include",
    f"platform/linux_{ARCH}/crt/aws-crt-cpp/generated/include"
])

envAwsCJson = env.Clone()
envAwsCJson.Append(CPPPATH=["dist/crt/aws-crt-cpp/crt/aws-c-common/source/external"])
envAwsCJson.Library(
    target="aws-cjson",
    source=[
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/external/cJSON.c",
    ],
)

envAwsCCommon = env.Clone()
envAwsCCommon.Append(
    CPPPATH=[
        "dist/crt/aws-crt-cpp/crt/aws-c-common/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/external/libcbor",
    ],
    CPPDEFINES=[
        "AWS_AFFINITY_METHOD=AWS_AFFINITY_METHOD_PTHREAD_ATTR",
        "AWS_COMMON_EXPORTS",
        "AWS_COMMON_USE_IMPORT_EXPORT",
        "AWS_PTHREAD_GETNAME_TAKES_3ARGS",
        "AWS_PTHREAD_SETNAME_TAKES_2ARGS",
        "CJSON_HIDE_SYMBOLS",
        "ENABLED_REQUEST_COMPRESSION",
        "ENABLED_ZLIB_REQUEST_COMPRESSION",
        "ENABLE_CURL_CLIENT",
        "ENFORCE_TLS_V1_2",
        "HAVE_SYSCONF",
        "INTEL_NO_ITTNOTIFY_API",
        "PLATFORM_LINUX",
        "_POSIX_C_SOURCE=200809L",
        "_XOPEN_SOURCE=500",
        "aws_c_common_EXPORTS",
    ] + (["USE_SIMD_ENCODING"] if ARCH == AMD64 else []),
    CCFLAGS=[
        "-Wno-error",
        "-Wno-sign-compare",
        "-Wno-implicit-fallthrough",
        "-Wstrict-prototypes",
        "-pedantic",
        "-Wno-long-long",
        "-std=gnu99",
        "-Wp,-w",
    ] + {AMD64: ["-mavx", "-mavx2"], ARM64: ["-moutline-atomics"]}[ARCH],
    CXXFLAGS=[
        "-Wno-newline-eof",
        "-Wno-macro-redefined",
    ],
    LINKFLAGS=[
        "-lpthread",
        "-ldl",
        "-lm",
        "-lrt",
    ],
)
envAwsCCommon.Library(
    target="aws-c-common",
    source=[
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/allocator.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/allocator_sba.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/array_list.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/assert.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/byte_buf.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/cache.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/cbor.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/codegen.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/command_line_parser.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/common.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/condition_variable.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/date_time.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/device_random.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/encoding.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/error.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/fifo_cache.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/file.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/hash_table.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/host_utils.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/json.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/lifo_cache.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/linked_hash_table.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/log_channel.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/log_formatter.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/logging.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/log_writer.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/lru_cache.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/math.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/memtrace.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/priority_queue.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/process_common.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/ref_count.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/ring_buffer.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/statistics.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/string.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/system_info.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/task_scheduler.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/thread_scheduler.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/thread_shared.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/uri.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/uuid.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/xml_parser.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/external/libcbor/allocators.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/external/libcbor/cbor.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/external/libcbor/cbor/arrays.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/external/libcbor/cbor/bytestrings.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/external/libcbor/cbor/callbacks.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/external/libcbor/cbor/common.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/external/libcbor/cbor/encoding.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/external/libcbor/cbor/floats_ctrls.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/external/libcbor/cbor/ints.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/external/libcbor/cbor/maps.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/external/libcbor/cbor/serialization.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/external/libcbor/cbor/streaming.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/external/libcbor/cbor/strings.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/external/libcbor/cbor/tags.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/external/libcbor/cbor/internal/builder_callbacks.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/external/libcbor/cbor/internal/encoders.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/external/libcbor/cbor/internal/loaders.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/external/libcbor/cbor/internal/memory_utils.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/external/libcbor/cbor/internal/stack.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/external/libcbor/cbor/internal/unicode.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/linux/system_info.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/posix/clock.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/posix/condition_variable.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/posix/cross_process_lock.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/posix/device_random.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/posix/environment.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/posix/file.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/posix/mutex.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/posix/process.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/posix/rw_lock.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/posix/system_info.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/posix/system_resource_utils.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/posix/thread.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/source/posix/time.c",
    ] + {
        AMD64: [
            "dist/crt/aws-crt-cpp/crt/aws-c-common/source/arch/intel/asm/cpuid.c",
            "dist/crt/aws-crt-cpp/crt/aws-c-common/source/arch/intel/cpuid.c",
            "dist/crt/aws-crt-cpp/crt/aws-c-common/source/arch/intel/encoding_avx2.c",
        ],
        ARM64: ["dist/crt/aws-crt-cpp/crt/aws-c-common/source/arch/arm/auxv/cpuid.c", ],
    }.get(ARCH, ["dist/crt/aws-crt-cpp/crt/aws-c-common/source/arch/generic/cpuid.c"]),
    LIBDEPS=[
        "aws-cjson",
    ],
)

envAwsChecksums = env.Clone()
envAwsChecksums.Append(
    CPPPATH=[
        "dist/crt/aws-crt-cpp/crt/aws-c-common/include",
        "dist/crt/aws-crt-cpp/crt/aws-checksums/include",
    ],
    CPPDEFINES=[
        "AWS_CHECKSUMS_EXPORTS",
        "AWS_CHECKSUMS_USE_IMPORT_EXPORT",
        "AWS_COMMON_USE_IMPORT_EXPORT",
        "ENABLED_REQUEST_COMPRESSION",
        "ENABLED_ZLIB_REQUEST_COMPRESSION",
        "ENABLE_CURL_CLIENT",
        "ENFORCE_TLS_V1_2",
        "HAVE_SYSCONF",
        "INTEL_NO_ITTNOTIFY_API",
        "PLATFORM_LINUX",
        "aws_checksums_EXPORTS",
    ],
    CCFLAGS=[
        "-Wno-error",
        "-Wstrict-prototypes",
        "-Wextra",
        "-pedantic",
        "-Wno-long-long",
        "-std=gnu99",
        "-Wno-newline-eof",
    ] + {
        AMD64: [
            "-msse4.2",
            "-mavx512f",
            "-mvpclmulqdq",
            "-mavx512vl",
            "-mavx",
            "-mavx2",
            "-mpclmul",
        ], ARM64: [
            "-moutline-atomics",
            "-march=armv8-a+crc+crypto",
            "-mtune=neoverse-v1",
        ]
    }[ARCH],
)
envAwsChecksums.Library(
    target="aws-checksums",
    source=[
        "dist/crt/aws-crt-cpp/crt/aws-checksums/source/crc64.c",
        "dist/crt/aws-crt-cpp/crt/aws-checksums/source/crc64_sw.c",
        "dist/crt/aws-crt-cpp/crt/aws-checksums/source/crc.c",
        "dist/crt/aws-crt-cpp/crt/aws-checksums/source/crc_sw.c",
    ] + {
        AMD64: [
            "dist/crt/aws-crt-cpp/crt/aws-checksums/source/intel/asm/crc32c_sse42_asm.c",
            "dist/crt/aws-crt-cpp/crt/aws-checksums/source/intel/intrin/crc32c_sse42_avx512.c",
            "dist/crt/aws-crt-cpp/crt/aws-checksums/source/intel/intrin/crc64nvme_avx512.c",
            "dist/crt/aws-crt-cpp/crt/aws-checksums/source/intel/intrin/crc64nvme_clmul.c",
        ], ARM64: [
            "dist/crt/aws-crt-cpp/crt/aws-checksums/source/arm/crc32c_arm.c",
            "dist/crt/aws-crt-cpp/crt/aws-checksums/source/arm/crc64_arm.c",
        ]
    }[ARCH],
    LIBDEPS=[
        "aws-c-common",
    ],
)

envAwsS2n = env.Clone()
envAwsS2n.Append(
    CPPPATH=[
        "dist/crt/aws-crt-cpp/crt/s2n",
        "dist/crt/aws-crt-cpp/crt/s2n/api",
    ],
    CPPDEFINES=[
        "ENABLED_REQUEST_COMPRESSION",
        "ENABLED_ZLIB_REQUEST_COMPRESSION",
        "ENABLE_CURL_CLIENT",
        "ENFORCE_TLS_V1_2",
        "PLATFORM_LINUX",
        "S2N_ATOMIC_SUPPORTED",
        "S2N_BUILD_RELEASE",
        "S2N_CLOEXEC_SUPPORTED",
        "S2N_CLOEXEC_XOPEN_SUPPORTED",
        "S2N_CLONE_SUPPORTED",
        "S2N_DIAGNOSTICS_POP_SUPPORTED",
        "S2N_DIAGNOSTICS_PUSH_SUPPORTED",
        "S2N_EXECINFO_AVAILABLE",
        "S2N_FALL_THROUGH_SUPPORTED",
        "S2N_FEATURES_AVAILABLE",
        "S2N_LIBCRYPTO_SUPPORTS_EVP_RC4",
        "S2N_LINUX_SENDFILE",
        "S2N_MADVISE_SUPPORTED",
        "S2N_STACKTRACE",
        "s2n_EXPORTS",
    ] + {AMD64: ["S2N_CPUID_AVAILABLE", "S2N_KTLS_SUPPORTED"], ARM64: []}[ARCH],
    CCFLAGS=[
        # It was required to split the "-include utils/s2n_prelude.h" into two
        # parts. Otherwise, `gcc` doesn't understand that. Clearly, the parts
        # should be next to each other and go in the order below.
        "-include",
        "utils/s2n_prelude.h",
        "-Wno-error",
        "-pedantic",
        "-std=gnu99",
        "-Wcast-align",
        "-Wchar-subscripts",
        "-Wcomment",
        "-Wformat-security",
        "-Wimplicit",
        "-Wshadow",
        "-Wsign-compare",
        "-Wuninitialized",
        "-Wunused",
        "-Wwrite-strings",
        "-Wa,--noexecstack",
        "-Wno-deprecated-declarations",
        "-Wno-missing-braces",
        "-Wno-strict-prototypes",
        "-Wno-unknown-pragmas",
        "-DS2N_EXPORTS",
        "-Wno-macro-redefined",
        "-Wp,-w",
    ] + {AMD64: [], ARM64: ["-moutline-atomics"]}[ARCH],
    LINKFLAGS=[
        "-ldl",
        "-lpthread",
        "-lcrypto",
        "-lrt",
    ],
)
envAwsS2n.Library(
    target="aws-s2n",
    source=[
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_aead_cipher_aes_gcm.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_aead_cipher_chacha20_poly1305.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_cbc_cipher_3des.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_cbc_cipher_aes.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_certificate.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_cipher.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_composite_cipher_aes_sha.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_crypto.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_dhe.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_drbg.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_ecc_evp.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_ecdsa.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_evp.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_evp_kem.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_evp_signing.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_fips.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_fips_rules.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_hash.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_hkdf.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_hmac.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_libcrypto.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_locking.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_openssl_x509.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_pkey.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_pq.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_rsa.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_rsa_pss.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_rsa_signing.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_sequence.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_stream_cipher_null.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_stream_cipher_rc4.c",
        "dist/crt/aws-crt-cpp/crt/s2n/crypto/s2n_tls13_keys.c",
        "dist/crt/aws-crt-cpp/crt/s2n/error/s2n_errno.c",
        "dist/crt/aws-crt-cpp/crt/s2n/stuffer/s2n_stuffer_base64.c",
        "dist/crt/aws-crt-cpp/crt/s2n/stuffer/s2n_stuffer.c",
        "dist/crt/aws-crt-cpp/crt/s2n/stuffer/s2n_stuffer_file.c",
        "dist/crt/aws-crt-cpp/crt/s2n/stuffer/s2n_stuffer_hex.c",
        "dist/crt/aws-crt-cpp/crt/s2n/stuffer/s2n_stuffer_network_order.c",
        "dist/crt/aws-crt-cpp/crt/s2n/stuffer/s2n_stuffer_pem.c",
        "dist/crt/aws-crt-cpp/crt/s2n/stuffer/s2n_stuffer_text.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_aead.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_alerts.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_async_pkey.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_auth_selection.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_cbc.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_certificate_keys.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_change_cipher_spec.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_cipher_preferences.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_cipher_suites.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_client_cert.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_client_cert_verify.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_client_finished.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_client_hello.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_client_hello_request.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_client_key_exchange.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_config.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_connection.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_connection_serialize.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_crl.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_crypto.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_early_data.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_early_data_io.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_ecc_preferences.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_encrypted_extensions.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_establish_session.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_fingerprint.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_fingerprint_ja3.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_fingerprint_ja4.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_handshake.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_handshake_hashes.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_handshake_io.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_handshake_transcript.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_handshake_type.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_kem.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_kem_preferences.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_kex.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_key_log.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_key_update.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_ktls.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_ktls_io.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_next_protocol.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_ocsp_stapling.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_post_handshake.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_prf.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_protocol_preferences.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_psk.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_quic_support.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_record_read_aead.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_record_read.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_record_read_cbc.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_record_read_composite.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_record_read_stream.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_record_write.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_recv.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_renegotiate.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_resume.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_security_policies.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_security_rules.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_send.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_server_cert.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_server_cert_request.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_server_done.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_server_extensions.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_server_finished.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_server_hello.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_server_hello_retry.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_server_key_exchange.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_server_new_session_ticket.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_shutdown.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_signature_algorithms.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_signature_scheme.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_tls13.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_tls13_certificate_verify.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_tls13_handshake.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_tls13_key_schedule.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_tls13_secrets.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_tls.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/s2n_x509_validator.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_cert_authorities.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_cert_status.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_cert_status_response.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_client_alpn.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_client_cert_status_request.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_client_cookie.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_client_early_data_indication.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_client_ems.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_client_key_share.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_client_max_frag_len.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_client_pq_kem.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_client_psk.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_client_renegotiation_info.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_client_sct_list.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_client_server_name.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_client_session_ticket.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_client_signature_algorithms.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_client_supported_groups.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_client_supported_versions.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_ec_point_format.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_extension_list.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_extension_type.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_extension_type_lists.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_key_share.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_npn.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_nst_early_data_indication.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_psk_key_exchange_modes.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_quic_transport_params.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_server_alpn.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_server_cert_status_request.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_server_cookie.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_server_early_data_indication.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_server_ems.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_server_key_share.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_server_max_fragment_length.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_server_psk.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_server_renegotiation_info.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_server_sct_list.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_server_server_name.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_server_session_ticket.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_server_signature_algorithms.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_server_supported_versions.c",
        "dist/crt/aws-crt-cpp/crt/s2n/tls/extensions/s2n_supported_versions.c",
        "dist/crt/aws-crt-cpp/crt/s2n/utils/s2n_array.c",
        "dist/crt/aws-crt-cpp/crt/s2n/utils/s2n_atomic.c",
        "dist/crt/aws-crt-cpp/crt/s2n/utils/s2n_blob.c",
        "dist/crt/aws-crt-cpp/crt/s2n/utils/s2n_ensure.c",
        "dist/crt/aws-crt-cpp/crt/s2n/utils/s2n_fork_detection.c",
        "dist/crt/aws-crt-cpp/crt/s2n/utils/s2n_init.c",
        "dist/crt/aws-crt-cpp/crt/s2n/utils/s2n_io.c",
        "dist/crt/aws-crt-cpp/crt/s2n/utils/s2n_map.c",
        "dist/crt/aws-crt-cpp/crt/s2n/utils/s2n_mem.c",
        "dist/crt/aws-crt-cpp/crt/s2n/utils/s2n_random.c",
        "dist/crt/aws-crt-cpp/crt/s2n/utils/s2n_rfc5952.c",
        "dist/crt/aws-crt-cpp/crt/s2n/utils/s2n_safety.c",
        "dist/crt/aws-crt-cpp/crt/s2n/utils/s2n_set.c",
        "dist/crt/aws-crt-cpp/crt/s2n/utils/s2n_socket.c",
        "dist/crt/aws-crt-cpp/crt/s2n/utils/s2n_timer.c",
    ],
)

envAwsCSdkUtils = env.Clone()
envAwsCSdkUtils.Append(
    CPPPATH=[
        "dist/crt/aws-crt-cpp/crt/aws-c-common/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-sdkutils/include",
    ],
    CPPDEFINES=[
        "AWS_COMMON_USE_IMPORT_EXPORT",
        "AWS_SDKUTILS_EXPORTS",
        "AWS_SDKUTILS_USE_IMPORT_EXPORT",
        "ENABLED_REQUEST_COMPRESSION",
        "ENABLED_ZLIB_REQUEST_COMPRESSION",
        "ENABLE_CURL_CLIENT",
        "ENFORCE_TLS_V1_2",
        "HAVE_SYSCONF",
        "INTEL_NO_ITTNOTIFY_API",
        "PLATFORM_LINUX",
        "aws_c_sdkutils_EXPORTS",
    ],
    CCFLAGS=[
        "-Wno-error",
        "-Wstrict-prototypes",
        "-pedantic",
        "-Wno-long-long",
        "-std=gnu99",
        "-Wno-newline-eof",
    ] + {AMD64: [], ARM64: ["-moutline-atomics"]}[ARCH],
)
envAwsCSdkUtils.Library(
    target="aws-c-sdkutils",
    source=[
        "dist/crt/aws-crt-cpp/crt/aws-c-sdkutils/source/aws_profile.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-sdkutils/source/endpoints_regex.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-sdkutils/source/endpoints_rule_engine.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-sdkutils/source/endpoints_ruleset.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-sdkutils/source/endpoints_standard_lib.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-sdkutils/source/endpoints_types_impl.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-sdkutils/source/endpoints_util.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-sdkutils/source/partitions.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-sdkutils/source/resource_name.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-sdkutils/source/sdkutils.c",
    ],
    LIBDEPS=[
        "aws-c-common",
    ],
)

envAwsCCal = env.Clone()
envAwsCCal.Append(
    CPPPATH=[
        "dist/crt/aws-crt-cpp/crt/aws-c-cal/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/include",
    ],
    CPPDEFINES=[
        "AWS_CAL_EXPORTS",
        "AWS_CAL_USE_IMPORT_EXPORT",
        "AWS_COMMON_USE_IMPORT_EXPORT",
        "ENABLED_REQUEST_COMPRESSION",
        "ENABLED_ZLIB_REQUEST_COMPRESSION",
        "ENABLE_CURL_CLIENT",
        "ENFORCE_TLS_V1_2",
        "HAVE_SYSCONF",
        "INTEL_NO_ITTNOTIFY_API",
        "PLATFORM_LINUX",
        "aws_c_cal_EXPORTS",
    ],
    CCFLAGS=[
        "-Wno-error",
        "-Wno-implicit-fallthrough",
        "-Wstrict-prototypes",
        "-pedantic",
        "-Wno-long-long",
        "-std=gnu99",
        "-Wno-newline-eof",
    ] + {AMD64: [], ARM64: ["-moutline-atomics"]}[ARCH],
    LINKFLAGS=[
        "-lpthread",
        "-lcrypto",
    ],
)
envAwsCCal.Library(
    target="aws-c-cal",
    source=[
        "dist/crt/aws-crt-cpp/crt/aws-c-cal/source/cal.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-cal/source/der.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-cal/source/ecc.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-cal/source/hash.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-cal/source/hmac.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-cal/source/rsa.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-cal/source/symmetric_cipher.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-cal/source/unix/openssl_aes.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-cal/source/unix/opensslcrypto_ecc.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-cal/source/unix/opensslcrypto_hash.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-cal/source/unix/opensslcrypto_hmac.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-cal/source/unix/openssl_platform_init.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-cal/source/unix/openssl_rsa.c",
    ],
    LIBDEPS=[
        "aws-c-common",
    ],
)

envAwsCIo = env.Clone()
envAwsCIo.Append(
    CPPPATH=[
        "dist/crt/aws-crt-cpp/crt/aws-c-cal/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/include",
        "dist/crt/aws-crt-cpp/crt/s2n",
        "dist/crt/aws-crt-cpp/crt/s2n/api",
    ],
    CPPDEFINES=[
        "AWS_CAL_USE_IMPORT_EXPORT",
        "AWS_COMMON_USE_IMPORT_EXPORT",
        "AWS_IO_EXPORTS",
        "AWS_IO_USE_IMPORT_EXPORT",
        "AWS_S2N_INSOURCE_PATH",
        "AWS_USE_EPOLL",
        "ENABLED_REQUEST_COMPRESSION",
        "ENABLED_ZLIB_REQUEST_COMPRESSION",
        "ENABLE_CURL_CLIENT",
        "ENFORCE_TLS_V1_2",
        "HAVE_SYSCONF",
        "INTEL_NO_ITTNOTIFY_API",
        "PLATFORM_LINUX",
        "USE_S2N",
        "aws_c_io_EXPORTS",
    ],
    CCFLAGS=[
        "-Wno-error",
        "-Wstrict-prototypes",
        "-Wextra",
        "-pedantic",
        "-Wno-long-long",
        "-std=gnu99",
        "-Wno-macro-redefined",
        "-Wno-newline-eof",
        "-Wp,-w",
    ] + {AMD64: [], ARM64: ["-moutline-atomics"]}[ARCH],
    LINKFLAGS=[
        "-lcrypto",
    ],
)
envAwsCIo.Library(
    target="aws-c-io",
    source=[
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/alpn_handler.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/async_stream.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/channel_bootstrap.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/channel.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/event_loop.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/exponential_backoff_retry_strategy.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/future.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/host_resolver.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/io.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/message_pool.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/no_retry_strategy.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/pem.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/pkcs11_lib.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/pkcs11_tls_op_handler.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/retry_strategy.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/socket_channel_handler.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/socket_shared.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/standard_retry_strategy.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/statistics.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/stream.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/tls_channel_handler.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/tls_channel_handler_shared.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/tracing.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/linux/epoll_event_loop.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/posix/host_resolver.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/posix/pipe.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/posix/shared_library.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/posix/socket.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/source/s2n/s2n_tls_channel_handler.c",
    ],
    LIBDEPS=[
        "aws-c-cal",
        "aws-c-common",
        "aws-s2n",
    ],
)

envAwsCCompression = env.Clone()
envAwsCCompression.Append(
    CPPPATH=[
        "dist/crt/aws-crt-cpp/crt/aws-c-cal/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-compression/include",
    ],
    CPPDEFINES=[
        "AWS_COMMON_USE_IMPORT_EXPORT",
        "AWS_COMPRESSION_EXPORTS",
        "AWS_COMPRESSION_USE_IMPORT_EXPORT",
        "ENABLED_REQUEST_COMPRESSION",
        "ENABLED_ZLIB_REQUEST_COMPRESSION",
        "ENABLE_CURL_CLIENT",
        "ENFORCE_TLS_V1_2",
        "HAVE_SYSCONF",
        "INTEL_NO_ITTNOTIFY_API",
        "PLATFORM_LINUX",
        "aws_c_compression_EXPORTS",
    ],
    CCFLAGS=[
        "-Wno-error",
        "-Wstrict-prototypes",
        "-Wextra",
        "-pedantic",
        "-Wno-long-long",
        "-std=gnu99",
        "-Wno-newline-eof",
    ] + {AMD64: [], ARM64: ["-moutline-atomics"]}[ARCH],
)
envAwsCCompression.Library(
    target="aws-c-compression",
    source=[
        "dist/crt/aws-crt-cpp/crt/aws-c-compression/source/compression.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-compression/source/huffman.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-compression/source/huffman_testing.c",
    ],
    LIBDEPS=[
        "aws-c-common",
    ],
)

envAwsCHttp = env.Clone()
envAwsCHttp.Append(
    CPPPATH=[
        "dist/crt/aws-crt-cpp/crt/aws-c-cal/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-compression/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/include",
        "dist/crt/aws-crt-cpp/crt/s2n",
        "dist/crt/aws-crt-cpp/crt/s2n/api",
    ],
    CPPDEFINES=[
        "AWS_CAL_USE_IMPORT_EXPORT",
        "AWS_COMMON_USE_IMPORT_EXPORT",
        "AWS_COMPRESSION_USE_IMPORT_EXPORT",
        "AWS_HTTP_EXPORTS",
        "AWS_HTTP_USE_IMPORT_EXPORT",
        "AWS_IO_USE_IMPORT_EXPORT",
        "AWS_USE_EPOLL",
        "ENABLED_REQUEST_COMPRESSION",
        "ENABLED_ZLIB_REQUEST_COMPRESSION",
        "ENABLE_CURL_CLIENT",
        "ENFORCE_TLS_V1_2",
        "HAVE_SYSCONF",
        "INTEL_NO_ITTNOTIFY_API",
        "PLATFORM_LINUX",
        "aws_c_http_EXPORTS",
    ],
    CCFLAGS=[
        "-Wno-error",
        "-Wno-implicit-fallthrough",
        "-Wstrict-prototypes",
        "-Wextra",
        "-pedantic",
        "-Wno-long-long",
        "-std=gnu99",
        "-Wno-newline-eof",
        "-Wp,-w",
    ] + {AMD64: [], ARM64: ["-moutline-atomics"]}[ARCH],
)
envAwsCHttp.Library(
    target="aws-c-http",
    source=[
        "dist/crt/aws-crt-cpp/crt/aws-c-http/source/connection.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/source/connection_manager.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/source/connection_monitor.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/source/h1_connection.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/source/h1_decoder.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/source/h1_encoder.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/source/h1_stream.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/source/h2_connection.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/source/h2_decoder.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/source/h2_frames.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/source/h2_stream.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/source/hpack.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/source/hpack_decoder.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/source/hpack_encoder.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/source/hpack_huffman_static.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/source/http2_stream_manager.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/source/http.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/source/proxy_connection.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/source/proxy_strategy.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/source/random_access_set.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/source/request_response.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/source/statistics.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/source/strutil.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/source/websocket_bootstrap.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/source/websocket.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/source/websocket_decoder.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/source/websocket_encoder.c",
    ],
    LIBDEPS=[
        "aws-c-compression",
        "aws-c-io",
    ],
)

envAwsCAuth = env.Clone()
envAwsCAuth.Append(
    CPPPATH=[
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-cal/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-compression/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-sdkutils/include",
        "dist/crt/aws-crt-cpp/crt/aws-checksums/include",
        "dist/crt/aws-crt-cpp/crt/s2n",
        "dist/crt/aws-crt-cpp/crt/s2n/api",
    ],
    CPPDEFINES=[
        "AWS_AUTH_EXPORTS",
        "AWS_AUTH_USE_IMPORT_EXPORT",
        "AWS_CAL_USE_IMPORT_EXPORT",
        "AWS_COMMON_USE_IMPORT_EXPORT",
        "AWS_COMPRESSION_USE_IMPORT_EXPORT",
        "AWS_HTTP_USE_IMPORT_EXPORT",
        "AWS_IO_USE_IMPORT_EXPORT",
        "AWS_SDKUTILS_USE_IMPORT_EXPORT",
        "AWS_USE_EPOLL",
        "CJSON_HIDE_SYMBOLS",
        "ENABLED_REQUEST_COMPRESSION",
        "ENABLED_ZLIB_REQUEST_COMPRESSION",
        "ENABLE_CURL_CLIENT",
        "ENFORCE_TLS_V1_2",
        "HAVE_SYSCONF",
        "INTEL_NO_ITTNOTIFY_API",
        "PLATFORM_LINUX",
        "aws_c_auth_EXPORTS",
    ],
    CCFLAGS=[
        "-Wno-error",
        "-Wstrict-prototypes",
        "-Wextra",
        "-pedantic",
        "-Wno-long-long",
        "-std=gnu99",
        "-Wno-newline-eof",
    ] + {AMD64: [], ARM64: ["-moutline-atomics"]}[ARCH],
)
envAwsCAuth.Library(
    target="aws-c-auth",
    source=[
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/auth.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/aws_imds_client.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/aws_profile.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/aws_signing.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/credentials.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/credentials_provider_anonymous.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/credentials_provider_cached.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/credentials_provider_chain.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/credentials_provider_cognito.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/credentials_provider_default_chain.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/credentials_provider_delegate.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/credentials_provider_ecs.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/credentials_provider_environment.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/credentials_provider_imds.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/credentials_provider_process.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/credentials_provider_profile.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/credentials_provider_sso.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/credentials_provider_static.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/credentials_provider_sts.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/credentials_provider_sts_web_identity.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/credentials_provider_x509.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/credentials_utils.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/key_derivation.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/signable.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/signable_chunk.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/signable_http_request.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/signable_trailer.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/signing.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/signing_config.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/signing_result.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/sigv4_http_request.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/sso_token_utils.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/token_provider_sso_profile.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/source/token_provider_sso_session.c",
    ],
    LIBDEPS=[
        "aws-c-cal",
        "aws-c-http",
        "aws-c-sdkutils",
    ],
)

envAwsCS3 = env.Clone()
envAwsCS3.Append(
    CPPPATH=[
        "dist/crt/aws-crt-cpp/crt/aws-c-auth/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-cal/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-compression/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-s3/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-sdkutils/include",
        "dist/crt/aws-crt-cpp/crt/aws-checksums/include",
        "dist/crt/aws-crt-cpp/crt/s2n",
        "dist/crt/aws-crt-cpp/crt/s2n/api",
    ],
    CPPDEFINES=[
        "AWS_AUTH_USE_IMPORT_EXPORT",
        "AWS_CAL_USE_IMPORT_EXPORT",
        "AWS_CHECKSUMS_USE_IMPORT_EXPORT",
        "AWS_COMMON_USE_IMPORT_EXPORT",
        "AWS_COMPRESSION_USE_IMPORT_EXPORT",
        "AWS_HTTP_USE_IMPORT_EXPORT",
        "AWS_IO_USE_IMPORT_EXPORT",
        "AWS_S3_EXPORTS",
        "AWS_S3_USE_IMPORT_EXPORT",
        "AWS_SDKUTILS_USE_IMPORT_EXPORT",
        "AWS_USE_EPOLL",
        "CJSON_HIDE_SYMBOLS",
        "ENABLED_REQUEST_COMPRESSION",
        "ENABLED_ZLIB_REQUEST_COMPRESSION",
        "ENABLE_CURL_CLIENT",
        "ENFORCE_TLS_V1_2",
        "HAVE_SYSCONF",
        "INTEL_NO_ITTNOTIFY_API",
        "PLATFORM_LINUX",
        "aws_c_s3_EXPORTS",
    ],
    CCFLAGS=[
        "-Wno-error",
        "-Wno-implicit-fallthrough",
        "-Wstrict-prototypes",
        "-Wextra",
        "-pedantic",
        "-Wno-long-long",
        "-std=gnu99",
        "-Wno-newline-eof",
    ] + {AMD64: [], ARM64: ["-moutline-atomics"]}[ARCH],
)
envAwsCS3.Library(
    target="aws-c-s3",
    source=[
        "dist/crt/aws-crt-cpp/crt/aws-c-s3/source/s3_auto_ranged_get.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-s3/source/s3_auto_ranged_put.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-s3/source/s3_buffer_pool.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-s3/source/s3.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-s3/source/s3_checksums.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-s3/source/s3_checksum_stream.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-s3/source/s3_chunk_stream.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-s3/source/s3_client.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-s3/source/s3_copy_object.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-s3/source/s3_default_meta_request.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-s3/source/s3_endpoint.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-s3/source/s3express_credentials_provider.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-s3/source/s3_list_objects.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-s3/source/s3_list_parts.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-s3/source/s3_meta_request.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-s3/source/s3_paginator.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-s3/source/s3_parallel_input_stream.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-s3/source/s3_platform_info.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-s3/source/s3_request.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-s3/source/s3_request_messages.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-s3/source/s3_util.c",
    ],
    LIBDEPS=[
        "aws-c-auth",
        "aws-checksums",
    ],
)

envAwsCMqtt = env.Clone()
envAwsCMqtt.Append(
    CPPPATH=[
        "dist/crt/aws-crt-cpp/crt/aws-c-cal/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-compression/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-http/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-mqtt/include",
        "dist/crt/aws-crt-cpp/crt/s2n",
        "dist/crt/aws-crt-cpp/crt/s2n/api",
    ],
    CPPDEFINES=[
        "AWS_CAL_USE_IMPORT_EXPORT",
        "AWS_COMMON_USE_IMPORT_EXPORT",
        "AWS_COMPRESSION_USE_IMPORT_EXPORT",
        "AWS_HTTP_USE_IMPORT_EXPORT",
        "AWS_IO_USE_IMPORT_EXPORT",
        "AWS_MQTT_EXPORTS",
        "AWS_MQTT_USE_IMPORT_EXPORT",
        "AWS_USE_EPOLL",
        "ENABLED_REQUEST_COMPRESSION",
        "ENABLED_ZLIB_REQUEST_COMPRESSION",
        "ENABLE_CURL_CLIENT",
        "ENFORCE_TLS_V1_2",
        "HAVE_SYSCONF",
        "INTEL_NO_ITTNOTIFY_API",
        "PLATFORM_LINUX",
        "aws_c_mqtt_EXPORTS",
    ],
    CCFLAGS=[
        "-Wno-error",
        "-Wno-implicit-fallthrough",
        "-Wstrict-prototypes",
        "-Wextra",
        "-pedantic",
        "-Wno-long-long",
        "-std=gnu99",
        "-Wno-newline-eof",
    ] + {AMD64: [], ARM64: ["-moutline-atomics"]}[ARCH],
)
envAwsCMqtt.Library(
    target="aws-c-mqtt",
    source=[
        "dist/crt/aws-crt-cpp/crt/aws-c-mqtt/source/client.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-mqtt/source/client_channel_handler.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-mqtt/source/client_impl_shared.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-mqtt/source/fixed_header.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-mqtt/source/mqtt311_decoder.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-mqtt/source/mqtt311_listener.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-mqtt/source/mqtt.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-mqtt/source/mqtt_subscription_set.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-mqtt/source/packets.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-mqtt/source/shared.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-mqtt/source/topic_tree.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-mqtt/source/v5/mqtt5_callbacks.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-mqtt/source/v5/mqtt5_client.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-mqtt/source/v5/mqtt5_decoder.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-mqtt/source/v5/mqtt5_encoder.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-mqtt/source/v5/mqtt5_listener.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-mqtt/source/v5/mqtt5_options_storage.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-mqtt/source/v5/mqtt5_to_mqtt3_adapter.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-mqtt/source/v5/mqtt5_topic_alias.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-mqtt/source/v5/mqtt5_types.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-mqtt/source/v5/mqtt5_utils.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-mqtt/source/v5/rate_limiters.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-mqtt/source/request-response/protocol_adapter.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-mqtt/source/request-response/request_response_client.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-mqtt/source/request-response/subscription_manager.c",
    ],
    LIBDEPS=[
        "aws-c-http",
    ],
)

envAwsCEVentStream = env.Clone()
envAwsCEVentStream.Append(
    CPPPATH=[
        "dist/crt/aws-crt-cpp/crt/aws-c-cal/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-common/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-event-stream/include",
        "dist/crt/aws-crt-cpp/crt/aws-c-io/include",
        "dist/crt/aws-crt-cpp/crt/aws-checksums/include",
        "dist/crt/aws-crt-cpp/crt/s2n",
        "dist/crt/aws-crt-cpp/crt/s2n/api",
    ],
    CPPDEFINES=[
        "AWS_CAL_USE_IMPORT_EXPORT",
        "AWS_CHECKSUMS_USE_IMPORT_EXPORT",
        "AWS_COMMON_USE_IMPORT_EXPORT",
        "AWS_EVENT_STREAM_EXPORTS",
        "AWS_EVENT_STREAM_USE_IMPORT_EXPORT",
        "AWS_IO_USE_IMPORT_EXPORT",
        "AWS_USE_EPOLL",
        "ENABLED_REQUEST_COMPRESSION",
        "ENABLED_ZLIB_REQUEST_COMPRESSION",
        "ENABLE_CURL_CLIENT",
        "ENFORCE_TLS_V1_2",
        "HAVE_SYSCONF",
        "INTEL_NO_ITTNOTIFY_API",
        "PLATFORM_LINUX",
        "aws_c_event_stream_EXPORTS",
    ],
    CCFLAGS=[
        "-Wno-error",
        "-Wno-implicit-fallthrough",
        "-Wstrict-prototypes",
        "-Wextra",
        "-pedantic",
        "-Wno-long-long",
        "-std=gnu99",
        "-Wno-newline-eof",
    ] + {AMD64: [], ARM64: ["-moutline-atomics"]}[ARCH],
)
envAwsCEVentStream.Library(
    target="aws-c-event-stream",
    source=[
        "dist/crt/aws-crt-cpp/crt/aws-c-event-stream/source/event_stream.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-event-stream/source/event_stream_channel_handler.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-event-stream/source/event_stream_rpc.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-event-stream/source/event_stream_rpc_client.c",
        "dist/crt/aws-crt-cpp/crt/aws-c-event-stream/source/event_stream_rpc_server.c",
    ],
    LIBDEPS=[
        "aws-c-common",
        "aws-c-io",
        "aws-checksums",
    ],
)

envAwsCpp = env.Clone()
envAwsCpp.Append(CPPPATH=[
    "dist/crt/aws-crt-cpp/crt/aws-c-auth/include",
    "dist/crt/aws-crt-cpp/crt/aws-c-cal/include",
    "dist/crt/aws-crt-cpp/crt/aws-c-common/include",
    "dist/crt/aws-crt-cpp/crt/aws-c-compression/include",
    "dist/crt/aws-crt-cpp/crt/aws-c-event-stream/include",
    "dist/crt/aws-crt-cpp/crt/aws-c-http/include",
    "dist/crt/aws-crt-cpp/crt/aws-c-io/include",
    "dist/crt/aws-crt-cpp/crt/aws-c-mqtt/include",
    "dist/crt/aws-crt-cpp/crt/aws-c-sdkutils/include",
    "dist/crt/aws-crt-cpp/crt/aws-c-s3/include",
    "dist/crt/aws-crt-cpp/crt/aws-checksums/include",
    "dist/crt/aws-crt-cpp/crt/s2n",
    "dist/crt/aws-crt-cpp/crt/s2n/api",
    "dist/crt/aws-crt-cpp/include",
])

envAwsCrtCpp = envAwsCpp.Clone()
envAwsCrtCpp.Append(
    CPPDEFINES=[
        "AWS_AUTH_USE_IMPORT_EXPORT",
        "AWS_CAL_USE_IMPORT_EXPORT",
        "AWS_CHECKSUMS_USE_IMPORT_EXPORT",
        "AWS_COMMON_USE_IMPORT_EXPORT",
        "AWS_COMPRESSION_USE_IMPORT_EXPORT",
        "AWS_CRT_CPP_EXPORTS",
        "AWS_CRT_CPP_USE_IMPORT_EXPORT",
        "AWS_EVENT_STREAM_USE_IMPORT_EXPORT",
        "AWS_HTTP_USE_IMPORT_EXPORT",
        "AWS_IO_USE_IMPORT_EXPORT",
        "AWS_MQTT_USE_IMPORT_EXPORT",
        "AWS_S3_USE_IMPORT_EXPORT",
        "AWS_SDKUTILS_USE_IMPORT_EXPORT",
        "AWS_USE_EPOLL",
        "CJSON_HIDE_SYMBOLS",
        "ENABLED_REQUEST_COMPRESSION",
        "ENABLED_ZLIB_REQUEST_COMPRESSION",
        "ENABLE_CURL_CLIENT",
        "ENFORCE_TLS_V1_2",
        "PLATFORM_LINUX",
        "aws_crt_cpp_EXPORTS",
    ],
    CCFLAGS=[
        "-Wno-error",
        "-fvisibility-inlines-hidden",
        "-Wno-newline-eof",
    ],
)
envAwsCrtCpp.Library(
    target="aws-crt-cpp",
    source=[
        "dist/crt/aws-crt-cpp/source/Allocator.cpp",
        "dist/crt/aws-crt-cpp/source/Api.cpp",
        "dist/crt/aws-crt-cpp/source/DateTime.cpp",
        "dist/crt/aws-crt-cpp/source/ImdsClient.cpp",
        "dist/crt/aws-crt-cpp/source/JsonObject.cpp",
        "dist/crt/aws-crt-cpp/source/StringUtils.cpp",
        "dist/crt/aws-crt-cpp/source/Types.cpp",
        "dist/crt/aws-crt-cpp/source/UUID.cpp",
        "dist/crt/aws-crt-cpp/source/auth/Credentials.cpp",
        "dist/crt/aws-crt-cpp/source/auth/Sigv4Signing.cpp",
        "dist/crt/aws-crt-cpp/source/checksum/CRC.cpp",
        "dist/crt/aws-crt-cpp/source/crypto/Hash.cpp",
        "dist/crt/aws-crt-cpp/source/crypto/HMAC.cpp",
        "dist/crt/aws-crt-cpp/source/crypto/SecureRandom.cpp",
        "dist/crt/aws-crt-cpp/source/crypto/SymmetricCipher.cpp",
        "dist/crt/aws-crt-cpp/source/io/Bootstrap.cpp",
        "dist/crt/aws-crt-cpp/source/io/ChannelHandler.cpp",
        "dist/crt/aws-crt-cpp/source/io/EventLoopGroup.cpp",
        "dist/crt/aws-crt-cpp/source/io/HostResolver.cpp",
        "dist/crt/aws-crt-cpp/source/io/Pkcs11.cpp",
        "dist/crt/aws-crt-cpp/source/io/SocketOptions.cpp",
        "dist/crt/aws-crt-cpp/source/io/Stream.cpp",
        "dist/crt/aws-crt-cpp/source/io/TlsOptions.cpp",
        "dist/crt/aws-crt-cpp/source/io/Uri.cpp",
        "dist/crt/aws-crt-cpp/source/iot/Mqtt5Client.cpp",
        "dist/crt/aws-crt-cpp/source/iot/MqttClient.cpp",
        "dist/crt/aws-crt-cpp/source/iot/MqttCommon.cpp",
        "dist/crt/aws-crt-cpp/source/iot/MqttRequestResponseClient.cpp",
        "dist/crt/aws-crt-cpp/source/mqtt/Mqtt5ClientCore.cpp",
        "dist/crt/aws-crt-cpp/source/mqtt/Mqtt5Client.cpp",
        "dist/crt/aws-crt-cpp/source/mqtt/Mqtt5Packets.cpp",
        "dist/crt/aws-crt-cpp/source/mqtt/MqttClient.cpp",
        "dist/crt/aws-crt-cpp/source/mqtt/MqttConnectionCore.cpp",
        "dist/crt/aws-crt-cpp/source/mqtt/MqttConnection.cpp",
        "dist/crt/aws-crt-cpp/source/http/HttpConnection.cpp",
        "dist/crt/aws-crt-cpp/source/http/HttpConnectionManager.cpp",
        "dist/crt/aws-crt-cpp/source/http/HttpProxyStrategy.cpp",
        "dist/crt/aws-crt-cpp/source/http/HttpRequestResponse.cpp",
        "dist/crt/aws-crt-cpp/source/endpoints/RuleEngine.cpp",
        "dist/crt/aws-crt-cpp/source/cbor/Cbor.cpp",
    ],
    LIBDEPS=[
        "aws-c-auth",
        "aws-c-cal",
        "aws-c-common",
        "aws-c-event-stream",
        "aws-c-http",
        "aws-c-io",
        "aws-c-mqtt",
        "aws-c-s3",
        "aws-checksums",
    ],
)

AWS_CXX_FLAGS = [
    "-Wno-error",
    "-Wno-implicit-fallthrough",
    "-fno-exceptions",
    "-std=c++11",
    "-pedantic",
    "-Wextra",
]

envAwsCppSdkCore = envAwsCpp.Clone()
envAwsCppSdkCore.Append(
    CPPPATH=[
        "dist/src/aws-cpp-sdk-core/include",
        "dist/src/aws-cpp-sdk-core/include/aws/core/platform/refs",
    ],
    CPPDEFINES=[
        "AWS_AUTH_USE_IMPORT_EXPORT",
        "AWS_CAL_USE_IMPORT_EXPORT",
        "AWS_CHECKSUMS_USE_IMPORT_EXPORT",
        "AWS_COMMON_USE_IMPORT_EXPORT",
        "AWS_COMPRESSION_USE_IMPORT_EXPORT",
        "AWS_CRT_CPP_USE_IMPORT_EXPORT",
        "AWS_EVENT_STREAM_USE_IMPORT_EXPORT",
        "AWS_HAS_ALIGNED_ALLOC",
        "AWS_HTTP_USE_IMPORT_EXPORT",
        "AWS_IO_USE_IMPORT_EXPORT",
        "AWS_MQTT_USE_IMPORT_EXPORT",
        "AWS_S3_USE_IMPORT_EXPORT",
        "AWS_SDKUTILS_USE_IMPORT_EXPORT",
        "AWS_SDK_VERSION_MAJOR=1",
        "AWS_SDK_VERSION_MINOR=11",
        "AWS_SDK_VERSION_PATCH=471",
        "AWS_USE_EPOLL",
        "CURL_HAS_H2",
        "CURL_HAS_TLS_PROXY",
        "ENABLED_REQUEST_COMPRESSION",
        "ENABLED_ZLIB_REQUEST_COMPRESSION",
        "ENABLE_CURL_CLIENT",
        "ENABLE_CURL_LOGGING",
        "ENFORCE_TLS_V1_2",
        "HAS_PATHCONF",
        "HAS_UMASK",
        "PLATFORM_LINUX",
        "SMITHY_EXPORTS=1",
        "USE_IMPORT_EXPORT=1",
        "aws_cpp_sdk_core_EXPORTS",
    ],
    CXXFLAGS=AWS_CXX_FLAGS,
    LINKFLAGS=[
        "-lcurl",
    ],
)

# Note. We don't compile files in the following directories:
#  - `dist/src/aws-cpp-sdk-core/source/net/`,
#  - `dist/src/aws-cpp-sdk-core/source/smithy/tracing/impl/opentelemetry/`
envAwsCppSdkCore.Library(
    target="aws-cpp-sdk-core",
    source=[
        "dist/src/aws-cpp-sdk-core/source/AmazonSerializableWebServiceRequest.cpp",
        "dist/src/aws-cpp-sdk-core/source/AmazonStreamingWebServiceRequest.cpp",
        "dist/src/aws-cpp-sdk-core/source/AmazonWebServiceRequest.cpp",
        "dist/src/aws-cpp-sdk-core/source/Aws.cpp",
        "dist/src/aws-cpp-sdk-core/source/Globals.cpp",
        "dist/src/aws-cpp-sdk-core/source/Region.cpp",
        "dist/src/aws-cpp-sdk-core/source/auth/AWSCredentialsProviderChain.cpp",
        "dist/src/aws-cpp-sdk-core/source/auth/AWSCredentialsProvider.cpp",
        "dist/src/aws-cpp-sdk-core/source/auth/GeneralHTTPCredentialsProvider.cpp",
        "dist/src/aws-cpp-sdk-core/source/auth/SSOCredentialsProvider.cpp",
        "dist/src/aws-cpp-sdk-core/source/auth/STSCredentialsProvider.cpp",
        "dist/src/aws-cpp-sdk-core/source/auth/bearer-token-provider/DefaultBearerTokenProviderChain.cpp",
        "dist/src/aws-cpp-sdk-core/source/auth/bearer-token-provider/SSOBearerTokenProvider.cpp",
        "dist/src/aws-cpp-sdk-core/source/auth/signer/AWSAuthBearerSigner.cpp",
        "dist/src/aws-cpp-sdk-core/source/auth/signer/AWSAuthEventStreamV4Signer.cpp",
        "dist/src/aws-cpp-sdk-core/source/auth/signer/AWSAuthSignerCommon.cpp",
        "dist/src/aws-cpp-sdk-core/source/auth/signer/AWSAuthSignerHelper.cpp",
        "dist/src/aws-cpp-sdk-core/source/auth/signer/AWSAuthV4Signer.cpp",
        "dist/src/aws-cpp-sdk-core/source/auth/signer/AWSNullSigner.cpp",
        "dist/src/aws-cpp-sdk-core/source/auth/signer-provider/AWSAuthSignerProviderBase.cpp",
        "dist/src/aws-cpp-sdk-core/source/auth/signer-provider/BearerTokenAuthSignerProvider.cpp",
        "dist/src/aws-cpp-sdk-core/source/auth/signer-provider/DefaultAuthSignerProvider.cpp",
        "dist/src/aws-cpp-sdk-core/source/client/AdaptiveRetryStrategy.cpp",
        "dist/src/aws-cpp-sdk-core/source/client/AsyncCallerContext.cpp",
        "dist/src/aws-cpp-sdk-core/source/client/AWSClient.cpp",
        "dist/src/aws-cpp-sdk-core/source/client/AWSErrorMarshaller.cpp",
        "dist/src/aws-cpp-sdk-core/source/client/AWSJsonClient.cpp",
        "dist/src/aws-cpp-sdk-core/source/client/AWSUrlPresigner.cpp",
        "dist/src/aws-cpp-sdk-core/source/client/AWSXmlClient.cpp",
        "dist/src/aws-cpp-sdk-core/source/client/ClientConfiguration.cpp",
        "dist/src/aws-cpp-sdk-core/source/client/CoreErrors.cpp",
        "dist/src/aws-cpp-sdk-core/source/client/DefaultRetryStrategy.cpp",
        "dist/src/aws-cpp-sdk-core/source/client/GenericClientConfiguration.cpp",
        "dist/src/aws-cpp-sdk-core/source/client/RequestCompression.cpp",
        "dist/src/aws-cpp-sdk-core/source/client/RetryStrategy.cpp",
        "dist/src/aws-cpp-sdk-core/source/client/SpecifiedRetryableErrorsRetryStrategy.cpp",
        "dist/src/aws-cpp-sdk-core/source/config/AWSConfigFileProfileConfigLoader.cpp",
        "dist/src/aws-cpp-sdk-core/source/config/AWSProfileConfigLoaderBase.cpp",
        "dist/src/aws-cpp-sdk-core/source/config/ConfigAndCredentialsCacheManager.cpp",
        "dist/src/aws-cpp-sdk-core/source/config/EC2InstanceProfileConfigLoader.cpp",
        "dist/src/aws-cpp-sdk-core/source/config/defaults/ClientConfigurationDefaults.cpp",
        "dist/src/aws-cpp-sdk-core/source/endpoint/AWSEndpoint.cpp",
        "dist/src/aws-cpp-sdk-core/source/endpoint/AWSPartitions.cpp",
        "dist/src/aws-cpp-sdk-core/source/endpoint/BuiltInParameters.cpp",
        "dist/src/aws-cpp-sdk-core/source/endpoint/ClientContextParameters.cpp",
        "dist/src/aws-cpp-sdk-core/source/endpoint/DefaultEndpointProvider.cpp",
        "dist/src/aws-cpp-sdk-core/source/endpoint/EndpointProviderBase.cpp",
        "dist/src/aws-cpp-sdk-core/source/endpoint/internal/AWSEndpointAttribute.cpp",
        "dist/src/aws-cpp-sdk-core/source/external/cjson/cJSON.cpp",
        "dist/src/aws-cpp-sdk-core/source/external/tinyxml2/tinyxml2.cpp",
        "dist/src/aws-cpp-sdk-core/source/http/HttpClient.cpp",
        "dist/src/aws-cpp-sdk-core/source/http/HttpClientFactory.cpp",
        "dist/src/aws-cpp-sdk-core/source/http/HttpRequest.cpp",
        "dist/src/aws-cpp-sdk-core/source/http/HttpResponse.cpp",
        "dist/src/aws-cpp-sdk-core/source/http/HttpTypes.cpp",
        "dist/src/aws-cpp-sdk-core/source/http/Scheme.cpp",
        "dist/src/aws-cpp-sdk-core/source/http/URI.cpp",
        "dist/src/aws-cpp-sdk-core/source/http/crt/CRTHttpClient.cpp",
        "dist/src/aws-cpp-sdk-core/source/http/curl/CurlHandleContainer.cpp",
        "dist/src/aws-cpp-sdk-core/source/http/curl/CurlHttpClient.cpp",
        "dist/src/aws-cpp-sdk-core/source/http/standard/StandardHttpRequest.cpp",
        "dist/src/aws-cpp-sdk-core/source/http/standard/StandardHttpResponse.cpp",
        "dist/src/aws-cpp-sdk-core/source/internal/AWSHttpResourceClient.cpp",
        "dist/src/aws-cpp-sdk-core/source/monitoring/DefaultMonitoring.cpp",
        "dist/src/aws-cpp-sdk-core/source/monitoring/HttpClientMetrics.cpp",
        "dist/src/aws-cpp-sdk-core/source/monitoring/MonitoringManager.cpp",
        "dist/src/aws-cpp-sdk-core/source/net/linux-shared/Net.cpp",
        "dist/src/aws-cpp-sdk-core/source/net/linux-shared/SimpleUDP.cpp",
        "dist/src/aws-cpp-sdk-core/source/platform/linux-shared/Environment.cpp",
        "dist/src/aws-cpp-sdk-core/source/platform/linux-shared/FileSystem.cpp",
        "dist/src/aws-cpp-sdk-core/source/platform/linux-shared/OSVersionInfo.cpp",
        "dist/src/aws-cpp-sdk-core/source/platform/linux-shared/Security.cpp",
        "dist/src/aws-cpp-sdk-core/source/platform/linux-shared/Time.cpp",
        "dist/src/aws-cpp-sdk-core/source/smithy/client/AwsSmithyClientBase.cpp",
        "dist/src/aws-cpp-sdk-core/source/smithy/identity/AuthSchemeOption.cpp",
        "dist/src/aws-cpp-sdk-core/source/smithy/tracing/TracingUtils.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/ARN.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/Array.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/DateTimeCommon.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/Directory.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/DNS.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/Document.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/EnumParseOverflowContainer.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/FileSystemUtils.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/GetTheLights.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/HashingUtils.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/RAIICounter.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/StringUtils.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/TempFile.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/UUID.cpp",
        "dist/src/aws-cpp-sdk-core/source/Version.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/base64/Base64.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/component-registry/ComponentRegistry.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/crypto/Cipher.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/crypto/ContentCryptoMaterial.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/crypto/ContentCryptoScheme.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/crypto/CRC32.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/crypto/CRC64.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/crypto/CryptoBuf.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/crypto/CryptoStream.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/crypto/EncryptionMaterials.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/crypto/KeyWrapAlgorithm.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/crypto/MD5.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/crypto/PrecalculatedHash.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/crypto/Sha1.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/crypto/Sha256.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/crypto/Sha256HMAC.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/crypto/crt/CRTHash.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/crypto/crt/CRTHMAC.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/crypto/crt/CRTSecureRandomBytes.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/crypto/crt/CRTSymmetricCipher.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/crypto/factory/Factories.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/event/EventDecoderStream.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/event/EventEncoderStream.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/event/EventHeader.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/event/EventMessage.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/event/EventStreamBuf.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/event/EventStreamDecoder.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/event/EventStreamEncoder.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/event/EventStreamErrors.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/json/JsonSerializer.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/logging/AWSLogging.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/logging/ConsoleLogSystem.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/logging/CRTLogging.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/logging/CRTLogSystemInterface.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/logging/DefaultCRTLogSystem.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/logging/DefaultLogSystem.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/logging/FormattedLogSystem.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/logging/LogLevel.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/memory/AWSMemory.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/memory/stl/SimpleStringStream.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/stream/ConcurrentStreamBuf.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/stream/PreallocatedStreamBuf.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/stream/ResponseStream.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/stream/SimpleStreamBuf.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/threading/DefaultExecutor.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/threading/PooledThreadExecutor.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/threading/ReaderWriterLock.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/threading/SameThreadExecutor.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/threading/Semaphore.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/threading/ThreadTask.cpp",
        "dist/src/aws-cpp-sdk-core/source/utils/xml/XmlSerializer.cpp",
    ],
    LIBDEPS=[
        "$BUILD_DIR/third_party/shim_zlib",
        "aws-crt-cpp",
    ],
)

envAwsCppSdkS3 = envAwsCpp.Clone()
envAwsCppSdkS3.Append(
    CPPPATH=[
        "dist/src/aws-cpp-sdk-core/include",
        "dist/generated/src/aws-cpp-sdk-s3/include",
    ],
    CPPDEFINES=[
        "AWS_AUTH_USE_IMPORT_EXPORT",
        "AWS_CAL_USE_IMPORT_EXPORT",
        "AWS_CHECKSUMS_USE_IMPORT_EXPORT",
        "AWS_COMMON_USE_IMPORT_EXPORT",
        "AWS_COMPRESSION_USE_IMPORT_EXPORT",
        "AWS_CRT_CPP_USE_IMPORT_EXPORT",
        "AWS_EVENT_STREAM_USE_IMPORT_EXPORT",
        "AWS_HTTP_USE_IMPORT_EXPORT",
        "AWS_IO_USE_IMPORT_EXPORT",
        "AWS_MQTT_USE_IMPORT_EXPORT",
        "AWS_S3_USE_IMPORT_EXPORT",
        "AWS_SDKUTILS_USE_IMPORT_EXPORT",
        "AWS_SDK_VERSION_MAJOR=1",
        "AWS_SDK_VERSION_MINOR=11",
        "AWS_SDK_VERSION_PATCH=471",
        "AWS_USE_EPOLL",
        "ENABLED_REQUEST_COMPRESSION",
        "ENABLED_ZLIB_REQUEST_COMPRESSION",
        "ENABLE_CURL_CLIENT",
        "ENFORCE_TLS_V1_2",
        "HAS_PATHCONF",
        "HAS_UMASK",
        "PLATFORM_LINUX",
        "USE_IMPORT_EXPORT=1",
        "aws_cpp_sdk_s3_EXPORTS",
    ],
    CXXFLAGS=AWS_CXX_FLAGS,
)
envAwsCppSdkS3.Library(
    target="aws-cpp-sdk-s3",
    source=[
        "dist/generated/src/aws-cpp-sdk-s3/source/S3ClientConfiguration.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/S3Client.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/S3EndpointProvider.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/S3EndpointRules.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/S3ErrorMarshaller.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/S3Errors.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/S3ExpressIdentityProvider.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/S3ExpressSigner.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/S3ExpressSignerProvider.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/S3Request.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/AbortIncompleteMultipartUpload.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/AbortMultipartUploadRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/AbortMultipartUploadResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/AccelerateConfiguration.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/AccessControlPolicy.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/AccessControlTranslation.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/AnalyticsAndOperator.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/AnalyticsConfiguration.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/AnalyticsExportDestination.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/AnalyticsFilter.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/AnalyticsS3BucketDestination.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/AnalyticsS3ExportFileFormat.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ArchiveStatus.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/BucketAccelerateStatus.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/BucketCannedACL.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/Bucket.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/BucketInfo.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/BucketLifecycleConfiguration.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/BucketLocationConstraint.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/BucketLoggingStatus.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/BucketLogsPermission.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/BucketType.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/BucketVersioningStatus.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ChecksumAlgorithm.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/Checksum.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ChecksumMode.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/CloudFunctionConfiguration.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/CommonPrefix.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/CompletedMultipartUpload.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/CompletedPart.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/CompleteMultipartUploadRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/CompleteMultipartUploadResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/CompressionType.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/Condition.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/CopyObjectRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/CopyObjectResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/CopyObjectResultDetails.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/CopyPartResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/CORSConfiguration.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/CORSRule.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/CreateBucketConfiguration.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/CreateBucketMetadataTableConfigurationRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/CreateBucketRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/CreateBucketResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/CreateMultipartUploadRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/CreateMultipartUploadResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/CreateSessionRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/CreateSessionResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/CSVInput.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/CSVOutput.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/DataRedundancy.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/DefaultRetention.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/DeleteBucketAnalyticsConfigurationRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/DeleteBucketCorsRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/DeleteBucketEncryptionRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/DeleteBucketIntelligentTieringConfigurationRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/DeleteBucketInventoryConfigurationRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/DeleteBucketLifecycleRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/DeleteBucketMetadataTableConfigurationRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/DeleteBucketMetricsConfigurationRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/DeleteBucketOwnershipControlsRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/DeleteBucketPolicyRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/DeleteBucketReplicationRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/DeleteBucketRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/DeleteBucketTaggingRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/DeleteBucketWebsiteRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/Delete.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/DeletedObject.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/DeleteMarkerEntry.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/DeleteMarkerReplication.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/DeleteMarkerReplicationStatus.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/DeleteObjectRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/DeleteObjectResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/DeleteObjectsRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/DeleteObjectsResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/DeleteObjectTaggingRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/DeleteObjectTaggingResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/DeletePublicAccessBlockRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/Destination.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/EncodingType.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/EncryptionConfiguration.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/Encryption.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/Error.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ErrorDetails.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ErrorDocument.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/EventBridgeConfiguration.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/Event.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ExistingObjectReplication.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ExistingObjectReplicationStatus.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ExpirationStatus.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ExpressionType.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/FileHeaderInfo.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/FilterRule.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/FilterRuleName.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketAccelerateConfigurationRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketAccelerateConfigurationResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketAclRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketAclResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketAnalyticsConfigurationRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketAnalyticsConfigurationResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketCorsRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketCorsResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketEncryptionRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketEncryptionResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketIntelligentTieringConfigurationRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketIntelligentTieringConfigurationResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketInventoryConfigurationRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketInventoryConfigurationResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketLifecycleConfigurationRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketLifecycleConfigurationResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketLocationRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketLocationResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketLoggingRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketLoggingResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketMetadataTableConfigurationRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketMetadataTableConfigurationResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketMetadataTableConfigurationSdkResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketMetricsConfigurationRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketMetricsConfigurationResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketNotificationConfigurationRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketNotificationConfigurationResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketOwnershipControlsRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketOwnershipControlsResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketPolicyRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketPolicyResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketPolicyStatusRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketPolicyStatusResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketReplicationRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketReplicationResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketRequestPaymentRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketRequestPaymentResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketTaggingRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketTaggingResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketVersioningRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketVersioningResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketWebsiteRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetBucketWebsiteResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetObjectAclRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetObjectAclResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetObjectAttributesParts.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetObjectAttributesRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetObjectAttributesResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetObjectLegalHoldRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetObjectLegalHoldResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetObjectLockConfigurationRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetObjectLockConfigurationResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetObjectRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetObjectResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetObjectRetentionRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetObjectRetentionResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetObjectTaggingRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetObjectTaggingResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetObjectTorrentRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetObjectTorrentResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetPublicAccessBlockRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GetPublicAccessBlockResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/GlacierJobParameters.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/Grant.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/Grantee.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/HeadBucketRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/HeadBucketResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/HeadObjectRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/HeadObjectResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/IndexDocument.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/Initiator.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/InputSerialization.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/IntelligentTieringAccessTier.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/IntelligentTieringAndOperator.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/IntelligentTieringConfiguration.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/IntelligentTieringFilter.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/IntelligentTieringStatus.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/InvalidObjectState.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/InventoryConfiguration.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/InventoryDestination.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/InventoryEncryption.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/InventoryFilter.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/InventoryFormat.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/InventoryFrequency.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/InventoryIncludedObjectVersions.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/InventoryOptionalField.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/InventoryS3BucketDestination.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/InventorySchedule.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/JSONInput.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/JSONOutput.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/JSONType.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/LambdaFunctionConfiguration.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/LifecycleConfiguration.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/LifecycleExpiration.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/LifecycleRuleAndOperator.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/LifecycleRule.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/LifecycleRuleFilter.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ListBucketAnalyticsConfigurationsRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ListBucketAnalyticsConfigurationsResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ListBucketIntelligentTieringConfigurationsRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ListBucketIntelligentTieringConfigurationsResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ListBucketInventoryConfigurationsRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ListBucketInventoryConfigurationsResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ListBucketMetricsConfigurationsRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ListBucketMetricsConfigurationsResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ListBucketsRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ListBucketsResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ListDirectoryBucketsRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ListDirectoryBucketsResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ListMultipartUploadsRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ListMultipartUploadsResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ListObjectsRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ListObjectsResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ListObjectsV2Request.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ListObjectsV2Result.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ListObjectVersionsRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ListObjectVersionsResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ListPartsRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ListPartsResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/LocationInfo.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/LocationType.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/LoggingEnabled.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/MetadataDirective.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/MetadataEntry.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/MetadataTableConfiguration.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/MetadataTableConfigurationResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/MetricsAndOperator.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/MetricsConfiguration.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/Metrics.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/MetricsFilter.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/MetricsStatus.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/MFADelete.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/MFADeleteStatus.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/MultipartUpload.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/NoncurrentVersionExpiration.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/NoncurrentVersionTransition.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/NotificationConfiguration.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/NotificationConfigurationDeprecated.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/NotificationConfigurationFilter.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ObjectAttributes.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ObjectCannedACL.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/Object.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ObjectIdentifier.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ObjectLockConfiguration.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ObjectLockEnabled.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ObjectLockLegalHold.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ObjectLockLegalHoldStatus.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ObjectLockMode.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ObjectLockRetention.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ObjectLockRetentionMode.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ObjectLockRule.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ObjectOwnership.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ObjectPart.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ObjectStorageClass.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ObjectVersion.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ObjectVersionStorageClass.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/OptionalObjectAttributes.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/OutputLocation.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/OutputSerialization.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/Owner.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/OwnerOverride.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/OwnershipControls.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/OwnershipControlsRule.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ParquetInput.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/Part.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PartitionDateSource.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PartitionedPrefix.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/Payer.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/Permission.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PolicyStatus.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/Progress.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ProgressEvent.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/Protocol.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PublicAccessBlockConfiguration.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutBucketAccelerateConfigurationRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutBucketAclRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutBucketAnalyticsConfigurationRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutBucketCorsRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutBucketEncryptionRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutBucketIntelligentTieringConfigurationRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutBucketInventoryConfigurationRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutBucketLifecycleConfigurationRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutBucketLifecycleConfigurationResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutBucketLoggingRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutBucketMetricsConfigurationRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutBucketNotificationConfigurationRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutBucketOwnershipControlsRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutBucketPolicyRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutBucketReplicationRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutBucketRequestPaymentRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutBucketTaggingRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutBucketVersioningRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutBucketWebsiteRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutObjectAclRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutObjectAclResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutObjectLegalHoldRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutObjectLegalHoldResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutObjectLockConfigurationRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutObjectLockConfigurationResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutObjectRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutObjectResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutObjectRetentionRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutObjectRetentionResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutObjectTaggingRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutObjectTaggingResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/PutPublicAccessBlockRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/QueueConfiguration.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/QueueConfigurationDeprecated.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/QuoteFields.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/RedirectAllRequestsTo.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/Redirect.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ReplicaModifications.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ReplicaModificationsStatus.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ReplicationConfiguration.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ReplicationRuleAndOperator.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ReplicationRule.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ReplicationRuleFilter.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ReplicationRuleStatus.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ReplicationStatus.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ReplicationTime.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ReplicationTimeStatus.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ReplicationTimeValue.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/RequestCharged.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/RequestPayer.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/RequestPaymentConfiguration.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/RequestProgress.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/RestoreObjectRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/RestoreObjectResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/RestoreRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/RestoreRequestType.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/RestoreStatus.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/RoutingRule.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/Rule.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/S3KeyFilter.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/S3Location.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/S3TablesDestination.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/S3TablesDestinationResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ScanRange.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/SelectObjectContentHandler.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/SelectObjectContentInitialResponse.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/SelectObjectContentRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/SelectParameters.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ServerSideEncryptionByDefault.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ServerSideEncryptionConfiguration.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ServerSideEncryption.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/ServerSideEncryptionRule.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/SessionCredentials.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/SessionMode.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/SimplePrefix.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/SourceSelectionCriteria.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/SSEKMS.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/SseKmsEncryptedObjects.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/SseKmsEncryptedObjectsStatus.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/SSES3.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/Stats.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/StatsEvent.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/StorageClassAnalysis.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/StorageClassAnalysisDataExport.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/StorageClassAnalysisSchemaVersion.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/StorageClass.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/Tag.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/Tagging.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/TaggingDirective.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/TargetGrant.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/TargetObjectKeyFormat.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/Tier.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/Tiering.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/TopicConfiguration.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/TopicConfigurationDeprecated.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/Transition.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/TransitionDefaultMinimumObjectSize.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/TransitionStorageClass.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/Type.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/UploadPartCopyRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/UploadPartCopyResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/UploadPartRequest.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/UploadPartResult.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/VersioningConfiguration.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/WebsiteConfiguration.cpp",
        "dist/generated/src/aws-cpp-sdk-s3/source/model/WriteGetObjectResponseRequest.cpp",
    ],
    LIBDEPS=[
        "aws-cpp-sdk-core",
    ],
)

envAwsCppSdkTransfer = envAwsCpp.Clone()
envAwsCppSdkTransfer.Append(
    CPPPATH=[
        "dist/generated/src/aws-cpp-sdk-s3/include",
        "dist/src/aws-cpp-sdk-core/include",
        "dist/src/aws-cpp-sdk-transfer/include",
    ],
    CPPDEFINES=[
        "AWS_AUTH_USE_IMPORT_EXPORT",
        "AWS_CAL_USE_IMPORT_EXPORT",
        "AWS_CHECKSUMS_USE_IMPORT_EXPORT",
        "AWS_COMMON_USE_IMPORT_EXPORT",
        "AWS_COMPRESSION_USE_IMPORT_EXPORT",
        "AWS_CRT_CPP_USE_IMPORT_EXPORT",
        "AWS_EVENT_STREAM_USE_IMPORT_EXPORT",
        "AWS_HTTP_USE_IMPORT_EXPORT",
        "AWS_IO_USE_IMPORT_EXPORT",
        "AWS_MQTT_USE_IMPORT_EXPORT",
        "AWS_S3_USE_IMPORT_EXPORT",
        "AWS_SDKUTILS_USE_IMPORT_EXPORT",
        "AWS_SDK_VERSION_MAJOR=1",
        "AWS_SDK_VERSION_MINOR=11",
        "AWS_SDK_VERSION_PATCH=471",
        "AWS_USE_EPOLL",
        "ENABLED_REQUEST_COMPRESSION",
        "ENABLED_ZLIB_REQUEST_COMPRESSION",
        "ENABLE_CURL_CLIENT",
        "ENFORCE_TLS_V1_2",
        "HAS_PATHCONF",
        "HAS_UMASK",
        "PLATFORM_LINUX",
        "USE_IMPORT_EXPORT=1",
        "aws_cpp_sdk_transfer_EXPORTS",
    ],
    CXXFLAGS=AWS_CXX_FLAGS,
)
envAwsCppSdkTransfer.Library(
    target="aws-cpp-sdk-transfer",
    source=[
        "dist/src/aws-cpp-sdk-transfer/source/transfer/TransferHandle.cpp",
        "dist/src/aws-cpp-sdk-transfer/source/transfer/TransferManager.cpp",
    ],
    LIBDEPS=[
        "aws-cpp-sdk-core",
        "aws-cpp-sdk-s3",
    ],
)
