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