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