onnxruntime.cmake 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. # Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License");
  4. # you may not use this file except in compliance with the License.
  5. # You may obtain a copy of the License at
  6. #
  7. # http://www.apache.org/licenses/LICENSE-2.0
  8. #
  9. # Unless required by applicable law or agreed to in writing, software
  10. # distributed under the License is distributed on an "AS IS" BASIS,
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. # See the License for the specific language governing permissions and
  13. # limitations under the License.
  14. include(ExternalProject)
  15. set(ONNXRUNTIME_PROJECT "extern_onnxruntime")
  16. set(ONNXRUNTIME_PREFIX_DIR ${THIRD_PARTY_PATH}/onnxruntime)
  17. set(ONNXRUNTIME_SOURCE_DIR
  18. ${THIRD_PARTY_PATH}/onnxruntime/src/${ONNXRUNTIME_PROJECT})
  19. set(ONNXRUNTIME_INSTALL_DIR ${THIRD_PARTY_PATH}/install/onnxruntime)
  20. if (ORT_DIRECTORY)
  21. message(STATUS "Use the onnxruntime lib specified by user. The ONNXRuntime path: ${ORT_DIRECTORY}")
  22. STRING(REGEX REPLACE "\\\\" "/" ORT_DIRECTORY ${ORT_DIRECTORY})
  23. set(ONNXRUNTIME_INC_DIR
  24. "${ORT_DIRECTORY}/include"
  25. CACHE PATH "onnxruntime include directory." FORCE)
  26. set(ONNXRUNTIME_LIB_DIR
  27. "${ORT_DIRECTORY}/lib"
  28. CACHE PATH "onnxruntime lib directory." FORCE)
  29. else()
  30. message(STATUS "Use the default onnxruntime lib. The ONNXRuntime path: ${ONNXRUNTIME_INSTALL_DIR}")
  31. set(ONNXRUNTIME_INC_DIR
  32. "${ONNXRUNTIME_INSTALL_DIR}/include"
  33. CACHE PATH "onnxruntime include directory." FORCE)
  34. set(ONNXRUNTIME_LIB_DIR
  35. "${ONNXRUNTIME_INSTALL_DIR}/lib"
  36. CACHE PATH "onnxruntime lib directory." FORCE)
  37. endif()
  38. set(CMAKE_BUILD_RPATH "${CMAKE_BUILD_RPATH}" "${ONNXRUNTIME_LIB_DIR}")
  39. set(ONNXRUNTIME_VERSION "1.12.0")
  40. set(ONNXRUNTIME_URL_PREFIX "https://bj.bcebos.com/paddle2onnx/libs/")
  41. if(WIN32)
  42. if(WITH_GPU)
  43. set(ONNXRUNTIME_FILENAME "onnxruntime-win-x64-gpu-${ONNXRUNTIME_VERSION}.zip")
  44. elseif(WITH_DIRECTML)
  45. set(ONNXRUNTIME_FILENAME "onnxruntime-directml-win-x64.zip")
  46. else()
  47. set(ONNXRUNTIME_FILENAME "onnxruntime-win-x64-${ONNXRUNTIME_VERSION}.zip")
  48. endif()
  49. if(NOT CMAKE_CL_64)
  50. if(WITH_DIRECTML)
  51. set(ONNXRUNTIME_FILENAME "onnxruntime-directml-win-x86.zip")
  52. else()
  53. set(ONNXRUNTIME_FILENAME "onnxruntime-win-x86-${ONNXRUNTIME_VERSION}.zip")
  54. endif()
  55. endif()
  56. elseif(APPLE)
  57. if(CURRENT_OSX_ARCH MATCHES "arm64")
  58. set(ONNXRUNTIME_FILENAME "onnxruntime-osx-arm64-${ONNXRUNTIME_VERSION}.tgz")
  59. else()
  60. set(ONNXRUNTIME_FILENAME "onnxruntime-osx-x86_64-${ONNXRUNTIME_VERSION}.tgz")
  61. endif()
  62. else()
  63. if(WITH_GPU)
  64. if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64")
  65. message("Cannot compile with onnxruntime-gpu while in linux-aarch64 platform, fallback to onnxruntime-cpu")
  66. set(ONNXRUNTIME_FILENAME "onnxruntime-linux-aarch64-${ONNXRUNTIME_VERSION}.tgz")
  67. else()
  68. set(ONNXRUNTIME_FILENAME "onnxruntime-linux-x64-gpu-${ONNXRUNTIME_VERSION}.tgz")
  69. endif()
  70. else()
  71. if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64")
  72. set(ONNXRUNTIME_FILENAME "onnxruntime-linux-aarch64-${ONNXRUNTIME_VERSION}.tgz")
  73. else()
  74. # cross-compling while the host is x64 but the target is aarch64.
  75. if ((CMAKE_SYSTEM_PROCESSOR MATCHES "arm64") OR (CMAKE_SYSTEM_PROCESSOR MATCHES "arm"))
  76. set(ONNXRUNTIME_FILENAME "onnxruntime-linux-aarch64-${ONNXRUNTIME_VERSION}.tgz")
  77. else()
  78. set(ONNXRUNTIME_FILENAME "onnxruntime-linux-x64-${ONNXRUNTIME_VERSION}.tgz")
  79. endif()
  80. endif()
  81. endif()
  82. endif()
  83. set(ONNXRUNTIME_URL "${ONNXRUNTIME_URL_PREFIX}${ONNXRUNTIME_FILENAME}")
  84. include_directories(${ONNXRUNTIME_INC_DIR}
  85. )# For ONNXRUNTIME code to include internal headers.
  86. if(WIN32)
  87. set(ONNXRUNTIME_LIB
  88. "${ONNXRUNTIME_LIB_DIR}/onnxruntime.lib"
  89. CACHE FILEPATH "ONNXRUNTIME shared library." FORCE)
  90. elseif(APPLE)
  91. set(ONNXRUNTIME_LIB
  92. "${ONNXRUNTIME_LIB_DIR}/libonnxruntime.dylib"
  93. CACHE FILEPATH "ONNXRUNTIME shared library." FORCE)
  94. else()
  95. set(ONNXRUNTIME_LIB
  96. "${ONNXRUNTIME_LIB_DIR}/libonnxruntime.so"
  97. CACHE FILEPATH "ONNXRUNTIME shared library." FORCE)
  98. endif()
  99. if (NOT ORT_DIRECTORY)
  100. ExternalProject_Add(
  101. ${ONNXRUNTIME_PROJECT}
  102. ${EXTERNAL_PROJECT_LOG_ARGS}
  103. URL ${ONNXRUNTIME_URL}
  104. PREFIX ${ONNXRUNTIME_PREFIX_DIR}
  105. DOWNLOAD_NO_PROGRESS 1
  106. CONFIGURE_COMMAND ""
  107. BUILD_COMMAND ""
  108. UPDATE_COMMAND ""
  109. INSTALL_COMMAND
  110. ${CMAKE_COMMAND} -E remove_directory ${ONNXRUNTIME_INSTALL_DIR} &&
  111. ${CMAKE_COMMAND} -E make_directory ${ONNXRUNTIME_INSTALL_DIR} &&
  112. ${CMAKE_COMMAND} -E rename ${ONNXRUNTIME_SOURCE_DIR}/lib/ ${ONNXRUNTIME_INSTALL_DIR}/lib &&
  113. ${CMAKE_COMMAND} -E copy_directory ${ONNXRUNTIME_SOURCE_DIR}/include
  114. ${ONNXRUNTIME_INC_DIR}
  115. BUILD_BYPRODUCTS ${ONNXRUNTIME_LIB})
  116. endif()
  117. add_library(external_onnxruntime STATIC IMPORTED GLOBAL)
  118. set_property(TARGET external_onnxruntime PROPERTY IMPORTED_LOCATION ${ONNXRUNTIME_LIB})
  119. add_dependencies(external_onnxruntime ${ONNXRUNTIME_PROJECT})