- Correctly handle unsigned values - Correctly handle return values on big endian platforms (GH#38) - Correctly handle absolute paths on Cygwin (GH#39) (thanks, @plicease!)
When I originally did the system lib check, I didn't think I would be using pkg-config on Windows, but I actaully managed to get it to work, and this will save me a lot of time not having to run configure every time I need to run dzil test.
Neither __BYTE_ORDER nor __BIG_ENDIAN seem to be defined on Windows, so it was selecting the big-endian path instead of the intended little-endian path.
In cygwin land there are POSIX and windows paths, LoadLibrary requires a windows path since it is not a cygwin function, but FFI::Raw -> new() should be able to handle a absolute POSIX path, so for Cygwin only, convert the POSIX path to windows before attempting LoadLibrary.
Installing ExtUtils::PkgConfig requires that pkg-config be in the PATH, which breaks down on some systems that might otherwise work. This allows one to use the system libffi on cygwin, where the libffi headers are not in /usr/include. It may help on some other platforms as well.
- Import FFI::Raw::Ptr in FFI::Raw to avoid a bug in perl < 5.10.1 (GH#23) (thanks, @plicease!) - Require perl >= 5.10 - Add boolean override for FFI::Raw objects (GH#28) (thanks, @calid!) - Fix build on non-threaded perl (like OpenBSD's) (GH#29) (thanks, @plicease!) - Use system libffi if available (GH#30) (GH#32) (thanks, @plicease!) - Allow resolving functions in the main program (GH#33) (thanks, @plicease!)
Passing in NULL as the library name to dlopen allows you to search the current executable and its loaded dynamic libraries. There is no equivalent to this in Windows, so emulate the behavior using psapi.
The Unixy dl* interfaces are actually just wrappers around the windows interfaces on Cygwin anyway. For finer grain control in windows use the windows interface