construir LLVM com CMake

variáveis específicas LLVM

LLVM_TARGETS_TO_ build:STRING Semicolon-separated list of objects to build, or all for building alltargets. Sensível a maiúsculas. Padrão para todos. Exemplo:-DLLVM_TARGETS_TO_BUILD="X86;PowerPC". LLVM_ BUILD_ tools: BOOL Build LLVM tools. Padrão ligado. Em qualquer caso, são estabelecidos objectivos para a construção de cada ferramenta. Você pode construir uma ferramenta separadamente, invocando o seu alvo. Por exemplo, você pode criar o llvm-como com um sistema baseado em Makefile executando o makellvm-como na raiz do seu directório de compilação. LLVM_ INCLUDE_ ferramentas:BOOL gera alvos de compilação para as ferramentas LLVM. Padrão ligado. Você pode usar esta opção para desativar a geração de alvos de compilação para as ferramentas LLVM. LLVM_ INSTALL_ BINUTILS_ ASYMLINKS: BOOL instala as ligações simbólicas dos nomes das ferramentas binutils para as ferramentas LLVM correspondentes.Por exemplo, ar será symlink para llvm-ar. LLVM_ INSTALL_ CCTOOLS_ ASYMLINKS: BOOL instala as ligações simbólicas dos nomes das ferramentas cctools para as ferramentas LLVM correspondentes.Por exemplo, a lipo será sinalizada para llvm-lipo. LLVM_ BUILD_EXAMPLES: BOOL Build LLVM examples. O padrão está desligado. Os alvos para a construção de cada exemplo são, em qualquer caso, gerados. Veja a documentação do LLVM_ BUILD_ tools acima para obter mais detalhes. LLVM_ INCLUDE_ examples: BOOL gerar metas de compilação para os exemplos LLVM. Padrão ligado. Você pode usar esta opção para desativar a geração de alvos de compilação para os exemplos LLVM. LLVM_ BUILD_TESTS: BOOL Build LLVM unit tests. O padrão está desligado. Os objectivos para a construção de cada unidade de ensaio são sempre gerados. Você pode construir um teste de unidade específica usando os objectivos definidos sob unitests, tais como Adtests, IRTests,SupportTests, etc. (Procurar poradd_llvm_unittestnas sub-pastas de unidades disponíveis para uma lista completa de testes unitários.) É possível construir todos os testesde unidade com as unidades-alvo. LLVM_ INCLUDE_ tests: BOOL Generate build targets for the LLVM unit tests. Padrão ligado. Você pode usar esta opção para desativar a geração de alvos de construção para os unittests LLVM. LLVM_ BUILD_BENCHMARKS: BOOL adiciona benchmarks à lista de alvos predefinidos. O padrão está desligado. LLVM_INCLUDE_BENCHMARKS: BOOL Generate build targets for the LLVM benchmarks. Padrão ligado. LLVM_ APPEND_ VC_REV: BOOL Embed version control revision info (git revision id).A versão info é fornecida pela macro

