diff --git a/lib/tls/CMakeLists.txt b/lib/tls/CMakeLists.txt
index fb9a75fe..84f30d57 100644
--- a/lib/tls/CMakeLists.txt
+++ b/lib/tls/CMakeLists.txt
@@ -318,58 +318,54 @@ if (NOT VARIA)
 	set(VARIA "")
 endif()
 
-CHECK_FUNCTION_EXISTS(${VARIA}SSL_CTX_set1_param LWS_HAVE_SSL_CTX_set1_param PARENT_SCOPE)
-CHECK_FUNCTION_EXISTS(${VARIA}SSL_set_info_callback LWS_HAVE_SSL_SET_INFO_CALLBACK PARENT_SCOPE)
-CHECK_FUNCTION_EXISTS(${VARIA}X509_VERIFY_PARAM_set1_host LWS_HAVE_X509_VERIFY_PARAM_set1_host PARENT_SCOPE)
-CHECK_SYMBOL_EXISTS(${VARIA}X509_VERIFY_PARAM_set1_host LWS_HAVE_X509_VERIFY_PARAM_set1_host_sym PARENT_SCOPE)
+set(LWS_HAVE_SSL_CTX_set1_param 1 CACHE BOOL x)
+set(LWS_HAVE_SSL_SET_INFO_CALLBACK 1 CACHE BOOL x)
+set(LWS_HAVE_X509_VERIFY_PARAM_set1_host 1 CACHE BOOL x)
+set(LWS_HAVE_X509_VERIFY_PARAM_set1_host_sym 1 CACHE BOOL x)
 if (LWS_HAVE_X509_VERIFY_PARAM_set1_host_sym)
 	set(LWS_HAVE_X509_VERIFY_PARAM_set1_host 1 PARENT_SCOPE)
 endif()
 
