paddle2onnx.cmake 5.54 KB
Newer Older
yuguo960516yuguo's avatar
yuguo960516yuguo committed
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
# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

if(NOT WITH_ONNXRUNTIME)
  return()
endif()

if(WITH_ARM)
  message(SEND_ERROR "The current onnxruntime backend doesn't support ARM cpu")
  return()
endif()

include(ExternalProject)

set(PADDLE2ONNX_PROJECT "extern_paddle2onnx")
set(PADDLE2ONNX_VERSION "1.0.0rc2")
set(PADDLE2ONNX_PREFIX_DIR ${THIRD_PARTY_PATH}/paddle2onnx)
set(PADDLE2ONNX_SOURCE_DIR
    ${THIRD_PARTY_PATH}/paddle2onnx/src/${PADDLE2ONNX_PROJECT})
set(PADDLE2ONNX_INSTALL_DIR ${THIRD_PARTY_PATH}/install/paddle2onnx)
set(PADDLE2ONNX_INC_DIR
    "${PADDLE2ONNX_INSTALL_DIR}/include"
    CACHE PATH "paddle2onnx include directory." FORCE)
set(PADDLE2ONNX_LIB_DIR
    "${PADDLE2ONNX_INSTALL_DIR}/lib"
    CACHE PATH "onnxruntime lib directory." FORCE)
set(CMAKE_BUILD_RPATH "${CMAKE_BUILD_RPATH}" "${PADDLE2ONNX_LIB_DIR}")
“yuguo”'s avatar
2.5  
“yuguo” committed
39
40
set(PADDLE2ONNX_DOWNLOAD_DIR
    ${PADDLE_SOURCE_DIR}/third_party/paddle2onnx/${CMAKE_SYSTEM_NAME})
yuguo960516yuguo's avatar
yuguo960516yuguo committed
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

# For PADDLE2ONNX code to include internal headers.
include_directories(${PADDLE2ONNX_INC_DIR})
set(PADDLE2ONNX_LIB_NEW_NAME "libpaddle2onnx${CMAKE_SHARED_LIBRARY_SUFFIX}")
if(APPLE)
  set(PADDLE2ONNX_LIB_NAME
      "libpaddle2onnx.${PADDLE2ONNX_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}")
else()
  set(PADDLE2ONNX_LIB_NAME
      "libpaddle2onnx${CMAKE_SHARED_LIBRARY_SUFFIX}.${PADDLE2ONNX_VERSION}")
endif()

if(WIN32)
  set(PADDLE2ONNX_LIB
      "${PADDLE2ONNX_INSTALL_DIR}/lib/paddle2onnx.dll"
      CACHE FILEPATH "paddle2onnx library." FORCE)
  set(PADDLE2ONNX_COMPILE_LIB
      "${PADDLE2ONNX_INSTALL_DIR}/lib/paddle2onnx.lib"
      CACHE FILEPATH "paddle2onnx compile library." FORCE)
else()
  set(PADDLE2ONNX_SOURCE_LIB
      "${PADDLE2ONNX_SOURCE_DIR}/lib/${PADDLE2ONNX_LIB_NAME}"
      CACHE FILEPATH "PADDLE2ONNX source library." FORCE)
  set(PADDLE2ONNX_LIB
      "${PADDLE2ONNX_LIB_DIR}/${PADDLE2ONNX_LIB_NAME}"
      CACHE FILEPATH "PADDLE2ONNX library." FORCE)
  set(PADDLE2ONNX_COMPILE_LIB
      ${PADDLE2ONNX_LIB}
      CACHE FILEPATH "paddle2onnx compile library." FORCE)
endif()

if(WIN32)
  set(PADDLE2ONNX_URL
yuguo-Jack's avatar
yuguo-Jack committed
74
      "${GIT_URL}/PaddlePaddle/Paddle2ONNX/releases/download/v${PADDLE2ONNX_VERSION}/paddle2onnx-win-x64-${PADDLE2ONNX_VERSION}.zip"
yuguo960516yuguo's avatar
yuguo960516yuguo committed
75
  )
“yuguo”'s avatar
2.5  
“yuguo” committed
76
77
  set(PADDLE2ONNX_URL_MD5 "122b864cb57338191a7e9ef5f607c4ba")
  set(PADDLE2ONNX_CACHE_EXTENSION "zip")
yuguo960516yuguo's avatar
yuguo960516yuguo committed
78
79
elseif(APPLE)
  set(PADDLE2ONNX_URL
yuguo-Jack's avatar
yuguo-Jack committed
80
      "${GIT_URL}/PaddlePaddle/Paddle2ONNX/releases/download/v${PADDLE2ONNX_VERSION}/paddle2onnx-osx-x86_64-${PADDLE2ONNX_VERSION}.tgz"
yuguo960516yuguo's avatar
yuguo960516yuguo committed
81
  )
“yuguo”'s avatar
2.5  
“yuguo” committed
82
83
  set(PADDLE2ONNX_URL_MD5 "32a4381ff8441b69d58ef0fd6fd919eb")
  set(PADDLE2ONNX_CACHE_EXTENSION "tgz")
yuguo960516yuguo's avatar
yuguo960516yuguo committed
84
85
else()
  set(PADDLE2ONNX_URL
yuguo-Jack's avatar
yuguo-Jack committed
86
      "${GIT_URL}/PaddlePaddle/Paddle2ONNX/releases/download/v${PADDLE2ONNX_VERSION}/paddle2onnx-linux-x64-${PADDLE2ONNX_VERSION}.tgz"
yuguo960516yuguo's avatar
yuguo960516yuguo committed
87
  )