LLVM_REVISIONemllvm/include/llvm/Support/VCSRevision.h. Os programadores que usam o git que não precisam de informação de revisão podem desactivar esta opção para evitar a re-ligação da maioria dos Binaries após uma mudança de ramo. Padrão ligado. LLVM_ ENABLE_THREADS: BOOL Build com suporte de threads, se disponível. Padrão ligado. LLVM_ ENABLE_ UNWIND_ tables: BOOL activar as tabelas de desanuviamento no binário. A desativação de tabelas de desanuviamento pode reduzir a dimensão das bibliotecas. Padrão ligado. LLVM_ ENABLE_ assertions: BOOL activa as afirmações de código. O valor por omissão Está ligado se e apenas seCMAKE_BUILD_TYPEfor depuração. LLVM_ENABLE_EH: BOOL Build LLVM com suporte para tratamento de exceções. Isto é necessário se você desejar tolink contra bibliotecas LLVM e fazer uso de exceções de C++ em seu próprio codethat necessidade de propagar através de código LLVM. O padrão está desligado. LLVM_ ENABLE_ EXPENSIVE_ checks: BOOL active a verificação adicional cara em termos de tempo/memória. O padrão está desligado. LLVM_ ENABLE_IDE: BOOL diga ao sistema de compilação que está a ser usado um IDE. Isto, por sua vez, desaconselha a criação de determinados alvos do sistema de construção de conveniência, como os vários alvosinstall-*echeck-*, uma vez que o IDEs nem sempre lida bem com um grande número de alvos. Isto é geralmente autodetectado, mas pode ser configurado manualmente para controlar explicitamente a geração desses alvos. Onescenario onde uma substituição manual pode ser desejável é quando se utiliza a integração do CMake do Visual Studio2017, que não seria detectada como uma IDE de outra forma. LLVM_ ENABLE_ modules: BOOL Compile com módulos de cabeçalho Clang. LLVM_ ENABLE_PIC: BOOL adicione a bandeira-fPICà linha de comandos do compilador, se o compilador apoiar esta bandeira. Alguns sistemas, como o Windows, não precisam desta bandeira. Padrão ligado. LLVM_ENABLE_RTTI: BOOL Build LLVM com informação do tipo tempo de execução. O padrão está desligado. LLVM_ ENABLE_ warnings: BOOL Active Todos os avisos de compilador. Padrão ligado. LLVM_ ENABLE_ pedantic: BOOL activar o modo pedante. Isto desactiva extensões específicas do compilador, ifpossível. Padrão ligado. LLVM_ ENABLE_ Werror: BOOL parar e falhar a compilação, se um aviso de compilador for despoletado. O padrão está desligado. LLVM_ ABI_ BREAKING_CHECKS: texto usado para decidir se o LLVM deve ser construído com ABI breaking checks ou não. Os valores permitidos são: WITH_ASSERTS (default), FORCE_ON andFORCE_OFF. O WITH_ asserts liga o ABI a quebrar as verificações numa compilação activada porasserção. FORCE_ON(FORCE_OFF) activa-os (desligados), independentemente de as afirmações normais (baseadas em NDEBUG) serem ou não apresentadas. Uma versão do LLVM construída com o ABI breaking checksis não é compatível com uma versão construída sem ele. LLVM_ BUILD_32_BITS: BOOL Build 32-bit executables and libraries on 64-bit systems. Esta opção está disponível apenas em alguns sistemas Unix de 64 bits. O padrão está desligado. LLVM_TARGET_ARCH: STRING LLVM target to use for native code generation. Isto é necessário para JITgeneration. Ele é por omissão “host”, o que significa que ele deve escolher a arquitetura da máquina onde LLVM está sendo construída. Se estiver a fazer uma compilação cruzada, defina – a para o nome da arquitectura alvo. LLVM_TABLEGEN: STRING caminho completo para um executável nativo de TableGen (normalmente chamado

llvm-tblgen). Isto destina-se à compilação cruzada: se o utilizador definir esta variável, não será criado nenhum nativeTableGen. LLVM_ LIT_ARGS: argumentos de texto dados ao lit.make checkemake clang-testsão affected.By default,'-sv --no-progress-bar'on Visual C++ and Xcode,'-sv'onothers. LLVM_ LIT_ TOOLS_DIR: localização da localização das ferramentas GnuWin32 para os testes. Válido na máquina do Windows. Defaults to empty string, in which case lit will look for tools needed for tests (e.g.grep,sort, etc.) no seu % caminho%. Se o GnuWin32 não estiver na sua % PATH%, então poderá configurar esta variável para a pasta GnuWin32 para que o lit possa encontrar as ferramentas necessárias para os testes nessa pasta. LLVM_ENABLE_FFI: BOOL indica se o Interpretador LLVM estará ligado à biblioteca de interface de funcionalidades estrangeiras (libffi), a fim de permitir a chamada de funções externas.Se a biblioteca ou os seus cabeçalhos estiverem instalados numa localização personalizada, Poderá também definir as variáveis FFI_ INCLUDE_DIR andffi_ library_dir para as pastas onde o ffi.h E libffi.so pode ser encontrado, respectivamente. O padrão está desligado. LLVM_EXTERNAL_{CLANG,LLD, POLLY}_SOURCE_DIR:localização estas variáveis especificam a localização da pasta de origem dos projectos externalLLVM Clang, lld e Polly, respectivamente, em relação à pasta de topo. Se a subdiretoria em árvore para um projeto externo existir (por exemplo, llvm/tools/clang para Clang), então a variável correspondente não será usada. Se a variável para um projecto externo não indicar um caminho válido, então esse projecto não será construído. Projectos LLVM_ENABLE_PROJECTS:STRING Semicolon-separated list of projects to build, or all for building all(clang, libcxx, libcxabi, lldb, compiler-rt, lld, polly, etc) projects.Esta bandeira assume que os projetos são verificados lado a lado e não aninhados,ou seja, clang precisa ser em paralelo com llvm em vez de aninhado em llvm/ferramentas.Este recurso permite ter uma compilação para apenas LLVM e outra para clang+llvmusing o mesmo checkout fonte.A lista completa é:clang;clang-tools-extra;compiler-rt;debuginfo-tests;libc;libclc;libcxx;libcxxabi;libunwind;lld;lldb;openmp;parallel-libs;polly;pstlLLVM_EXTERNAL_PROJECTS: STRING Semicolon-separated list of additional external projects to build as part ofllvm. Para cada projecto LLVM_EXTERNAL_<nome>_SOURCE_DIR tem de ser específico com a localização do código-fonte do projecto. Exemplo:

