onnxruntime

Форк
0
/
onnxruntime_objectivec.cmake 
162 строки · 4.9 Кб
1
# Copyright (c) Microsoft Corporation. All rights reserved.
2
# Licensed under the MIT License.
3

4
if(NOT APPLE)
5
    message(FATAL_ERROR "The Objective-C API must be built on an Apple platform.")
6
endif()
7

8
if(NOT onnxruntime_BUILD_SHARED_LIB)
9
    message(FATAL_ERROR "The Objective-C API requires onnxruntime_BUILD_SHARED_LIB to be enabled.")
10
endif()
11

12
check_language(OBJC)
13
if(CMAKE_OBJC_COMPILER)
14
    enable_language(OBJC)
15
else()
16
    message(FATAL_ERROR "Objective-C is not supported.")
17
endif()
18

19
check_language(OBJCXX)
20
if(CMAKE_OBJCXX_COMPILER)
21
    enable_language(OBJCXX)
22
else()
23
    message(FATAL_ERROR "Objective-C++ is not supported.")
24
endif()
25

26
add_compile_options(
27
    "$<$<COMPILE_LANGUAGE:OBJC,OBJCXX>:-Wall>"
28
    "$<$<COMPILE_LANGUAGE:OBJC,OBJCXX>:-Wextra>")
29

30
set(OBJC_ROOT "${REPO_ROOT}/objectivec")
31

32
# onnxruntime_objc target
33

34
# these headers are the public interface
35
file(GLOB onnxruntime_objc_headers CONFIGURE_DEPENDS
36
    "${OBJC_ROOT}/include/*.h")
37

38
file(GLOB onnxruntime_objc_srcs CONFIGURE_DEPENDS
39
    "${OBJC_ROOT}/*.h"
40
    "${OBJC_ROOT}/*.m"
41
    "${OBJC_ROOT}/*.mm")
42

43
if(NOT onnxruntime_ENABLE_TRAINING_APIS)
44
    list(REMOVE_ITEM onnxruntime_objc_headers
45
        "${OBJC_ROOT}/include/ort_checkpoint.h"
46
        "${OBJC_ROOT}/include/ort_training_session.h")
47

48
    list(REMOVE_ITEM onnxruntime_objc_srcs
49
        "${OBJC_ROOT}/ort_checkpoint_internal.h"
50
        "${OBJC_ROOT}/ort_checkpoint.mm"
51
        "${OBJC_ROOT}/ort_training_session_internal.h"
52
        "${OBJC_ROOT}/ort_training_session.mm")
53
endif()
54

55

56
source_group(TREE "${OBJC_ROOT}" FILES
57
    ${onnxruntime_objc_headers}
58
    ${onnxruntime_objc_srcs})
59

60
onnxruntime_add_shared_library(onnxruntime_objc
61
    ${onnxruntime_objc_headers}
62
    ${onnxruntime_objc_srcs})
63

64
target_include_directories(onnxruntime_objc
65
    PUBLIC
66
        "${OBJC_ROOT}/include"
67
    PRIVATE
68
        "${ONNXRUNTIME_INCLUDE_DIR}/core/session"
69
        "${OBJC_ROOT}")
70

71
if(onnxruntime_USE_COREML)
72
    target_include_directories(onnxruntime_objc
73
        PRIVATE
74
            "${ONNXRUNTIME_INCLUDE_DIR}/core/providers/coreml")
75
endif()
76

77
if (onnxruntime_ENABLE_TRAINING_APIS)
78
    target_include_directories(onnxruntime_objc
79
        PRIVATE
80
            "${ORTTRAINING_SOURCE_DIR}/training_api/include/")
81

82
endif()
83

84
find_library(FOUNDATION_LIB Foundation REQUIRED)
85

86
target_link_libraries(onnxruntime_objc
87
    PRIVATE
88
        onnxruntime
89
        ${FOUNDATION_LIB})
90

