1*89c4ff92SAndroid Build Coastguard Worker# 2*89c4ff92SAndroid Build Coastguard Worker# Copyright © 2017, 2023 Arm Ltd. All rights reserved. 3*89c4ff92SAndroid Build Coastguard Worker# SPDX-License-Identifier: MIT 4*89c4ff92SAndroid Build Coastguard Worker# 5*89c4ff92SAndroid Build Coastguard Workerif(BUILD_TF_LITE_PARSER) 6*89c4ff92SAndroid Build Coastguard Worker set(armnn_tf_lite_parser_sources) 7*89c4ff92SAndroid Build Coastguard Worker list(APPEND armnn_tf_lite_parser_sources 8*89c4ff92SAndroid Build Coastguard Worker ../../include/armnnTfLiteParser/ITfLiteParser.hpp 9*89c4ff92SAndroid Build Coastguard Worker ../../include/armnnTfLiteParser/Version.hpp 10*89c4ff92SAndroid Build Coastguard Worker TfLiteParser.hpp 11*89c4ff92SAndroid Build Coastguard Worker TfLiteParser.cpp 12*89c4ff92SAndroid Build Coastguard Worker ) 13*89c4ff92SAndroid Build Coastguard Worker 14*89c4ff92SAndroid Build Coastguard Worker if(EXECUTE_NETWORK_STATIC) 15*89c4ff92SAndroid Build Coastguard Worker add_library_ex(armnnTfLiteParser OBJECT ${armnn_tf_lite_parser_sources}) 16*89c4ff92SAndroid Build Coastguard Worker else() 17*89c4ff92SAndroid Build Coastguard Worker add_library_ex(armnnTfLiteParser SHARED ${armnn_tf_lite_parser_sources}) 18*89c4ff92SAndroid Build Coastguard Worker endif() 19*89c4ff92SAndroid Build Coastguard Worker 20*89c4ff92SAndroid Build Coastguard Worker include_directories(SYSTEM "${FLATBUFFERS_INCLUDE_PATH}") 21*89c4ff92SAndroid Build Coastguard Worker set_target_properties(armnnTfLiteParser PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) 22*89c4ff92SAndroid Build Coastguard Worker target_include_directories(armnnTfLiteParser PRIVATE ../armnn) 23*89c4ff92SAndroid Build Coastguard Worker target_include_directories(armnnTfLiteParser PRIVATE ../armnnUtils) 24*89c4ff92SAndroid Build Coastguard Worker target_include_directories(armnnTfLiteParser SYSTEM PRIVATE "${TF_LITE_SCHEMA_INCLUDE_PATH}") 25*89c4ff92SAndroid Build Coastguard Worker 26*89c4ff92SAndroid Build Coastguard Worker 27*89c4ff92SAndroid Build Coastguard Worker # using the armnn/delegate/cmake/Modules/FindTfLiteSrc.cmake to find the TfLite sources 28*89c4ff92SAndroid Build Coastguard Worker # so that we can use the tensorflow/lite/version.h to determine which version of 29*89c4ff92SAndroid Build Coastguard Worker # tensorflow lite we are compiling against 30*89c4ff92SAndroid Build Coastguard Worker find_package(TfLiteSrc REQUIRED MODULE) 31*89c4ff92SAndroid Build Coastguard Worker 32*89c4ff92SAndroid Build Coastguard Worker # Various tflite header files are not warning clean 33*89c4ff92SAndroid Build Coastguard Worker # We can't change compilation flags on header files directly, so we need to add them to an interface library first 34*89c4ff92SAndroid Build Coastguard Worker add_library(tflite_version_headers INTERFACE) 35*89c4ff92SAndroid Build Coastguard Worker target_include_directories(tflite_version_headers INTERFACE $<BUILD_INTERFACE:${TfLite_INCLUDE_DIR}> 36*89c4ff92SAndroid Build Coastguard Worker $<INSTALL_INTERFACE:include/tflite_version_headers>) 37*89c4ff92SAndroid Build Coastguard Worker 38*89c4ff92SAndroid Build Coastguard Worker if(COMPILER_IS_GNU_LIKE) 39*89c4ff92SAndroid Build Coastguard Worker target_compile_options(tflite_version_headers INTERFACE -Wno-conversion 40*89c4ff92SAndroid Build Coastguard Worker -Wno-sign-conversion 41*89c4ff92SAndroid Build Coastguard Worker -Wno-unused-parameter 42*89c4ff92SAndroid Build Coastguard Worker -Wno-unused-function) 43*89c4ff92SAndroid Build Coastguard Worker endif() 44*89c4ff92SAndroid Build Coastguard Worker 45*89c4ff92SAndroid Build Coastguard Worker 46*89c4ff92SAndroid Build Coastguard Worker # If user has explicitly specified flatbuffers lib then use that, 47*89c4ff92SAndroid Build Coastguard Worker # otherwise search for it based on FLATBUFFERS_BUILD_DIR 48*89c4ff92SAndroid Build Coastguard Worker if (FLATBUFFERS_LIBRARY) 49*89c4ff92SAndroid Build Coastguard Worker target_link_libraries(armnnTfLiteParser 50*89c4ff92SAndroid Build Coastguard Worker armnn 51*89c4ff92SAndroid Build Coastguard Worker tflite_version_headers 52*89c4ff92SAndroid Build Coastguard Worker ${FLATBUFFERS_LIBRARY}) 53*89c4ff92SAndroid Build Coastguard Worker else() 54*89c4ff92SAndroid Build Coastguard Worker # Use PATH_SUFFIXES to help find separate libs for debug/release on Windows builds 55*89c4ff92SAndroid Build Coastguard Worker find_library(FLATBUFFERS_LIBRARY_DEBUG NAMES flatbuffers 56*89c4ff92SAndroid Build Coastguard Worker HINTS ${FLATBUFFERS_BUILD_DIR} 57*89c4ff92SAndroid Build Coastguard Worker PATH_SUFFIXES "Debug") 58*89c4ff92SAndroid Build Coastguard Worker find_library(FLATBUFFERS_LIBRARY_RELEASE NAMES flatbuffers 59*89c4ff92SAndroid Build Coastguard Worker HINTS ${FLATBUFFERS_BUILD_DIR} 60*89c4ff92SAndroid Build Coastguard Worker PATH_SUFFIXES "Release") 61*89c4ff92SAndroid Build Coastguard Worker target_link_libraries(armnnTfLiteParser 62*89c4ff92SAndroid Build Coastguard Worker armnn 63*89c4ff92SAndroid Build Coastguard Worker tflite_version_headers 64*89c4ff92SAndroid Build Coastguard Worker debug ${FLATBUFFERS_LIBRARY_DEBUG} 65*89c4ff92SAndroid Build Coastguard Worker optimized ${FLATBUFFERS_LIBRARY_RELEASE}) 66*89c4ff92SAndroid Build Coastguard Worker endif() 67*89c4ff92SAndroid Build Coastguard Worker 68*89c4ff92SAndroid Build Coastguard Worker set_target_properties(armnnTfLiteParser PROPERTIES VERSION ${TFLITE_PARSER_LIB_VERSION} SOVERSION ${TFLITE_PARSER_LIB_SOVERSION} ) 69*89c4ff92SAndroid Build Coastguard Worker 70*89c4ff92SAndroid Build Coastguard Worker install(TARGETS armnnTfLiteParser 71*89c4ff92SAndroid Build Coastguard Worker LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} 72*89c4ff92SAndroid Build Coastguard Worker RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 73*89c4ff92SAndroid Build Coastguard Workerendif() 74