From 4b0e6c2d358c5cda9274e38eb0327fd68ef5e9b6 Mon Sep 17 00:00:00 2001 From: Uladzimir Karpenka Date: Wed, 24 Jun 2026 17:28:50 +0300 Subject: [PATCH] fix: link libfec via {$LINKLIB fec} so symbols resolve on Darwin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- BeaconFEC.pas | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/BeaconFEC.pas b/BeaconFEC.pas index c7f1550..3321aea 100644 --- a/BeaconFEC.pas +++ b/BeaconFEC.pas @@ -74,10 +74,15 @@ type implementation // ---------------- libfec bindings (Karn) ---------------- -// Динамическая (load-time) линковка против разделяемой libfec — как WDSP/IIO. +// Динамическая (load-time) линковка против разделяемой libfec — как WDSP. // libfec ставится отдельно на каждой ОС (Linux: make install из исходников; -// Windows/macOS — отдельная сборка). НЕ статический {$LINKLIB}: на Arch системный -// libfec.a собран с LTO (slim-объекты без машинного кода) и не линкуется обычным ld. +// Windows/macOS — отдельная сборка). +// +// {$LINKLIB fec} обязателен: одни лишь `external FEC_LIB` на функциях НЕ передают +// библиотеку линкеру (ld) на FPC/Darwin — символы остаются undefined. Точно так +// же работает WDSP ({$linklib wdsp}). Это НЕ форсирует статику: при наличии и +// libfec.dylib, и libfec.a в пути поиска ld предпочитает .dylib (как для wdsp). +{$LINKLIB fec} const {$IFDEF WINDOWS} FEC_LIB = 'libfec.dll';