Смысл утилиты в том, чтоб разрезать *.С сорец на отдельные файлы, каждый из которых содержит функцию или массив. Дело в том, что SDCC при компиляции из либы копирует весь код, содержавшийся в исходном модуле компиляции, даже если функция или константный массив никем не используются. Поэтому имеет смысл создавать либу, где каждая функция будет лежать в отдельном блоке.
В каждом файле дублируются #include "...", если таковые были задетекчены по ходу сорца.
Парсер синтаксиса сделан тупейшим образом, поэтому возможны сюрпризы.
Пример батника для создания либы:
- Code: Select all
sdcc-lib-split.exe ft812dl.c >>lib.lst
sdcc-lib-split.exe ft812func.c >>lib.lst
sdcc-lib-split.exe ft812math.c >>lib.lst
for /f %%i in (lib.lst) do (
echo %%i
sdcc -mz80 --std-sdcc11 --opt-code-speed -c %%i -o %%i.rel
sdcclib ft812.lib %%i.rel
)