blob: 919a68bd0e5cf69587e277ef52eb47318f69a2d0 [file] [log] [blame]
Ruomei Yandb7c3912019-03-08 17:50:25 +00001#
2# Copyright © 2017 Arm Ltd. All rights reserved.
3# SPDX-License-Identifier: MIT
4#
5if(BUILD_ARMNN_SERIALIZER)
Matthew Bentham68947182019-06-10 17:11:31 +01006 find_program(FLATC flatc
7 HINTS ${FLATC_DIR}
8 DOC "Path to 'flatc', the flatbuffers compiler")
9 if (NOT FLATC)
10 message(SEND_ERROR "flatc not found. Specify the full path of the flatc executable with -DFLATC=<flatc path>")
11 endif()
12
Matteo Martincigh286080f2019-05-31 13:02:11 +010013 add_custom_command(
14 # Generate an ArmnnSchema_generated.h file if it doesn't exist, or update it when necessary otherwise
Mike Kellyf74937e2022-05-20 17:18:59 +010015 OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/../../generated/ArmnnSchema_generated.h DEPENDS ArmnnSchema.fbs
16 COMMAND ${FLATC} -o ${CMAKE_CURRENT_SOURCE_DIR}/../../generated --cpp ${CMAKE_CURRENT_SOURCE_DIR}/ArmnnSchema.fbs
Ruomei Yandb7c3912019-03-08 17:50:25 +000017 )
Mike Kellyf74937e2022-05-20 17:18:59 +010018 set_property(SOURCE Serializer.cpp APPEND PROPERTY OBJECT_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../../generated/ArmnnSchema_generated.h)
19 set_directory_properties(PROPERTIES ADDITIONAL_CLEAN_FILES ${CMAKE_CURRENT_SOURCE_DIR}/../../generated/)
Ruomei Yandb7c3912019-03-08 17:50:25 +000020
21 set(armnn_serializer_sources)
22 list(APPEND armnn_serializer_sources
23 ../../include/armnnSerializer/ISerializer.hpp
24 ../../include/armnnDeserializer/IDeserializer.hpp
Ruomei Yandb7c3912019-03-08 17:50:25 +000025 Serializer.hpp
26 Serializer.cpp
27 SerializerUtils.hpp
28 SerializerUtils.cpp
29 ../armnnDeserializer/Deserializer.hpp
30 ../armnnDeserializer/Deserializer.cpp
31 )
32
Jim Flynn870b96c2022-03-25 21:24:56 +000033 if(BUILD_BARE_METAL)
34 add_library_ex(armnnSerializer STATIC ${armnn_serializer_sources})
35 else()
Sadik Armagan8f397a12022-06-17 15:38:22 +010036 # We're going to export both an OBJECT library and a SHARED library here.
37 # In some instances it's easier to include the serializer directly into
38 # the target executable or library rather than have yet another .so.
39 add_library(armnnSerializerObj OBJECT ${armnn_serializer_sources})
Jim Flynn870b96c2022-03-25 21:24:56 +000040 add_library_ex(armnnSerializer SHARED ${armnn_serializer_sources})
41 endif()
Ruomei Yandb7c3912019-03-08 17:50:25 +000042
43 include_directories(SYSTEM "${FLATBUFFERS_INCLUDE_PATH}")
Mike Kellyf74937e2022-05-20 17:18:59 +010044
Ruomei Yandb7c3912019-03-08 17:50:25 +000045 set_target_properties(armnnSerializer PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
Sadik Armagan8f397a12022-06-17 15:38:22 +010046 target_include_directories(armnnSerializerObj PRIVATE ../armnn)
47 target_include_directories(armnnSerializerObj PRIVATE ../armnnUtils)
Ruomei Yandb7c3912019-03-08 17:50:25 +000048 target_include_directories(armnnSerializer PRIVATE ../armnn)
49 target_include_directories(armnnSerializer PRIVATE ../armnnUtils)
Mike Kellyf74937e2022-05-20 17:18:59 +010050 target_include_directories(armnnSerializer PRIVATE ../../generated)
Sadik Armagan8f397a12022-06-17 15:38:22 +010051 target_include_directories(armnnSerializerObj PRIVATE ../../generated)
Mike Kellyf74937e2022-05-20 17:18:59 +010052
53 list(APPEND armnn_serializer_sources
54 ArmnnSchema_generated.h
55 )
Ruomei Yandb7c3912019-03-08 17:50:25 +000056
57 # System include to suppress warnings for flatbuffers generated files
Sadik Armagan8f397a12022-06-17 15:38:22 +010058 target_include_directories(armnnSerializerObj SYSTEM PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
Ruomei Yandb7c3912019-03-08 17:50:25 +000059 target_include_directories(armnnSerializer SYSTEM PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
60
61 target_link_libraries(armnnSerializer armnn ${FLATBUFFERS_LIBRARY})
Matthew Benthama7b79282019-06-03 13:00:50 +010062
Sadik Armagan8f397a12022-06-17 15:38:22 +010063 install(TARGETS armnnSerializerObj
64 EXPORT armnn-targets
65 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
66 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
67 )
68
Matthew Benthama7b79282019-06-03 13:00:50 +010069 install(TARGETS armnnSerializer
Derek Lambertieac4adb2020-08-25 13:05:59 +010070 EXPORT armnn-targets
71 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
72 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
73 )
Matteo Martincighbccc3452019-10-18 14:59:19 +010074 set_target_properties(armnnSerializer PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION} )
Matthew Benthama7b79282019-06-03 13:00:50 +010075endif()