-DLLVM_EXTERNAL_PROJECTS="Foo;Bar"-DLLVM_EXTERNAL_FOO_SOURCE_DIR=/src/foo-DLLVM_EXTERNAL_BAR_SOURCE_DIR=/src/bar. LLVM_USE_ OProfile: BOOL Enable building OProfile JIT support. O padrão está desligado. LLVM_PROFDATA_FILE: PATH to a profdata file to pass into clang’s-fprofile-instr-use flag. Isto só pode ser especificado se estiver a construir com o clang. LLVM_USE_ INTEL_ JITEVENTS: BOOL Enable building support for Intel JIT Events API. O padrão está desligado. LLVM_ ENABLE_ LIBPFM: BOOL activar a construção com a libpfm para suportar as medições do contador de hardware no LLVMtools.Padrão ligado. LLVM_ USE_PERF: BOOL Enable building support for Perf (linux profiling tool) JIT support. O padrão está desligado. LLVM_ ENABLE_ zlib: BOOL activar a construção com o zlib para suportar a compressão/descompressão nas Ferramentas LLVM.Padrão ligado. LLVM_ ENABLE_ DIA_ SDK: BOOL activar a compilação com o MSVC DIA SDK para o Suporte de depuração do PDB. Disponível apenas com MSVC. Padrão ligado. LLVM_USE_SANITIZER: STRING Define o Higienizador usado para construir binários LLVM e testes. Valores possíveisAddress,Memory,MemoryWithOrigins,Undefined,Thread,DataFlow, eAddress;Undefined. O valor por omissão é o texto vazio. LLVM_UBSAN_FLAGS:STRING define o conjunto de opções de compilação usadas para activar o UBSan. Apenas utilizado seLLVM_USE_SANITIZERcontiverUndefined. Isto pode ser usado para substituir o conjunto predefinido de opções do UBSan. LLVM_ENABLE_LTO: STRING Add-fltoor-flto=flags to the compile and link commandlines, enabling link-time optimization. Os valores possíveis são:Off,On,ThineFull. O padrão está desligado. LLVM_USE_LINKER: texto Adicionar-fuse-ld={name}à invocação da ligação. O valor possível depende do seu compilador, para clang o valor pode ser um caminho absoluto para o seu customlinker, caso contrário clang irá prefixar o nome comld.e aplicar a sua pesquisa usual. Por exemplo, para ligar LLVM com o linker de Ouro, cmake pode ser invadido com-DLLVM_USE_LINKER=gold. LLVM_ENABLE_LIBCXX:BOOL Se o host de compilador e vinculador suporta a stdlib bandeira, -stdlib=libc++ ispassed para invocações de ambos, de modo que o projeto é construído usando libc++em vez de stdlibc++. O padrão está desligado. LLVM_ STATIC_LINK_ CXX_STDLIB: BOOL ligação estática à biblioteca-padrão C++, se possível. Isto usa a bandeira ” – static-libstdc++”, mas um compilador clang host ligará estaticamente à libc++se usado em conjunto com a bandeira LLVM_ENABLE_LIBCXX. O padrão está desligado. LLVM_ ENABLE_ LLD:BOOL esta opção é equivalente a-DLLVM_USE_LINKER=lld, excepto durante um 2-stagebuild onde uma dependência é adicionada da primeira fase à segunda, garantindo que o lld é construído antes do stage2 começar. LLVM_PARALLEL_COMPILE_JOBS: texto Define o número máximo de tarefas de compilação simultâneas. LLVM_PARALLEL_LINK_ jobs: texto Define o número máximo de tarefas de ligação simultâneas. LLVM_ EXTERNALIZE_DEBUGINFO: BOOL gera ficheiros dSYM e remove executáveis e bibliotecas (apenas Darwin).O padrão está desligado. LLVM_USE_CRT_{target}: texto no Windows, Diz qual a versão da biblioteca de tempo de execução C (CRT) deve ser usada.Por exemplo, – DLLVM_USE_CRT_RELEASE=MT iria estaticamente ligar o CRT em Ferramentas e biblioteca theLLVM. LLVM_ INTEGRATED_CRT_ALLOC: PATH

