1*89c4ff92SAndroid Build Coastguard Worker# 2*89c4ff92SAndroid Build Coastguard Worker# Copyright © 2020 Arm Ltd and Contributors. All rights reserved. 3*89c4ff92SAndroid Build Coastguard Worker# SPDX-License-Identifier: MIT 4*89c4ff92SAndroid Build Coastguard Worker# 5*89c4ff92SAndroid Build Coastguard Workerif(BUILD_ARMNN_DESERIALIZER) 6*89c4ff92SAndroid Build Coastguard Worker # We're using NO_SYSTEM_ENVIRONMENT_PATH to prevent a system installed 7*89c4ff92SAndroid Build Coastguard Worker # flatc being found and used. 8*89c4ff92SAndroid Build Coastguard Worker find_program(FLATC flatc 9*89c4ff92SAndroid Build Coastguard Worker HINTS ${FLATC_DIR} 10*89c4ff92SAndroid Build Coastguard Worker NO_SYSTEM_ENVIRONMENT_PATH 11*89c4ff92SAndroid Build Coastguard Worker DOC "Path to 'flatc', the flatbuffers compiler") 12*89c4ff92SAndroid Build Coastguard Worker 13*89c4ff92SAndroid Build Coastguard Worker if (NOT FLATC) 14*89c4ff92SAndroid Build Coastguard Worker message(SEND_ERROR "flatc not found. Specify the full path of the flatc executable with -DFLATC=<flatc path>") 15*89c4ff92SAndroid Build Coastguard Worker else() 16*89c4ff92SAndroid Build Coastguard Worker message("Using flatc was from: ${FLATC}") 17*89c4ff92SAndroid Build Coastguard Worker endif() 18*89c4ff92SAndroid Build Coastguard Worker 19*89c4ff92SAndroid Build Coastguard Worker add_custom_command( 20*89c4ff92SAndroid Build Coastguard Worker # Generate an ArmnnSchema_generated.h file if it doesn't exist, or update it when necessary otherwise 21*89c4ff92SAndroid Build Coastguard Worker OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/../../generated/ArmnnSchema_generated.h DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../armnnSerializer/ArmnnSchema.fbs 22*89c4ff92SAndroid Build Coastguard Worker COMMAND ${FLATC} -o ${CMAKE_CURRENT_SOURCE_DIR}/../../generated --cpp ${CMAKE_CURRENT_SOURCE_DIR}/../armnnSerializer/ArmnnSchema.fbs 23*89c4ff92SAndroid Build Coastguard Worker ) 24*89c4ff92SAndroid Build Coastguard Worker set_property(SOURCE Deserializer.cpp APPEND PROPERTY OBJECT_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../../generated/ArmnnSchema_generated.h) 25*89c4ff92SAndroid Build Coastguard Worker set_directory_properties(PROPERTIES ADDITIONAL_CLEAN_FILES ${CMAKE_CURRENT_SOURCE_DIR}/../../generated/) 26*89c4ff92SAndroid Build Coastguard Worker 27*89c4ff92SAndroid Build Coastguard Worker set(armnn_deserializer_sources) 28*89c4ff92SAndroid Build Coastguard Worker list(APPEND armnn_deserializer_sources 29*89c4ff92SAndroid Build Coastguard Worker Deserializer.hpp 30*89c4ff92SAndroid Build Coastguard Worker Deserializer.cpp 31*89c4ff92SAndroid Build Coastguard Worker ) 32*89c4ff92SAndroid Build Coastguard Worker 33*89c4ff92SAndroid Build Coastguard Worker add_library_ex(armnnDeserializer SHARED ${armnn_deserializer_sources}) 34*89c4ff92SAndroid Build Coastguard Worker 35*89c4ff92SAndroid Build Coastguard Worker include_directories(SYSTEM "${FLATBUFFERS_INCLUDE_PATH}") 36*89c4ff92SAndroid Build Coastguard Worker 37*89c4ff92SAndroid Build Coastguard Worker set_target_properties(armnnDeserializer PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) 38*89c4ff92SAndroid Build Coastguard Worker target_include_directories(armnnDeserializer PRIVATE ../armnn) 39*89c4ff92SAndroid Build Coastguard Worker target_include_directories(armnnDeserializer PRIVATE ../armnnUtils) 40*89c4ff92SAndroid Build Coastguard Worker target_include_directories(armnnDeserializer PRIVATE ../../generated) 41*89c4ff92SAndroid Build Coastguard Worker 42*89c4ff92SAndroid Build Coastguard Worker list(APPEND armnn_deserializer_sources 43*89c4ff92SAndroid Build Coastguard Worker ArmnnSchema_generated.h 44*89c4ff92SAndroid Build Coastguard Worker ) 45*89c4ff92SAndroid Build Coastguard Worker 46*89c4ff92SAndroid Build Coastguard Worker # System include to suppress warnings for flatbuffers generated files 47*89c4ff92SAndroid Build Coastguard Worker target_include_directories(armnnDeserializer SYSTEM PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) 48*89c4ff92SAndroid Build Coastguard Worker 49*89c4ff92SAndroid Build Coastguard Worker target_link_libraries(armnnDeserializer armnn ${FLATBUFFERS_LIBRARY}) 50*89c4ff92SAndroid Build Coastguard Worker 51*89c4ff92SAndroid Build Coastguard Worker install(TARGETS armnnDeserializer 52*89c4ff92SAndroid Build Coastguard Worker EXPORT armnn-targets 53*89c4ff92SAndroid Build Coastguard Worker LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} 54*89c4ff92SAndroid Build Coastguard Worker ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} 55*89c4ff92SAndroid Build Coastguard Worker ) 56*89c4ff92SAndroid Build Coastguard Worker set_target_properties(armnnDeserializer PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION} ) 57*89c4ff92SAndroid Build Coastguard Workerendif() 58