Спасибо за предложение - я протестирую ваш скрипт сборки как можно скорее и сообщу. В общем, SO предпочитает это, если вы не просто ссылаетесь на внешний сайт, но и включаете важные части в свой ответ. Поэтому я бы порекомендовал вам добавить команды сборки в ваш ответ здесь.

олагая, что это возможно, кто-то может сказать мне, как я должен настроить сборку cmake для создания «чистого» набора инструментов llvm на Ubuntu-16.04, состоящего из

лязгДНУLibc ++Libc ++ ABIlibunwind (llvm)Компилятор-к.т.любые другие части, которые могут быть актуальны и "готовы к производству"

Полученный компилятор должен

быть максимально быстрым (оптимизация включена, никаких ненужных утверждений или других проверок в самом двоичном файле компилятора)быть установленным в отдельном локальном каталоге (назовем его<llvm_install>)не имеют зависимости от llvm tolchain, предоставляемого менеджером пакетовпо умолчанию используйте libc ++, libc ++ abi и т. д.поддержка дезинфицирующих средств (ubsan, address, memory, thread) (что, вероятно, означает, что я должен скомпилировать libc ++ aвторой раз)

Пока что я клонировал

отhttp://llvm.org/git/llvm.git в<llvm_root>лязг изhttp://llvm.org/git/clang.git в<llvm_root>/tools/clangлдл изhttp://llvm.org/git/lld.git в<llvm_root>/tools/lldcompiler-rt, libcxx, libcxxabi, libunwind изhttp://llvm.org/git/<project_name> в<llvm_root>/projects/<project_name>

Затем запустите ccmake в отдельном каталоге - я пробовал различные настройки, но как только я пробую что-то более необычное, чем включение оптимизации, я почти всегда получаю какую-то ошибку сборки. К сожалению, мне еще не удалось найти способ экспортировать мои изменения из ccmake, иначе я бы дал вам пример с настройками и соответствующей ошибкой, но в любом случае меня больше интересует лучшая практика, чем исправление моих тестовых конфигураций.

Бонусные баллы: по умолчанию это должно собираться с использованием стандартного набора инструментов g ++, но я также был бы заинтересован в двухэтапном построении, если это улучшает производительность финального набора инструментов (например, с помощью LTO).

Кстати: вся идея пришла от просмотра выступления Чендлера
Pacific ++ 2017: Чендлер Каррут, «LLVM: современный открытый инструментарий C ++»

Ответы на вопрос(1)

Ваш ответ на вопрос