Pasta é uma biblioteca C ++ que abstrai a Chag de ferramentas do compilador CLANG e fornece acesso detalhado aos artefatos de compilação usando APIs que refletem as disponíveis em Clang. Massas tenta atingir os seguintes objetivos:
Forneça um conjunto de APIs de linha de base que seja relativamente estável e não exige que alguém realmente dependa diretamente dos cabeçalhos/bibliotecas do CLANG, permitindo assim um modelo de distribuição substancialmente mais fácil.
Gerencie corretamente a memória para todos os objetos fornecidos através da API. Não é preciso se preocupar com a vida útil do objeto ao usar macarrão.
Forneça informações/acesso adicionais. As APIs nativas de Clang não fornecem informações detalhadas de simplificação de token. Não se pode pedir os tokens associados a um nó AST, por exemplo. A massa tenta resolver isso, entre outros problemas semelhantes.
Primeiro, atualize a aptidão e instale as dependências da linha de base, por exemplo, git , cmake , ninja e seu compilador de escolha (lembre -se de que ele precisa suportar C ++ 20). É útil usar o mesmo compilador em todos os subconjuntos para evitar alguns problemas de alcance. Se você estiver usando o MacOS, recomendamos a instalação de homebrew e garantir que você tenha o Python 3.9 instalado, juntamente com um cmake e ninja atualizados.
E finalmente para construir o próprio massas.
git clone https://github.com/trailofbits/pasta.git
mkdir -p pasta-build
cd pasta-build
cmake
-DCMAKE_BUILD_TYPE=Release
-DPASTA_ENABLE_INSTALL=ON
-GNinja
../pasta
ninja install No MacOS, pode ser necessário especificar manualmente o compilador CLANG. Você não pode, no entanto, apenas especificar clang ou clang++ , porque o vcpkg tentará assumir o controle e produzir resultados incomuns. Portanto, você deve dar o caminho absoluto ao seu clang.
git clone https://github.com/trailofbits/pasta.git
mkdir -p pasta-build
cd pasta-build
cmake
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_C_COMPILER= ` which clang `
-DCMAKE_CXX_COMPILER= ` which clang++ `
-DPASTA_ENABLE_INSTALL=ON
-GNinja
../pasta
ninja installA massa é licenciada de acordo com a licença Apache 2.0. Grandes partes das massas são semi-autogeneradas das APIs de Clang. O CLANG também é licenciado no Apache 2.0, com exceções de LLVM.
Esta pesquisa foi desenvolvida com financiamento da Agência de Projetos de Pesquisa Avançada de Defesa (DARPA). As opiniões, opiniões e/ou descobertas expressas são as do autor e não devem ser interpretadas como representando as opiniões ou políticas oficiais do Departamento de Defesa ou do governo dos EUA.
Declaração de distribuição A - aprovada para liberação pública, distribuição ilimitada