LiteRT CMake को बनाने से जुड़े निर्देश

macOS पर CMake की मदद से, LiteRT रनटाइम को कॉन्फ़िगर और बिल्ड करने के लिए, इस गाइड का इस्तेमाल करें. निर्देशों में, Android क्रॉस-कंपाइलेशन टारगेट (macOS और Linux को होस्ट मशीन के तौर पर इस्तेमाल करना) और नेटिव macOS और Linux बिल्ड, दोनों के बारे में बताया गया है.

बिल्ड के सामान्य चरण

CMake 4.0.1 को यहां से इंस्टॉल करें: https://github.com/kitware/cmake/releases

सभी बिल्ड प्रीसेट के लिए, आपको रिपॉज़िटरी रूट से काम करना होगा:

cd ./litert

जनरेट किए गए बिल्ड ट्री, cmake_build* में मौजूद होते हैं. -j की मदद से, पैरलल बिल्ड को कंट्रोल किया जा सकता है. इसके लिए, अपनी ज़रूरत के हिसाब से कोर की संख्या चुनें.

बिल्ड के लिए उपलब्ध फ़्लेवर

LiteRT, रिलीज़ और डीबग, दोनों तरह के बिल्ड फ़्लेवर के साथ काम करता है:

प्रीसेट प्लैटफ़ॉर्म बिल्ड टाइप आउटपुट डायरेक्ट्री
default डेस्कटॉप (macOS/Linux) रिलीज़ cmake_build
default-debug डेस्कटॉप (macOS/Linux) डीबग cmake_build_debug
android-arm64 Android arm64 रिलीज़ cmake_build_android_arm64
android-arm64-debug Android arm64 डीबग cmake_build_android_arm64_debug

रिलीज़ बिल्ड, ऑप्टिमाइज़ किए गए प्रोडक्शन बाइनरी के लिए -O3 -DNDEBUG का इस्तेमाल करते हैं. डीबग बिल्ड, पूरी सिंबल जानकारी के साथ डीबग करने के लिए -O0 -g का इस्तेमाल करते हैं.

Android (arm64) क्रॉस-कंपाइलेशन

  1. Android NDK इंस्टॉल करें और पाथ एक्सपोर्ट करें, ताकि CMake इसे ढूंढ सके:

    export ANDROID_NDK_HOME=/absolute/path/to/android-ndk-r27
    
  2. होस्ट-साइड फ़्लैटबफ़र टूल कॉन्फ़िगर करना

    cmake --preset android-arm64;
    
  3. दिए गए प्रीसेट का इस्तेमाल करके, LiteRT Android बिल्ड को कॉन्फ़िगर करें और जनरेट किए गए FlatBuffers टूल की ओर ले जाएं:

    # 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. Android के लिए LiteRT बनाएं:

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

स्टैटिक लाइब्रेरी जैसे आर्टफ़ैक्ट, संबंधित बिल्ड डायरेक्ट्री (cmake_build_android_arm64 या cmake_build_android_arm64_debug) में भेजे जाएंगे.

macOS और Linux से डेस्कटॉप बिल्ड

  1. डेस्कटॉप बिल्ड के लिए डिफ़ॉल्ट प्रीसेट कॉन्फ़िगर करें:

    # For Release build:
    cmake --preset default
    
    # For Debug build:
    cmake --preset default-debug
    
  2. LiteRT बनाना:

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

अपने बिल्ड टारगेट को पसंद के मुताबिक बनाना

CMake बिल्ड को पसंद के मुताबिक बनाना

CMake के विकल्पों का इस्तेमाल करके, यह कंट्रोल करें कि आपके टारगेट में कौनसे टूलचेन और सुविधाएं कंपाइल की गई हैं. उदाहरण:

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 की मदद से, हेल्पर होस्ट टूल को किसी भी Clang/GCC इंस्टॉलेशन पर पॉइंट किया जा सकता है. इसके लिए, CMakeLists.txt में बदलाव करने की ज़रूरत नहीं होती.
  • LITERT_DISABLE_KLEIDIAI, x86 डेस्कटॉप बिल्ड को फिर से बनाया जा सकता है. इसके लिए, KleidiAI को स्किप किया जाता है. जब भी आपको डेलिगेट को बंडल करना हो, तब इसे OFF पर सेट करें.
  • ऑप्टिमाइज़ किया गया आर्टफ़ैक्ट पाने के लिए, हमेशा -DCMAKE_BUILD_TYPE=Release (या इसके बराबर का प्रीसेट) पास करें. इससे CMake, आपके लिए -O3 -DNDEBUG का इस्तेमाल करता है.

कम से कम साइज़ वाली वेंडर लाइब्रेरी बनाना

लिंक करने के समय, डेड-स्ट्रिपिंग की सुविधा चालू करें, ताकि डिस्पैच लाइब्रेरी का साइज़ Bazel के साइज़ से मेल खाए:

  • macOS: add -DCMAKE_SHARED_LINKER_FLAGS_RELEASE="-Wl,-dead_strip -dead_strip_dylibs" (और अगर आपको एक्ज़ीक्यूटेबल स्ट्रिप करने हैं, तो CMAKE_EXE_LINKER_FLAGS_RELEASE के लिए भी यही तरीका अपनाएं). बिल्ड करने के बाद, strip -x path/to/libLiteRtDispatch_Qualcomm.dylib चलाएं.
  • Linux: -DCMAKE_SHARED_LINKER_FLAGS_RELEASE="-Wl,--gc-sections" जोड़ें और strip --strip-unneeded path/to/libLiteRtDispatch_Qualcomm.so चलाएं (या इसे POST_BUILD कमांड बनाएं).

इन फ़्लैग को सीधे तौर पर cmake --preset … एंट्री में CMakePresets.json रखा जा सकता है, ताकि आपकी टीम के हर डेवलपर को एक जैसा कॉन्फ़िगरेशन मिले.

समस्या हल करने के बारे में सलाह

  • अगर टूलचेन या कॉन्फ़िगरेशन के मुख्य विकल्पों में बदलाव किया जाता है, तो उससे जुड़ी cmake_build* डायरेक्ट्री मिटाएं. इसके बाद, कॉन्फ़िगरेशन का चरण फिर से चलाएं.
  • डिपेंडेंसी के हल किए गए पाथ के लिए, हर बिल्ड ट्री में CMakeCache.txt की जांच करें.