xref: /aosp_15_r20/external/armnn/src/armnnDeserializer/CMakeLists.txt (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
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