no Windows, permite a incorporação de um alocador de tempo de execução C diferente nas LLVMtools e bibliotecas. Usando um alocador de lock-free, como os listados abaixo, diminui significativamente o tempo de ligação ThinLTO em cerca de uma ordem de magnitude. Ele também melhora os tempos de construção de clangs, em cerca de 5-10%. No momento, rpmalloc,snmalloc e mimalloc são suportados. Use o caminho para o git clone para selecionar o respectivo distribuidor, por exemplo:

$ D:\git> git clone https://github.com/mjansson/rpmalloc$ D:\llvm-project> cmake ... -DLLVM_INTEGRATED_CRT_ALLOC=D:\git\rpmalloc

esta bandeira precisa ser usada junto com o CRT estático, ou seja. se a construção do alvo principal, add-DLLVM_USE_CRT_RELEASE=MT.

LLVM_ BUILD_D_DOCS: BOOL adiciona todos os objectivos de documentação activados (ou seja, alvos Doxgyen e Sphinx) como dependências dos objectivos de compilação predefinidos. Isto resulta em todas as metas (ativadas)de documentação sendo parte de uma construção normal. Se o alvoinstallfor executado, então isso também permite que todos os alvos de documentação construídos sejam instalados. O padrão está desligado. Para activar um determinado alvo de documentação, o SEESEE LLVM_ENABLE_SPHINX e o LLVM_ENABLE_DOXIGEN. LLVM_ ENABLE_ DESOXIGEN: BOOL activa a geração de documentação HTML navegável com o doxygen.O padrão está desligado. O LLVM_ ENABLE_ DESOXIGEN_ QT_ help: BOOL activa a geração de um ficheiro de Ajuda comprimido pelo Qt. O padrão está desligado.Isto afecta o objectivo makedoxygen-llvm. Quando activado, para além da saída HTML normal gerada pelo doxygen, isto irá produzir um ficheiro QCHorg.llvm.qch. Poderá então carregar este ficheiro no Qt Creator.Esta opção só é útil em combinação com-DLLVM_ENABLE_DOXYGEN=ON; caso contrário, isto não tem efeito. LLVM_DOXYGEN_QCH_FILENAME: indique o nome do ficheiro de Ajuda comprimido do Qt que será gerado quando forem indicados-DLLVM_ENABLE_DOXYGEN=ONe-DLLVM_ENABLE_DOXYGEN_QT_HELP=ON. Por omissãoorg.llvm.qch.Esta opção só é útil em combinação com-DLLVM_ENABLE_DOXYGEN_QT_HELP=ON;caso contrário, não tem efeito. LLVM_DOXYGEN_ QHP_ namespace: espaço de nomes de texto sob o qual vive o ficheiro intermediário do projecto de Ajuda do Qt. Ver projecto QtHelp para mais informações. É predefinido para ” org.llvm”. Esta opção é apenas útil para a combinação com-DLLVM_ENABLE_DOXYGEN_QT_HELP=ON; otherwiseit não tem efeito. LLVM_DOXYGEN_QHP_ CUST_FILTER_NAME:STRING veja a informação do formore do projecto Qt Help. Por omissão, a variável CMake

