Instruções de build do CMake do LiteRT

Use este guia para configurar e criar o tempo de execução do LiteRT com CMake no macOS. As instruções abrangem destinos de compilação cruzada do Android (usando macOS e Linux como máquina host) e builds nativos do macOS e Linux.

Etapas comuns de build

Instale o CMake 4.0.1 em: https://github.com/kitware/cmake/releases

Todos os presets de build exigem que você trabalhe na raiz do repositório:

cd ./litert

As árvores de build geradas ficam em cmake_build*. As builds paralelas podem ser controladas via -j com a contagem de núcleos desejada.

Variações de build disponíveis

O LiteRT é compatível com as variantes de build Release e Debug:

Predefinido Plataforma Tipo de build Diretório de saída
default Computador (macOS/Linux) Versão cmake_build
default-debug Computador (macOS/Linux) Depurar cmake_build_debug
android-arm64 Android arm64 Versão cmake_build_android_arm64
android-arm64-debug Android arm64 Depurar cmake_build_android_arm64_debug

Os builds de lançamento usam -O3 -DNDEBUG para binários de produção otimizados. Os builds de depuração usam -O0 -g para depuração com informações completas de símbolos.

Compilação cruzada do Android (arm64)

  1. Instale o NDK do Android e exporte o caminho para que o CMake possa encontrá-lo:

    export ANDROID_NDK_HOME=/absolute/path/to/android-ndk-r27
    
  2. Configurar ferramentas flatbuffer do lado do host

    cmake --preset android-arm64;
    
  3. Configure a versão do Android LiteRT usando a predefinição fornecida e aponte para as ferramentas FlatBuffers geradas:

    # For Release build:
    cmake --preset android-arm64 \
      -DTFLITE_HOST_TOOLS_DIR="$(cd ../host_flatc_build/_deps/flatbuffers-build && pwd)"
    
    # For Debug build:
    cmake --preset android-arm64-debug \
      -DTFLITE_HOST_TOOLS_DIR="$(cd ../host_flatc_build/_deps/flatbuffers-build && pwd)"
    
  4. Criar o LiteRT para Android:

    # For Release build:
    cmake --build cmake_build_android_arm64 -j
    
    # For Debug build:
    cmake --build cmake_build_android_arm64_debug -j
    

Artefatos como bibliotecas estáticas serão emitidos no diretório de build correspondente (cmake_build_android_arm64 ou cmake_build_android_arm64_debug).

Build de desktop no macOS e Linux

  1. Configure a predefinição padrão para builds de computador:

    # For Release build:
    cmake --preset default
    
    # For Debug build:
    cmake --preset default-debug
    
  2. Criar o LiteRT:

    # For Release build:
    cmake --build cmake_build -j
    
    # For Debug build:
    cmake --build cmake_build_debug -j
    

Personalizar o destino do build

Como personalizar builds do CMake

Use opções do CMake para controlar quais toolchains e recursos são compilados nos seus destinos. Por exemplo:

cmake -S . -B build-release \
      -DCMAKE_BUILD_TYPE=Release \
      -DLITERT_AUTO_BUILD_TFLITE=ON \
      -DLITERT_ENABLE_GPU=OFF \
      -DLITERT_ENABLE_NPU=OFF \
      -DLITERT_DISABLE_KLEIDIAI=ON \
      -DLITERT_HOST_C_COMPILER=/usr/bin/clang \
      -DLITERT_HOST_CXX_COMPILER=/usr/bin/clang++
cmake --build build-release --target dispatch_api_Qualcomm_so -j8
  • LITERT_HOST_C_COMPILER / LITERT_HOST_CXX_COMPILER permitem apontar as ferramentas de host auxiliar para qualquer instalação do Clang/GCC sem editar CMakeLists.txt.
  • LITERT_DISABLE_KLEIDIAI mantém as builds de computador x86 reproduzíveis ao pular KleidiAI. Defina como OFF sempre que quiser agrupar o delegado.
  • Sempre transmita -DCMAKE_BUILD_TYPE=Release (ou o equivalente predefinido) quando precisar do artefato otimizado. Isso faz com que o CMake use -O3 -DNDEBUG para você.

Produzir bibliotecas de fornecedor de tamanho mínimo

No momento da vinculação, ative a remoção de código morto para que as bibliotecas de envio correspondam ao tamanho do Bazel:

  • macOS: adicione -DCMAKE_SHARED_LINKER_FLAGS_RELEASE="-Wl,-dead_strip -dead_strip_dylibs" (e o mesmo para CMAKE_EXE_LINKER_FLAGS_RELEASE se quiser que os executáveis sejam removidos). Depois de criar, execute strip -x path/to/libLiteRtDispatch_Qualcomm.dylib.
  • Linux: adicione -DCMAKE_SHARED_LINKER_FLAGS_RELEASE="-Wl,--gc-sections" e execute strip --strip-unneeded path/to/libLiteRtDispatch_Qualcomm.so ou transforme em um comando POST_BUILD.

Essas flags podem ficar diretamente nas entradas cmake --preset … em CMakePresets.json para que todos os desenvolvedores da sua equipe tenham a mesma configuração.

Dicas para solução de problemas

  • Exclua o diretório cmake_build* correspondente se você mudar as toolchains ou as principais opções de configuração e execute novamente a etapa de configuração.
  • Inspecione CMakeCache.txt em cada árvore de build para ver os caminhos de dependência resolvidos.