Bug 106004 - build fails - MathExtras.h on Solaris using gcc
Summary: build fails - MathExtras.h on Solaris using gcc
Status: UNCONFIRMED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKitGTK (show other bugs)
Version: 528+ (Nightly build)
Hardware: Other Other
: P2 Blocker
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-01-03 00:58 PST by richard
Modified: 2017-03-11 11:02 PST (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description richard 2013-01-03 00:58:07 PST
reference https://bugs.webkit.org/show_bug.cgi?id=41953
and http://article.gmane.org/gmane.os.opendarwin.webkit.gtk/1317

When building on solaris with gcc (4.7.x), e.g. using pkgsrc, the build will fail with the following:

GEN    DerivedSources/JavaScriptCore/LLIntDesiredOffsets.h
offlineasm: Parsing ./Source/JavaScriptCore/llint/LowLevelInterpreter.asm and creating offset extractor DerivedSources/JavaScriptCore/LLIntDesiredOffsets.h.
offlineasm: Including file ./Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
offlineasm: Including file ./Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm
offlineasm: offset extractor DerivedSources/JavaScriptCore/LLIntDesiredOffsets.h successfully generated.
  CXX Source/JavaScriptCore/llint/Programs_LLIntOffsetsExtractor-LLIntOffsetsExtractor.o
In file included from ./Source/JavaScriptCore/runtime/JSValue.h:33:0,
                 from ./Source/JavaScriptCore/runtime/CachedTranscendentalFunction.h:29,
                 from ./Source/JavaScriptCore/runtime/JSGlobalData.h:32,
                 from ./Source/JavaScriptCore/interpreter/CallFrame.h:27,
                 from ./Source/JavaScriptCore/runtime/ArgList.h:25,
                 from ./Source/JavaScriptCore/runtime/JSObject.h:26,
                 from ./Source/JavaScriptCore/runtime/JSArray.h:24,
                 from ./Source/JavaScriptCore/bytecode/ArrayProfile.h:29,
                 from Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:28:
./Source/WTF/wtf/MathExtras.h: In function 'void doubleToInteger(double, long long unsigned int&)':
./Source/WTF/wtf/MathExtras.h:349:16: error: 'isnan' was not declared in this scope
./Source/WTF/wtf/MathExtras.h:349:16: note: suggested alternative:
In file included from ./Source/WTF/wtf/MathExtras.h:30:0,
                 from ./Source/JavaScriptCore/runtime/JSValue.h:33,
                 from ./Source/JavaScriptCore/runtime/CachedTranscendentalFunction.h:29,
                 from ./Source/JavaScriptCore/runtime/JSGlobalData.h:32,
                 from ./Source/JavaScriptCore/interpreter/CallFrame.h:27,
                 from ./Source/JavaScriptCore/runtime/ArgList.h:25,
                 from ./Source/JavaScriptCore/runtime/JSObject.h:26,
                 from ./Source/JavaScriptCore/runtime/JSArray.h:24,
                 from ./Source/JavaScriptCore/bytecode/ArrayProfile.h:29,
                 from Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:28:
/opt/pkg/gcc47/include/c++/cmath:839:5: note:   'std::isnan'
gmake: *** [Source/JavaScriptCore/llint/Programs_LLIntOffsetsExtractor-LLIntOffsetsExtractor.o] Error 1
*** Error code 2

Stop.
bmake: stopped in /home/richard/src/pkgsrc/www/webkit-gtk3
*** Error code 1

Stop.
bmake: stopped in /home/richard/src/pkgsrc/www/webkit-gtk3


After finding the previous bug referenced above, I notice that the solaris check is inappropriate as implemented.
SunStudio defines __SUNPRO_CC... so this check should be added in addition to the solaris check.

Here is my patch (using 1.10.2 source kit):

diff --git a/www/webkit-gtk/patches/patch-Source_WTF_wtf_MathExtras.h 
 b/www/webkit-gtk/patches/patch-Source_WTF_wtf_MathExtras.h
 new file mode 100644
 index 0000000..7ab4e16
 --- /dev/null
 +++ b/www/webkit-gtk/patches/patch-Source_WTF_wtf_MathExtras.h
 @@ -0,0 +1,13 @@
 +$NetBSD$
 +
 +--- Source/WTF/wtf/MathExtras.h.orig	2012-11-23 20:12:16.000000000 +0000
 ++++ Source/WTF/wtf/MathExtras.h
 +@@ -288,7 +288,7 @@ inline bool isWithinIntRange(float x)
 +     return x > static_cast<float>(std::numeric_limits<int>::min()) && 
 x < static_cast<float>(std::numeric_limits<int>::max());
 + }
 +
 +-#if !COMPILER(MSVC) && !COMPILER(RVCT) && !OS(SOLARIS)
 ++#if !COMPILER(MSVC) && !COMPILER(RVCT) && !(OS(SOLARIS) && 
 defined(__SUNPRO_CC))
 + using std::isfinite;
 + #if !COMPILER_QUIRK(GCC11_GLOBAL_ISINF_ISNAN)
 + using std::isinf;
Comment 1 Alberto Garcia 2013-09-09 05:21:53 PDT
This code changed a bit since http://trac.webkit.org/changeset/143232

Is this problem still there? If so, can you post a new patch? Thanks!