Hmm...
Okay, well, I've gotten a LibReSIDFP.DLL to compile using MSYS and MinGW. Its
rather hideous though because you need a few other supporting DLLs and they are
relatively huge.
Still, it works alright. For some reason, I couldn't get min to define
correctly and I'm not sure how you enable the MMX intrinsics so I replaced the
min call with the declaration (in two spots) and disabled MMX.
This is the command-line I used:
g++ -shared -I src -I src/resample -Wp,-DLIBRESIDFP_EXPORTS LibReSIDFP.cpp
src/*.cpp src/resample/*.cpp -o LibReSIDFP.dll
I successfully used strip to reduce the size but its still twice the size of
the MSVC version (not including the dependent DLLs but I'm guessing that the
MSVC one relies on DLLs already included with Windows).
I had to change the way that LibReSIDFP.h managed the LIBRESIDFP_EXPORTS define
and stdafx.h like so:
#ifdef _MSC_VER
#include "stdafx.h"
#endif
#include "siddefs-fp.h"
#ifdef LIBRESIDFP_EXPORTS
#ifdef _MSC_VER
#define LIBRESIDFP_API __declspec(dllexport)
#else
#define LIBRESIDFP_API __attribute__((__visibility__("default")))
#endif
#else
#ifdef _MSC_VER
#define LIBRESIDFP_API __declspec(dllimport)
#else
#define LIBRESIDFP_API
#endif
#endif
I guess for Linux and MacOS you change LibReSIDFP.dll with LibReSIDFP.so on the
command-line.
I also had to remove the leading '_' in the import names in Pascal. For some
reason, MSVC prepends a '_' for names in 32 bit but GCC does not.
I'm disappointed about the MMX intrinsics. Without them, the sound quality is
degraded in the resampler.
I'll try LibSIDPlay.dll next.
--- SoupGate-Win32 v1.05
* Origin: Agency HUB, Dunedin - New Zealand | FidoUsenet Gateway (3:770/3)
|