Обновление README.md, установка интерфейсного файла lccrt.h при 'make install'.

This commit is contained in:
stepanov_pa 2023-01-27 04:20:38 +03:00
parent 6fa132aeb4
commit ed7f317b07
2 changed files with 7 additions and 5 deletions

View File

@ -20,7 +20,9 @@ set( lccrt_SOURCE
add_library( lccrt SHARED ${lccrt_SOURCE})
target_include_directories( lccrt PRIVATE include include/internal)
set_target_properties( lccrt PROPERTIES PUBLIC_HEADER "include/lccrt.h")
install( TARGETS lccrt
LIBRARY DESTINATION lib
PUBLIC_HEADER DESTINATION include
RUNTIME DESTINATION bin)

View File

@ -4,17 +4,17 @@
## Промежуточное представление lccrt-IR.
Промежуточное представление lccrt-IR ориентировано на модули полученные из Си-подобного языка. Изначально представление спроектировано как представление выполняющее транзитную функцию между представлением llvm-IR и EIR (компилятора lcc для e2k). Наличие дополнительного слоя в виде lccrt-IR позволяет сделать патч в llvm-project для e2k-платформы opensource-проектом. Внешние бэкенды подключаются как динамические плагины при инициализации библиотеки liblccrt.
Промежуточное представление lccrt-IR ориентировано на модули полученные из Си-подобного языка. Изначально представление спроектировано как представление выполняющее транзитную функцию между представлениями llvm-IR и EIR (из компилятора lcc для e2k). Наличие дополнительного слоя в виде lccrt-IR позволяет сделать патч в llvm-project для e2k-платформы opensource-проектом и предоставить открытое API для (закрытого) e2k-бэкенда. Внешние бэкенды подключаются как динамические плагины при инициализации библиотеки liblccrt.
Причем проект lccrt реализует самодостаточную библиотеку, формально не зависящую на уровне исходных кодов от других проектов. С этой точки зрения проект lccrt теоретически может рассматриваться как инструмент для преобразования и компиляции llvm-IR в другие IR'ы (предполагается вариант с libgccjit в качестве бэкенда), либо может выступать в качестве внешнего API (закрытого) оптимизирующего бэкенда для e2k-платформы в составе opensource-фронтендов отличных от llvm (если таковые возникнут на практике).
Проект lccrt реализует самодостаточную библиотеку, формально не зависящую на уровне исходных кодов от других проектов. С этой точки зрения проект lccrt теоретически может рассматриваться как инструмент для компиляции llvm-IR с помощью внешних бэкендов (предполагается вариант с libgccjit в качестве бэкенда), либо может выступать в качестве внешнего API для оптимизирующего e2k-бэкенда в составе opensource-фронтендов отличных от llvm (если таковые возникнут на практике).
В качестве тестового бэкенда может выступать lcbe-бэкенд (lib/lcbe), который преобразует lccrt-IR в компилируемый и исполняемый Си-код (разработка lcbe не завершена). В таком случае Си-код используется в качестве аналога target-ассемблера.
В качестве тестового бэкенда может выступать lcbe-бэкенд (lccrt/tools/lcbe), который преобразует lccrt-IR в компилируемый и исполняемый Си-код (разработка lcbe не завершена). В таком случае Си-код используется в качестве аналога target-ассемблера. Приниципиальной задачей, которая ставится перед lcbe-бэкендом, является задача получения минимальной замкнутой сборки при отсутствии бинарной версии e2k-бэкенда.
## Сборка.
* ``mkdir lccrt/build && cd lccrt/build``
* ``cmake ../ && make && make install``
## Использование.
## Применение.
* В трансляторе llvm-IR -> EIR (llvm-часть транслятора: https://gitflic.ru/project/e2khome/llvm-project-e-2-k)
* В трансляторе llvm-IR -> EIR (llvm-часть транслятора: [llvm-project-e2k](https://gitflic.ru/project/e2khome/llvm-project-e-2-k))