tools: partially detect quic support in shared_openssl

If the shared openssl does not have the `OPENSSL_INFO_QUIC` define,
then it definitely does not have the QUIC apis. This is only a partially
accurate check because it does not detect if the shared openssl was
actually *built* without the OPENSSL_NO_QUIC define set.

Signed-off-by: James M Snell <jasnell@gmail.com>

PR-URL: https://github.com/nodejs/node/pull/37682
Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
This commit is contained in:
James M Snell 2021-03-09 13:29:20 -08:00
parent 65e8864fa3
commit 2b710c1413
No known key found for this signature in database
GPG Key ID: 7341B15C070877AC
2 changed files with 24 additions and 0 deletions

View File

@ -38,6 +38,7 @@ import nodedownload
sys.path.insert(0, 'tools')
import getmoduleversion
import getnapibuildversion
import getsharedopensslhasquic
from gyp_node import run_gyp
# parse our options
@ -1348,6 +1349,7 @@ def configure_openssl(o):
variables['node_shared_openssl'] = b(options.shared_openssl)
variables['openssl_is_fips'] = b(options.openssl_is_fips)
variables['openssl_fips'] = ''
variables['openssl_quic'] = b(True)
if options.openssl_no_asm:
variables['openssl_no_asm'] = 1
@ -1403,6 +1405,9 @@ def configure_openssl(o):
if options.openssl_fips or options.openssl_fips == '':
error('FIPS is not supported in this version of Node.js')
if options.shared_openssl:
variables['openssl_quic'] = b(getsharedopensslhasquic.get_has_quic(options.__dict__['shared_openssl_includes']))
configure_library('openssl', o)

View File

@ -0,0 +1,19 @@
from __future__ import print_function
import os
import re
def get_has_quic(include_path):
openssl_crypto_h = os.path.join(
include_path,
'openssl',
'crypto.h')
f = open(openssl_crypto_h)
regex = '^#\s*define OPENSSL_INFO_QUIC'
for line in f:
if (re.match(regex, line)):
return True
return False