#       $NetBSD: Makefile,v 1.24 2024/07/26 18:25:03 riastradh Exp $
#

S=${.CURDIR}/../../../..
SODIUM_IMPORTDIR=${S}/external/isc/libsodium
SODIUM_DIR=${SODIUM_IMPORTDIR}/dist/src/libsodium

PATH:   ${S}/crypto/adiantum                                            \
       ${S}/crypto/aes                                                 \
       ${S}/crypto/blowfish                                            \
       ${S}/crypto/camellia                                            \
       ${S}/crypto/cast128                                             \
       ${S}/crypto/des                                                 \
       ${S}/crypto/skipjack                                            \
       ${SODIUM_DIR}/crypto_scalarmult/curve25519/ref10                \
       ${SODIUM_DIR}/crypto_scalarmult/curve25519                      \
       ${SODIUM_DIR}/crypto_scalarmult                                 \
       ${SODIUM_DIR}/crypto_onetimeauth/poly1305/donna                 \
       ${SODIUM_DIR}/crypto_onetimeauth/poly1305                       \
       ${SODIUM_DIR}/crypto_onetimeauth                                \
       ${SODIUM_DIR}/crypto_stream/chacha20/ref                        \
       ${SODIUM_DIR}/crypto_stream/chacha20                            \
       ${SODIUM_DIR}/crypto_aead/xchacha20poly1305/sodium              \
       ${SODIUM_DIR}/crypto_aead/chacha20poly1305/sodium               \
       ${SODIUM_DIR}/crypto_core/hchacha20                             \
       ${SODIUM_DIR}/crypto_core/ed25519/ref10                         \
       ${SODIUM_IMPORTDIR}/src

LIB=    rumpkern_crypto
COMMENT=Cryptographic routines

# Adiantum
SRCS+=  adiantum.c
SRCS+=  adiantum_selftest.c

# AES
SRCS+=  aes_bear.c
SRCS+=  aes_ccm.c
SRCS+=  aes_ccm_mbuf.c
SRCS+=  aes_ct.c
SRCS+=  aes_ct_dec.c
SRCS+=  aes_ct_enc.c
SRCS+=  aes_impl.c
SRCS+=  aes_selftest.c

# blowfish
SRCS+=  bf_ecb.c bf_enc.c bf_cbc.c bf_skey.c bf_module.c

# camellia
SRCS+=  camellia.c camellia-api.c

# cast128
SRCS+=  cast128.c

# DES
SRCS+=  des_ecb.c des_setkey.c des_enc.c des_cbc.c des_module.c

# skipjack
SRCS+=  skipjack.c

# libsodium
SODIUM_CPPFLAGS+=       -I${SODIUM_IMPORTDIR}/include
SODIUM_CPPFLAGS+=       -I${SODIUM_IMPORTDIR}/dist/src/libsodium/include/sodium

#SODIUM_CPPFLAGS+=      -DHAVE_TI_MODE

SODIUM_CWARNFLAGS+=     -Wno-shadow
SODIUM_CWARNFLAGS+=     -Wno-unused-function
SODIUM_CWARNFLAGS+=     -Wno-unused-variable

SODIUM_SRCS+=   x25519_ref10.c
SODIUM_SRCS+=   scalarmult_curve25519.c
SODIUM_SRCS+=   crypto_scalarmult.c
SODIUM_SRCS+=   poly1305_donna.c
SODIUM_SRCS+=   onetimeauth_poly1305.c
SODIUM_SRCS+=   crypto_onetimeauth.c
SODIUM_SRCS+=   chacha20_ref.c
SODIUM_SRCS+=   stream_chacha20.c
SODIUM_SRCS+=   aead_xchacha20poly1305.c
SODIUM_SRCS+=   aead_chacha20poly1305.c
SODIUM_SRCS+=   core_hchacha20.c
SODIUM_SRCS+=   ed25519_ref10.c
SODIUM_SRCS+=   sodium_module.c
SODIUM_SRCS+=   sodium_selftest.c

SRCS+=  ${SODIUM_SRCS}

for _s_ in ${SODIUM_SRCS}
CPPFLAGS.${_s_}+=       ${SODIUM_CPPFLAGS}
COPTS.${_s_}+=          ${SODIUM_CWARNFLAGS}
endfor

include <bsd.lib.mk>
include <bsd.klinks.mk>