# Copyright 2026 Google LLC. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. set(PKG_ROOT ${CMAKE_CURRENT_SOURCE_DIR}) # ============================================================================== # 1. Engine Interface # ============================================================================== add_litertlm_library(runtime_engine_engine_interface INTERFACE) add_library(LiteRTLM::Runtime::Engine::Interface ALIAS runtime_engine_engine_interface) target_include_directories(runtime_engine_engine_interface INTERFACE ${GENERATED_SRC_DIR} ${LITERTLM_INCLUDE_PATHS} ) target_link_libraries(runtime_engine_engine_interface INTERFACE LiteRTLM::Runtime::Engine::Settings LiteRTLM::Runtime::Engine::IoTypes LiteRTLM::Runtime::Components::Tokenizer::Interface LITERTLM_DEPS ) # ============================================================================== # 2. Engine Settings # ============================================================================== add_litertlm_library(runtime_engine_engine_settings STATIC engine_settings.cc ) add_library(LiteRTLM::Runtime::Engine::Settings ALIAS runtime_engine_engine_settings) target_include_directories(runtime_engine_engine_settings PRIVATE ${GENERATED_SRC_DIR} ${LITERTLM_INCLUDE_PATHS} ) target_link_libraries(runtime_engine_engine_settings PUBLIC LiteRTLM::Runtime::Components::Tokenizer::Interface runtime_executor_audio_executor_settings runtime_executor_executor_settings_base runtime_executor_llm_executor_settings runtime_executor_vision_executor_settings runtime_util_litert_status_util runtime_util_model_type_utils LITERTLM_DEPS ) # ============================================================================== # 3. IO Types # Bazel: cc_library(name = "io_types" ...) # ============================================================================== add_litertlm_library(runtime_engine_io_types STATIC io_types.cc ) add_library(LiteRTLM::Runtime::Engine::IoTypes ALIAS runtime_engine_io_types) target_include_directories(runtime_engine_io_types PRIVATE ${CMAKE_BINARY_DIR} ${GENERATED_SRC_DIR} ${LITERTLM_INCLUDE_PATHS} ${THIRD_PARTY_DIR} ) target_link_libraries(runtime_engine_io_types PUBLIC LiteRTLM::Runtime::Components::ConstrainedDecoding::Constraint runtime_util_litert_status_util LITERTLM_DEPS ) # ============================================================================== # 4. Engine Lib (The Core Logic) # Bazel: cc_library(name = "litert_lm_lib" ...) # ============================================================================== add_litertlm_library(runtime_engine_litert_lm_lib STATIC litert_lm_lib.cc ) add_library(LiteRTLM::Runtime::Engine::Lib ALIAS runtime_engine_litert_lm_lib) target_include_directories(runtime_engine_litert_lm_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${LITERTLM_INCLUDE_PATHS} ${THIRD_PARTY_DIR}/json/include ) target_link_libraries(runtime_engine_litert_lm_lib PUBLIC # Internal Modules (Bazel deps) LiteRTLM::Runtime::Conversation LiteRTLM::Runtime::Conversation::IoTypes LiteRTLM::Runtime::Core::EngineImpl LiteRTLM::Runtime::Engine::Interface LiteRTLM::Runtime::Engine::Settings LiteRTLM::Runtime::Engine::IoTypes runtime_executor_executor_settings_base runtime_executor_llm_executor_settings runtime_util_litert_status_util LITERTLM_DEPS ) # ============================================================================== # 5. Shared Flags # ============================================================================== add_litertlm_library(runtime_engine_shared_flags STATIC shared_flags.cc ) add_library(LiteRTLM::Runtime::Engine::SharedFlags ALIAS runtime_engine_shared_flags) target_include_directories(runtime_engine_shared_flags PUBLIC ${GENERATED_SRC_DIR} ${LITERTLM_INCLUDE_PATHS} ) target_link_libraries(runtime_engine_shared_flags PUBLIC LITERTLM_DEPS ) if(_unverified_targets) # ============================================================================== # 6. Advanced Main Executable # ============================================================================== set(MEMORY_USAGE_MONITOR_SRC "${TFLITE_SRC_DIR}/profiling/memory_usage_monitor.cc") set_source_files_properties(${MEMORY_USAGE_MONITOR_SRC} PROPERTIES GENERATED TRUE) add_litertlm_executable(runtime_engine_litert_lm_advanced_main litert_lm_advanced_main.cc ${MEMORY_USAGE_MONITOR_SRC} ) target_link_options(runtime_engine_litert_lm_advanced_main PRIVATE "LINKER:--export-dynamic-symbol=LiteRt*" ) target_include_directories(runtime_engine_litert_lm_advanced_main PRIVATE ${LITERTLM_INCLUDE_PATHS} ${LITERT_INCLUDE_PATHS} ${TENSORFLOW_SOURCE_DIR} ) target_link_libraries(runtime_engine_litert_lm_advanced_main PUBLIC LiteRTLM::Runtime::Engine::IoTypes LiteRTLM::Runtime::Engine::Lib LiteRTLM::Runtime::Engine::SharedFlags LiteRTLM::Schema::Core runtime_util_litert_status_util LITERTLM_DEPS ) # ============================================================================== # 7. Main Executable (The Target We Care About) # ============================================================================== add_litertlm_executable(litert_lm_main litert_lm_main.cc ) target_link_options(litert_lm_main PRIVATE ${LITERTLM_UNIFIED_LINK_SPEC}) target_link_options(litert_lm_main PRIVATE "LINKER:--export-dynamic-symbol=LiteRt*" ) target_include_directories(litert_lm_main PRIVATE ${LITERTLM_INCLUDE_PATHS} ${LITERT_INCLUDE_PATHS} ${THIRD_PARTY_DIR}/json/include ) target_link_libraries(litert_lm_main PUBLIC LiteRTLM::Runtime::Engine::Interface LiteRTLM::Runtime::Engine::Settings LiteRTLM::Runtime::Engine::IoTypes LiteRTLM::Runtime::Conversation LiteRTLM::Runtime::Conversation::IoTypes LiteRTLM::Runtime::Core::EngineImpl runtime_executor_executor_settings_base runtime_executor_llm_executor_settings runtime_util_litert_status_util LITERTLM_DEPS ) add_litertlm_executable(litert_lm_main litert_lm_main.cc ) target_link_options(litert_lm_main PRIVATE "LINKER:--export-dynamic-symbol=LiteRt*" ) target_include_directories(litert_lm_main PRIVATE ${LITERTLM_INCLUDE_PATHS} ${LITERT_INCLUDE_PATHS} ${THIRD_PARTY_DIR}/json/include ) # Android Specifics if(ANDROID) target_link_libraries(litert_lm_main PRIVATE EGL GLESv3) endif() endif() # ============================================================================== # 8. Folder Facade # ============================================================================== add_library(runtime_engine_libs INTERFACE) add_library(LiteRTLM::Runtime::Engine ALIAS runtime_engine_libs) target_link_libraries(runtime_engine_libs INTERFACE LiteRTLM::Runtime::Engine::Interface LiteRTLM::Runtime::Engine::Settings LiteRTLM::Runtime::Engine::IoTypes LiteRTLM::Runtime::Engine::Lib LiteRTLM::Runtime::Engine::SharedFlags )