You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@couchdb.apache.org by Nick North <no...@gmail.com> on 2015/07/17 23:02:10 UTC

Windows build failing on couch_ejson_compare.c

I'm trying out @wohali's Windows build, which went well up to compilation
of couch_ejson_compare.c, where it seems to be tripping up over the changes
in the recent commit
<https://github.com/apache/couchdb-couch/commit/6b38dfacbb97c5cb7c89a27115d1227c7c52dbba>
to optimise performance. Specifically it gives this series of errors:

Compiling
c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c
ERROR: compile failed while processing c:/couchdb/src/couch: rebar_abort
Microsoft (R) C/C++ Optimizing Compiler Version 18.00.31101 for x86
Copyright (C) Microsoft Corporation.  All rights reserved.

cl : Command line warning D9002 : ignoring unknown option '-fno-common'
couch_ejson_compare.c
c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(44) :
warnin
g C4431: missing type specifier - int assumed. Note: C no longer supports
defaul
t-int
c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(44) :
error
C2054: expected '(' to follow '__thread'
c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(44) :
error
C2085: 'collator' : not in formal parameter list
c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(44) :
error
C2143: syntax error : missing ';' before '='
c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(58) :
warnin
g C4255: 'get_collator' : no function prototype given: converting '()' to
'(void
)'
c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(62) :
warnin
g C4255: 'get_collator' : no function prototype given: converting '()' to
'(void
)'
c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(66) :
error
C2065: 'collator' : undeclared identifier
c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(66) :
warnin
g C4047: '!=' : 'int' differs in levels of indirection from 'void *'
c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(67) :
error
C2065: 'collator' : undeclared identifier
c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(67) :
warnin
g C4047: 'return' : 'UCollator *' differs in levels of indirection from
'int'
c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(70) :
error
C2065: 'collator' : undeclared identifier
c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(70) :
warnin
g C4047: '=' : 'int' differs in levels of indirection from 'UCollator *'
c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(73) :
error
C2065: 'collator' : undeclared identifier
c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(73) :
warnin
g C4047: 'function' : 'UCollator *' differs in levels of indirection from
'int'
c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(73) :
warnin
g C4024: 'ucol_close_55' : different types for formal and actual parameter 1
c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(78) :
error
C2065: 'collator' : undeclared identifier
c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(78) :
warnin
g C4047: '=' : 'UCollator *' differs in levels of indirection from 'int'
c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(84) :
error
C2065: 'collator' : undeclared identifier
c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(84) :
warnin
g C4047: 'return' : 'UCollator *' differs in levels of indirection from
'int'
c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(256) :
warni
ng C4127: conditional expression is constant
c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(296) :
warni
ng C4127: conditional expression is constant

I'll look into this further tomorrow, but someone more knowledgeable may
immediately know what the problem is and be able to suggest a solution.

Nick

Re: Windows build failing on couch_ejson_compare.c

Posted by Nick North <no...@gmail.com>.
Thanks for the advice. I've submitted a PR and would be grateful for a +1
from a *nix person before merging.

Nick

On Sun, 19 Jul 2015 at 02:46 Paul J Davis <pa...@gmail.com>
wrote:

