[oi-dev] Squeak and libjpeg8-turbo
stes@PANDORA.BE
stes at telenet.be
Sat Jan 1 12:16:41 UTC 2022
Sorry I meant /usr/include/jpeglib.h ...
Anyway this file points to the libjpeg6-ijg implementation.
I'd recommend for anyone testing libjpeg8-turbo to temporarily remove /usr/include/jpeglib.h,
so to be 100% sure that somehow /usr/include/jpeglib.h is not included.
The sizeof of struct jpeg_decompress_struct and struct jpeg_compress_struct are different,
between the JPEG_IMPLEMEN leading to hard to track allocation failures.
In the case of Squeak there is a Smalltalk primitive that returns the sizeof the underlying C structs,
and this must be correct obviously when changing from e.g. libjpeg6-ijg to libjpeg9-ijg or libjpeg8-turbo.
David Stes
----- Op 1 jan 2022 om 12:20 schreef stes stes at telenet.be:
> I have meanwhile found out what the problem was with Squeak and libjpeg9-ijg and
> libjpeg8-turbo.
>
> Basically this is Squeak and OpenIndiana specific.
>
> The header file
>
> /usr/include/libjpeg.h
>
> is a link to libjpeg6-ijg and that is why it only worked with libjpeg6-ijg.
>
> I have in my Makefile for Squeak , CPPFLAGS set to add -I flag for the correct
> JPEG_IMPLEMEN include directory,
> but the Squeak configure script ignores or does not respect the CPPFLAGS, and
> setting the -I flag in the CFLAGS,
> fixes the issue.
>
> It's important to use the right libjpeg.h header file.
>
> The C struct size is different for some structs's like jpegcompress or
> jpegdecompress
> and these sizes differ between libjpeg6-ijg, libjpeg8-turbo and libjpeg9-ijg.
>
> As soon as the right #include is used, Squeak links and opens JPEG files using
> libjpeg8-turbo and libjpeg9-ijg as well.
>
> To debug this, it helped to
>
> rm /usr/include/libjpeg.h
>
> Perhaps there could also be a IPS mediator to select which libjpeg
> implementation is to be used.
>
> Regards,
> David Stes
More information about the oi-dev
mailing list