OberonCore
https://forum.oberoncore.ru/

Управление сборкой
https://forum.oberoncore.ru/viewtopic.php?f=157&t=6628
Страница 1 из 1

Автор:  Дмитрий Дагаев [ Воскресенье, 28 Июнь, 2020 11:40 ]
Заголовок сообщения:  Управление сборкой

Получение исполняемых файлов в МультиОберона осуществляется поэтапно:
1. Компиляция в файлы модулей:
.ocf - для Omb BlackBox бэкенда;
.c .h - для Omf OFront бэкенда;
.ll .bc - для Oml LLVM бэкенда.
2. Получение объектных файлов
с помощью cl/gcc/clang - для Omf OFront;
с помощью llc - для Oml LLVM.
3. Линковка в исполняемый файл.

Этапы 2 и 3 требуют явного перечисления списка всех импортируемых модулей. Для хранения данной информации, а также дополнительной информации по ограничениям используемых модулей добавлены, помимо файлов .osf, также файлы .ouf в каталоги Sym,Sfwe,Sfwr,...
Эти файлы генерятся автоматически компилятором.

Автор:  Дмитрий Дагаев [ Воскресенье, 28 Июнь, 2020 11:44 ]
Заголовок сообщения:  Re: Управление сборкой

Для сборки OmtestHelloWorld.exe бэкендом BlackBox требуются 2 команды:
Код:
Bbwe\ombsh co -odc OmtestHelloWorld
Bbwe\ombsh link -r OmtestHelloWorld

Первая компилирует из файла .odc.
Вторая линкует с опцией рекурсии.

Информация об используемых модулях доступна через команду траверса trav:
Код:
c:\suok5\test\Mob>Bbwe\ombsh trav OmtestHelloWorld
OmtestHelloWorld
  Runner
    SYSTEM
    ?c:\suok5\test\Mob/System/Sbwe/SYSTEM.ouf
    Kernel
    ?c:\suok5\test\Mob/System/Sbwe/Kernel.ouf
    OStrings
      Strings
      ?c:\suok5\test\Mob/System/Sbwe/Strings.ouf
      Math
      ?c:\suok5\test\Mob/System/Sbwe/Math.ouf
    -OStrings
    OLog
      Log
      ?c:\suok5\test\Mob/System/Sbwe/Log.ouf
    -OLog
    Api
    -Api [KERNEL32.dll]
  -Runner
-OmtestHelloWorld

Автор:  Дмитрий Дагаев [ Воскресенье, 28 Июнь, 2020 11:48 ]
Заголовок сообщения:  Re: Управление сборкой

Для сборки OmtestHelloWorld.exe бэкендом Omf OFront требуются 3 команды:
Код:
Bfwe\omfsh co -odc :OmtestHelloWorld
Bfwe\omfsh build -r OmtestHelloWorld
Bfwe\omfsh link -r OmtestHelloWorld

Первая компилирует и создаем main опция : .
Вторая создает объектники.
Третья линкует с опцией рекурсии.

Автор:  Дмитрий Дагаев [ Воскресенье, 28 Июнь, 2020 12:09 ]
Заголовок сообщения:  Re: Управление сборкой

Сборка с Oml LLVM аналогична.

Во всех сборках предусмотрен флаг -n new, который производит частичную перекомпиляцию объектников. Ибо полная тащит за собой список импорта:
Код:
c:\suok5\test\Mob>Blwr\omlsh build -r OmtestHelloWorld
===== obj-building OStrings ... done
===== obj-building OLog ... done
===== obj-building HostConLog ... done
===== obj-building Kernel ... done
===== obj-building Runner ... done
===== obj-building OmtestHelloWorld ... done


Это - экономия, т.к. сборка с оптимизацией gcc, llc занимает время.

Пример:
Код:
c:\suok5\test\Mob>Blwr\omlsh co -odc :OmtestHelloWorld
oml:compiling c:\suok5\test\Mob/Omtest/Mod/HelloWorld.odc  >c:\suok5\test\Mob/Omtest/Clwr/OmtestHelloWorld .ll=9744 .bc=3428

c:\suok5\test\Mob>Blwr\omlsh build -r -n OmtestHelloWorld
===== obj-building OmtestHelloWorld ... done

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/