From ed7f317b07ca01f4b1e93083e1d42c5da7df57da Mon Sep 17 00:00:00 2001 From: stepanov_pa Date: Fri, 27 Jan 2023 04:20:38 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20README.md,=20=D1=83=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D0=BA=D0=B0=20=D0=B8=D0=BD=D1=82=D0=B5=D1=80?= =?UTF-8?q?=D1=84=D0=B5=D0=B9=D1=81=D0=BD=D0=BE=D0=B3=D0=BE=20=D1=84=D0=B0?= =?UTF-8?q?=D0=B9=D0=BB=D0=B0=20lccrt.h=20=D0=BF=D1=80=D0=B8=20'make=20ins?= =?UTF-8?q?tall'.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 2 ++ README.md | 10 +++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0cf3000..2b3c181 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) diff --git a/README.md b/README.md index fd5f82f..72c581f 100644 --- a/README.md +++ b/README.md @@ -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))