onnxruntime
36 строк · 1.4 Кб
1set(arm64ReproDir "${CMAKE_CURRENT_SOURCE_DIR}/repros")
2
3function(set_arm64_dependencies n)
4set(ARM64_LIBS)
5set(ARM64_OBJS)
6set(ARM64_DEF)
7set(REPRO_PATH "${arm64ReproDir}/${n}")
8if(NOT EXISTS "${REPRO_PATH}")
9set(REPRO_PATH "${arm64ReproDir}/${n}_temp")
10endif()
11file(GLOB ARM64_OBJS "${REPRO_PATH}/*.obj")
12file(GLOB ARM64_DEF "${REPRO_PATH}/*.def")
13file(GLOB ARM64_LIBS "${REPRO_PATH}/*.LIB")
14
15if(NOT "${ARM64_DEF}" STREQUAL "")
16set(ARM64_DEF "/defArm64Native:${ARM64_DEF}")
17endif()
18target_sources(${n} PRIVATE ${ARM64_OBJS})
19target_link_options(${n} PRIVATE /machine:arm64x "${ARM64_DEF}" "${ARM64_LIBS}")
20endfunction()
21
22if("${BUILD_AS_ARM64X}" STREQUAL "ARM64")
23foreach (n ${ARM64X_TARGETS})
24add_custom_target(mkdirs_${n} ALL COMMAND cmd /c (if exist \"${arm64ReproDir}/${n}_temp/\" rmdir /s /q \"${arm64ReproDir}/${n}_temp\") && mkdir \"${arm64ReproDir}/${n}_temp\" )
25add_dependencies(${n} mkdirs_${n})
26target_link_options(${n} PRIVATE "/LINKREPRO:${arm64ReproDir}/${n}_temp")
27add_custom_target(${n}_checkRepro ALL COMMAND cmd /c if exist \"${n}_temp/*.obj\" if exist \"${n}\" rmdir /s /q \"${n}\" 2>nul && if not exist \"${n}\" ren \"${n}_temp\" \"${n}\" WORKING_DIRECTORY ${arm64ReproDir})
28add_dependencies(${n}_checkRepro ${n})
29endforeach()
30
31
32elseif("${BUILD_AS_ARM64X}" STREQUAL "ARM64EC")
33foreach (n ${ARM64X_TARGETS})
34set_arm64_dependencies(${n})
35endforeach()
36endif()
37