${PACKAGE_STRING}é uma combinação do nome do pacote com o texto da versão. Este filtro poderá então ser usado no Qt Creator para seleccionar apenas a documentação do LLVM ao navegar por todos os ficheiros de ajuda que possa ter carregado. Esta opção só é útil em combinação com-DLLVM_ENABLE_DOXYGEN_QT_HELP=ON;caso contrário, não tem efeito. LLVM_DOXYGEN_QHELPGENERATOR_ Path: indique a localização do executávelqhelpgenerator. O valor por omissão é igual ao que o CMake pode encontrar. Esta opção só é útil em combinação com-DLLVM_ENABLE_DOXYGEN_QT_HELP=ON; caso contrário, não tem efeito. LLVM_DOXYGEN_SVG: BOOL usa .ficheiros svg em vez de .ficheiros png para Gráficos na saída do Doxygen.O padrão está desligado. LLVM_ INSTALL_DOXYGEN_HTML_DIR: indica a localização para onde instalar a documentação em HTML gerada pelo Doxygen. Este caminho pode ser absoluto ou relativo ao CMAKE_INSTALL_ prefix. Defaults toshare/doc / llvm / Doxygen-html. LLVM_ ENABLE_ Sphinx: BOOL se especificado, o CMake irá procurar pelo executávelsphinx-builde tornará disponíveis as opçõesSPHINX_OUTPUT_HTMLeSPHINX_OUTPUT_MANCMake.O padrão está desligado. SPHINX_ executável: indique a localização do executávelsphinx-builddetectado pelo CMake.Para instruções de instalação, seehttps://www.sphinx-doc.org/en/master/usage/installation.html SPHINX_OUTPUT_HTML: BOOL If actived (andLLVM_ENABLE_SPHINXis actived) then the targets forbuilding the documentation as html are added (but not built by default unlessLLVM_BUILD_DOCSis actived). Existe um objectivo para cada projecto na árvore de origem que utiliza o sphinx (por exemplo,docs-llvm-html,docs-clang-htmledocs-lld-html). Padrão ligado. SPHINX_ OUTPUT_MAN: BOOL If actived (andLLVM_ENABLE_SPHINXis actived) the targets for build the man pages are added (but not built by default unlessLLVM_BUILD_DOCSis actived). Atualmente o único alvo adicionado édocs-llvm-man. Continua. SPHINX_ WARNINGS_ ERROS_ ERROSNAME:BOOL se estiver activo, os avisos de documentação do sphinx serão tratados como erros. Padrão ligado. LLVM_INSTALL_SPHINX_HTML_DIR: STRING a localização para onde instalar a documentação em HTML gerada pelo Sphinx. Este caminho pode ser absoluto ou relativo ao CMAKE_INSTALL_ prefix. Defaults toshare/doc / llvm / html. LLVM_INSTALL_OCAMLDOC_HTML_DIR: indique a localização para onde instalar a documentação em HTML gerada pelo OCamldoc. Este caminho pode ser absoluto ou relativo ao CMAKE_INSTALL_ prefix. Defaults toshare/doc / llvm / ocaml-html. LLVM_ CREATE_XCODE_TOOLCHAIN: apenas BOOL macOS: Se estiver activo, o CMake irá gerar um alvo chamado ‘install-xcode-toolchain’. Este alvo irá criar uma pasta em$CMAKE_ INSTALL_ prefix/Toolchains que contém uma pasta de xctoolchain que poderá ser usada para substituir as ferramentas predefinidas do sistema. LLVM_ BUILD_ LLVM_DYLIB: BOOL se estiver activo, é adicionado o alvo para a construção da Biblioteca partilhada da libLLVM.Esta biblioteca contém todos os componentes do LLVM em uma única biblioteca compartilhada.O padrão está desligado. Isto não pode ser usado em conjunto com o BUILD_ SHARED_ libs.As ferramentas só serão ligadas à Biblioteca partilhada da libLLVM se o Llvm_link_ Lllvm_dylibis também estiver ligado.Os Componentes da biblioteca podem ser personalizados, definindo Llvm_dylib_componentes para uma lista dos componentes desejados.Esta opção não está disponível no Windows. LLVM_LINK_ LLVM_DYLIB: BOOL se estiver activo, as ferramentas serão ligadas à Biblioteca partilhada da libLLVM. O default para fora. Configurar o LLVM_LINK_ LLVM_DYLIB para ON também configura o LLVM_BUILD_LLVM_DYLIBto ligado.Esta opção não está disponível no Windows. BUILD_ SHARED_ libs: BOOL

