microsoft/onnxruntime-extensions
Publicmirrored fromhttps://github.com/microsoft/onnxruntime-extensionsAvailable
cmake/ext_ortlib.cmake
118lines · modecode
| 1 | if(_ONNXRUNTIME_EMBEDDED) |
| 2 | set(ONNXRUNTIME_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/../include/onnxruntime/core/session) |
| 3 | set(ONNXRUNTIME_LIB_DIR "") |
| 4 | elseif(ONNXRUNTIME_PKG_DIR) |
| 5 | set(ONNXRUNTIME_INCLUDE_DIR ${ONNXRUNTIME_PKG_DIR}/include) |
| 6 | set(ONNXRUNTIME_LIB_DIR ${ONNXRUNTIME_PKG_DIR}/lib) |
| 7 | elseif(OCOS_ONNXRUNTIME_PKG_URI) |
| 8 | if (NOT OCOS_ONNXRUNTIME_VERSION) |
| 9 | message(FATAL_ERROR "OCOS_ONNXRUNTIME_PKG_URI is set but OCOS_ONNXRUNTIME_VERSION is not set") |
| 10 | endif() |
| 11 | set(ONNXRUNTIME_VER ${OCOS_ONNXRUNTIME_VERSION}) |
| 12 | set(ONNXRUNTIME_URL ${OCOS_ONNXRUNTIME_PKG_URI}) |
| 13 | message(STATUS "ONNX Runtime URL: ${OCOS_ONNXRUNTIME_PKG_URI}") |
| 14 | FetchContent_Declare( |
| 15 | onnxruntime |
| 16 | URL ${OCOS_ONNXRUNTIME_PKG_URI} |
| 17 | ) |
| 18 | |
| 19 | FetchContent_makeAvailable(onnxruntime) |
| 20 | |
| 21 | if (ANDROID) |
| 22 | set(ONNXRUNTIME_INCLUDE_DIR ${onnxruntime_SOURCE_DIR}/headers) |
| 23 | set(ONNXRUNTIME_LIB_DIR ${onnxruntime_SOURCE_DIR}/jni/${ANDROID_ABI}) |
| 24 | message(STATUS "Android onnxruntime inc=${ONNXRUNTIME_INCLUDE_DIR} lib=${ONNXRUNTIME_LIB_DIR}") |
| 25 | else() |
| 26 | set(ONNXRUNTIME_INCLUDE_DIR ${onnxruntime_SOURCE_DIR}/include) |
| 27 | set(ONNXRUNTIME_LIB_DIR ${onnxruntime_SOURCE_DIR}/lib) |
| 28 | endif() |
| 29 | else() |
| 30 | message(STATUS "CMAKE_SYSTEM_PROCESSOR=${CMAKE_SYSTEM_PROCESSOR}") |
| 31 | message(STATUS "CMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM}") |
| 32 | |
| 33 | # 1.16.1 is the latest ORT release. |
| 34 | if (OCOS_ONNXRUNTIME_VERSION) |
| 35 | set(ONNXRUNTIME_VER ${OCOS_ONNXRUNTIME_VERSION}) |
| 36 | else() |
| 37 | set(ONNXRUNTIME_VER "1.17.1") |
| 38 | endif() |
| 39 | |
| 40 | if (ANDROID) |
| 41 | set(ort_fetch_URL "https://repo1.maven.org/maven2/com/microsoft/onnxruntime/onnxruntime-android/${ONNXRUNTIME_VER}/onnxruntime-android-${ONNXRUNTIME_VER}.aar") |
| 42 | elseif(IOS) |
| 43 | set(ort_fetch_URL "https://onnxruntimepackages.z14.web.core.windows.net/pod-archive-onnxruntime-c-${ONNXRUNTIME_VER}.zip") |
| 44 | else() |
| 45 | if(APPLE) |
| 46 | set(ONNXRUNTIME_URL "v${ONNXRUNTIME_VER}/onnxruntime-osx-universal2-${ONNXRUNTIME_VER}.tgz") |
| 47 | elseif(WIN32) |
| 48 | set(ONNXRUNTIME_BINARY_PLATFORM "x64") |
| 49 | |
| 50 | # override if generator platform is set |
| 51 | if (CMAKE_GENERATOR_PLATFORM) |
| 52 | if (CMAKE_GENERATOR_PLATFORM STREQUAL "Win32") |
| 53 | set(ONNXRUNTIME_BINARY_PLATFORM "x86") |
| 54 | elseif (CMAKE_GENERATOR_PLATFORM STREQUAL "ARM64" OR CMAKE_GENERATOR_PLATFORM STREQUAL "ARM64EC") |
| 55 | set(ONNXRUNTIME_BINARY_PLATFORM "arm64") |
| 56 | elseif (CMAKE_GENERATOR_PLATFORM STREQUAL "ARM") |
| 57 | set(ONNXRUNTIME_BINARY_PLATFORM "arm") |
| 58 | endif() |
| 59 | elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64") |
| 60 | # or if building on arm64 machine |
| 61 | set(ONNXRUNTIME_BINARY_PLATFORM "arm64") |
| 62 | endif() |
| 63 | |
| 64 | if (OCOS_USE_CUDA) |
| 65 | set(ONNXRUNTIME_URL "v${ONNXRUNTIME_VER}/onnxruntime-win-${ONNXRUNTIME_BINARY_PLATFORM}-gpu-${ONNXRUNTIME_VER}.zip") |
| 66 | else() |
| 67 | set(ONNXRUNTIME_URL "v${ONNXRUNTIME_VER}/onnxruntime-win-${ONNXRUNTIME_BINARY_PLATFORM}-${ONNXRUNTIME_VER}.zip") |
| 68 | endif() |
| 69 | else() |
| 70 | # Linux or other, using Linux package to retrieve the headers |
| 71 | if (OCOS_USE_CUDA) |
| 72 | set(ONNXRUNTIME_URL "v${ONNXRUNTIME_VER}/onnxruntime-linux-x64-gpu-${ONNXRUNTIME_VER}.tgz") |
| 73 | else() |
| 74 | set(ONNXRUNTIME_URL "v${ONNXRUNTIME_VER}/onnxruntime-linux-x64-${ONNXRUNTIME_VER}.tgz") |
| 75 | endif() |
| 76 | |
| 77 | if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64") |
| 78 | set(ONNXRUNTIME_URL "v${ONNXRUNTIME_VER}/onnxruntime-linux-aarch64-${ONNXRUNTIME_VER}.tgz") |
| 79 | endif() |
| 80 | endif() |
| 81 | |
| 82 | set(ort_fetch_URL "https://github.com/microsoft/onnxruntime/releases/download/${ONNXRUNTIME_URL}") |
| 83 | endif() |
| 84 | |
| 85 | message(STATUS "ONNX Runtime URL: ${ort_fetch_URL}") |
| 86 | FetchContent_Declare( |
| 87 | onnxruntime |
| 88 | URL ${ort_fetch_URL} |
| 89 | ) |
| 90 | |
| 91 | FetchContent_makeAvailable(onnxruntime) |
| 92 | |
| 93 | if (ANDROID) |
| 94 | set(ONNXRUNTIME_INCLUDE_DIR ${onnxruntime_SOURCE_DIR}/headers) |
| 95 | set(ONNXRUNTIME_LIB_DIR ${onnxruntime_SOURCE_DIR}/jni/${ANDROID_ABI}) |
| 96 | message(STATUS "Android onnxruntime inc=${ONNXRUNTIME_INCLUDE_DIR} lib=${ONNXRUNTIME_LIB_DIR}") |
| 97 | elseif(IOS) |
| 98 | set(ONNXRUNTIME_INCLUDE_DIR ${onnxruntime_SOURCE_DIR}/Headers) |
| 99 | # TODO Update once CMake supports finding and linking to .xcframeworks, possibly in 3.28. |
| 100 | # https://gitlab.kitware.com/cmake/cmake/-/issues/21752 |
| 101 | # https://gitlab.kitware.com/cmake/cmake/-/merge_requests/8619 |
| 102 | # https://gitlab.kitware.com/cmake/cmake/-/merge_requests/8661 |
| 103 | if(CMAKE_OSX_SYSROOT STREQUAL "iphoneos") |
| 104 | set(ONNXRUNTIME_LIB_DIR ${onnxruntime_SOURCE_DIR}/onnxruntime.xcframework/ios-arm64) |
| 105 | elseif(CMAKE_OSX_SYSROOT STREQUAL "iphonesimulator") |
| 106 | set(ONNXRUNTIME_LIB_DIR ${onnxruntime_SOURCE_DIR}/onnxruntime.xcframework/ios-arm64_x86_64-simulator) |
| 107 | else() |
| 108 | message(FATAL_ERROR "Unsupported CMAKE_OSX_SYSROOT value: ${CMAKE_OSX_SYSROOT}") |
| 109 | endif() |
| 110 | else() |
| 111 | set(ONNXRUNTIME_INCLUDE_DIR ${onnxruntime_SOURCE_DIR}/include) |
| 112 | set(ONNXRUNTIME_LIB_DIR ${onnxruntime_SOURCE_DIR}/lib) |
| 113 | endif() |
| 114 | endif() |
| 115 | |
| 116 | if(NOT EXISTS ${ONNXRUNTIME_INCLUDE_DIR}) |
| 117 | message(FATAL_ERROR "ONNX Runtime headers not found at ${ONNXRUNTIME_INCLUDE_DIR}") |
| 118 | endif() |
| 119 | |