“yuguo”'s avatar
2.5  
“yuguo” committed
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
121
122
123
  set(PADDLE2ONNX_URL_MD5 "3fbb074987ba241327797f76514e937f")
  set(PADDLE2ONNX_CACHE_EXTENSION "tgz")
endif()

set(PADDLE2ONNX_CACHE_FILENAME
    "${PADDLE2ONNX_VERSION}.${PADDLE2ONNX_CACHE_EXTENSION}")

function(download_paddle2onnx)
  message(
    STATUS
      "Downloading ${PADDLE2ONNX_URL} to ${PADDLE2ONNX_DOWNLOAD_DIR}/${PADDLE2ONNX_CACHE_FILENAME}"
  )
  # NOTE: If the version is updated, consider emptying the folder; maybe add timeout
  file(
    DOWNLOAD ${PADDLE2ONNX_URL}
    ${PADDLE2ONNX_DOWNLOAD_DIR}/${PADDLE2ONNX_CACHE_FILENAME}
    EXPECTED_MD5 ${PADDLE2ONNX_URL_MD5}
    STATUS ERR)
  if(ERR EQUAL 0)
    message(STATUS "Download ${PADDLE2ONNX_CACHE_FILENAME} success")
  else()
    message(
      FATAL_ERROR
        "Download failed, error: ${ERR}\n You can try downloading ${PADDLE2ONNX_CACHE_FILENAME} again"
    )
  endif()
endfunction()

if(EXISTS ${PADDLE2ONNX_DOWNLOAD_DIR}/${PADDLE2ONNX_CACHE_FILENAME})
  file(MD5 ${PADDLE2ONNX_DOWNLOAD_DIR}/${PADDLE2ONNX_CACHE_FILENAME}
       PADDLE2ONNX_MD5)
  if(NOT PADDLE2ONNX_MD5 STREQUAL PADDLE2ONNX_URL_MD5)
    download_paddle2onnx()
  endif()
else()
  download_paddle2onnx()
yuguo960516yuguo's avatar
yuguo960516yuguo committed
124
125
126
127
128
129
endif()

if(WIN32)
  ExternalProject_Add(
    ${PADDLE2ONNX_PROJECT}
    ${EXTERNAL_PROJECT_LOG_ARGS}
“yuguo”'s avatar
2.5  
“yuguo” committed
130
131
    URL ${PADDLE2ONNX_DOWNLOAD_DIR}/${PADDLE2ONNX_CACHE_FILENAME}
    URL_MD5 ${PADDLE2ONNX_URL_MD5}
yuguo960516yuguo's avatar
yuguo960516yuguo committed
132
133
    PREFIX ${PADDLE2ONNX_PREFIX_DIR}
    DOWNLOAD_NO_PROGRESS 1
“yuguo”'s avatar
2.5  
“yuguo” committed
134
135
    DOWNLOAD_DIR ${PADDLE2ONNX_DOWNLOAD_DIR}
    SOURCE_DIR ${PADDLE2ONNX_INSTALL_DIR}
yuguo960516yuguo's avatar
yuguo960516yuguo committed
136
137
138
    CONFIGURE_COMMAND ""
    BUILD_COMMAND ""
    UPDATE_COMMAND ""
“yuguo”'s avatar
2.5  
“yuguo” committed
139
    INSTALL_COMMAND ""
yuguo960516yuguo's avatar
yuguo960516yuguo committed
140
141
142
143
144
    BUILD_BYPRODUCTS ${PADDLE2ONNX_COMPILE_LIB})
else()
  ExternalProject_Add(
    ${PADDLE2ONNX_PROJECT}
    ${EXTERNAL_PROJECT_LOG_ARGS}
“yuguo”'s avatar
2.5  
“yuguo” committed
145
146
    URL ${PADDLE2ONNX_DOWNLOAD_DIR}/${PADDLE2ONNX_CACHE_FILENAME}
    URL_MD5 ${PADDLE2ONNX_URL_MD5}
yuguo960516yuguo's avatar
yuguo960516yuguo committed
147
148
    PREFIX ${PADDLE2ONNX_PREFIX_DIR}
    DOWNLOAD_NO_PROGRESS 1
“yuguo”'s avatar
2.5  
“yuguo” committed
149
150
    DOWNLOAD_DIR ${PADDLE2ONNX_DOWNLOAD_DIR}
    SOURCE_DIR ${PADDLE2ONNX_INSTALL_DIR}
yuguo960516yuguo's avatar
yuguo960516yuguo committed
151
152
153
    CONFIGURE_COMMAND ""
    BUILD_COMMAND ""
    UPDATE_COMMAND ""
“yuguo”'s avatar
2.5  
“yuguo” committed
154
    INSTALL_COMMAND ""
yuguo960516yuguo's avatar
yuguo960516yuguo committed
155
156
157
158
159
160
161
    BUILD_BYPRODUCTS ${PADDLE2ONNX_COMPILE_LIB})
endif()

add_library(paddle2onnx STATIC IMPORTED GLOBAL)
set_property(TARGET paddle2onnx PROPERTY IMPORTED_LOCATION
                                         ${PADDLE2ONNX_COMPILE_LIB})
add_dependencies(paddle2onnx ${PADDLE2ONNX_PROJECT})