bandeira indicando se cada componente LLVM (por exemplo, suporte) é construído como um sharedlibrary (ON) ou como uma biblioteca estática (OFF). Seu valor padrão está desligado. OnWindows, bibliotecas compartilhadas podem ser usadas quando se constrói com o MinGW, incluindo o MinGW-w64, mas não quando se constrói com o Microsoft toolchain.

Nota

BUILD_ SHARED_ Libs é apenas recomendado para uso pelos desenvolvedores do LLVM.Se quiser construir o LLVM como uma biblioteca partilhada, deverá usar a opçãoLLVM_BUILD_LLVM_DYLIB.

LLVM_ OPTIMIZED_TABLEGEN: BOOL If actived and building a debug or asserts build the CMake build system willgenerate a Release build tree to build a fully optimized tablegen for useduring the build. Se activar esta opção, poderá acelerar significativamente o tempo de compilação, especialmente ao construir o LLVM em configurações de depuração. LLVM_REVERSE_ITERATION: BOOL If actived, all supported unordered llvm containers would be iterated inreverse order. Isto é útil para descobrir o não-determinismo causado pela reiteração de recipientes não encomendados. LLVM_BUILD_INSTRUMENTED_COVERAGE: BOOL If actived, source-based code coverage instrumentation is actived while building llvm. LLVM_CACHE_BUILD: BOOL If actived and theccacheprogram is available, then LLVM will be built usingccacheto speed up rebuilds of LLVM and its components.O padrão está desligado. O tamanho e a localização da ‘cache’ mantida porccachepodem ser ajustados através das variáveis de ambiente LLVM_CACHE_MAXSIZE e Llvm_cache_cache_dir, que são passadas para as variáveis de ambiente CCACHE_MAXSIZE e CCACHE_DIR, respectivamente. LLVM_FORCE_USE_OLD_ toolchain: BOOL se estiver activo, as versões do compilador e da biblioteca-padrão não serão verificadas. LLVMmay not compile at all, or might fail at runtime due to known bugs in thesetoolchains. LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN:BOOL If actived, the compiler version check will only warn when using a toolchain which is about to be depreciated, instead of emitting an error. LLVM_ USE_NEWPM: BOOL se estiver activo, use o novo gestor de passes experimental. LLVM_ ENABLE_ encadernações: BOOL se estiver desactivado, não tente compilar as combinações OCaml e go. LLVM_ ENABLE_ Z3_ resolutor: BOOL se activo, a resolução de restrições Z3 é activada para o analisador estático Clang.Uma versão recente da biblioteca z3 precisa estar disponível no sistema. LLVM_ USE_RELATIVE_ DATHS_ IN_ DEBUG_ info: BOOL reescreve os locais de origem absolutos na informação de depuração para os relativos. O prefixo da fonte pode ser ajustado através da variável LLVM_SOURCE_PREFIX. LLVM_USE_RELATIVE_ PATH_ IN_ files: BOOL reescreve os caminhos absolutos do código em fontes e a informação de depuração em fontes relativas. O prefixo do código pode ser ajustado através da variável LLVM_SOURCE_PREFIX. LLVM_INSTALL_UTILS: BOOL If actived, os binários utilitários comoFileCheckenotserão instalados em CMAKE_INSTALL_ prefix.

Deixe uma resposta

O seu endereço de email não será publicado.