httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gregg Smith <...@gknw.net>
Subject Re: Mod_brotli, C89 & NetWare - finale
Date Mon, 28 Nov 2016 16:53:47 GMT
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
>


Mime
View raw message