-CHECK_FUNCTION_EXISTS(${VARIA}RSA_set0_key LWS_HAVE_RSA_SET0_KEY PARENT_SCOPE)
-CHECK_FUNCTION_EXISTS(${VARIA}X509_get_key_usage LWS_HAVE_X509_get_key_usage PARENT_SCOPE)
-CHECK_FUNCTION_EXISTS(${VARIA}SSL_CTX_EVP_PKEY_new_raw_private_key LWS_HAVE_SSL_CTX_EVP_PKEY_new_raw_private_key PARENT_SCOPE)
-CHECK_FUNCTION_EXISTS(${VARIA}SSL_CTX_get0_certificate LWS_HAVE_SSL_CTX_get0_certificate PARENT_SCOPE)
-CHECK_FUNCTION_EXISTS(${VARIA}SSL_get0_alpn_selected LWS_HAVE_SSL_get0_alpn_selected PARENT_SCOPE)
-CHECK_FUNCTION_EXISTS(${VARIA}SSL_set_alpn_protos LWS_HAVE_SSL_set_alpn_protos PARENT_SCOPE)
-CHECK_FUNCTION_EXISTS(${VARIA}EVP_aes_128_cfb8 LWS_HAVE_EVP_aes_128_cfb8 PARENT_SCOPE)
-CHECK_FUNCTION_EXISTS(${VARIA}EVP_aes_128_cfb128 LWS_HAVE_EVP_aes_128_cfb128 PARENT_SCOPE)
-CHECK_FUNCTION_EXISTS(${VARIA}EVP_aes_192_cfb8 LWS_HAVE_EVP_aes_192_cfb8 PARENT_SCOPE)
-CHECK_FUNCTION_EXISTS(${VARIA}EVP_aes_192_cfb128 LWS_HAVE_EVP_aes_192_cfb128 PARENT_SCOPE)
-CHECK_FUNCTION_EXISTS(${VARIA}EVP_aes_256_cfb8 LWS_HAVE_EVP_aes_256_cfb8 PARENT_SCOPE)
-CHECK_FUNCTION_EXISTS(${VARIA}EVP_aes_256_cfb128 LWS_HAVE_EVP_aes_256_cfb128 PARENT_SCOPE)
-CHECK_FUNCTION_EXISTS(${VARIA}EVP_aes_128_xts LWS_HAVE_EVP_aes_128_xts PARENT_SCOPE)
-CHECK_FUNCTION_EXISTS(${VARIA}EVP_aes_128_ofb LWS_HAVE_EVP_aes_128_ofb PARENT_SCOPE)
-CHECK_FUNCTION_EXISTS(${VARIA}EVP_aes_128_ecb LWS_HAVE_EVP_aes_128_ecb PARENT_SCOPE)
-CHECK_FUNCTION_EXISTS(${VARIA}EVP_aes_128_ctr LWS_HAVE_EVP_aes_128_ctr PARENT_SCOPE)
-
-
-CHECK_FUNCTION_EXISTS(${VARIA}EVP_aes_128_xts LWS_HAVE_EVP_aes_128_xts PARENT_SCOPE)
-CHECK_FUNCTION_EXISTS(${VARIA}RSA_verify_pss_mgf1 LWS_HAVE_RSA_verify_pss_mgf1 PARENT_SCOPE)
-CHECK_FUNCTION_EXISTS(${VARIA}HMAC_CTX_new LWS_HAVE_HMAC_CTX_new PARENT_SCOPE)
-CHECK_SYMBOL_EXISTS(${VARIA}SSL_CTX_set_ciphersuites LWS_HAVE_SSL_CTX_set_ciphersuites PARENT_SCOPE)
-CHECK_FUNCTION_EXISTS(${VARIA}EVP_PKEY_new_raw_private_key LWS_HAVE_EVP_PKEY_new_raw_private_key PARENT_SCOPE)
-CHECK_FUNCTION_EXISTS(${VARIA}SSL_SESSION_set_time LWS_HAVE_SSL_SESSION_set_time PARENT_SCOPE)
-CHECK_SYMBOL_EXISTS(${VARIA}SSL_SESSION_up_ref LWS_HAVE_SSL_SESSION_up_ref PARENT_SCOPE)
+set(LWS_HAVE_RSA_SET0_KEY 1 CACHE BOOL x)
+set(LWS_HAVE_X509_get_key_usage 1 CACHE BOOL x)
+set(LWS_HAVE_SSL_CTX_EVP_PKEY_new_raw_private_key 1 CACHE BOOL x)
+set(LWS_HAVE_SSL_CTX_get0_certificate 1 CACHE BOOL x)
+set(LWS_HAVE_SSL_get0_alpn_selected 1 CACHE BOOL x)
+set(LWS_HAVE_SSL_set_alpn_protos 1 CACHE BOOL x)
+set(LWS_HAVE_EVP_aes_128_cfb8 1 CACHE BOOL x)
+set(LWS_HAVE_EVP_aes_128_cfb128 1 CACHE BOOL x)
+set(LWS_HAVE_EVP_aes_192_cfb8 1 CACHE BOOL x)
+set(LWS_HAVE_EVP_aes_192_cfb128 1 CACHE BOOL x)
+set(LWS_HAVE_EVP_aes_256_cfb8 1 CACHE BOOL x)
+set(LWS_HAVE_EVP_aes_256_cfb128 1 CACHE BOOL x)
+set(LWS_HAVE_EVP_aes_128_xts 1 CACHE BOOL x)
+set(LWS_HAVE_EVP_aes_128_ofb 1 CACHE BOOL x)
+set(LWS_HAVE_EVP_aes_128_ecb 1 CACHE BOOL x)
+set(LWS_HAVE_EVP_aes_128_ctr 1 CACHE BOOL x)
+
+
+set(LWS_HAVE_EVP_aes_128_xts 1 CACHE BOOL x)
+set(LWS_HAVE_RSA_verify_pss_mgf1 1 CACHE BOOL x)
+set(LWS_HAVE_HMAC_CTX_new 1 CACHE BOOL x)
+set(LWS_HAVE_SSL_CTX_set_ciphersuites 1 CACHE BOOL x)
+set(LWS_HAVE_EVP_PKEY_new_raw_private_key 1 CACHE BOOL x)
+set(LWS_HAVE_SSL_SESSION_set_time 1 CACHE BOOL x)
+set(LWS_HAVE_SSL_SESSION_up_ref 1 CACHE BOOL x)
 
 
 # deprecated in openssl v3
-CHECK_FUNCTION_EXISTS(${VARIA}EC_KEY_new_by_curve_name LWS_HAVE_EC_KEY_new_by_curve_name PARENT_SCOPE)
+set(LWS_HAVE_EC_KEY_new_by_curve_name 0 CACHE BOOL x)
 
 if (LWS_WITH_SSL AND NOT LWS_WITH_MBEDTLS)
