Skip to content

Commit

Permalink
build: limit assembler version check on x86
Browse files Browse the repository at this point in the history
The current openssl checks assembler version only x86_64 or ia32
target arch for use of AES-NI, AVX and AVX2.
This requires --openssl-no-asm option during configure when an older
assembler version is found only on x86_64 or ia32.

PR-URL: #20226
Fixes: #19944
Refs: #20217
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Ali Ijaz Sheikh <[email protected]>
Reviewed-By: Myles Borins <[email protected]>
Reviewed-By: Richard Lau <[email protected]>
  • Loading branch information
shigeki authored and jasnell committed Apr 23, 2018
1 parent adc3e8a commit b935e63
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 3 deletions.
6 changes: 4 additions & 2 deletions BUILDING.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,14 +94,16 @@ Depending on host platform, the selection of toolchains may vary.
#### OpenSSL asm support

OpenSSL-1.1.0 requires the following asssembler version for use of asm
support.
support on x86_64 and ia32.

* gas (GNU assembler) version 2.23 or higher
* xcode version 5.0 or higher
* llvm version 3.3 or higher
* nasm version 2.10 or higher in Windows

Otherwise, `--openssl-no-asm` is added with warning in configure.
Otherwise `configure` will fail with an error. This can be avoided by
either providing a newer assembler as per the list above or by
using the `--openssl-no-asm` flag.

*Note:* The forthcoming OpenSSL-1.1.1 will require higher
version. Please refer
Expand Down
4 changes: 3 additions & 1 deletion configure
Original file line number Diff line number Diff line change
Expand Up @@ -1106,6 +1106,8 @@ def configure_openssl(o):
o['defines'] += ['NODE_WITHOUT_NODE_OPTIONS']

if not options.shared_openssl and not options.openssl_no_asm:
is_x86 = 'x64' in variables['target_arch'] or 'ia32' in variables['target_arch']

# supported asm compiler for AVX2. See https://github.com/openssl/openssl/
# blob/OpenSSL_1_1_0-stable/crypto/modes/asm/aesni-gcm-x86_64.pl#L52-L69
openssl110_asm_supported = \
Expand All @@ -1114,7 +1116,7 @@ def configure_openssl(o):
('llvm_version' in variables and float(variables['llvm_version']) >= 3.3) or \
('nasm_version' in variables and float(variables['nasm_version']) >= 2.10)

if not openssl110_asm_supported:
if is_x86 and not openssl110_asm_supported:
error('''Did not find a new enough assembler, install one or build with
--openssl-no-asm.
Please refer to BUILDING.md''')
Expand Down

0 comments on commit b935e63

Please sign in to comment.