[PATCH] winemp3.acm: always dynamically load libmpg123 stuff

Marcus Meissner marcus at jet.franken.de
Mon Mar 1 01:23:30 CST 2010


On Sun, Feb 28, 2010 at 03:11:22PM -0800, Chris Robinson wrote:
> On Sunday 28 February 2010 1:13:44 pm Marcus Meissner wrote:
> > Hi,
> > 
> > Copy in the mpg123.h header from the library so we do not need it for
> > building. (it is also LPGL)
> > 
> > Dynamically link from libmpg123.so.0.
> > (Chances are very good that ABI stays stable.)
> > 
> > This allows me providing a MP3 capable Wine build for openSUSE without
> > actually having libmpg123 in the openSUSE buildservice for building.
> > 
> > 
> > I was not able to test it though, anyone have a working winemp3.acm
> > using testcase :(
> 
> This won't work, unfortunately. The mpg123.h header does some evil macro hacks 
> to forward certain functions (eg. mpg123_seek, mpg123_feedseek) to 64-bit 
> variants when _FILE_OFFSET_BITS is 64 due to using off_t. The functions the 
> lib has depends on whether it was built with _FILE_OFFSET_BITS=64 or not, and 
> the macros won't affect the strings passed to wine_dlsym.

A library should be ever built against one model and not change function ABI
depending on a preprocessor define ... This will just break in funny ways.

In libmpg123 1.10.0 it does not do evil hacks for me, it has #if 0 around
these parts (see the header included in the patch). Seems to have been an earlier
try.

Is this different in newer / other versions? Then I have to think about something :(

> It also looks like the lib isn't unloaded with the acm.

Yeah, need to fix this.

Ciao, Marcus



More information about the wine-devel mailing list