-	# we don't want to confuse what's in or out of the wrapper with
-	# what's in an openssl also installed on the build host
-CHECK_C_SOURCE_COMPILES("#include <openssl/ssl.h>\nint main(void) { STACK_OF(X509) *c = NULL; SSL_CTX *ctx = NULL; return (int)SSL_CTX_get_extra_chain_certs_only(ctx, &c); }\n" LWS_HAVE_SSL_EXTRA_CHAIN_CERTS)
-CHECK_C_SOURCE_COMPILES("#include <openssl/ssl.h>\nint main(void) { EVP_MD_CTX *md_ctx = NULL; EVP_MD_CTX_free(md_ctx); return 0; }\n" LWS_HAVE_EVP_MD_CTX_free)
-CHECK_C_SOURCE_COMPILES("#include <openssl/ssl.h>\nint main(void) { OPENSSL_STACK *x = NULL; return !x; } \n" LWS_HAVE_OPENSSL_STACK)
-set(LWS_HAVE_SSL_EXTRA_CHAIN_CERTS ${LWS_HAVE_SSL_EXTRA_CHAIN_CERTS} PARENT_SCOPE)
-set(LWS_HAVE_EVP_MD_CTX_free ${LWS_HAVE_EVP_MD_CTX_free} PARENT_SCOPE)
-CHECK_FUNCTION_EXISTS(${VARIA}ECDSA_SIG_set0 LWS_HAVE_ECDSA_SIG_set0 PARENT_SCOPE)
-CHECK_FUNCTION_EXISTS(${VARIA}BN_bn2binpad LWS_HAVE_BN_bn2binpad PARENT_SCOPE)
-CHECK_FUNCTION_EXISTS(${VARIA}EVP_aes_128_wrap LWS_HAVE_EVP_aes_128_wrap PARENT_SCOPE)
-CHECK_FUNCTION_EXISTS(${VARIA}EC_POINT_get_affine_coordinates LWS_HAVE_EC_POINT_get_affine_coordinates PARENT_SCOPE)
-CHECK_SYMBOL_EXISTS(${VARIA}SSL_CTX_load_verify_file LWS_HAVE_SSL_CTX_load_verify_file PARENT_SCOPE)
-CHECK_SYMBOL_EXISTS(${VARIA}SSL_CTX_load_verify_dir LWS_HAVE_SSL_CTX_load_verify_dir PARENT_SCOPE)
+set(LWS_HAVE_OPENSSL_STACK 1 CACHE BOOL x)
+set(LWS_HAVE_SSL_EXTRA_CHAIN_CERTS 1 CACHE BOOL x)
+set(LWS_HAVE_EVP_MD_CTX_free 1 CACHE BOOL x)
+set(LWS_HAVE_ECDSA_SIG_set0 1 CACHE BOOL x)
+set(LWS_HAVE_BN_bn2binpad 1 CACHE BOOL x)
+set(LWS_HAVE_EVP_aes_128_wrap 1 CACHE BOOL x)
+set(LWS_HAVE_EC_POINT_get_affine_coordinates 1 CACHE BOOL x)
+set(LWS_HAVE_SSL_CTX_load_verify_file 1 CACHE BOOL x)
+set(LWS_HAVE_SSL_CTX_load_verify_dir 1 CACHE BOOL x)
 endif()
 
 if (LWS_WITH_MBEDTLS)
@@ -412,8 +408,8 @@ if (LWS_WITH_MBEDTLS)
 		CHECK_FUNCTION_EXISTS(mbedtls_internal_aes_encrypt LWS_HAVE_mbedtls_internal_aes_encrypt PARENT_SCOPE) # not on xenial 2.2
 	endif()
 else()
-CHECK_FUNCTION_EXISTS(${VARIA}TLS_client_method LWS_HAVE_TLS_CLIENT_METHOD PARENT_SCOPE)
-CHECK_FUNCTION_EXISTS(${VARIA}TLSv1_2_client_method LWS_HAVE_TLSV1_2_CLIENT_METHOD PARENT_SCOPE)
+set(LWS_HAVE_TLS_CLIENT_METHOD 1 CACHE BOOL x)
+set(LWS_HAVE_TLSV1_2_CLIENT_METHOD 1 CACHE BOOL x)
 endif()
 
 # Generate self-signed SSL certs for the test-server.
@@ -572,3 +568,4 @@ set(TEST_SERVER_SSL_KEY "${TEST_SERVER_SSL_KEY}" PARENT_SCOPE)
 set(TEST_SERVER_SSL_CERT "${TEST_SERVER_SSL_CERT}" PARENT_SCOPE)
 set(TEST_SERVER_DATA ${TEST_SERVER_DATA} PARENT_SCOPE)
 
+
