Construindo e usando uma cadeia de ferramentas llvm pura para c ++ no linux

Supondo que isso seja possível, alguém poderia me dizer, como eu tenho que configurar o cmake build para criar uma cadeia de ferramentas llvm "pura" no ubuntu-16.04 que consiste em

clanglldlibc ++libc ++ abilibunwind (llvm)compiler-rtquaisquer outras peças que possam ser relevantes e estejam "prontas para produção"

O compilador resultante deve

seja o mais rápido possível (otimizações ativadas, sem declarações desnecessárias ou outras verificações no próprio binário do compilador)ser instalado em um diretório local separado (vamos chamá-lo<llvm_install>)não possui dependências para o llvm tolchain fornecido pelo gerenciador de pacotesuse libc ++, libc ++ abi etc por padrão.suporte aos desinfetantes (ubsan, endereço, memória, thread) (o que provavelmente significa que eu tenho que compilar o libc ++ asegundo tempo)

Até agora eu tenho clonado

llvm dehttp://llvm.org/git/llvm.git para dentro<llvm_root>clang dehttp://llvm.org/git/clang.git para dentro<llvm_root>/tools/clanglld dehttp://llvm.org/git/lld.git para dentro<llvm_root>/tools/lldcompilador-rt, libcxx, libcxxabi, libunwind dehttp://llvm.org/git/<project_name> para dentro<llvm_root>/projects/<project_name>

Em seguida, execute o ccmake em um diretório separado - tentei várias configurações, mas assim que tento algo mais sofisticado além de ativar as otimizações, quase sempre recebo algum tipo de erro de compilação. Infelizmente, ainda não encontrei uma maneira de exportar minhas alterações do ccmake, caso contrário, daria um exemplo com as configurações e o erro de acordo, mas estou mais interessado em uma prática recomendada do que em uma correção nas minhas configurações de teste.

Pontos de bônus: por padrão, isso deve ser construído com a cadeia de ferramentas g ++ padrão, mas eu também estaria interessado em uma construção de dois estágios, se isso melhorar o desempenho da cadeia de ferramentas final (por exemplo, usando LTO).

Btw .: A idéia toda veio de assistir a conversa de Chandler
Pacific ++ 2017: Chandler Carruth "LLVM: Uma cadeia de ferramentas C ++ moderna e aberta"

questionAnswers(1)

yourAnswerToTheQuestion