> The macro is totally fine. There are always plenty of those to account for
> windows/*nix differences so it's not dirty by any means.
>
>
>
> > On Jul 18, 2015, at 8:28 AM, Nick North <no...@gmail.com> wrote:
> >
> > I see a couple of obvious solutions to this problem:
> >
> >
> >   1. Use the thread_local keyword rather than __thread. The semantics are
> >   not identical, so @davisp may have views on whether the behaviour is
> still
> >   OK. From the Windows build point of view, it would force us into
> building
> >   with Visual Studio 2015, which releases on 20 Jul, so we don't know
> whether
> >   it works with the rest of the build.
> >   2. Create a macro that expands to __declspec(thread) or __thread as
> >   appropriate. This feels less correct than the thread_local solution,
> but
> >   maybe better in the short term.
> >
> > Does anyone have any thoughts on which is the better way forward? Or have
> > alternative suggestions?
> >
> > Nick
> >
> >> On Fri, 17 Jul 2015 at 22:09 Nick North <no...@gmail.com> wrote:
> >>
> >> Answering my own question: looks as if Microsoft uses __declspec(thread)
> >> rather than __thread.
> >>
> >> Nick
> >>
> >>> On Fri, 17 Jul 2015 at 22:02 Nick North <no...@gmail.com> wrote:
> >>>
> >>> I'm trying out @wohali's Windows build, which went well up to
> compilation
> >>> of couch_ejson_compare.c, where it seems to be tripping up over the
> changes
> >>> in the recent commit
> >>> <
> https://github.com/apache/couchdb-couch/commit/6b38dfacbb97c5cb7c89a27115d1227c7c52dbba
> >
> >>> to optimise performance. Specifically it gives this series of errors:
> >>>
> >>> Compiling
> >>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c
> >>> ERROR: compile failed while processing c:/couchdb/src/couch:
> rebar_abort
> >>> Microsoft (R) C/C++ Optimizing Compiler Version 18.00.31101 for x86
> >>> Copyright (C) Microsoft Corporation.  All rights reserved.
> >>>
> >>> cl : Command line warning D9002 : ignoring unknown option '-fno-common'
> >>> couch_ejson_compare.c
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(44) :
> >>> warnin
> >>> g C4431: missing type specifier - int assumed. Note: C no longer
> supports
> >>> defaul
> >>> t-int
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(44) :
> >>> error
> >>> C2054: expected '(' to follow '__thread'
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(44) :
> >>> error
> >>> C2085: 'collator' : not in formal parameter list
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(44) :
> >>> error
> >>> C2143: syntax error : missing ';' before '='
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(58) :
> >>> warnin
> >>> g C4255: 'get_collator' : no function prototype given: converting '()'
> to
> >>> '(void
> >>> )'
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(62) :
> >>> warnin
> >>> g C4255: 'get_collator' : no function prototype given: converting '()'
> to
> >>> '(void
> >>> )'
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(66) :
> >>> error
> >>> C2065: 'collator' : undeclared identifier
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(66) :
> >>> warnin
> >>> g C4047: '!=' : 'int' differs in levels of indirection from 'void *'
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(67) :
> >>> error
> >>> C2065: 'collator' : undeclared identifier
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(67) :
> >>> warnin
> >>> g C4047: 'return' : 'UCollator *' differs in levels of indirection from
> >>> 'int'
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(70) :
> >>> error
> >>> C2065: 'collator' : undeclared identifier
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(70) :
> >>> warnin
> >>> g C4047: '=' : 'int' differs in levels of indirection from 'UCollator
> *'
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(73) :
> >>> error
> >>> C2065: 'collator' : undeclared identifier
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(73) :
> >>> warnin
> >>> g C4047: 'function' : 'UCollator *' differs in levels of indirection
> from
> >>> 'int'
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(73) :
> >>> warnin
> >>> g C4024: 'ucol_close_55' : different types for formal and actual
> >>> parameter 1
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(78) :
> >>> error
> >>> C2065: 'collator' : undeclared identifier
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(78) :
> >>> warnin
> >>> g C4047: '=' : 'UCollator *' differs in levels of indirection from
> 'int'
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(84) :
> >>> error
> >>> C2065: 'collator' : undeclared identifier
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(84) :
> >>> warnin
> >>> g C4047: 'return' : 'UCollator *' differs in levels of indirection from
> >>> 'int'
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(256)
> >>> : warni
> >>> ng C4127: conditional expression is constant
> >>>
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(296)
> >>> : warni
> >>> ng C4127: conditional expression is constant
> >>>
> >>> I'll look into this further tomorrow, but someone more knowledgeable
> may
> >>> immediately know what the problem is and be able to suggest a solution.
> >>>
> >>> Nick
> >>>
> >>>
> >>>
>

Re: Windows build failing on couch_ejson_compare.c

Posted by Paul J Davis <pa...@gmail.com>.
The macro is totally fine. There are always plenty of those to account for windows/*nix differences so it's not dirty by any means. 



> On Jul 18, 2015, at 8:28 AM, Nick North <no...@gmail.com> wrote:
> 
> I see a couple of obvious solutions to this problem:
> 
> 
>   1. Use the thread_local keyword rather than __thread. The semantics are
>   not identical, so @davisp may have views on whether the behaviour is still
>   OK. From the Windows build point of view, it would force us into building
>   with Visual Studio 2015, which releases on 20 Jul, so we don't know whether
>   it works with the rest of the build.
>   2. Create a macro that expands to __declspec(thread) or __thread as
>   appropriate. This feels less correct than the thread_local solution, but
>   maybe better in the short term.
> 
> Does anyone have any thoughts on which is the better way forward? Or have
> alternative suggestions?
> 
> Nick
> 
>> On Fri, 17 Jul 2015 at 22:09 Nick North <no...@gmail.com> wrote:
>> 
>> Answering my own question: looks as if Microsoft uses __declspec(thread)
>> rather than __thread.
>> 
>> Nick
>> 
>>> On Fri, 17 Jul 2015 at 22:02 Nick North <no...@gmail.com> wrote:
>>> 
>>> I'm trying out @wohali's Windows build, which went well up to compilation
>>> of couch_ejson_compare.c, where it seems to be tripping up over the changes
>>> in the recent commit
>>> <https://github.com/apache/couchdb-couch/commit/6b38dfacbb97c5cb7c89a27115d1227c7c52dbba>
>>> to optimise performance. Specifically it gives this series of errors:
>>> 
>>> Compiling
>>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c
>>> ERROR: compile failed while processing c:/couchdb/src/couch: rebar_abort
>>> Microsoft (R) C/C++ Optimizing Compiler Version 18.00.31101 for x86
>>> Copyright (C) Microsoft Corporation.  All rights reserved.
>>> 
>>> cl : Command line warning D9002 : ignoring unknown option '-fno-common'
>>> couch_ejson_compare.c
>>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(44) :
>>> warnin
>>> g C4431: missing type specifier - int assumed. Note: C no longer supports
>>> defaul
>>> t-int
>>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(44) :
>>> error
>>> C2054: expected '(' to follow '__thread'
>>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(44) :
>>> error
>>> C2085: 'collator' : not in formal parameter list
>>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(44) :
>>> error
>>> C2143: syntax error : missing ';' before '='
>>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(58) :
>>> warnin
>>> g C4255: 'get_collator' : no function prototype given: converting '()' to
>>> '(void
>>> )'
>>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(62) :
>>> warnin
>>> g C4255: 'get_collator' : no function prototype given: converting '()' to
>>> '(void
>>> )'
>>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(66) :
>>> error
>>> C2065: 'collator' : undeclared identifier
>>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(66) :
>>> warnin
>>> g C4047: '!=' : 'int' differs in levels of indirection from 'void *'
>>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(67) :
>>> error
>>> C2065: 'collator' : undeclared identifier
>>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(67) :
>>> warnin
>>> g C4047: 'return' : 'UCollator *' differs in levels of indirection from
>>> 'int'
>>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(70) :
>>> error
>>> C2065: 'collator' : undeclared identifier
>>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(70) :
>>> warnin
>>> g C4047: '=' : 'int' differs in levels of indirection from 'UCollator *'
>>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(73) :
>>> error
>>> C2065: 'collator' : undeclared identifier
>>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(73) :
>>> warnin
>>> g C4047: 'function' : 'UCollator *' differs in levels of indirection from
>>> 'int'
>>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(73) :
>>> warnin
>>> g C4024: 'ucol_close_55' : different types for formal and actual
>>> parameter 1
>>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(78) :
>>> error
>>> C2065: 'collator' : undeclared identifier
>>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(78) :
>>> warnin
>>> g C4047: '=' : 'UCollator *' differs in levels of indirection from 'int'
>>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(84) :
>>> error
>>> C2065: 'collator' : undeclared identifier
>>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(84) :
>>> warnin
>>> g C4047: 'return' : 'UCollator *' differs in levels of indirection from
>>> 'int'
>>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(256)
>>> : warni
>>> ng C4127: conditional expression is constant
>>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(296)
>>> : warni
>>> ng C4127: conditional expression is constant
>>> 
>>> I'll look into this further tomorrow, but someone more knowledgeable may
>>> immediately know what the problem is and be able to suggest a solution.
>>> 
>>> Nick
>>> 
>>> 
>>> 

Re: Windows build failing on couch_ejson_compare.c

Posted by Nick North <no...@gmail.com>.
I see a couple of obvious solutions to this problem:


   1. Use the thread_local keyword rather than __thread. The semantics are
   not identical, so @davisp may have views on whether the behaviour is still
   OK. From the Windows build point of view, it would force us into building
   with Visual Studio 2015, which releases on 20 Jul, so we don't know whether
   it works with the rest of the build.
   2. Create a macro that expands to __declspec(thread) or __thread as
   appropriate. This feels less correct than the thread_local solution, but
   maybe better in the short term.

Does anyone have any thoughts on which is the better way forward? Or have
alternative suggestions?

Nick

On Fri, 17 Jul 2015 at 22:09 Nick North <no...@gmail.com> wrote:

> Answering my own question: looks as if Microsoft uses __declspec(thread)
> rather than __thread.
>
> Nick
>
> On Fri, 17 Jul 2015 at 22:02 Nick North <no...@gmail.com> wrote:
>
>> I'm trying out @wohali's Windows build, which went well up to compilation
>> of couch_ejson_compare.c, where it seems to be tripping up over the changes
>> in the recent commit
>> <https://github.com/apache/couchdb-couch/commit/6b38dfacbb97c5cb7c89a27115d1227c7c52dbba>
>> to optimise performance. Specifically it gives this series of errors:
>>
>> Compiling
>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c
>> ERROR: compile failed while processing c:/couchdb/src/couch: rebar_abort
>> Microsoft (R) C/C++ Optimizing Compiler Version 18.00.31101 for x86
>> Copyright (C) Microsoft Corporation.  All rights reserved.
>>
>> cl : Command line warning D9002 : ignoring unknown option '-fno-common'
>> couch_ejson_compare.c
>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(44) :
>> warnin
>> g C4431: missing type specifier - int assumed. Note: C no longer supports
>> defaul
>> t-int
>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(44) :
>> error
>> C2054: expected '(' to follow '__thread'
>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(44) :
>> error
>> C2085: 'collator' : not in formal parameter list
>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(44) :
>> error
>> C2143: syntax error : missing ';' before '='
>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(58) :
>> warnin
>> g C4255: 'get_collator' : no function prototype given: converting '()' to
>> '(void
>> )'
>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(62) :
>> warnin
>> g C4255: 'get_collator' : no function prototype given: converting '()' to
>> '(void
>> )'
>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(66) :
>> error
>> C2065: 'collator' : undeclared identifier
>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(66) :
>> warnin
>> g C4047: '!=' : 'int' differs in levels of indirection from 'void *'
>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(67) :
>> error
>> C2065: 'collator' : undeclared identifier
>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(67) :
>> warnin
>> g C4047: 'return' : 'UCollator *' differs in levels of indirection from
>> 'int'
>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(70) :
>> error
>> C2065: 'collator' : undeclared identifier
>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(70) :
>> warnin
>> g C4047: '=' : 'int' differs in levels of indirection from 'UCollator *'
>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(73) :
>> error
>> C2065: 'collator' : undeclared identifier
>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(73) :
>> warnin
>> g C4047: 'function' : 'UCollator *' differs in levels of indirection from
>> 'int'
>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(73) :
>> warnin
>> g C4024: 'ucol_close_55' : different types for formal and actual
>> parameter 1
>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(78) :
>> error
>> C2065: 'collator' : undeclared identifier
>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(78) :
>> warnin
>> g C4047: '=' : 'UCollator *' differs in levels of indirection from 'int'
>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(84) :
>> error
>> C2065: 'collator' : undeclared identifier
>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(84) :
>> warnin
>> g C4047: 'return' : 'UCollator *' differs in levels of indirection from
>> 'int'
>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(256)
>> : warni
>> ng C4127: conditional expression is constant
>> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(296)
>> : warni
>> ng C4127: conditional expression is constant
>>
>> I'll look into this further tomorrow, but someone more knowledgeable may
>> immediately know what the problem is and be able to suggest a solution.
>>
>> Nick
>>
>>
>>

Re: Windows build failing on couch_ejson_compare.c

Posted by Nick North <no...@gmail.com>.
Answering my own question: looks as if Microsoft uses __declspec(thread)
rather than __thread.

Nick

On Fri, 17 Jul 2015 at 22:02 Nick North <no...@gmail.com> wrote:

> I'm trying out @wohali's Windows build, which went well up to compilation
> of couch_ejson_compare.c, where it seems to be tripping up over the changes
> in the recent commit
> <https://github.com/apache/couchdb-couch/commit/6b38dfacbb97c5cb7c89a27115d1227c7c52dbba>
> to optimise performance. Specifically it gives this series of errors:
>
> Compiling
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c
> ERROR: compile failed while processing c:/couchdb/src/couch: rebar_abort
> Microsoft (R) C/C++ Optimizing Compiler Version 18.00.31101 for x86
> Copyright (C) Microsoft Corporation.  All rights reserved.
>
> cl : Command line warning D9002 : ignoring unknown option '-fno-common'
> couch_ejson_compare.c
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(44) :
> warnin
> g C4431: missing type specifier - int assumed. Note: C no longer supports
> defaul
> t-int
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(44) :
> error
> C2054: expected '(' to follow '__thread'
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(44) :
> error
> C2085: 'collator' : not in formal parameter list
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(44) :
> error
> C2143: syntax error : missing ';' before '='
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(58) :
> warnin
> g C4255: 'get_collator' : no function prototype given: converting '()' to
> '(void
> )'
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(62) :
> warnin
> g C4255: 'get_collator' : no function prototype given: converting '()' to
> '(void
> )'
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(66) :
> error
> C2065: 'collator' : undeclared identifier
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(66) :
> warnin
> g C4047: '!=' : 'int' differs in levels of indirection from 'void *'
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(67) :
> error
> C2065: 'collator' : undeclared identifier
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(67) :
> warnin
> g C4047: 'return' : 'UCollator *' differs in levels of indirection from
> 'int'
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(70) :
> error
> C2065: 'collator' : undeclared identifier
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(70) :
> warnin
> g C4047: '=' : 'int' differs in levels of indirection from 'UCollator *'
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(73) :
> error
> C2065: 'collator' : undeclared identifier
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(73) :
> warnin
> g C4047: 'function' : 'UCollator *' differs in levels of indirection from
> 'int'
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(73) :
> warnin
> g C4024: 'ucol_close_55' : different types for formal and actual parameter
> 1
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(78) :
> error
> C2065: 'collator' : undeclared identifier
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(78) :
> warnin
> g C4047: '=' : 'UCollator *' differs in levels of indirection from 'int'
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(84) :
> error
> C2065: 'collator' : undeclared identifier
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(84) :
> warnin
> g C4047: 'return' : 'UCollator *' differs in levels of indirection from
> 'int'
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(256) :
> warni
> ng C4127: conditional expression is constant
> c:/couchdb/src/couch/priv/couch_ejson_compare/couch_ejson_compare.c(296) :
> warni
> ng C4127: conditional expression is constant
>
> I'll look into this further tomorrow, but someone more knowledgeable may
> immediately know what the problem is and be able to suggest a solution.
>
> Nick
>
>
>