Как минимизировать встроенный размер LLVM/Clang?
Я новичок в LLVM и пытаюсь использовать его для разработки компилятора, который компилирует C в битовый код, подобный WebAssembly. Сначала я начинаю создавать проект LLVM.
Одна из основных проблем - слишком большой размер проекта LLVM / Clang. Мне нужны только инструменты, которые помогают компилировать C в wasm.
Emscripten - известный компилятор на основе LLVM. Согласно руководству на домашней Emscripten ( страницеhttps://emscripten.org/docs/building_from_source/index.html ), я использовал команду cmake в каталоге сборки следующим образом:
cmake ../llvm -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS='lld;clang' -DLLVM_TARGETS_TO_BUILD="WebAssembly" -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_TESTS=OFF
Эта команда предназначена для сборки lld и clang только с целью WebAssembly.
С помощью этой команды я получил каталог сборки объемом 2,6 ГБ. Но кажется, что он может быть меньше, потому что размер проекта emsdk составляет менее 1 ГБ. Очевидно, что разработчики emsdk создали только необходимые компоненты из проекта LLVM. Интересно, как они это сделали и какие компоненты выбрали. Есть ли у вас какие-либо идеи? Спасибо за внимание!