1*89c4ff92SAndroid Build Coastguard Worker# 2*89c4ff92SAndroid Build Coastguard Worker# Copyright © 2017, 2019-2020, 2022-2023 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_SERIALIZER) 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 ArmnnSchema.fbs 22*89c4ff92SAndroid Build Coastguard Worker COMMAND ${FLATC} -o ${CMAKE_CURRENT_SOURCE_DIR}/../../generated --cpp ${CMAKE_CURRENT_SOURCE_DIR}/ArmnnSchema.fbs 23*89c4ff92SAndroid Build Coastguard Worker ) 24*89c4ff92SAndroid Build Coastguard Worker set_property(SOURCE Serializer.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_serializer_sources) 28*89c4ff92SAndroid Build Coastguard Worker list(APPEND armnn_serializer_sources 29*89c4ff92SAndroid Build Coastguard Worker ../../include/armnnSerializer/ISerializer.hpp 30*89c4ff92SAndroid Build Coastguard Worker ../../include/armnnDeserializer/IDeserializer.hpp 31*89c4ff92SAndroid Build Coastguard Worker Serializer.hpp 32*89c4ff92SAndroid Build Coastguard Worker Serializer.cpp 33*89c4ff92SAndroid Build Coastguard Worker SerializerUtils.hpp 34*89c4ff92SAndroid Build Coastguard Worker SerializerUtils.cpp 35*89c4ff92SAndroid Build Coastguard Worker ../armnnDeserializer/Deserializer.hpp 36*89c4ff92SAndroid Build Coastguard Worker ../armnnDeserializer/Deserializer.cpp 37*89c4ff92SAndroid Build Coastguard Worker ) 38*89c4ff92SAndroid Build Coastguard Worker 39*89c4ff92SAndroid Build Coastguard Worker if(BUILD_BARE_METAL OR EXECUTE_NETWORK_STATIC) 40*89c4ff92SAndroid Build Coastguard Worker add_library_ex(armnnSerializer STATIC ${armnn_serializer_sources}) 41*89c4ff92SAndroid Build Coastguard Worker else() 42*89c4ff92SAndroid Build Coastguard Worker # We're going to export both a STATIC library and a SHARED library here. 43*89c4ff92SAndroid Build Coastguard Worker # In some instances it's easier to include the serializer directly into 44*89c4ff92SAndroid Build Coastguard Worker # the target executable or library rather than have yet another .so. 45*89c4ff92SAndroid Build Coastguard Worker add_library(armnnSerializer-static STATIC ${armnn_serializer_sources}) 46*89c4ff92SAndroid Build Coastguard Worker add_library_ex(armnnSerializer SHARED ${armnn_serializer_sources}) 47*89c4ff92SAndroid Build Coastguard Worker endif() 48*89c4ff92SAndroid Build Coastguard Worker 49*89c4ff92SAndroid Build Coastguard Worker include_directories(SYSTEM "${FLATBUFFERS_INCLUDE_PATH}") 50*89c4ff92SAndroid Build Coastguard Worker 51*89c4ff92SAndroid Build Coastguard Worker set_target_properties(armnnSerializer PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) 52*89c4ff92SAndroid Build Coastguard Worker target_include_directories(armnnSerializer PRIVATE ../armnn) 53*89c4ff92SAndroid Build Coastguard Worker target_include_directories(armnnSerializer PRIVATE ../armnnUtils) 54*89c4ff92SAndroid Build Coastguard Worker target_include_directories(armnnSerializer PRIVATE ../../generated) 55*89c4ff92SAndroid Build Coastguard Worker if (NOT BARE_METAL AND NOT EXECUTE_NETWORK_STATIC) 56*89c4ff92SAndroid Build Coastguard Worker target_include_directories(armnnSerializer-static PRIVATE ../armnn) 57*89c4ff92SAndroid Build Coastguard Worker target_include_directories(armnnSerializer-static PRIVATE ../armnnUtils) 58*89c4ff92SAndroid Build Coastguard Worker target_include_directories(armnnSerializer-static PRIVATE ../../generated) 59*89c4ff92SAndroid Build Coastguard Worker endif() 60*89c4ff92SAndroid Build Coastguard Worker 61*89c4ff92SAndroid Build Coastguard Worker list(APPEND armnn_serializer_sources 62*89c4ff92SAndroid Build Coastguard Worker ArmnnSchema_generated.h 63*89c4ff92SAndroid Build Coastguard Worker ) 64*89c4ff92SAndroid Build Coastguard Worker 65*89c4ff92SAndroid Build Coastguard Worker # System include to suppress warnings for flatbuffers generated files 66*89c4ff92SAndroid Build Coastguard Worker target_include_directories(armnnSerializer SYSTEM PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) 67*89c4ff92SAndroid Build Coastguard Worker 68*89c4ff92SAndroid Build Coastguard Worker target_link_libraries(armnnSerializer armnn ${FLATBUFFERS_LIBRARY}) 69*89c4ff92SAndroid Build Coastguard Worker if (NOT BARE_METAL AND NOT EXECUTE_NETWORK_STATIC) 70*89c4ff92SAndroid Build Coastguard Worker install(TARGETS armnnSerializer-static 71*89c4ff92SAndroid Build Coastguard Worker EXPORT armnn-targets 72*89c4ff92SAndroid Build Coastguard Worker LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} 73*89c4ff92SAndroid Build Coastguard Worker ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} 74*89c4ff92SAndroid Build Coastguard Worker ) 75*89c4ff92SAndroid Build Coastguard Worker endif() 76*89c4ff92SAndroid Build Coastguard Worker 77*89c4ff92SAndroid Build Coastguard Worker install(TARGETS armnnSerializer 78*89c4ff92SAndroid Build Coastguard Worker EXPORT armnn-targets 79*89c4ff92SAndroid Build Coastguard Worker LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} 80*89c4ff92SAndroid Build Coastguard Worker ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} 81*89c4ff92SAndroid Build Coastguard Worker ) 82*89c4ff92SAndroid Build Coastguard Worker set_target_properties(armnnSerializer PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION} ) 83*89c4ff92SAndroid Build Coastguard Workerendif() 84