cmake/onnxruntime.cmake (72 lines of code) (raw):
# Check if the build is for Android
if (CMAKE_SYSTEM_NAME STREQUAL "Android")
SET(ANDROID ON)
endif ()
include(ExternalProject)
set(ONNXRUNTIME_PROJECT "extern_onnxruntime")
set(ONNXRUNTIME_VERSION "1.18.0")
set(ONNXRUNTIME_PREFIX_DIR ${THIRD_PARTY_PATH}/onnxruntime)
set(ONNXRUNTIME_SOURCE_DIR
${THIRD_PARTY_PATH}/onnxruntime/src/${ONNXRUNTIME_PROJECT})
set(ONNXRUNTIME_INSTALL_DIR ${THIRD_PARTY_PATH}/install/onnxruntime)
set(ONNXRUNTIME_INC_DIR
"${ONNXRUNTIME_INSTALL_DIR}/include"
CACHE PATH "onnxruntime include directory." FORCE)
set(ONNXRUNTIME_LIB_DIR
"${ONNXRUNTIME_INSTALL_DIR}/lib"
CACHE PATH "onnxruntime lib directory." FORCE)
set(CMAKE_BUILD_RPATH "${CMAKE_BUILD_RPATH}" "${ONNXRUNTIME_LIB_DIR}")
set(ONNXRUNTIME_URL
"https://globalcdn.nuget.org/packages/microsoft.ml.onnxruntime.directml.${ONNXRUNTIME_VERSION}.nupkg"
)
# For ONNXRUNTIME code to include internal headers.
include_directories(${ONNXRUNTIME_INC_DIR})
set(ONNXRUNTIME_LIB_NAME
"onnxruntime${CMAKE_SHARED_LIBRARY_SUFFIX}")
set(ONNXRUNTIME_SHARED_LIB_SOURCE
"${ONNXRUNTIME_SOURCE_DIR}/runtimes/${AACS_LIB_ARCH}/native/onnxruntime.dll"
CACHE FILEPATH "ONNXRUNTIME source library." FORCE)
set(ONNXRUNTIME_SHARED_LIB
"${ONNXRUNTIME_INSTALL_DIR}/lib/onnxruntime.dll"
CACHE FILEPATH "ONNXRUNTIME shared library." FORCE)
set(ONNXRUNTIME_STATIC_LIB_SOURCE
"${ONNXRUNTIME_SOURCE_DIR}/runtimes/${AACS_LIB_ARCH}/native/onnxruntime.lib"
CACHE FILEPATH "ONNXRUNTIME static library." FORCE)
set(ONNXRUNTIME_STATIC_LIB
"${ONNXRUNTIME_INSTALL_DIR}/lib/onnxruntime.lib"
CACHE FILEPATH "ONNXRUNTIME static library." FORCE)
set(ONNXRUNTIME_HEADER_DIR
"${ONNXRUNTIME_SOURCE_DIR}/build/native/include")
set(ONNXRUNTIME_LIB
"${ONNXRUNTIME_STATIC_LIB}"
CACHE FILEPATH "ONNXRUNTIME static library." FORCE)
ExternalProject_Add(
${ONNXRUNTIME_PROJECT}
${EXTERNAL_PROJECT_LOG_ARGS}
URL ${ONNXRUNTIME_URL}
PREFIX ${ONNXRUNTIME_PREFIX_DIR}
DOWNLOAD_NO_PROGRESS 1
DOWNLOAD_EXTRACT_TIMESTAMP true
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
UPDATE_COMMAND ""
INSTALL_COMMAND
${CMAKE_COMMAND} -E copy ${ONNXRUNTIME_SHARED_LIB_SOURCE} ${ONNXRUNTIME_SHARED_LIB} &&
${CMAKE_COMMAND} -E copy ${ONNXRUNTIME_STATIC_LIB_SOURCE} ${ONNXRUNTIME_STATIC_LIB} &&
${CMAKE_COMMAND} -E copy_directory ${ONNXRUNTIME_HEADER_DIR} ${ONNXRUNTIME_INC_DIR}
BUILD_BYPRODUCTS ${ONNXRUNTIME_LIB})
add_library(onnxruntime STATIC IMPORTED GLOBAL)
message(STATUS "ONNXRUNTIME_LIB: ${ONNXRUNTIME_LIB}")
set_property(TARGET onnxruntime PROPERTY IMPORTED_LOCATION ${ONNXRUNTIME_LIB})
add_dependencies(onnxruntime ${ONNXRUNTIME_PROJECT})
function(copy_onnx TARGET_NAME)
# If error of Exitcode0xc000007b happened when a .exe running, copy onnxruntime.dll
# to the .exe folder.
if (TARGET ${TARGET_NAME})
add_custom_command(
TARGET ${TARGET_NAME}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${ONNXRUNTIME_SHARED_LIB}
${CMAKE_CURRENT_BINARY_DIR} DEPENDS onnxruntime)
endif ()
endfunction()