mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 21:19:50 +01:00
build: make CC command in -fstrict-aliasing check configurable
This commit is contained in:
parent
707863c1fb
commit
5062741bd7
19
configure
vendored
19
configure
vendored
@ -6,6 +6,8 @@ import re
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
CC = os.environ.get('CC', 'cc')
|
||||
|
||||
root_dir = os.path.dirname(__file__)
|
||||
sys.path.insert(0, os.path.join(root_dir, 'deps', 'v8', 'tools'))
|
||||
|
||||
@ -147,10 +149,10 @@ def pkg_config(pkg):
|
||||
def host_arch():
|
||||
"""Host architecture. One of arm, ia32 or x64."""
|
||||
|
||||
cc = [os.environ.get('CC', 'cc')]
|
||||
|
||||
cmd = cc + [ '-dM', '-E', '-' ]
|
||||
p = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
p = subprocess.Popen([CC, '-dM', '-E', '-'],
|
||||
stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE)
|
||||
p.stdin.write('\n')
|
||||
out = p.communicate()[0]
|
||||
|
||||
@ -187,12 +189,13 @@ def target_arch():
|
||||
|
||||
def gcc_version():
|
||||
try:
|
||||
proc = subprocess.Popen('gcc -v'.split(), stderr=subprocess.PIPE)
|
||||
proc = subprocess.Popen([CC, '-v'], stderr=subprocess.PIPE)
|
||||
except OSError:
|
||||
return None
|
||||
# TODO parse clang output
|
||||
version = proc.communicate()[1].split('\n')[-2]
|
||||
match = re.match('gcc version (\d+)\.(\d+)\.(\d+)', version)
|
||||
assert match, 'Failed to parse gcc version `%s`' % version
|
||||
if not match: return None
|
||||
return ['LLVM' in version] + map(int, match.groups())
|
||||
|
||||
|
||||
@ -209,8 +212,8 @@ def configure_node(o):
|
||||
# turn off strict aliasing if gcc < 4.6.0 unless it's llvm-gcc
|
||||
# see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45883
|
||||
# see http://code.google.com/p/v8/issues/detail?id=884
|
||||
# TODO handle CC=clang
|
||||
o['variables']['strict_aliasing'] = b(gcc_version() >= [False, 4, 6, 0])
|
||||
o['variables']['strict_aliasing'] = b(
|
||||
'clang' in CC or gcc_version() >= [False, 4, 6, 0])
|
||||
|
||||
# TODO move to node.gyp
|
||||
if sys.platform == 'sunos5':
|
||||
|
Loading…
Reference in New Issue
Block a user