build: correctly detect clang version

Use the "Apple LLVM" version number since the banner has changed in
newer versions of Mac OS X, resulting in the obsolete assembler path
being used to compile OpenSSL.

PR-URL: https://github.com/nodejs/node/pull/5553
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
This commit is contained in:
Stefan Budeanu 2016-03-03 16:38:24 -05:00 committed by Ben Noordhuis
parent e38e2a6012
commit 17924703d6
3 changed files with 13 additions and 4 deletions

14
configure vendored
View File

@ -441,7 +441,7 @@ def try_check_compiler(cc, lang):
# Commands and regular expressions to obtain its version number are taken from
# https://github.com/openssl/openssl/blob/OpenSSL_1_0_2-stable/crypto/sha/asm/sha512-x86_64.pl#L112-L129
#
def get_llvm_version(cc):
def get_version_helper(cc, regexp):
try:
proc = subprocess.Popen(shlex.split(cc) + ['-v'], stdin=subprocess.PIPE,
stderr=subprocess.PIPE, stdout=subprocess.PIPE)
@ -454,14 +454,20 @@ def get_llvm_version(cc):
'''
sys.exit()
match = re.search(r"(^clang version|based on LLVM) ([3-9]\.[0-9]+)",
proc.communicate()[1])
match = re.search(regexp, proc.communicate()[1])
if match:
return match.group(2)
else:
return 0
def get_llvm_version(cc):
return get_version_helper(
cc, r"(^clang version|based on LLVM) ([3-9]\.[0-9]+)")
def get_xcode_version(cc):
return get_version_helper(
cc, r"(^Apple LLVM version) ([5-9]\.[0-9]+)")
def get_gas_version(cc):
try:
@ -516,6 +522,8 @@ def check_compiler(o):
if is_clang:
o['variables']['llvm_version'] = get_llvm_version(CC)
if sys.platform == 'darwin':
o['variables']['xcode_version'] = get_xcode_version(CC)
else:
o['variables']['gas_version'] = get_gas_version(CC)

View File

@ -8,6 +8,7 @@
'gcc_version': 0,
'openssl_no_asm%': 0,
'llvm_version%': 0,
'xcode_version%': 0,
'gas_version%': 0,
'openssl_fips%': 'false',
},

View File

@ -1040,7 +1040,7 @@
#
'conditions': [
['(OS=="win" and MSVS_VERSION>="2012") or '
'llvm_version>="3.3" or gas_version>="2.23"', {
'llvm_version>="3.3" or xcode_version>="5.0" or gas_version>="2.23"', {
'openssl_sources_x64_win_masm': [
'<@(openssl_sources_asm_latest_x64_win_masm)',
'<@(openssl_sources_common_x64_win_masm)',