libwebsockets: fix build against OpenSSL 3.5

OpenSSL 3.5 (first shipped in wrynose) made HMAC_CTX a fully opaque
type by removing its struct definition from the public headers. It was
deprecated since OpenSSL 3.0 but the struct remained visible until 3.5.

libwebsockets uses HMAC_CTX_new() to detect which form to use in its
lws-genhash.h public header: if found it uses HMAC_CTX *ctx (pointer),
otherwise it falls back to HMAC_CTX ctx (embedded struct).

In cross-compilation the CMake CHECK_FUNCTION_EXISTS probe for
HMAC_CTX_new can fail due to native libraries being incorrectly pulled
into the aarch64 link test, causing the function to be reported as not
found. Before OpenSSL 3.5 this was a silent failure: the fallback
embedded struct still compiled fine. With OpenSSL 3.5 the fallback
now fails with "field has incomplete type".

Force LWS_HAVE_HMAC_CTX_new=ON so the pointer form is always used.

Signed-off-by: Kamlesh Gurudasani <kamlesh@ti.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
This commit is contained in:
Kamlesh Gurudasani
2026-06-04 15:11:55 +05:30
committed by Khem Raj
parent d56e22f0d6
commit 53cbcaba3f
@@ -35,6 +35,7 @@ python __anonymous() {
EXTRA_OECMAKE += " \
-DLIB_SUFFIX=${@d.getVar('baselib').replace('lib', '')} \
-DLWS_WITHOUT_TESTAPPS=ON \
-DLWS_HAVE_HMAC_CTX_new=ON \
"
do_compile:prepend() {