fix: link libfec via {$LINKLIB fec} so symbols resolve on Darwin

external FEC_LIB on the function decls alone does not register the
library with ld on FPC/Darwin — viterbi27/rs_8 symbols stayed
undefined at link time. Mirror the working WDSP pattern ({$linklib
wdsp}). This is not static linking: ld prefers libfec.dylib over .a
when both are in the search path.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Uladzimir Karpenka
2026-06-24 17:28:50 +03:00
co-authored by Claude Opus 4.8
parent 3612f32199
commit 4b0e6c2d35
+8 -3
View File
@@ -74,10 +74,15 @@ type
implementation implementation
// ---------------- libfec bindings (Karn) ---------------- // ---------------- libfec bindings (Karn) ----------------
// Динамическая (load-time) линковка против разделяемой libfec — как WDSP/IIO. // Динамическая (load-time) линковка против разделяемой libfec — как WDSP.
// libfec ставится отдельно на каждой ОС (Linux: make install из исходников; // libfec ставится отдельно на каждой ОС (Linux: make install из исходников;
// Windows/macOS — отдельная сборка). НЕ статический {$LINKLIB}: на Arch системный // Windows/macOS — отдельная сборка).
// libfec.a собран с LTO (slim-объекты без машинного кода) и не линкуется обычным ld. //
// {$LINKLIB fec} обязателен: одни лишь `external FEC_LIB` на функциях НЕ передают
// библиотеку линкеру (ld) на FPC/Darwin — символы остаются undefined. Точно так
// же работает WDSP ({$linklib wdsp}). Это НЕ форсирует статику: при наличии и
// libfec.dylib, и libfec.a в пути поиска ld предпочитает .dylib (как для wdsp).
{$LINKLIB fec}
const const
{$IFDEF WINDOWS} {$IFDEF WINDOWS}
FEC_LIB = 'libfec.dll'; FEC_LIB = 'libfec.dll';