I can vaguely remember that you don't need to link via frameworks IF you specify the full external possibility:

All FPC unix libs are linked as follows (e.g. for gtk 1.2)

const
{$ifdef darwin}
libname = 'gtk-1.2.0';
{$linklib gtk-1.2.0}
[$endif}
{$ifdef freebsd}
libname = 'gtk12';
{$linklib gtk12}
{$endif}
{$ifdef linux}
libname = 'gtk-1.2'; // harder, multuiple distro's and convention
{$linklib gtk}
{$endif}
{$ifdef win32}
libname = 'gtk-1.2'; // harder, multuiple distro's and convention
{$linklib libgtk-0} // windows doesn't prefix lib by default, because
// it is not the default convention on windows
{$endif}

Then all functions are declared like this:

function someskeleton(a,b:integer); cdecl; external libname name 'someskeleton';

so WITH name and WITH libraryname part. FPC inserts a underscore if accessing the C namespace needs it.

I just got a laptop from work, and am creating a FreeBSD partition on it as I write , I'll try to retest Jedi-SDL header with a modern (5.3) BSD system in the coming weeks