build: correctly detect clang version
authorStefan Budeanu <stefanbu@ca.ibm.com>
Thu, 3 Mar 2016 21:38:24 +0000 (16:38 -0500)
committerMyles Borins <mborins@us.ibm.com>
Mon, 21 Mar 2016 20:07:02 +0000 (13:07 -0700)
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>
configure
deps/openssl/openssl.gyp
deps/openssl/openssl.gypi

index dc0129e..054ebb4 100755 (executable)
--- a/configure
+++ b/configure
@@ -433,7 +433,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)
@@ -446,14 +446,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:
@@ -508,6 +514,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)
 
index 3a319d9..db57033 100644 (file)
@@ -8,6 +8,7 @@
     'gcc_version': 0,
     'openssl_no_asm%': 0,
     'llvm_version%': 0,
+    'xcode_version%': 0,
     'gas_version%': 0,
     'openssl_fips%': 'false',
   },
index e2e06d8..c3824a6 100644 (file)
     #
     '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)',