From: Shigeki Ohtsu Date: Mon, 27 Feb 2012 11:32:13 +0000 (+0900) Subject: Fix #2830 for the old gcc bug on SmartOS X-Git-Tag: v0.7.6~84 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=82ad1f87fa99b420a97cc9bfae727fce0b1bf8a4;p=platform%2Fupstream%2Fnodejs.git Fix #2830 for the old gcc bug on SmartOS --- diff --git a/common.gypi b/common.gypi index 1dbef02..699230a 100644 --- a/common.gypi +++ b/common.gypi @@ -36,12 +36,14 @@ 'Release': { 'conditions': [ [ 'OS!="solaris"', { - 'cflags': [ '-fomit-frame-pointer' ] + 'cflags': [ '-O3','-fomit-frame-pointer', '-fdata-sections', '-ffunction-sections' ], + }], + [ 'OS=="solaris" and gcc_optimize_level =="-O3"', { + 'cflags': [ '-O3', '-fdata-sections', '-ffunction-sections' ], + }], + [ 'OS=="solaris" and gcc_optimize_level =="-O"', { + 'cflags': [ '-O', '-fdata-sections', '-ffunction-sections' ], # For bug fix of #2830 }], - ], - # 'defines': [ 'NDEBUG' ], - 'cflags': [ '-O3', '-fdata-sections', '-ffunction-sections' ], - 'conditions': [ ['target_arch=="x64"', { 'msvs_configuration_platform': 'x64', }], diff --git a/configure b/configure index 537757e..7140946 100755 --- a/configure +++ b/configure @@ -1,10 +1,10 @@ #!/usr/bin/env python - import optparse import os import pprint import subprocess import sys +from distutils.version import StrictVersion root_dir = os.path.dirname(__file__) sys.path.insert(0, os.path.join(root_dir, 'deps', 'v8', 'tools')) @@ -200,6 +200,17 @@ def host_arch(): def target_arch(): return host_arch() +def gcc_optimize_level(): + cc = ['gcc'] + cmd = cc + [ '-dumpversion' ] + p = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + p.stdin.write('\n') + out = p.communicate()[0] + gcc_version = (str(out).split('\n'))[0] + if StrictVersion(gcc_version) >= '4.6.1': + return '-O3' + else: + return '-O' def configure_node(o): # TODO add gdb @@ -214,7 +225,7 @@ def configure_node(o): # TODO move to node.gyp if sys.platform == 'sunos5': o['variables']['visibility'] = '' # FIXME -fvisibility=hidden, should be a gcc check - + o['variables']['gcc_optimize_level'] = gcc_optimize_level() # For bug fix of #2830 def configure_libz(o): o['variables']['node_shared_zlib'] = b(options.shared_zlib)