# WOLFSSL2.DLL -- wolfSSL 5.5.4 for Windows 3.1 (the dialup.net Win16 port),
# built with OpenWatcom v2 wmake. Run from the wolfssl directory:
#
#     wmake -h -f watcom16/MAKEFILE          build watcom16/BUILD/WOLFSSL2.DLL
#     wmake -h -f watcom16/MAKEFILE clean
#
# The author's IDE project files in watcom16/ are kept unchanged.
# See CHANGES.TXT.
.ERASE
!ifdef __UNIX__
S = /
RM = rm -f
!else
S = \
RM = del
!endif
# The include root, from wmake's cwd macro: no ".." component, which wcc
# silently fails to find headers through.
ROOT   = $(%cwd)
B      = watcom16$(S)BUILD
CC     = wcc
LINK   = wlink
# -zm: internal.c is unsplit and needs a segment per function.
# -3: the TFM_WATCOM386 block in wolfcrypt/src/asm.c uses the 386's mul.
CFLAGS = -bd -bt=windows -ml -3 -zu -ox -w0 -q -zm -d0 -e25 -dWIN16 -dWOLFSSL_DLL -dBUILDING_WOLFSSL -dWOLFSSL_USER_SETTINGS -dHAVE_CONFIG_H -i=$(ROOT)

# Where sources and objects live; wmake searches these for the
# implicit .c.obj rule, so one rule covers both source directories.
.EXTENSIONS :
.EXTENSIONS : .obj .c
.c   : src;wolfcrypt$(S)src
.obj : $(B)

SSL_OBJS   = crl.obj dtls.obj dtls13.obj internal.obj internal2.obj keys.obj ocsp.obj ssl.obj tls.obj tls13.obj wolfio.obj
CRYPT_OBJS = aes.obj arc4.obj asn.obj blake2b.obj blake2s.obj camellia.obj chacha.obj chacha20_poly1305.obj cmac.obj &
             coding.obj cpuid.obj curve25519.obj curve448.obj des3.obj dh.obj dsa.obj ecc.obj ed25519.obj ed448.obj &
             error.obj fe_low_mem.obj fe_operations.obj ge_low_mem.obj ge_operations.obj hash.obj hmac.obj integer.obj &
             kdf.obj logging.obj md2.obj md4.obj md5.obj memory.obj pkcs12.obj pkcs7.obj poly1305.obj pwdbased.obj &
             random.obj rc2.obj ripemd.obj rsa.obj sha.obj sha256.obj sha3.obj sha512.obj signature.obj sp_c32.obj &
             sp_c64.obj sp_int.obj sp_x86_64.obj srp.obj tfm.obj wc_encrypt.obj wc_pkcs11.obj wc_port.obj win16_port.obj &
             wolfevent.obj wolfmath.obj
OBJS = $(SSL_OBJS) $(CRYPT_OBJS)

all : $(B)$(S)WOLFSSL2.DLL .SYMBOLIC

# Exports are pinned by ordinal below: without those lines the DLL has no
# named exports at all. wlink's W1121 (each function is also __export in
# the source) is expected.
$(B)$(S)WOLFSSL2.DLL : $(OBJS) watcom16$(S)MAKEFILE
	@%create watcom16$(S)WOLFSSL2.lnk
	@%append watcom16$(S)WOLFSSL2.lnk system windows_dll
	@%append watcom16$(S)WOLFSSL2.lnk option quiet
	@%append watcom16$(S)WOLFSSL2.lnk option map=$(B)$(S)WOLFSSL2.map
	@%append watcom16$(S)WOLFSSL2.lnk option modname=WOLFSSL2
	@%append watcom16$(S)WOLFSSL2.lnk option description 'wolfSSL 5.5.4, patched 2026-09: validated TLS 1.2 + seeded DRBG'
	@%append watcom16$(S)WOLFSSL2.lnk name $^@
	@%append watcom16$(S)WOLFSSL2.lnk path $(B)
	@%append watcom16$(S)WOLFSSL2.lnk file {$(OBJS)}
	@%append watcom16$(S)WOLFSSL2.lnk export WOLFSSL_CTX_NEW.1
	@%append watcom16$(S)WOLFSSL2.lnk export WOLFSSL_CTX_FREE.2
	@%append watcom16$(S)WOLFSSL2.lnk export WOLFSSL_NEW.3
	@%append watcom16$(S)WOLFSSL2.lnk export WOLFSSL_FREE.4
	@%append watcom16$(S)WOLFSSL2.lnk export WOLFSSL_SET_FD.5
	@%append watcom16$(S)WOLFSSL2.lnk export WOLFSSL_WRITE.6
	@%append watcom16$(S)WOLFSSL2.lnk export WOLFSSL_READ.7
	@%append watcom16$(S)WOLFSSL2.lnk export WOLFSSL_USESNI.8
	@%append watcom16$(S)WOLFSSL2.lnk export WOLFSSL_CTX_USESNI.9
	@%append watcom16$(S)WOLFSSL2.lnk export WOLFSSL_SHUTDOWN.10
	@%append watcom16$(S)WOLFSSL2.lnk export WOLFSSL_GET_ERROR.11
	@%append watcom16$(S)WOLFSSL2.lnk export WOLFSSL_INIT.12
	@%append watcom16$(S)WOLFSSL2.lnk export WOLFSSL_CTX_SET_VERIFY.13
	@%append watcom16$(S)WOLFSSL2.lnk export WOLFSSL_CONNECT.14
	@%append watcom16$(S)WOLFSSL2.lnk export WOLFSSL_CLEANUP.15
	@%append watcom16$(S)WOLFSSL2.lnk export WOLFTLS_CLIENT_METHOD.16
	@%append watcom16$(S)WOLFSSL2.lnk export WOLFTLSV1_2_CLIENT_METHOD.17
	@%append watcom16$(S)WOLFSSL2.lnk export WOLFSSL_CTX_SETIORECV.19
	@%append watcom16$(S)WOLFSSL2.lnk export WOLFSSL_CTX_SETIOSEND.20
	@%append watcom16$(S)WOLFSSL2.lnk export WOLFSSL_SSLSETIORECV.21
	@%append watcom16$(S)WOLFSSL2.lnk export WOLFSSL_SSLSETIOSEND.22
	@%append watcom16$(S)WOLFSSL2.lnk export WOLFSSL_SETIOREADCTX.23
	@%append watcom16$(S)WOLFSSL2.lnk export WOLFSSL_SETIOWRITECTX.24
	@%append watcom16$(S)WOLFSSL2.lnk export WOLFSSL_SETLOGGINGCB.25
	@%append watcom16$(S)WOLFSSL2.lnk export WOLFSSL_DEBUGGING_ON.26
	@%append watcom16$(S)WOLFSSL2.lnk export WOLFSSL_CTX_LOAD_VERIFY_BUFFER.27
	@%append watcom16$(S)WOLFSSL2.lnk export WOLFSSL_CHECK_DOMAIN_NAME.28
	@%append watcom16$(S)WOLFSSL2.lnk export WC_SETSEED_CB.29
	$(LINK) @watcom16$(S)WOLFSSL2.lnk

.c.obj : .AUTODEPEND
	$(CC) $(CFLAGS) -fr=$(B)$(S)$^&.err -fo=$(B)$(S)$^. $[@

clean : .SYMBOLIC
	$(RM) $(B)$(S)*.obj $(B)$(S)*.err $(B)$(S)*.map $(B)$(S)*.DLL watcom16$(S)WOLFSSL2.lnk
