[prev in list] [next in list] [prev in thread] [next in thread] 

List:       apache-httpd-dev
Subject:    Re: Mod_brotli, C89 & NetWare - finale
From:       NormW <normw () gknw ! net>
Date:       2016-11-29 0:03:04
Message-ID: 583CC5B8.6060004 () gknw ! net
[Download RAW message or body]

G?M
There is a downside to fibbing! :-)
CC   D:\Projects\srcs\brotli-master/enc/static_dict.c
### mwccnlm Compiler:
#      In: D:\Projects\srcs\brotli-master\include\brotli\types.h
#    From: D:\Projects\srcs\brotli-master\enc\static_dict.c
# ---------------------------------------------------------
#      18: typedef __int8 int8_t;
#   Error:                ^^^^^^
#   ';' expected
But having got a new bone I'll dig further.
Norm

On 29/11/2016 3:53 AM, Gregg Smith wrote:
> Hi Norm,
>
> Actually, log2 is not needed. It's cmake that forces it on us.
> Look at fast_log.h line 131
>
> #if (defined(_MSC_VER) && _MSC_VER <= 1700) || \
>      (defined(__ANDROID_API__) && __ANDROID_API__ < 18)
>    /* Visual Studio 2012 and Android API levels < 18 do not have the log2()
>     * function defined, so we use log() and a multiplication instead. */
>    return log((double)v) * LOG_2_INV;
> #else
>    return log2((double)v);
> #endif
>
> You may define _MSC_VER=1 at the command line when compiling and it
> should work for you.  In CMakeList.txt I just remove the check for
> log2(), lines 96-113, before using.
>
> Cheers,
> G
>
> On 11/27/2016 3:38 AM, NormW wrote:
>> G/E,
>> After some head scratching/bashing and research:
>>
>> Brotli.lib has several places that use log2(), which was not defined
>> in C89 (AFAIK), although the function could be kludged easily enough
>> as it uses C89 functions in its own routine.
>>
>> Although NetWare was derived using a C89 compiler, its math.h shows
>> signs of its early development, in that a number of MATHs macro's
>> resolve not to values but to LibC functions, which means they can't be
>> used in 'const' assignments... hence const XXXX = INFINITY fails to
>> compile. (It was on the ToDo list it seems but the ship sank before it
>> made the top of the list.) Tweaking math.h while possible, doesn't
>> make for much sense, but mod_brotli does at least compile without
>> issue; well almost.
>>
>> The only C89 issue (AFAICT) is the following patch, which should allow
>> any other C89 (with a more up to date OS ;-( ) to compile it, which
>> NetWare's CW can do for the likes of Apache2, Lua, Zlib, NGHTTP2, OSSL
>> and a bunch of others.
>>
>>> Index: modules/filters/mod_brotli.c
>>> ===================================================================
>>> --- modules/filters/mod_brotli.c    (revision 1771539)
>>> +++ modules/filters/mod_brotli.c    (working copy)
>>> @@ -240,7 +240,7 @@
>>>              output = BrotliEncoderTakeOutput(ctx->state, &output_len);
>>>              ctx->total_out += output_len;
>>>
>>> -            b = apr_bucket_transient_create(output, output_len,
>>> +            b = apr_bucket_transient_create((const char *)output,
>>> output_len,
>>> ctx->bb->bucket_alloc);
>>>              APR_BRIGADE_INSERT_TAIL(ctx->bb, b);
>>>
>>> @@ -289,7 +289,7 @@
>>>          output = BrotliEncoderTakeOutput(ctx->state, &output_len);
>>>          ctx->total_out += output_len;
>>>
>>> -        b = apr_bucket_heap_create(output, output_len, NULL,
>>> +        b = apr_bucket_heap_create((const char *)output, output_len,
>>> NULL,
>>> ctx->bb->bucket_alloc);
>>>          APR_BRIGADE_INSERT_TAIL(ctx->bb, b);
>>>      }
>> Norm
>>
>

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic