cc_library_shared {

    name: "libwolfssl",

    arch: {
        arm: {
            instruction_set: "arm",
        },
        arm64: {
            cflags: ["-DARM64"],
        },
    },
    compile_multilib: "both",
    export_include_dirs: ["."],
    shared_libs: ["liblog"],
    cflags: [
        "-DWOLFSSL_USER_SETTINGS",
        "-Os",
        "-fomit-frame-pointer",

        /* If using WOLFSSL_ARMASM then add these cflags for ARM crypto extensions */
        /* "-mcpu=cortex-a73+crypto", */
        /* "-march=armv8-a", */
        /* "-mstrict-align", */
    ],
    include_dirs: [
        "external/wolfssl/wolfssl",
        "external/wolfssl",
    ],

    srcs: [
        "./src/crl.c",
        "./src/internal.c",
        "./src/keys.c",
        "./src/ocsp.c",
        "./src/sniffer.c",
        "./src/ssl.c",
        "./src/tls.c",
        "./src/tls13.c",
        "./src/wolfio.c",
    ] + [
        "./wolfcrypt/src/aes.c",
        "./wolfcrypt/src/arc4.c",
        "./wolfcrypt/src/asm.c",
        "./wolfcrypt/src/asn.c",
        "./wolfcrypt/src/blake2b.c",
        "./wolfcrypt/src/blake2s.c",
        "./wolfcrypt/src/camellia.c",
        "./wolfcrypt/src/chacha.c",
        "./wolfcrypt/src/chacha20_poly1305.c",
        "./wolfcrypt/src/cmac.c",
        "./wolfcrypt/src/coding.c",
        "./wolfcrypt/src/compress.c",
        "./wolfcrypt/src/cpuid.c",
        "./wolfcrypt/src/cryptocb.c",
        "./wolfcrypt/src/curve25519.c",
        "./wolfcrypt/src/curve448.c",
        "./wolfcrypt/src/des3.c",
        "./wolfcrypt/src/dh.c",
        "./wolfcrypt/src/dsa.c",
        "./wolfcrypt/src/ecc.c",
        "./wolfcrypt/src/ecc_fp.c",
        "./wolfcrypt/src/ed25519.c",
        "./wolfcrypt/src/ed448.c",
        "./wolfcrypt/src/error.c",
        "./wolfcrypt/src/fe_448.c",
        "./wolfcrypt/src/fe_low_mem.c",
        "./wolfcrypt/src/fe_operations.c",
        "./wolfcrypt/src/fips.c",
        "./wolfcrypt/src/fips_test.c",
        "./wolfcrypt/src/ge_448.c",
        "./wolfcrypt/src/ge_low_mem.c",
        "./wolfcrypt/src/ge_operations.c",
        "./wolfcrypt/src/hash.c",
        "./wolfcrypt/src/kdf.c",
        "./wolfcrypt/src/hmac.c",
        "./wolfcrypt/src/integer.c",
        "./wolfcrypt/src/kdf.c",
        "./wolfcrypt/src/logging.c",
        "./wolfcrypt/src/md2.c",
        "./wolfcrypt/src/md4.c",
        "./wolfcrypt/src/md5.c",
        "./wolfcrypt/src/memory.c",
        "./wolfcrypt/src/pkcs12.c",
        "./wolfcrypt/src/pkcs7.c",
        "./wolfcrypt/src/poly1305.c",
        "./wolfcrypt/src/pwdbased.c",
        "./wolfcrypt/src/random.c",
        "./wolfcrypt/src/rc2.c",
        "./wolfcrypt/src/ripemd.c",
        "./wolfcrypt/src/rsa.c",
        "./wolfcrypt/src/selftest.c",
        "./wolfcrypt/src/sha256.c",
        "./wolfcrypt/src/sha3.c",
        "./wolfcrypt/src/sha512.c",
        "./wolfcrypt/src/sha.c",
        "./wolfcrypt/src/signature.c",
        "./wolfcrypt/src/sp_arm32.c",
        "./wolfcrypt/src/sp_arm64.c",
        "./wolfcrypt/src/sp_armthumb.c",
        "./wolfcrypt/src/sp_c32.c",
        "./wolfcrypt/src/sp_c64.c",
        "./wolfcrypt/src/sp_cortexm.c",
        "./wolfcrypt/src/sp_dsp32.c",
        "./wolfcrypt/src/sp_int.c",
        "./wolfcrypt/src/sp_x86_64.c",
        "./wolfcrypt/src/srp.c",
        "./wolfcrypt/src/tfm.c",
        "./wolfcrypt/src/wc_dsp.c",
        "./wolfcrypt/src/wc_encrypt.c",
        "./wolfcrypt/src/wc_pkcs11.c",
        "./wolfcrypt/src/wc_port.c",
        "./wolfcrypt/src/wolfcrypt_first.c",
        "./wolfcrypt/src/wolfcrypt_last.c",
        "./wolfcrypt/src/wolfevent.c",
        "./wolfcrypt/src/wolfmath.c",
    ],

}