91
set_target_properties(onnxruntime_objc PROPERTIES
92
    FRAMEWORK TRUE
93
    VERSION "1.0.0"
94
    SOVERSION "1.0.0"
95
    FRAMEWORK_VERSION "A"
96
    PUBLIC_HEADER "${onnxruntime_objc_headers}"
97
    FOLDER "ONNXRuntime"
98
    )
99

100
set_property(TARGET onnxruntime_objc APPEND PROPERTY COMPILE_OPTIONS "-fvisibility=default")
101

102
target_link_options(onnxruntime_objc PRIVATE "-Wl,-headerpad_max_install_names")
103

104
add_custom_command(TARGET onnxruntime_objc POST_BUILD
105
    COMMAND ${CMAKE_COMMAND} -E make_directory
106
        "$<TARGET_BUNDLE_CONTENT_DIR:onnxruntime_objc>/Libraries"
107
    COMMAND ${CMAKE_COMMAND} -E copy
108
        "$<TARGET_FILE:onnxruntime>"
109
        "$<TARGET_BUNDLE_CONTENT_DIR:onnxruntime_objc>/Libraries"
110
    COMMAND install_name_tool
111
        -change "@rpath/$<TARGET_FILE_NAME:onnxruntime>"
112
                "@rpath/$<TARGET_NAME:onnxruntime_objc>.framework/Libraries/$<TARGET_FILE_NAME:onnxruntime>"
113
        "$<TARGET_FILE:onnxruntime_objc>")
114

115
install(TARGETS onnxruntime_objc
116
    FRAMEWORK DESTINATION ${CMAKE_INSTALL_BINDIR})
117

118
if(onnxruntime_BUILD_UNIT_TESTS)
119
    find_package(XCTest REQUIRED)
120

121
    # onnxruntime_objc_test target
122

123
    file(GLOB onnxruntime_objc_test_srcs CONFIGURE_DEPENDS
124
        "${OBJC_ROOT}/test/*.h"
125
        "${OBJC_ROOT}/test/*.m"
126
        "${OBJC_ROOT}/test/*.mm")
127

128
    if(NOT onnxruntime_ENABLE_TRAINING_APIS)
129
        list(REMOVE_ITEM onnxruntime_objc_test_srcs
130
            "${OBJC_ROOT}/test/ort_checkpoint_test.mm"
131
            "${OBJC_ROOT}/test/ort_training_session_test.mm"
132
            "${OBJC_ROOT}/test/ort_training_utils_test.mm")
133

134
    endif()
135

136
    source_group(TREE "${OBJC_ROOT}" FILES ${onnxruntime_objc_test_srcs})
137

138
    xctest_add_bundle(onnxruntime_objc_test onnxruntime_objc
139
        ${onnxruntime_objc_headers}
140
        ${onnxruntime_objc_test_srcs})
141

142
    onnxruntime_configure_target(onnxruntime_objc_test)
143

144
    target_include_directories(onnxruntime_objc_test
145
        PRIVATE
146
            "${OBJC_ROOT}")
147

148
    set_target_properties(onnxruntime_objc_test PROPERTIES
149
        FOLDER "ONNXRuntimeTest"
150
        XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED "NO")
151

152
    add_custom_command(TARGET onnxruntime_objc_test POST_BUILD
153
        COMMAND ${CMAKE_COMMAND} -E copy_directory
154
            "${OBJC_ROOT}/test/testdata"
155
            "${ONNXRUNTIME_ROOT}/test/testdata/training_api"
156
            "$<TARGET_BUNDLE_CONTENT_DIR:onnxruntime_objc_test>/Resources")
157

158
    xctest_add_test(XCTest.onnxruntime_objc_test onnxruntime_objc_test)
159

160
    set_property(TEST XCTest.onnxruntime_objc_test APPEND PROPERTY
161
        ENVIRONMENT "DYLD_LIBRARY_PATH=$<TARGET_FILE_DIR:onnxruntime>")
162
endif()
163

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.