onnxruntime
91 строка · 4.2 Кб
1# Copyright (c) Microsoft Corporation. All rights reserved.
2# Licensed under the MIT License.
3
4file(GLOB_RECURSE onnxruntime_providers_dml_cc_srcs CONFIGURE_DEPENDS
5"${ONNXRUNTIME_ROOT}/core/providers/dml/*.h"
6"${ONNXRUNTIME_ROOT}/core/providers/dml/*.cpp"
7"${ONNXRUNTIME_ROOT}/core/providers/dml/*.cc"
8)
9source_group(TREE ${ONNXRUNTIME_ROOT}/core FILES ${onnxruntime_providers_dml_cc_srcs})
10onnxruntime_add_static_library(onnxruntime_providers_dml ${onnxruntime_providers_dml_cc_srcs})
11onnxruntime_add_include_to_target(onnxruntime_providers_dml
12onnxruntime_common onnxruntime_framework onnx onnx_proto ${PROTOBUF_LIB} flatbuffers::flatbuffers Boost::mp11 safeint_interface ${WIL_TARGET}
13)
14add_dependencies(onnxruntime_providers_dml ${onnxruntime_EXTERNAL_DEPENDENCIES})
15target_include_directories(onnxruntime_providers_dml PRIVATE
16${ONNXRUNTIME_ROOT}
17)
18
19target_compile_definitions(onnxruntime_providers_dml PRIVATE DML_TARGET_VERSION_USE_LATEST=1)
20if(WIN32)
21target_compile_options(onnxruntime_providers_dml PRIVATE "/wd4100" "/wd4238" "/wd4189" "/wd4702")
22endif()
23
24if (NOT onnxruntime_USE_CUSTOM_DIRECTML)
25foreach(file "DirectML.dll" "DirectML.pdb" "DirectML.Debug.dll" "DirectML.Debug.pdb")
26add_custom_command(TARGET onnxruntime_providers_dml
27POST_BUILD
28COMMAND ${CMAKE_COMMAND} -E copy_if_different
29"${DML_PACKAGE_DIR}/bin/${onnxruntime_target_platform}-win/${file}" $<TARGET_FILE_DIR:onnxruntime_providers_dml>)
30endforeach()
31endif()
32
33function(target_add_dml target)
34if (onnxruntime_USE_CUSTOM_DIRECTML)
35if (dml_EXTERNAL_PROJECT)
36# Internal build of DirectML: link against the "DirectML" target.
37target_link_libraries(${target} PRIVATE DirectML)
38else()
39if (dml_LIB_DIR)
40target_link_libraries(${target} PRIVATE ${dml_LIB_DIR}/DirectML.lib)
41else()
42target_link_libraries(${target} PRIVATE DirectML)
43endif()
44endif()
45else()
46add_dependencies(${target} RESTORE_PACKAGES)
47target_link_libraries(${target} PRIVATE "${DML_PACKAGE_DIR}/bin/${onnxruntime_target_platform}-win/DirectML.lib")
48target_compile_definitions(${target} PRIVATE DML_TARGET_VERSION_USE_LATEST)
49endif()
50endfunction()
51
52target_add_dml(onnxruntime_providers_dml)
53target_link_libraries(onnxruntime_providers_dml PRIVATE onnxruntime_common)
54target_link_libraries(onnxruntime_providers_dml PRIVATE onnxruntime_framework)
55onnxruntime_add_include_to_target(onnxruntime_providers_dml onnxruntime_common)
56if (GDK_PLATFORM STREQUAL Scarlett)
57target_link_libraries(onnxruntime_providers_dml PRIVATE ${gdk_dx_libs})
58else()
59target_link_libraries(onnxruntime_providers_dml PRIVATE dxguid.lib d3d12.lib dxgi.lib dxcore.lib)
60endif()
61
62target_link_libraries(onnxruntime_providers_dml PRIVATE delayimp.lib)
63
64if (NOT GDK_PLATFORM)
65set(onnxruntime_DELAYLOAD_FLAGS "${onnxruntime_DELAYLOAD_FLAGS} /DELAYLOAD:DirectML.dll /DELAYLOAD:d3d12.dll /DELAYLOAD:dxgi.dll /DELAYLOAD:dxcore.dll /DELAYLOAD:api-ms-win-core-com-l1-1-0.dll /DELAYLOAD:shlwapi.dll /DELAYLOAD:oleaut32.dll /DELAYLOAD:ext-ms-win-dxcore-l1-*.dll /ignore:4199")
66endif()
67
68target_compile_definitions(onnxruntime_providers_dml
69PRIVATE
70ONNX_NAMESPACE=onnx ONNX_ML LOTUS_LOG_THRESHOLD=2 LOTUS_ENABLE_STDERR_LOGGING PLATFORM_WINDOWS
71)
72target_compile_definitions(onnxruntime_providers_dml PRIVATE UNICODE _UNICODE NOMINMAX)
73if (MSVC)
74target_compile_definitions(onnxruntime_providers_dml PRIVATE _SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING)
75target_compile_options(onnxruntime_providers_dml PRIVATE "/W3")
76endif()
77
78install(FILES ${PROJECT_SOURCE_DIR}/../include/onnxruntime/core/providers/dml/dml_provider_factory.h
79DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/onnxruntime/
80)
81
82set_target_properties(onnxruntime_providers_dml PROPERTIES LINKER_LANGUAGE CXX)
83set_target_properties(onnxruntime_providers_dml PROPERTIES FOLDER "ONNXRuntime")
84
85if (NOT onnxruntime_BUILD_SHARED_LIB)
86install(TARGETS onnxruntime_providers_dml
87ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
88LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
89RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
90FRAMEWORK DESTINATION ${CMAKE_INSTALL_BINDIR})
91endif()
92