File: winml_sdk_helpers.cmake

package info (click to toggle)
onnxruntime 1.21.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 333,732 kB
  • sloc: cpp: 3,153,079; python: 179,219; ansic: 109,131; asm: 37,791; cs: 34,424; perl: 13,070; java: 11,047; javascript: 6,330; pascal: 4,126; sh: 3,277; xml: 598; objc: 281; makefile: 59
file content (120 lines) | stat: -rw-r--r-- 4,538 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.

cmake_minimum_required(VERSION 3.0)

# utility
function(convert_forward_slashes_to_back input output)
    string(REGEX REPLACE "/" "\\\\" backwards ${input})
    set(${output} ${backwards} PARENT_SCOPE)
endfunction()

# get window 10 install path from registry
function(get_installed_sdk
    sdk_folder        # the current sdk folder
    output_sdk_version    # the current sdk version
)
    # return the kit path
    get_filename_component(win10_sdk_root "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots;KitsRoot10]" ABSOLUTE CACHE)
    set(${sdk_folder} ${win10_sdk_root} PARENT_SCOPE)

    # return the sdk version
    if(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION)
        set(${output_sdk_version} ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION} PARENT_SCOPE)
    else()
        # choose the SDK matching the system version, or fallback to the latest
        file(GLOB win10_sdks RELATIVE "${win10_sdk_root}/UnionMetadata" "${win10_sdk_root}/UnionMetadata/*.*.*.*")
        list(GET win10_sdks 0 latest_sdk)
        foreach(sdk IN LISTS win10_sdks)
            string(FIND ${sdk} ${CMAKE_SYSTEM_VERSION} is_system_version)
            if(NOT ${is_system_version} EQUAL -1)
                set(${output_sdk_version} ${sdk} PARENT_SCOPE)
                return()
            elseif(sdk VERSION_GREATER latest_sdk)
                set(latest_sdk ${sdk})
            endif()
        endforeach()
        set(${output_sdk_version} ${latest_sdk} PARENT_SCOPE)
    endif()
endfunction()

# current sdk binary directory
function(get_sdk_binary_directory
    sdk_folder        # the kit path
    sdk_version       # the sdk version
    binary_dir        # the output folder variable
)
    set(${binary_dir} "${sdk_folder}/bin/${sdk_version}" PARENT_SCOPE)
endfunction()

# current sdk include directory
function(get_sdk_include_folder
    sdk_folder        # the kit path
    sdk_version       # the sdk version
    include_dir       # the output folder variable
)
    set(${include_dir} "${sdk_folder}/include/${sdk_version}" PARENT_SCOPE)
endfunction()

# current sdk metadata directory
function(get_sdk_metadata_folder
    sdk_folder        # the kit path
    sdk_version       # the sdk version
    metadata_dir      # the output folder variable
)
    set(${metadata_dir} "${sdk_folder}/UnionMetadata/${sdk_version}" PARENT_SCOPE)
endfunction()

# current sdk midl exe path
function(get_sdk_midl_exe
    sdk_folder        # the kit path
    sdk_version       # the sdk version
    midl_exe_path     # the output exe path
)
    get_sdk_binary_directory(${sdk_folder} ${sdk_version} bin_dir)
    set(${midl_exe_path} "${bin_dir}/x64/midlrt.exe" PARENT_SCOPE)
endfunction()

# current cppwinrt cppwinrt exe path
function(get_installed_sdk_cppwinrt_exe
    sdk_folder        # the kit path
    sdk_version       # the sdk version
    cppwinrt_exe_path # the output exe path
)
    get_sdk_binary_directory(${sdk_folder} ${sdk_version} bin_dir)
    set(${cppwinrt_exe_path} "${bin_dir}/x64/cppwinrt.exe" PARENT_SCOPE)
endfunction()

# current cppwinrt cppwinrt exe path
function(get_sdk_cppwinrt_exe
    sdk_folder        # the kit path
    sdk_version       # the sdk version
    output_cppwinrt_exe_path # the output exe path
)
  if (NOT DEFINED winml_CPPWINRT_EXE_PATH_OVERRIDE)
    get_installed_sdk_cppwinrt_exe(${sdk_folder} ${sdk_version} cppwinrt_exe_path)
    set(${output_cppwinrt_exe_path} ${cppwinrt_exe_path} PARENT_SCOPE)
  else ()
    set(${output_cppwinrt_exe_path} ${winml_CPPWINRT_EXE_PATH_OVERRIDE} PARENT_SCOPE)
  endif()
endfunction()

function(get_sdk
    output_sdk_folder     # the path to the current sdk kit folder
    output_sdk_version    # the current sdk version
)
  if ((NOT DEFINED winml_WINDOWS_SDK_DIR_OVERRIDE) AND
      (NOT DEFINED winml_WINDOWS_SDK_VERSION_OVERRIDE))
    get_installed_sdk(sdk_folder sdk_version)
    set(${output_sdk_folder} ${sdk_folder} PARENT_SCOPE)
    set(${output_sdk_version} ${sdk_version} PARENT_SCOPE)
  elseif ((DEFINED winml_WINDOWS_SDK_DIR_OVERRIDE) AND
          (DEFINED winml_WINDOWS_SDK_VERSION_OVERRIDE))
    set(${output_sdk_folder} ${winml_WINDOWS_SDK_DIR_OVERRIDE} PARENT_SCOPE)
    set(${output_sdk_version} ${winml_WINDOWS_SDK_VERSION_OVERRIDE} PARENT_SCOPE)
  else()
    message(
      FATAL_ERROR
      "Options winml_WINDOWS_SDK_DIR_OVERRIDE and winml_WINDOWS_SDK_VERSION_OVERRIDE must be defined together, or not at all.")
  endif()
endfunction()