Stop using apiset in OneCore build: use onecoreuap.lib instead of onecoreuap_apiset.lib (#19632)
### Description Stop using apiset in OneCore build: use onecoreuap.lib instead of onecoreuap_apiset.lib in onecore build. ### Motivation and Context 1. Now all Windows Editions come with Reverse Forwarders. We should just use the normal onecore libs. 2. Many new Windows APIs are only available in [windows umbrella libraries](https://learn.microsoft.com/en-us/windows/win32/apiindex/windows-umbrella-libraries). So these libraries are not specific for Windows CoreOS or Onecore. 3. Going forward we should use "IsApiSetImplemented" to guard our API usages: https://learn.microsoft.com/en-us/windows/win32/apiindex/detect-api-set-availability . After this change, our built binaries can pass apivalidator's check. ``` C:\local\apivalidator>apivalidator.exe -BinaryPath:C:\src\onnxruntime\b\Debug\Debug\onnxruntime.dll -SupportedApiXmlFiles:onecoreuap_DDIs.xml ApiValidation: Summary: "C:\src\onnxruntime\b\Debug\Debug\onnxruntime.dll" is Universal ApiValidation: All binaries are Universal ``` So it will give an easy way to test ONNX Runtime's compatibility to Windows versions.
This commit is contained in:
Родитель
c12a20bef9
Коммит
9ccdc4961a
|
@ -1729,14 +1729,12 @@ if(onnxruntime_BUILD_KERNEL_EXPLORER)
|
|||
endif()
|
||||
|
||||
# When GDK_PLATFORM is set then WINAPI_FAMILY is defined in gdk_toolchain.cmake (along with other relevant flags/definitions).
|
||||
if (WIN32 AND NOT GDK_PLATFORM)
|
||||
if (WIN32 AND NOT GDK_PLATFORM AND NOT CMAKE_CROSSCOMPILING)
|
||||
if (NOT CMAKE_CXX_STANDARD_LIBRARIES MATCHES kernel32.lib)
|
||||
# On onecore, link to the onecore build of the MSVC runtime
|
||||
get_filename_component(msvc_path "${CMAKE_C_COMPILER}/../../../.." ABSOLUTE)
|
||||
link_directories(BEFORE "${msvc_path}/lib/onecore/${onnxruntime_target_platform}")
|
||||
# The .lib files in the MSVC runtime have a DEFAULITLIB entry for onecore.lib, which in turn links to reverse forwarders.
|
||||
# We ignore that entry and use onecore_apiset.lib instead, since system components must not rely on reverse forwarders.
|
||||
add_link_options("/NODEFAULTLIB:onecore.lib")
|
||||
# The .lib files in the MSVC runtime have a DEFAULITLIB entry for onecore.lib, but it shold not cause any conflict with onecoreuap.lib
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
set(CMAKE_C_STANDARD_LIBRARIES_INIT onecoreuap_apiset.lib)
|
||||
set(CMAKE_CXX_STANDARD_LIBRARIES_INIT onecoreuap_apiset.lib)
|
||||
set(CMAKE_C_STANDARD_LIBRARIES_INIT onecoreuap.lib)
|
||||
set(CMAKE_CXX_STANDARD_LIBRARIES_INIT onecoreuap.lib)
|
||||
|
|
Загрузка…
Ссылка в новой задаче